<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl-pl">
<link rel="self" type="application/atom+xml" href="https://forum.atnel.pl/feed.php?f=4&amp;t=11408&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-04-17T13:44:52+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=11408&amp;mode</id>
<entry>
<author><name><![CDATA[Rafal9018]]></name></author>
<updated>2015-04-17T13:44:52+01:00</updated>
<published>2015-04-17T13:44:52+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11408&amp;p=126756#p126756</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11408&amp;p=126756#p126756"/>
<title type="html"><![CDATA[Re: Timery programowe, czyżby złe obliczenia ??]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11408&amp;p=126756#p126756"><![CDATA[
Taktowanie to 1843200Hz, ale zapomniałem po podzieleniu odjąć 1 bo przecież liczymy od zera <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /> &lt;facepalm&gt; <br /><br />Dzięki za pomoc <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3441">Rafal9018</a> — 17 kwi 2015, o 13:44</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[anshar]]></name></author>
<updated>2015-04-17T09:39:51+01:00</updated>
<published>2015-04-17T09:39:51+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11408&amp;p=126747#p126747</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11408&amp;p=126747#p126747"/>
<title type="html"><![CDATA[Re: Timery programowe, czyżby złe obliczenia ??]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11408&amp;p=126747#p126747"><![CDATA[
W programie mkAVR Calculator w zakładce Narzędzia jest świetny program AVR Timer Kalkulator. Wybierając Twoje F_CPU 1843200Hz i pożadaną częstotliwość 100Hz (10ms) program ten podaje, że OCR2 = 179 dla preskalera 1024.<br />Dla F_CPU = 18432000 Hz, preskalera = 1024 i pożadanej czętstotliwości IRQ = 100Hz, zapisać trzeba tak:<br /><br />OCR2 = 18432000 / 1024 / 100 - 1<br />OCR2 = 179 , a nie 18.<br /><br />Jako F_CPU wstawiłeś 1843200 zamiast 18432000. Tutaj jest błąd.<br /><br />No chyba, że faktycznie masz taktowany procosor 1843200Hz to i tak jest źle.<br />OCR2 - 1843200 / 1024 / 100 - 1<br />OCR2 = 17<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 44 minutach ]</span></strong><br /><br />Teraz:<br />[syntax=c]if (!Timer1){<br />   Timer1 =100 ;  //100 * 10ms = 1000ms = 1s<br />   PORTC ^= LED2;<br />}[/syntax]<br /><br />powinno działać tak samo jak:<br />[syntax=c]_delay_ms(1000);// oczekiwanie 1s (1000ms)<br />   PORTC ^= LED2;[/syntax]<br />Czyli po 1s zostanie zapalona dioda, po następnej sekundzie zgaszona, by znów po 1s została zapalona i tak w kółeczko.<br />Jeśli chcesz by zapalała się równo co 1s to musisz zmienić na Timer1 = 50; Wtedy dioda zostanie zapalona na 0.5s, następnie zgaszona na 0.5s i w kółeczko. <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=7157">anshar</a> — 17 kwi 2015, o 09:39</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Rafal9018]]></name></author>
<updated>2015-04-17T09:29:27+01:00</updated>
<published>2015-04-17T09:29:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11408&amp;p=126746#p126746</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11408&amp;p=126746#p126746"/>
<title type="html"><![CDATA[Re: Timery programowe, czyżby złe obliczenia ??]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11408&amp;p=126746#p126746"><![CDATA[
Nawet gdy robię tak: <br /><br />[syntax=c]if (!Timer1){<br />  Timer1 =400 ;<br />  m++;<br />   }[/syntax]<br /><br />Zmienna m powinna się zwiększyć co 4 sekundy. A dalej jest drugie tyle czyli 8 sekund.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3441">Rafal9018</a> — 17 kwi 2015, o 09:29</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[nixie]]></name></author>
<updated>2015-04-17T09:15:49+01:00</updated>
<published>2015-04-17T09:15:49+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11408&amp;p=126745#p126745</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11408&amp;p=126745#p126745"/>
<title type="html"><![CDATA[Re: Timery programowe, czyżby złe obliczenia ??]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11408&amp;p=126745#p126745"><![CDATA[
<div class="quotetitle">Rafal9018 napisał(a):</div><div class="quotecontent"><br />język c<br />if (!Timer1){<br />                                                          Timer1 =100 ;<br />                                                          PORTC ^= LED2;<br />                                                                }<br />GeSHi<br /></div><br /><br />Co 1 sek. przełączasz diodę na stan przeciwny, czyli pełne mrugnięcie jest po 2 sek.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=358">nixie</a> — 17 kwi 2015, o 09:15</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Rafal9018]]></name></author>
<updated>2015-04-17T09:02:02+01:00</updated>
<published>2015-04-17T09:02:02+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11408&amp;p=126743#p126743</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11408&amp;p=126743#p126743"/>
<title type="html"><![CDATA[Timery programowe, czyżby złe obliczenia ??]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11408&amp;p=126743#p126743"><![CDATA[
Witam. Wykonuję pewien projekt, w którym używam Timerów programowych. Ale obliczenia nie zgadzają mi się z czasem, który faktycznie powinien wyjść. <br />Mianowicie dla Timerów programowych chcę uzyskać częstotliwość 100Hz.<br /><br />Posiadam Atmege8 i taktuję ją częstotliwością 1843200 Hz. <br />Preskaler ustawiałem na wartość 1024.<br /><br />Chcąc uzyskać częstotliwość 100 Hz wykonałem następujące obliczenia.<br /><br />1843200 / 1024 / 100 = 18  - wartość wpisana do rejestru OCR2.<br /><br />Ustawiania Timera 2:<br />[syntax=c]TCCR2 |= (1&lt;&lt;WGM21);// Timer 2 w trybie CTC<br />TCCR2 |= (1&lt;&lt;CS22)|(1&lt;&lt;CS21)|(1&lt;&lt;CS20);// Preskaler 1024<br />OCR2 = 18;//<br />TIMSK |= (1&lt;&lt;OCIE2);// zezwolenie na przerwanie Compare[/syntax]<br /><br />Więc uzyskuję częstotliwość 100 Hz. Jest to 0,01 sekundy.<br /><br />Wektor Przerwania:<br />[syntax=c]ISR( TIMER2_COMP_vect ) {<br />uint16_t n;<br /><br />n = Timer1;// 100Hz Timer1<br />if (n) Timer1 = --n;<br />n = Timer2;// 100Hz Timer2<br />if (n) Timer2 = --n;<br />}[/syntax]<br /><br />Funkcja migania diodą w pętli while:<br /><br />[syntax=c]if (!Timer1){<br />  Timer1 =100 ;<br />  PORTC ^= LED2;<br />  }[/syntax]<br /><br /><br />Otrzymuję 100 Hz czyli sygnał co 10ms.<br />Podstawiając za zmienna n wartość otrzymuję:<br /><br />n = 10  0,01s*10=0,1s  czyli 100 ms <br />n= 100 0,01*100=1s    czyli 1000ms<br /><br />Chce uzyskać efekt np 5 sekund:<br /><br />n= 500 0,01*500=5s  czyli 5000ms<br /><br /><br />Na płytce stykowej mam podłączony układ z diodą Led, po wgraniu do uC programu dioda zdecydowanie nie miga co 5 sekund. Tak ze stoperem w ręku co 10sek.<br /><br />Zauważyłem powtarzalność: <br /><br />Dla n=400 czas wynosi 8 sekund<br />Dla n=500  czas wynosi 10 sekund<br />Dla n=700 czas wynosi 14 sekund<br /><br /><br />Czy tak jest prawidłowo ?? (Wydaję mi się że nie)  Gdzie popełniam błąd ??<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3441">Rafal9018</a> — 17 kwi 2015, o 09:02</p><hr />
]]></content>
</entry>
</feed>