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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-03-12T21:45:19+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=6240&amp;mode</id>
<entry>
<author><name><![CDATA[deathes]]></name></author>
<updated>2014-03-12T21:45:19+01:00</updated>
<published>2014-03-12T21:45:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6240&amp;p=74062#p74062</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6240&amp;p=74062#p74062"/>
<title type="html"><![CDATA[Re: tryb CTC - niepoprawne zliczanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6240&amp;p=74062#p74062"><![CDATA[
I właśnie, że podłączyłem rezonator kwarcowy 32,768khz pod TOSC1, TOSC2. Testuję już z 2h i nie ma kompletnie żadnej odchyłki w czasie. <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> W nocie od atmegi napisane jest, że nie potrzebne są dodatkowe pojemności, więc i ich nie stosowałem. Poniżej przedstawiam specyfikację i kod, może komuś się kiedyś też przyda <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> <br /><br />Atmega88PA-PU, taktowanie wewnętrzym oscylatorem 8Mhz, dodatkowo na nóżkach TOSC1, TOSC2 rezonator kwarcowy 32,768khz. Zasilanie filtrowane 100nF, 2,2uF. Nóżka reset rezystorem pod VCC, micro-switch pod gnd. LCD 2x16, tryb 4-bit. <br /><br />[syntax=c]#include &lt;avr/io.h&gt; // dołączenie głównego systemowego pliku nagłówkowego<br />#include &lt;avr/interrupt.h&gt; // dołączenie pliku nagłówkowego do obsługi przerwań<br />#include &lt;util/delay.h&gt; // dołączenie pliku odpowiedzialnego za deleye<br /><br />#include &quot;LCD/lcd44780.h&quot; // dołączanie biblioteki obsługi wywietlacza<br /><br />// definicja makr micro-switch'y<br />#define PCINT_K1 (1&lt;&lt;PC4)<br />#define PCINT_K2 (1&lt;&lt;PC3)<br />#define PCINT_K3 (1&lt;&lt;PC2)<br />#define PCINT_K4 (1&lt;&lt;PC1)<br />#define PCINT_K5 (1&lt;&lt;PC0)<br /><br />// definicje zmiennych globalnych<br />volatile uint8_t sekundy, minuty, godziny, temp;<br /><br />// deklaracja funkcji obługującej nastawę czasu<br />void time(void);<br />int main( void){<br /><br />PORTC |= PCINT_K1 | PCINT_K2 | PCINT_K3 | PCINT_K4 | PCINT_K5; // podciaganie klawiszy na pinach PC4..PC0 pod VCC<br /><br />// konfiguracja PCINT1<br />PCICR |= (1&lt;&lt;PCIE1);<br />PCMSK1 |= (1&lt;&lt;PCINT12) | (1&lt;&lt;PCINT11) | (1&lt;&lt;PCINT10) | (1&lt;&lt;PCINT9) | (1&lt;&lt;PCINT8);<br /><br />lcd_init();<br /><br />// zewnetrzny rezonator 32,768 khz<br />// przerwanie 1hz<br />// 8-bit TIMER/COUNTER2<br />TCCR2A |= (1&lt;&lt;WGM21);// ustawienie trybu CTC dla TIMER/COUNTER2 8-bitowego<br />TCCR2B |= (1&lt;&lt;CS20) | (1&lt;&lt;CS21) | (1&lt;&lt;CS22); // ustawianie preskalera = 1024<br />    OCR2A=31; // rejestr porownania licznika<br />ASSR |= (1&lt;&lt;AS2); // zezwolenie na taktowanie TIMER/COUNTER2 z kwarcu 32,768khz<br /><br />        sei(); // globalne zezwolenie na przerwania<br /><br />lcd_cls();<br />lcd_locate(0,0);<br />lcd_str(&quot;Czas:  00:00:00&quot;);<br /><br />time();<br /><br />while(1)<br />{<br /><br />if(sekundy&gt;59)<br />{<br />sekundy=0;<br />minuty++;<br />}<br />if(minuty&gt;59)<br />{<br />minuty=0;<br />godziny++;<br />}<br />if(godziny&gt;23)<br />{<br />godziny=0;<br />lcd_cls();<br />lcd_locate(0,0);<br />lcd_str(&quot;Czas:  00:00:00&quot;);<br />}<br /><br />lcd_locate(0,7);<br />if(godziny&lt;10) lcd_str(&quot;0&quot;);<br />lcd_int(godziny);<br />lcd_str(&quot;:&quot;);<br />if(minuty&lt;10) lcd_str(&quot;0&quot;);<br />lcd_int(minuty);<br />lcd_str(&quot;:&quot;);<br />if(sekundy&lt;10) lcd_str(&quot;0&quot;);<br />lcd_int(sekundy);<br /><br />}<br /><br />}<br />// ================= PROCEDURA OBSŁUGI PRZERWANIA – COMPARE MATCH<br />ISR(TIMER2_COMPA_vect){<br />sekundy++;<br /><br />}<br /><br />// procedura obslugi przerwan PCINT - nastawianie czasu<br />ISR( PCINT1_vect ) {<br /><br /> if( !(PINC &amp; PCINT_K3) ) // nastawa sekund<br /> {<br /> _delay_ms(80);<br /> if( !(PINC &amp; PCINT_K3) )<br /> {<br /> sekundy++;<br /> if(sekundy&gt;59) sekundy=0;<br /> }<br /> }<br /><br /> if( !(PINC &amp; PCINT_K2) )  // nastawa minut<br /> {<br /> _delay_ms(80);<br /> if( !(PINC &amp; PCINT_K2) )<br /> {<br /> minuty++;<br /> if(minuty&gt;59) minuty=0;<br /> }<br /> }<br /><br /> if( !(PINC &amp; PCINT_K1) )  // nastawa godzin<br /> {<br /> _delay_ms(80);<br />  if( !(PINC &amp; PCINT_K1) )<br />  {<br />  godziny++;<br />  if(godziny&gt;23) godziny=0;<br />  }<br /> }<br /><br /> if( !(PINC &amp; PCINT_K5) )  // zatwierdzenie nastawionego czasu<br /> {<br /> _delay_ms(80);<br /> if( !(PINC &amp; PCINT_K5) ) temp=1;<br /> }<br /><br /><br />}<br /><br />// funkcja przerwań zewnętrzych - ręczna nastawa czasu<br />void time(void){<br /><br />while(1){<br /><br />lcd_locate(0,0);<br />lcd_str(&quot;Czas:  &quot;);<br />if(godziny&lt;10) lcd_str(&quot;0&quot;);<br />lcd_int(godziny);<br />lcd_str(&quot;:&quot;);<br />if(minuty&lt;10) lcd_str(&quot;0&quot;);<br />lcd_int(minuty);<br />lcd_str(&quot;:&quot;);<br />if(sekundy&lt;10) lcd_str(&quot;0&quot;);<br />lcd_int(sekundy);<br />if(temp)<br />{<br />TIMSK2 |= (1&lt;&lt;OCIE2A);  // zezwolenie na przerwanie Compare Match A<br />// dezaktywacja zewnetrznych przerwań<br />PCMSK1 &amp;= ~((1&lt;&lt;PCINT12) | (1&lt;&lt;PCINT11) | (1&lt;&lt;PCINT10) | (1&lt;&lt;PCINT9) | (1&lt;&lt;PCINT8));<br />break;<br />}<br /><br />}<br /><br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2389">deathes</a> — 12 mar 2014, o 21:45</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kaka0204]]></name></author>
<updated>2014-03-12T21:18:53+01:00</updated>
<published>2014-03-12T21:18:53+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6240&amp;p=74059#p74059</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6240&amp;p=74059#p74059"/>
<title type="html"><![CDATA[Re: tryb CTC - niepoprawne zliczanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6240&amp;p=74059#p74059"><![CDATA[
Ja z uporem maniaka, będę Cię nakłaniał do sprawdzeniu na kwarcu. Taki rezonator kosztuje grosze a co za problem sprawdzić?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=889">kaka0204</a> — 12 mar 2014, o 21:18</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[deathes]]></name></author>
<updated>2014-03-12T17:51:19+01:00</updated>
<published>2014-03-12T17:51:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6240&amp;p=74000#p74000</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6240&amp;p=74000#p74000"/>
<title type="html"><![CDATA[Re: tryb CTC - niepoprawne zliczanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6240&amp;p=74000#p74000"><![CDATA[
Dziękuję za cenne uwagi. Początki nie są łatwe, eh <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2389">deathes</a> — 12 mar 2014, o 17:51</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2014-03-12T10:41:43+01:00</updated>
<published>2014-03-12T10:41:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6240&amp;p=73964#p73964</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6240&amp;p=73964#p73964"/>
<title type="html"><![CDATA[Re: tryb CTC - niepoprawne zliczanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6240&amp;p=73964#p73964"><![CDATA[
<div class="quotetitle">SylwekK napisał(a):</div><div class="quotecontent"><br />A czy zamiast OCR1A=15625; nie powinno być OCR1A=15624; - w końcu licznik liczy od zera te 15625 kawałeczków...<br /></div><br /><br />pewnie że powinno być<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 12 mar 2014, o 10:41</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SylwekK]]></name></author>
<updated>2014-03-12T09:38:11+01:00</updated>
<published>2014-03-12T09:38:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6240&amp;p=73959#p73959</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6240&amp;p=73959#p73959"/>
<title type="html"><![CDATA[Re: tryb CTC - niepoprawne zliczanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6240&amp;p=73959#p73959"><![CDATA[
A czy zamiast OCR1A=15625; nie powinno być OCR1A=15624; - w końcu licznik liczy od zera te 15625 kawałeczków...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1922">SylwekK</a> — 12 mar 2014, o 09:38</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2014-03-12T00:22:24+01:00</updated>
<published>2014-03-12T00:22:24+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6240&amp;p=73941#p73941</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6240&amp;p=73941#p73941"/>
<title type="html"><![CDATA[Re: tryb CTC - niepoprawne zliczanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6240&amp;p=73941#p73941"><![CDATA[
To nie o to chodzi - timery odpalasz poprawnie - ale próbując szukać jakiejś dokładności przy pomiarze TAAAK długich czasów to po prostu nieporozumienie. Timery służą do pomiarów szczególnie bardzo krótkich czasów - tu mają zastosowanie. A nie żeby na oko odliczać przez 5 minut albo godzinę - ile razy mignie dioda i czy na wewn oscylatorze RC mignie 10 razy więcej czy mniej, a na zewn kwarcu 5 razy mniej albo więcej ... ? tak jak mówię - to do niczego nie doprowadzi.<br /><br />Postaraj się np pomyśleć o zastosowaniu timera do powiedzmy pomiaru obrotów silniczka, pomiaru czasu jakichś krótkich impulsów, do nadawania / generowania przebiegów itp itd ...<br /><br />z takich doświadczeń wyciągniesz o wiele więcej pożytecznych wniosków a schodząc w dół do pomiarów coraz niższych czasów w końcu też dojdziesz - do tego gdzie zaczyna się różnica pomiędzy zastosowaniem wewn. oscylatora RC w porównaniu do kwarca .... tyle że mówię tu o czasach np rzędu mikrosekund ... czy nanosekund<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 12 mar 2014, o 00:22</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[deathes]]></name></author>
<updated>2014-03-11T23:50:36+01:00</updated>
<published>2014-03-11T23:50:36+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6240&amp;p=73937#p73937</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6240&amp;p=73937#p73937"/>
<title type="html"><![CDATA[Re: tryb CTC - niepoprawne zliczanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6240&amp;p=73937#p73937"><![CDATA[
No generalnie chciałem rozwiązać w końcu ten problem, bo jako, że jestem dopiero na początku przygody z prockami, chciałbym w końcu ogarnąć te timery i przerwania w jakimś chociaż podstawowym stopniu. Dlatego nie wiem, czy robię coś źle, czy nie. Ale po Pana wypowiedzi wnioskuję, że temat wyczerpałem, więc można zamykać. <br /><br />Pozdrawiam wszystkich<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2389">deathes</a> — 11 mar 2014, o 23:50</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2014-03-11T22:42:49+01:00</updated>
<published>2014-03-11T22:42:49+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6240&amp;p=73925#p73925</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6240&amp;p=73925#p73925"/>
<title type="html"><![CDATA[Re: tryb CTC - niepoprawne zliczanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6240&amp;p=73925#p73925"><![CDATA[
Panie kolego - daj że ty spokój z takim katowaniem siebie i timerów .... no powiedz - spróbuj chociaż wyjaśnić na co ci to ? na co te testy ? czego mają dowieść ? .... <br /><br />jak spróbujesz wyjaśnić - to prędzej uda się ciebie wyprowadzić z błędnego myślenia - tylko że teraz to nie wiadomo nawet o co chodzi ?<br /><br />napisz lepiej jaki masz cel ? co chcesz osiągnąć - to będzie można podpowiedzieć ci jaką drogą można pójść aby to rozwiązać bo teraz brniesz w ślepy zaułek<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 11 mar 2014, o 22:42</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[deathes]]></name></author>
<updated>2014-03-11T22:20:35+01:00</updated>
<published>2014-03-11T22:20:35+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6240&amp;p=73919#p73919</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6240&amp;p=73919#p73919"/>
<title type="html"><![CDATA[Re: tryb CTC - niepoprawne zliczanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6240&amp;p=73919#p73919"><![CDATA[
Skompilowałem cały kod, wrzuciłem na ten sam procek, to samo taktowanie wewnętrzne 8Mhz i co? Wyświetliłem na LCD ilość tooglów i w ciągu równych 5 minut dioda powinna zmienić stan 5x60=300 razy a wyświetlacz pokazuje 310. Wcześniej ten sam problem był na atmega88. Skoro oba procki są inne i w innym miejscu kupione prawdopodobieństwo, że są uszkodzone jest niskie. To co, programator źle programuje czy te wewnętrzne oscylatory są upośledzone. Poniżej przedstawiam kod ( bardzo lekko zmodyfikowany ). <br /><br /><br />[syntax=c]#include &lt;avr/io.h&gt; // dołączenie głównego systemowego pliku nagłówkowego<br />#include &lt;avr/interrupt.h&gt; // dołączenie pliku nagłówkowego do obsługi przerwań<br /><br />#include &quot;LCD/lcd44780.h&quot;<br /><br />#define Timer_LED (1&lt;&lt;PB0)                       //dioda sygnalizujaca prace timera 1<br /><br />volatile uint16_t licznik;<br /><br />int main(void) {<br /><br />lcd_init();<br /><br />         DDRB = Timer_LED | (1&lt;&lt;PB7);                          //kierunek portu C<br />     //    PORTB = Timer_LED;                         //podciągniecie nieuzywanego portu C<br /><br /><br />         sei();                                    //odblokowanie globalnych przerwan<br /><br />         TCCR1B = (1&lt;&lt;WGM12)|(1&lt;&lt;CS12);            //Timer 1 tryb CTC ,prescaler 256<br />         TIMSK = (1&lt;&lt;OCIE1A);                      //odblokowanie przerwania Timera 1<br />         OCR1A = 31250;                            //wpisanie wartosci do rejestru porownania ,31250 dla 1 sekundy<br /><br /><br /><br />        while(1){<br />        lcd_locate(0,0);<br />        lcd_int(licznik);<br /><br /><br />        }<br />}<br />ISR(TIMER1_COMPA_vect){                                      //przerwanie z rejestru porownania CTC<br />        PORTB ^= Timer_LED;                                      //zmien stan diody kontrolnej timer led<br />        licznik++;<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2389">deathes</a> — 11 mar 2014, o 22:20</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mac34]]></name></author>
<updated>2014-03-10T21:26:48+01:00</updated>
<published>2014-03-10T21:26:48+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6240&amp;p=73759#p73759</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6240&amp;p=73759#p73759"/>
<title type="html"><![CDATA[Re: tryb CTC - niepoprawne zliczanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6240&amp;p=73759#p73759"><![CDATA[
Powinno Ci pomóc ,mnie działa w zegarku ,napisane wczoraj. Wycinam to co potrzebne. Spróbuj. Na pewno trwa 1sek.<br /><br />Z tym ,że to Toogle ,więc miganie widać co 2 sek.<br /><br />Używam tej diody jako debbugera by sprawdzić ,czy poprawnie zatrzymuję i startuję Timer, wszystko działa u ciebie też powinno.<br /><br />A taktowanie 8MHz. (procek Atmega8, jak masz inny sprawdź nazwy rejestrów)   Wzór 8MHz / 256 / 31250 -&gt; 1Hz<br /><br />[syntax=c]#define Timer_LED (1&lt;&lt;PC5)                       //dioda sygnalizujaca prace timera 1<br /><br />int main(void) {<br /><br /><br /> DDRC = 0b0100000;                          //kierunek portu C<br /> PORTC = 0b1011111;                         //podciągniecie nieuzywanego portu C<br /><br /><br /><br /><br /><br /> <br /><br /> sei();                                    //odblokowanie globalnych przerwan<br /><br /> TCCR1B = (1&lt;&lt;WGM12)|(1&lt;&lt;CS12);            //Timer 1 tryb CTC ,prescaler 256<br /> TIMSK = (1&lt;&lt;OCIE1A);                      //odblokowanie przerwania Timera 1<br /> OCR1A = 31250;                            //wpisanie wartosci do rejestru porownania ,31250 dla 1 sekundy<br /><br /> <br /><br />while(1){<br /><br />        <br /><br />}<br />}<br /><br /><br /><br /><br />ISR(TIMER1_COMPA_vect){                                      //przerwanie z rejestru porownania CTC<br />PORTC ^= Timer_LED;                                      //zmien stan diody kontrolnej timer led<br /><br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3077">mac34</a> — 10 mar 2014, o 21:26</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2014-03-05T22:35:29+01:00</updated>
<published>2014-03-05T22:35:29+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6240&amp;p=73160#p73160</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6240&amp;p=73160#p73160"/>
<title type="html"><![CDATA[Re: tryb CTC - niepoprawne zliczanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6240&amp;p=73160#p73160"><![CDATA[
<div class="quotetitle">deathes napisał(a):</div><div class="quotecontent"><br />Zasadniczo stosuję się do zaleceń P. Mirka, który w każdym swoim poradniku deklaruje przed mainem<br /></div><br /><br />ale to DOTYCZY (podpowiadam) tylko funkcji a nie procedur obsługi przerwań <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> ok ? ..... tych nie musimy deklarować przed mainem jak słusznie wyżej podpowiada kolega<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 5 mar 2014, o 22:35</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[deathes]]></name></author>
<updated>2014-03-05T22:31:16+01:00</updated>
<published>2014-03-05T22:31:16+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6240&amp;p=73159#p73159</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6240&amp;p=73159#p73159"/>
<title type="html"><![CDATA[Re: tryb CTC - niepoprawne zliczanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6240&amp;p=73159#p73159"><![CDATA[
Zasadniczo stosuję się do zaleceń P. Mirka, który w każdym swoim poradniku deklaruje przed mainem, ale dziękuję za radę. Jednak dalej nie jest to rozwiązaniem mojego problemu <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2389">deathes</a> — 5 mar 2014, o 22:31</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kaka0204]]></name></author>
<updated>2014-03-05T22:15:24+01:00</updated>
<published>2014-03-05T22:15:24+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6240&amp;p=73156#p73156</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6240&amp;p=73156#p73156"/>
<title type="html"><![CDATA[Re: tryb CTC - niepoprawne zliczanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6240&amp;p=73156#p73156"><![CDATA[
<div class="quotetitle">deathes napisał(a):</div><div class="quotecontent"><br />Ta linijka to deklaracja wektora przerwania.<br /></div><br />Nie musisz jej deklarować, gdyż, jej deklarację dołączasz w pliku avr/interrupt.h<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=889">kaka0204</a> — 5 mar 2014, o 22:15</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[deathes]]></name></author>
<updated>2014-03-05T21:40:17+01:00</updated>
<published>2014-03-05T21:40:17+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6240&amp;p=73148#p73148</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6240&amp;p=73148#p73148"/>
<title type="html"><![CDATA[Re: tryb CTC - niepoprawne zliczanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6240&amp;p=73148#p73148"><![CDATA[
Ta linijka to deklaracja wektora przerwania. Odkąd uczę się C, wszelkie procedury, funkcje zawsze trzeba było zapisywać w postaci deklaracji dodatkowo nad main'em, więc podejrzewam, że ta linijka nie emituje zakłóceń. <br /><br />Czy ktoś ma jeszcze jakieś rozwiązanie?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2389">deathes</a> — 5 mar 2014, o 21:40</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Dawid2379]]></name></author>
<updated>2014-03-05T19:49:31+01:00</updated>
<published>2014-03-05T19:49:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6240&amp;p=73130#p73130</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6240&amp;p=73130#p73130"/>
<title type="html"><![CDATA[Re: tryb CTC - niepoprawne zliczanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6240&amp;p=73130#p73130"><![CDATA[
A po co tam na górze kodu ISR(TIMER1_COMPA_vect);? Może to ma jakiś wpływ...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1206">Dawid2379</a> — 5 mar 2014, o 19:49</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[deathes]]></name></author>
<updated>2014-03-05T18:39:05+01:00</updated>
<published>2014-03-05T18:39:05+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6240&amp;p=73127#p73127</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6240&amp;p=73127#p73127"/>
<title type="html"><![CDATA[Re: tryb CTC - niepoprawne zliczanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6240&amp;p=73127#p73127"><![CDATA[
Kod został poprawiony zgodnie z sugestią ale niestety dalej jest to samo. Policzyłem kilka razy i w czasie 30 sekund dioda zmienia swój stan 29 razy. Jeśli kod jest dobrze napisany to wina leży po stronie procka, chyba, że dalej coś jest źle ustawione.  <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /> <br /><br /><br /><br />[syntax=c]#include &lt;avr/io.h&gt; // dołączenie głównego systemowego pliku nagłówkowego<br />#include &lt;avr/interrupt.h&gt; // dołączenie pliku nagłówkowego do obsługi przerwań<br /><br />ISR(TIMER1_COMPA_vect);<br /><br />int main( void){<br /><br /><br />        TCCR1B |= (1&lt;&lt;WGM12);// ustawienie trybu CTC dla TIMER1 16-bitowego<br />        TCCR1B |= (1&lt;&lt;CS11) | (1&lt;&lt;CS10); // ustawianie preskalera = 64<br />        // generowana czestotliwosc 1Hz<br />        OCR1A=15625; // rejestr porownania licznika<br />        TIMSK1 |= (1&lt;&lt;OCIE1A);  // zezwolenie na przerwanie Compare Match<br /><br />        DDRB |=(1&lt;&lt;PB0);<br /><br />        sei(); // globalne zezwolenie na przerwania<br />        while(1){<br /><br />        }<br />}<br /><br />ISR(TIMER1_COMPA_vect){<br /><br />        PORTB ^=(1&lt;&lt;PB0);<br /><br /><br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2389">deathes</a> — 5 mar 2014, o 18:39</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2014-03-05T17:52:05+01:00</updated>
<published>2014-03-05T17:52:05+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6240&amp;p=73123#p73123</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6240&amp;p=73123#p73123"/>
<title type="html"><![CDATA[Re: tryb CTC - niepoprawne zliczanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6240&amp;p=73123#p73123"><![CDATA[
<div class="quotetitle">kaka0204 napisał(a):</div><div class="quotecontent"><br />może trochę przedobrzyłem<br /></div><br /><br />No no - ja bym nawet powiedział że nie &quot;może&quot; a - o cały ocean <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />więc jedna najważniejsza zasada - nie siejemy defetyzmu i plotek na bazie niesprawdzonych wiadomości i własnej wyobraźni bo sam się orientujesz - że później to się szerzy jak .... no właśnie <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />więc dajmy już spokój temu nieszczęsnemu przykładowi <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 5 mar 2014, o 17:52</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kaka0204]]></name></author>
<updated>2014-03-05T17:46:03+01:00</updated>
<published>2014-03-05T17:46:03+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6240&amp;p=73121#p73121</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6240&amp;p=73121#p73121"/>
<title type="html"><![CDATA[Re: tryb CTC - niepoprawne zliczanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6240&amp;p=73121#p73121"><![CDATA[
<div class="quotetitle">mirekk36 napisał(a):</div><div class="quotecontent"><br />ewentualnie proszę pokazać swój kod z tego doświadczenia<br /></div><br /><br />Kodu nie pokaże, bo go nie mam <img src="https://forum.atnel.pl/images/smilies/icon_razz.gif" alt=":P" title="Pokazuje język" /> Co do odchyłki, może trochę przedobrzyłem, ale była na pewno duża, powiedziałbym, że bardzo duża. Testowałem, też ten kod z tej stronki (bez rezonatora) i także był ten sam problem. <br /><br /><!-- m --><a class="postlink" href="http://danyk.cz/avr_hod.html" >http://danyk.cz/avr_hod.html</a><!-- m --><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=889">kaka0204</a> — 5 mar 2014, o 17:46</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2014-03-05T17:24:20+01:00</updated>
<published>2014-03-05T17:24:20+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6240&amp;p=73118#p73118</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6240&amp;p=73118#p73118"/>
<title type="html"><![CDATA[Re: tryb CTC - niepoprawne zliczanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6240&amp;p=73118#p73118"><![CDATA[
<div class="quotetitle">kaka0204 napisał(a):</div><div class="quotecontent"><br /><div class="quotetitle">deathes napisał(a):</div><div class="quotecontent">Uważam, że nie możliwością jest aż tak fatalna dokładność wewnętrznego oscylatora<br /></div><br /><br />Kiedyś robiłem prosty zegarek jeszcze w bascomie (w celu nauki), procek był pędzony tekże 1MHz wewnętrznym oscylatorem. Minuta trwała ok 90 sekund <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /></div><br /><br />Bo kolega bardzo źle napisał program - więc proszę nie opowiadać TAKICH HEREZJI niestety <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /> tzn żeby nie było nieporozumień - pisząc o tych herezjach nie chcę kolegi obrazić, ani się nie denerwuję ani nie krzyczę - chociaż napisałem to dużymi literami - ale dalej wyjaśnię dlaczego takiego określenia używam ok?<br /><br /><br />proszę nie zwalać kłopotów z umiejętnością programowania na takie niepowodzenia co do mierzonego czasu .... <br /><br />żeby lepiej zrozumieć o co chodzi z dokładnością wewn. oscylatorów w AVR proponuję sobie z jednej strony zajrzeć do noty PDF i zobaczyć o ile ew % może być odchyłka. A z drugiej strony proszę sobie powtórzyć to ćwiczenie nawet w Bascomie i gwarantuję - że NIGDY w ZADNYM wypadku przy poprawnie napisanym kodzie nie dojdzie do takiej rozbieżności <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> ok ? .... ewentualnie proszę pokazać swój kod z tego doświadczenia <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />reaguję na tą wypowiedź bo niestety w ten sposób rozsiewają się po świecie takie bajki a później ludziska tzn początkujący lecą do sklepu i kupują kwarca 1MHz bo rzekomo wewn oscylator jest AŻ TAK niedokładny <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 5 mar 2014, o 17:24</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kaka0204]]></name></author>
<updated>2014-03-05T16:46:05+01:00</updated>
<published>2014-03-05T16:46:05+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6240&amp;p=73116#p73116</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6240&amp;p=73116#p73116"/>
<title type="html"><![CDATA[Re: tryb CTC - niepoprawne zliczanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6240&amp;p=73116#p73116"><![CDATA[
<div class="quotetitle">deathes napisał(a):</div><div class="quotecontent"><br />Uważam, że nie możliwością jest aż tak fatalna dokładność wewnętrznego oscylatora<br /></div><br /><br />Kiedyś robiłem prosty zegarek jeszcze w bascomie (w celu nauki), procek był pędzony tekże 1MHz wewnętrznym oscylatorem. Minuta trwała ok 90 sekund <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=889">kaka0204</a> — 5 mar 2014, o 16:46</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2014-03-05T10:56:33+01:00</updated>
<published>2014-03-05T10:56:33+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6240&amp;p=73080#p73080</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6240&amp;p=73080#p73080"/>
<title type="html"><![CDATA[Re: tryb CTC - niepoprawne zliczanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6240&amp;p=73080#p73080"><![CDATA[
<div class="quotetitle">DC2002 napisał(a):</div><div class="quotecontent"><br />Dokładnie! Jeśli używamy przerwania COMPB to musimy wpisać wartość do rejestru OCR1B..<br /></div><br /><br />tylko że jeśli OCR1A będzie miało mniejszą wartość to i tak na nic się zda takie działanie z COMPB<br /><br />używaj OCR1A oraz przerwania COMPA<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 5 mar 2014, o 10:56</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[DC2002]]></name></author>
<updated>2014-03-05T10:34:35+01:00</updated>
<published>2014-03-05T10:34:35+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6240&amp;p=73079#p73079</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6240&amp;p=73079#p73079"/>
<title type="html"><![CDATA[Re: tryb CTC - niepoprawne zliczanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6240&amp;p=73079#p73079"><![CDATA[
Dokładnie! Jeśli używamy przerwania COMPB to musimy wpisać wartość do rejestru OCR1B..<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=286">DC2002</a> — 5 mar 2014, o 10:34</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Lukasz89]]></name></author>
<updated>2014-03-05T07:32:41+01:00</updated>
<published>2014-03-05T07:32:41+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6240&amp;p=73060#p73060</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6240&amp;p=73060#p73060"/>
<title type="html"><![CDATA[Re: tryb CTC - niepoprawne zliczanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6240&amp;p=73060#p73060"><![CDATA[
Używaj do wstawiania kodu syntax c.<br />Obliczone chyba dobrze, ale wyliczoną wartość ładujesz do OCR1<strong>A</strong> a włączasz i obsługujesz przerwanie od porównania <strong>B</strong>.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=590">Lukasz89</a> — 5 mar 2014, o 07:32</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[deathes]]></name></author>
<updated>2014-03-05T01:51:06+01:00</updated>
<published>2014-03-05T01:51:06+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=6240&amp;p=73057#p73057</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=6240&amp;p=73057#p73057"/>
<title type="html"><![CDATA[tryb CTC - niepoprawne zliczanie]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=6240&amp;p=73057#p73057"><![CDATA[
Witam,<br /><br />Mam problem z wygenerowaniem przerwania dokładnie z częstotliwością 1Hz. Ustawiłem wszystko jak należy, policzyłem jaką wartość należy ustawić na rejestrze porównania i generalnie przerwanie następuje w okolicach 1hz jednak po kilku sekundach migotania diody można już zauważyć odchył w czasie. Pod spodem zamieszczam kod. Pracuję na Atmega88PA-PU, standardowe ustawienie Fuse bitów, taktowanie tak samo: 1Mhz. (niestety w darmowej wersji Mkavr nie można tego procka ustawić, więc po zakupie niczego nie zmieniałem. <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> ). Uważam, że nie możliwością jest aż tak fatalna dokładność wewnętrznego oscylatora dlatego napewno sam zrobiłem coś nie tak. Bardzo proszę o pomoc. Pozdrawiam <br /><br /><br />[syntax=c]#include &lt;avr/io.h&gt; // dołączenie głównego systemowego pliku nagłówkowego<br />#include &lt;avr/interrupt.h&gt; // dołączenie pliku nagłówkowego do obsługi przerwań<br /><br />ISR(TIMER1_COMPB_vect);<br /><br />int main( void){<br /><br /><br />TCCR1B |= (1&lt;&lt;WGM12);// ustawienie trybu CTC dla TIMER1 16-bitowego<br />TCCR1B |= (1&lt;&lt;CS11) | (1&lt;&lt;CS10); // ustawianie preskalera = 64<br />// generowana czestotliwosc 1Hz<br />OCR1A= 15625; // rejestr porownania licznika <br />TIMSK1 |= (1&lt;&lt;OCIE1B);  // zezwolenie na przerwanie Compare Match<br /><br />DDRB |=(1&lt;&lt;PB0);<br /><br />sei();<br />while(1){<br /><br /><br />}<br />}<br /><br />ISR(TIMER1_COMPB_vect){<br /><br />PORTB ^=(1&lt;&lt;PB0); <br /><br /><br /><br />}[/syntax]<br /><span style="color: #FF0000">Do wstawiania kodu używamy znacznika 'syntax' zamiast znacznika 'code' - poprawiłem (Sonix)</span><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2389">deathes</a> — 5 mar 2014, o 01:51</p><hr />
]]></content>
</entry>
</feed>