<?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=58&amp;t=7878&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-07-24T18:55:11+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=58&amp;t=7878&amp;mode</id>
<entry>
<author><name><![CDATA[gumeni]]></name></author>
<updated>2014-07-24T18:55:11+01:00</updated>
<published>2014-07-24T18:55:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7878&amp;p=88765#p88765</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7878&amp;p=88765#p88765"/>
<title type="html"><![CDATA[Re: TIMER ATMEGA8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7878&amp;p=88765#p88765"><![CDATA[
Tak powinna mrugać co około sekundę.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3088">gumeni</a> — 24 lip 2014, o 18:55</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[MisiekZPieklaRodem]]></name></author>
<updated>2014-07-24T18:51:11+01:00</updated>
<published>2014-07-24T18:51:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7878&amp;p=88764#p88764</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7878&amp;p=88764#p88764"/>
<title type="html"><![CDATA[Re: TIMER ATMEGA8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7878&amp;p=88764#p88764"><![CDATA[
Dzieki Panowie, teraz to wszystko działa. Z początku myślałem, że coś pochrzaniłem przy rejestrach timera, pierwszy raz to robiłem za pomocą noty aplikacyjnej procka.<br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />Przy takim zegarze, preskalerze, wartości rejestru OCR2 oraz warunku, zmiana nastąpi co niecałą minutę (1MHz / 1024 / 240 / 240 = 0,017Hz).<br /></div> - dopiero po tym poście zakumałem, jak prawidłowo policzyć czas nastąpienia przerwania. <br />Idąc tym tokiem jesli mam taktowanie 8MHZ, preskaler ustawiony na 1024, wartosc rejestu OCR2 240 to dostane 32 impulsy na licznik w ciągu sekundy. Czyli jeśli ustawie wartość &quot;counter&gt;=32&quot; powinienem otrzymać przerwanie w przybliżeniu o sekunde? Am I right?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5194">MisiekZPieklaRodem</a> — 24 lip 2014, o 18:51</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[gumeni]]></name></author>
<updated>2014-07-24T14:28:35+01:00</updated>
<published>2014-07-24T14:28:35+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7878&amp;p=88697#p88697</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7878&amp;p=88697#p88697"/>
<title type="html"><![CDATA[Re: TIMER ATMEGA8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7878&amp;p=88697#p88697"><![CDATA[
[syntax=c]#include &lt;avr/io.h&gt;<br />    #include &lt;util/delay.h&gt;<br />    #include &lt;avr/interrupt.h&gt;<br /><br />    #define LED1 (1&lt;&lt;PC5)<br />    #define LED_TOG PORTC ^=(LED1);<br /><br />    volatile uint16_t counter=0;<br /><br /><br /><br />                    int main(void)<br />                    {<br />                    TCCR2|=(1&lt;&lt;WGM21);<br />                    TCCR2 &amp;=~(1&lt;&lt;WGM20);  //wlaczenie trybu CTC timera. Ta linijka nie jest potrzebna przy starcie procka jest tam już ustawione 0 <br />                    TCCR2 |= (1&lt;&lt;CS20) | (1&lt;&lt;CS21) | (1&lt;&lt;CS22); // ustawienie preskalera 1024<br />                    OCR2 =240;<br />                    TIMSK |= (1&lt;&lt;OCIE2);  //zezwolenie na przerwania<br />                    DDRC|= LED1;<br />                   // PORTC|=LED_TOG;<br /><br /><br /><br />                    sei();<br /><br />                            while(1)<br />                            {<br /><br />                                    if(counter&gt;=1){<br />                                            counter=0;<br />                                            LED_TOG;<br />                                            }<br /><br />                            }<br /><br /><br /><br />                    }<br /><br />    ISR(TIMER2_COMP_vect)   //obsluga przerwania<br />    {<br /><br />            counter++ ;<br />    }[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3088">gumeni</a> — 24 lip 2014, o 14:28</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[atmel]]></name></author>
<updated>2014-07-24T14:32:49+01:00</updated>
<published>2014-07-24T14:20:02+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7878&amp;p=88692#p88692</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7878&amp;p=88692#p88692"/>
<title type="html"><![CDATA[Re: TIMER ATMEGA8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7878&amp;p=88692#p88692"><![CDATA[
Kierunek portu w tym wypadku i większości tak prostych programów ustawiamy przed pętlą główną (DDRC |= LED1; przed while).<br />PORTC |= LED_TOG; po rozwinięciu przez kompilator to PORTC |= PORTC ^= ((1&lt;&lt;PC5));;, czyli raczej nietypowy zapis sam przyznasz <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" />. Poza tym wcale tej linijki nie powinno być.<br />Przy takim zegarze, preskalerze, wartości rejestru OCR2 oraz warunku, zmiana nastąpi co niecałą minutę (1MHz / 1024 / 240 / 240 = 0,017Hz).<br />Dodatkowo zmienne globalne są automatycznie zerowane, więc nie potrzeba tego robić (nie jest to oczywiście błąd).<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1183">atmel</a> — 24 lip 2014, o 14:20</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[MisiekZPieklaRodem]]></name></author>
<updated>2014-07-24T13:48:52+01:00</updated>
<published>2014-07-24T13:48:52+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7878&amp;p=88689#p88689</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7878&amp;p=88689#p88689"/>
<title type="html"><![CDATA[TIMER ATMEGA8]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7878&amp;p=88689#p88689"><![CDATA[
Ahoj!<br /><br />Mam pytanie, co mogłem w tym kodzie zrobić źle?<br /><br />Program jest napisany pod Atmege8, ustawilem fusy na 1MHz taktowania, we wlasciwosciach oczywsicie tez zmienilem taktowanie na 1MhZ. Wszystko po to, żeby gołym okiem zauważyć zmiany w miganiu diodą LED. Policzylem, że przy 1MHz w ciagu sekundy powinno dojsc do 4 zmian, a to jest juz zauwazalne. Niestety z tym programem to nie działa. Sprawdzalem dwa razy czy zgadzaja się resjestry z nota aplikacyjną. Nie mam już pomysłów.:/<br /><br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br /><br />#define LED1 (1&lt;&lt;PC5)<br />#define LED_TOG PORTC ^=(LED1);<br /><br />volatile uint16_t counter=0;<br /><br /><br /><br />int main(void)<br />{<br />TCCR2|=(1&lt;&lt;WGM21);<br />TCCR2 &amp;=~(1&lt;&lt;WGM20);  //wlaczenie trybu CTC timera<br />TCCR2 |= (1&lt;&lt;CS20 | 1&lt;&lt;CS21 | 1&lt;&lt;CS22); // ustawienie preskalera 1024<br />OCR2 |=240;<br />TIMSK|= (1&lt;&lt;OCIE2);  //zezwolenie na przerwania<br /><br /><br /><br />sei();<br /><br />while(1)<br />{<br />DDRC|= LED1;<br />PORTC|=LED_TOG;<br /><br />if(counter&gt;=240){<br />counter=0;<br />LED_TOG;<br />}<br /><br />}<br /><br /><br /><br />}<br /><br />ISR(TIMER2_COMP_vect)   //obsluga przerwania<br />{<br /><br />counter++ ;<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5194">MisiekZPieklaRodem</a> — 24 lip 2014, o 13:48</p><hr />
]]></content>
</entry>
</feed>