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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-03-27T09:21:27+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=11176&amp;mode</id>
<entry>
<author><name><![CDATA[matti0010]]></name></author>
<updated>2015-03-27T00:18:34+01:00</updated>
<published>2015-03-27T00:18:34+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11176&amp;p=124754#p124754</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11176&amp;p=124754#p124754"/>
<title type="html"><![CDATA[Re: Problem z zegarkiem - duży błąd przy odmierzaniu czasu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11176&amp;p=124754#p124754"><![CDATA[
Właśnie pieniądze to główny problem, z tego powodu chcę ograniczyć się z dodatkowymi układami. Miałem już tę książkę w ręce i planuję ją kupić, ale najpierw muszę uzbierać dość funduszy, więc zachęcać mnie nie trzeba <img src="https://forum.atnel.pl/images/smilies/icon_razz.gif" alt=":P" title="Pokazuje język" /><br /><br />Poczytam ten temat i chyba to mnie wystarczy jeżeli chodzi o przykłady, dziękuję <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> Naprawdę wszyscy okazali mi tu nieocenioną pomoc, jesteście niesamowici <img src="https://forum.atnel.pl/images/smilies/icon_razz.gif" alt=":P" title="Pokazuje język" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5344">matti0010</a> — 27 mar 2015, o 00:18</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[anshar]]></name></author>
<updated>2015-03-27T00:10:58+01:00</updated>
<published>2015-03-27T00:10:58+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11176&amp;p=124753#p124753</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11176&amp;p=124753#p124753"/>
<title type="html"><![CDATA[Re: Problem z zegarkiem - duży błąd przy odmierzaniu czasu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11176&amp;p=124753#p124753"><![CDATA[
Zobacz ten wątek <a href="http://forum.atnel.pl/topic11157.html"  class="postlink">http://forum.atnel.pl/topic11157.html</a><br />Znajdziesz tam przykład na ATmega32.<br />Jeśli chcesz by trochę lepiej działał to podłącz zewnętrzny kwarc 11.0592 MHz i w pliku main.c zamiast OCR2=77 daj OCR2=107.<br />A gdy zależy Ci na dokładniejszym zegarku to tak jak pisałem wcześniej użyj układu DS3231 i kodu p. Mirka (link do &quot;darmowego&quot; poradnika masz kilka postów wyżej).<br />Jeśli naprawdę chcesz nauczyć się programowania w C to szczerze polecam Ci zakup BB <a href="http://atnel.pl/mikrokontrolery-avr-jezyk-c.html"  class="postlink">http://atnel.pl/mikrokontrolery-avr-jezyk-c.html</a>. <br />Tam znajdziesz nie tylko &quot;suchą wiedzę&quot; <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /> , ale rewelacyjne przykłady, dzięki którym wiele się nauczysz. Dodatkowo na płycie DVD znajdziesz wszystkie przykłady z naprawdę dobrymi (dopracowanymi ) bibliotekami, a nie często byle jakimi z internetu. <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /> Książka trochę kosztuje, wiem, ale warta jest tych pieniędzy, bez dwóch zdań! Gorąco polecam! Proszę nie traktuj mojej namowy do zakupu jako przymusu. Bez tej książki też dasz radę się nauczyć, tylko że zmarnujesz mnóstwo czasu. A jak mówią: czas to pięniądz. Pozdrawiam serdecznie!<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=7157">anshar</a> — 27 mar 2015, o 00:10</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[matti0010]]></name></author>
<updated>2015-03-26T20:33:44+01:00</updated>
<published>2015-03-26T20:33:44+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11176&amp;p=124721#p124721</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11176&amp;p=124721#p124721"/>
<title type="html"><![CDATA[Re: Problem z zegarkiem - duży błąd przy odmierzaniu czasu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11176&amp;p=124721#p124721"><![CDATA[
a mógłby ktoś mi dać przykład? łatwiej jest mi zrozumieć zasadę działania na przykładzie a nie czytając suchą teorię. Oczywiście jeżeli to nie problem dla jakiegoś forumowicza <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=5344">matti0010</a> — 26 mar 2015, o 20:33</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[WoodPaker]]></name></author>
<updated>2015-03-26T20:17:23+01:00</updated>
<published>2015-03-26T20:17:23+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11176&amp;p=124717#p124717</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11176&amp;p=124717#p124717"/>
<title type="html"><![CDATA[Re: Problem z zegarkiem - duży błąd przy odmierzaniu czasu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11176&amp;p=124717#p124717"><![CDATA[
da się przenieść tylko trzeba będzie popatrzeć do DS'a jak nazywają się poszczególne rejestry. Czy są takie same czy może sie pozmieniały. Ale zasada obliczania zostaje taka sama.<br />Ale z tego co pamiętam jest tam jakaś różnica więć trzeba będzie napisać od początku.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1425">WoodPaker</a> — 26 mar 2015, o 20:17</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[matti0010]]></name></author>
<updated>2015-03-26T19:42:37+01:00</updated>
<published>2015-03-26T19:42:37+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11176&amp;p=124715#p124715</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11176&amp;p=124715#p124715"/>
<title type="html"><![CDATA[Re: Problem z zegarkiem - duży błąd przy odmierzaniu czasu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11176&amp;p=124715#p124715"><![CDATA[
To mam inne pytanie w tym momencie: muszę przenieść kod z ATmega8 na mocniejszą, np. na ATmega32. Czy Poza zmianą pinów I/O muszę zmienić ustawienia zegara itd? chodzi mi o ten licznik w ATmedze, ponieważ jestem w tym zielony i nie wiem czy one są &quot;przenaszalne&quot; czy może trzeba od zera je pisać<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5344">matti0010</a> — 26 mar 2015, o 19:42</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[maniocek]]></name></author>
<updated>2015-03-26T19:25:17+01:00</updated>
<published>2015-03-26T19:25:17+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11176&amp;p=124713#p124713</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11176&amp;p=124713#p124713"/>
<title type="html"><![CDATA[Re: Problem z zegarkiem - duży błąd przy odmierzaniu czasu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11176&amp;p=124713#p124713"><![CDATA[
Może ja coś podpowiem, choć sam się uczę. <br />Jak nie możesz uzyskać częstotliwości 1Hz za pomocą preskalera, to może warto użyć trybu CTC ?<br />Ja popełniłem coś takiego na ATmega32 napędzana wewnętrznym oscylatorem 8MHz,uzyskując częstotliwość przerwania 1000Hz .<br /><br />[syntax=c]TCCR2 |= (1&lt;&lt;WGM21); // tryb CTC<br />TCCR2 |= (1&lt;&lt;CS22); // preskaler 64<br />OCR2 = 124; // dodatkowy podział (rejestr przepełnienia)<br />TIMSK |= (1&lt;&lt;OCIE2); // zezwolenie na przerwanie CTC Timer2[/syntax] <br /><br />Zegarek zrealizowałem za pomocą kodu,umieszczonego w przerwaniu:<br /><br />[syntax=c]if(++m == 1000)<br />{<br />m=0;<br />sekunda++;<br />}<br />if(sekunda &gt;= 10)<br />{<br />sekunda -= 10;<br />dsekund++;<br />}<br />if (dsekund &gt;= 6)<br />{<br />dsekund -= 6;<br />minuty++;<br /><br />}<br />if(minuty &gt;= 10)<br />{<br />minuty -=10;<br />dminut++;<br />}<br />if(dminut &gt;= 6)<br />{<br />dminut -= 6;<br />godzina++;<br />}<br />if(godzina &gt;=10)<br />{<br />godzina -=10;<br />dgodzin++;<br />}<br />if(dgodzin==2 &amp;&amp; godzina==4)<br />{<br />dgodzin=0;<br />godzina=0;<br />}[/syntax]<br /><br />Wszystko zostało tak zrobione, bym miał pojedyncze liczby na wyświetlacz LED.<br />Oczywiście zegarek też nie był dokładny, łapał  gdzieś minutę na godzinę, nie pamiętam dokładnie.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8503">maniocek</a> — 26 mar 2015, o 19:25</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[WoodPaker]]></name></author>
<updated>2015-03-26T00:55:19+01:00</updated>
<published>2015-03-26T00:55:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11176&amp;p=124656#p124656</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11176&amp;p=124656#p124656"/>
<title type="html"><![CDATA[Re: Problem z zegarkiem - duży błąd przy odmierzaniu czasu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11176&amp;p=124656#p124656"><![CDATA[
<div class="quotetitle">matti0010 napisał(a):</div><div class="quotecontent"><br />Ogólnie chcę mieć zegarek któy będzie liczył z cczęstotliwością1Hz, niestety tutaj nie otrzymiętego ponieważ maksymalny systemowy preskaler jaki mogę ustawić (a przynajmniej ja tak to rozumię) to 1024.<br /></div><br />Niestety nie mogę sie z Toba zgodzić. <br />Zacznijmy od początku. Masz zegar 2MHz co daje 2 000 000 Hz<br />Wg moich obliczeń przy użyciu tajmera 1 można bez problemu ustawić preskaler na 64 co dam nam niemalże bezbłędne odliczanie. Dla preskalera 1024 błąd jak wspominałem wcześniej wynosi 1,28%<br />Jest wiele kalkulatorów. Ja proponujue ten <!-- m --><a class="postlink" href="http://impuls.elektroda.eu/joomla/index.php/mikroprocesory-avr/programowanie/kalkulatory-avr/avr-timer-kalkulator" >http://impuls.elektroda.eu/joomla/index ... kalkulator</a><!-- m --> zkorzystaj i zobaczysz, że można spokojnie ustawic inny preskaler i teżbędzie GIT<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1425">WoodPaker</a> — 26 mar 2015, o 00:55</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jacekk232]]></name></author>
<updated>2015-03-25T21:56:49+01:00</updated>
<published>2015-03-25T21:56:49+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11176&amp;p=124642#p124642</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11176&amp;p=124642#p124642"/>
<title type="html"><![CDATA[Re: Problem z zegarkiem - duży błąd przy odmierzaniu czasu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11176&amp;p=124642#p124642"><![CDATA[
Można też wykorzystać kwarc zegarkowy 32768Hz podłączony do pinów TOSC1 i TOSC2. I tym kwarcem taktować Timer2 pracujący w trybie asynchronicznym<br /><!-- l --><a class="postlink-local" href="http://forum.atnel.pl/topic8369.html#p93820" >topic8369.html#p93820</a><!-- l --><br /><!-- l --><a class="postlink-local" href="http://forum.atnel.pl/topic8487.html#p95182" >topic8487.html#p95182</a><!-- l --><br /><br />Wtedy procesor można taktować wewnętrznym oscylatorem o wartości np. 8MHz a Timer2 taktowany kwarcem zegarkowym będzie ładnie odmierzał 1s.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=204">jacekk232</a> — 25 mar 2015, o 21:56</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[matti0010]]></name></author>
<updated>2015-03-25T21:52:36+01:00</updated>
<published>2015-03-25T21:52:36+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11176&amp;p=124641#p124641</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11176&amp;p=124641#p124641"/>
<title type="html"><![CDATA[Re: Problem z zegarkiem - duży błąd przy odmierzaniu czasu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11176&amp;p=124641#p124641"><![CDATA[
właśnie ustawiłem trochę inaczej a mianowicie, dałem kwarc 10,240MHz, a do tego ustawiłem<br />[syntax=c]if(sek&gt;39)<br />{<br />a++;<br />sek=0;<br />}[/syntax]<br />Jak narazie w ciagu 22 minut nie widzę nawet sekundy opóźnienia. <br /><br />Dziękuję wszystkim za pomoc <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=5344">matti0010</a> — 25 mar 2015, o 21:52</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[HCOOH]]></name></author>
<updated>2015-03-25T21:07:24+01:00</updated>
<published>2015-03-25T21:07:24+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11176&amp;p=124634#p124634</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11176&amp;p=124634#p124634"/>
<title type="html"><![CDATA[Re: Problem z zegarkiem - duży błąd przy odmierzaniu czasu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11176&amp;p=124634#p124634"><![CDATA[
<div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />Teraz mam problem, bo jeżeli chce mieć dokładnie 1s to powinienem mieć całkowitą liczbę przerwań w sekundzie, bez ułamków. Tutaj mam 7,8125 więc jest nie za dobrze. Dobrze rozumuję?<br /></div><br /><br />Jak najbardziej. Musisz uzyskać liczbę całkowitą.<br /><br />Proponuję Ci tak:<br /><br />Przerzuć się na 16-bitowy Timer (czyli taki, który potrafi odliczać od 0 do 65535). W atmedze8 jest to Timer1.<br /><br />Dla częstotliwości 2 000 000 Hz ustaw prescaler 64 i otrzymasz 31250 tyknięć timera na sekundę. Jeśli ma ów być w trybie overflow-normal (choć polecam CTC), to ustaw mu wartość początkową (i ponawiaj to ustawianie w procedurze obsługi przerwania) równą 65536 - 31250 = 34286. Będziesz miał przerwanie co sekundę<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2954">HCOOH</a> — 25 mar 2015, o 21:07</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[matti0010]]></name></author>
<updated>2015-03-25T21:07:00+01:00</updated>
<published>2015-03-25T21:07:00+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11176&amp;p=124633#p124633</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11176&amp;p=124633#p124633"/>
<title type="html"><![CDATA[Re: Problem z zegarkiem - duży błąd przy odmierzaniu czasu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11176&amp;p=124633#p124633"><![CDATA[
Na obecną chwilę zrobie na samym kwarcu, dam 10,240MHz. Potem faktycznie spróbuję RTC i zainteresuje się PCF. Będę miał porównanie <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> <br /><br />Tylko w jaki sposób najlepiej zrobić to programowo by nie wprowadzało mi to problemów.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5344">matti0010</a> — 25 mar 2015, o 21:07</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Grzegorz...]]></name></author>
<updated>2015-03-25T21:00:12+01:00</updated>
<published>2015-03-25T21:00:12+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11176&amp;p=124632#p124632</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11176&amp;p=124632#p124632"/>
<title type="html"><![CDATA[Re: Problem z zegarkiem - duży błąd przy odmierzaniu czasu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11176&amp;p=124632#p124632"><![CDATA[
<div class="quotetitle">matti0010 napisał(a):</div><div class="quotecontent"><br />Wolałbym nie dokładać trymerka ponieważ może się rozregulować z czasem a chciałbym zamknać to potem w pudełku i niech śmiga sobie latami <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /> mimo że jestem młody to przekażę to swoim wnukom za wieeeele lat <img src="https://forum.atnel.pl/images/smilies/icon_lol.gif" alt=":lol:" title="Śmieje się" /><br /></div><br /><br />No wnukom przekazać możesz, ale on będzie mieć już wtedy odchyłkę o kilka lat <img src="https://forum.atnel.pl/images/smilies/icon_lol.gif" alt=":lol:" title="Śmieje się" />.<br />Po prostu uC bez użycia RTC nie uzyskasz pożądanej dokładności - chyba, że zrobisz synchronizację z jakimś zegarem atomowym (czy to przez DCF czy też przez internet) i zgodzisz się na to, że pomiędzy synchronizacjami będzie &quot;troszkę nie tak&quot;.<br />Innym wyjściem jest PCF, a jeszcze lepiej właśnie super dokładny RTC przytoczony przez kolegę powyżej RTC DS3231 (jego opis tu: <!-- m --><a class="postlink" href="http://mirekk36.blogspot.co.uk/2013/11/rtc-ds3231-najdokadniejszy-zegarek-na.html" >http://mirekk36.blogspot.co.uk/2013/11/ ... ek-na.html</a><!-- m -->), ale i jego czasem warto zsynchronizować z czymś zewnętrznym. Tyle tylko, że w tym przypadku możesz to robić dość rzadko. <br />Ja bym to porównał tak:<br />- sam uC bez RTC - synchro co godzinę (albo i częściej zależnie jak dużą odchyłkę zauważysz)<br />- PCF - synchro raz na dobę<br />- DS3231 - synchro raz na tydzień (albo i rzadziej) <br /><br />Wybierz sam - każdemu wg. potrzeb.<br /><br />-- <br />Grzegorz...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1748">Grzegorz...</a> — 25 mar 2015, o 21:00</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[matti0010]]></name></author>
<updated>2015-03-25T20:56:05+01:00</updated>
<published>2015-03-25T20:56:05+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11176&amp;p=124631#p124631</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11176&amp;p=124631#p124631"/>
<title type="html"><![CDATA[Re: Problem z zegarkiem - duży błąd przy odmierzaniu czasu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11176&amp;p=124631#p124631"><![CDATA[
Akurat z lutowaniem sobie radzę, ale zrobiłem sobie założenie że chcę narazie ograniczyć sięz modułami zewnętrznymi, dopiero jak nauczę sie w miarę jak obsługiwać same ATmegi to podepnę kolejne moduły. Właśnie doszedł mi moduł radia TEA <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />Czy zastąpienie kwarcu 2MHz innym pomoże? takim który nie będzie mi dawał liczb ułamkowych. Np. mam 7,3728MHz i 10,240MHz, ale nie wiem który lepiej włożyć (o ile to pomoże)<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5344">matti0010</a> — 25 mar 2015, o 20:56</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[anshar]]></name></author>
<updated>2015-03-25T20:32:18+01:00</updated>
<published>2015-03-25T20:32:18+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11176&amp;p=124625#p124625</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11176&amp;p=124625#p124625"/>
<title type="html"><![CDATA[Re: Problem z zegarkiem - duży błąd przy odmierzaniu czasu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11176&amp;p=124625#p124625"><![CDATA[
Radziłbym Ci jednak zastosować układ RTC np. DS3231, nie jest on drogi <a href="https://www.sklep.atnel.pl/pl/p/RTC-DS3231SN/87"  class="postlink">https://www.sklep.atnel.pl/pl/p/RTC-DS3231SN/87</a>, a zobacz jakie możliwości <a href="http://mirekk36.blogspot.co.uk/2013/11/rtc-ds3231-najdokadniejszy-zegarek-na.html"  class="postlink">http://mirekk36.blogspot.co.uk/2013/11/rtc-ds3231-najdokadniejszy-zegarek-na.html</a><br />Jeśli nie masz wprawy w lutowaniu napewno kupisz dość tanio gotowy modół z baterią przez internet, wystarczy tylko poszukać. <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> — 25 mar 2015, o 20:32</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[matti0010]]></name></author>
<updated>2015-03-25T20:20:30+01:00</updated>
<published>2015-03-25T20:20:30+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11176&amp;p=124624#p124624</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11176&amp;p=124624#p124624"/>
<title type="html"><![CDATA[Re: Problem z zegarkiem - duży błąd przy odmierzaniu czasu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11176&amp;p=124624#p124624"><![CDATA[
Spróbuję wyjaśnić jak ja to rozumię lecz jak pisałem, jestem początkującym  <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> <br /><br />Ogólnie chcę mieć zegarek któy będzie liczył z cczęstotliwością1Hz, niestety tutaj nie otrzymiętego ponieważ maksymalny systemowy preskaler jaki mogę ustawić (a przynajmniej ja tak to rozumię) to 1024.<br />Więc zapis:<br />[syntax=c]TCCR0 |= (1&lt;&lt;CS02) | (1&lt;&lt;CS00);[/syntax]<br />ustawia mi preskaler na opcje dzielenia przez 1024 sygnału zegarowego (ustawiłem by CLK był kwarc zewnętrzny 2MHz).<br /><br />Otrzymuję więc 1953,125Hz czyli jest to 0,512ms. Ustawiam TCNT0 = 6; (więc 255-6=249, czyli 250stanó) więc przerwanie pojawi mi się raz na 128ms. Więc w jednej sekundzie mieści mi sie 7,8125 przerwań. Zmienna a zwiększa mi się po określonej liczbie przepełnień jednocześnie ustawiając mi wtedy sygnał że minęła 1sekunda.<br /><br />[syntax=c]if(sek&gt;7)<br />{<br />a++;<br />sek=0;<br />}[/syntax]<br /><br />Teraz mam problem, bo jeżeli chce mieć dokładnie 1s to powinienem mieć całkowitą liczbę przerwań w sekundzie, bez ułamków. Tutaj mam 7,8125 więc jest nie za dobrze. Dobrze rozumuję?<br /><br />Wzorowałem sie na tej stronie :..., lecz niestety dopiero zaczynam zabawę z przerwaniami, licznikami i programowaniem układów.<br /><br />Wolałbym nie dokładać trymerka ponieważ może się rozregulować z czasem a chciałbym zamknać to potem w pudełku i niech śmiga sobie latami  <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /> mimo że jestem młody to przekażę to swoim wnukom za wieeeele lat  <img src="https://forum.atnel.pl/images/smilies/icon_lol.gif" alt=":lol:" title="Śmieje się" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5344">matti0010</a> — 25 mar 2015, o 20:20</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[wzagra]]></name></author>
<updated>2015-03-27T09:21:27+01:00</updated>
<published>2015-03-25T20:03:24+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11176&amp;p=124623#p124623</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11176&amp;p=124623#p124623"/>
<title type="html"><![CDATA[Re: Problem z zegarkiem - duży błąd przy odmierzaniu czasu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11176&amp;p=124623#p124623"><![CDATA[
W niewielkim stopniu można skorygować częstotliwość kwarcu przez dodanie do kwarcu trymera (kondensatora regulowanego - <a href="http://forum.atnel.pl/_obrazki/o/5148/8a206de8cdc03213145e62d6ad0ae35e.jpg"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/5148/8a206de8cdc03213145e62d6ad0ae35e.jpg" alt="Obrazek" /></a> ). Do jednej nóżki kwarcu kondensator stały i do masy, do drugiej trymer i do masy. Jednak tego typu korekta da tylko niewielkie zmiany. Moim zdaniem pozostaje korekta programowa, która jest jak najbardziej prawidłowa.<br />(Coś jak tu -<a href="http://forum.atnel.pl/_obrazki/o/5148/c3be7668850db02ff981402b10614730.jpg"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/5148/c3be7668850db02ff981402b10614730.jpg" alt="Obrazek" /></a>- nóżki 15, 16 PIC-a)<br /><br /><span style="color: #FF0000">[ fotki na forum umieszczamy w ten sposób: <!-- l --><a class="postlink-local" href="http://forum.atnel.pl/topic44.html" >topic44.html</a><!-- l --> - mirekk36 ]</span><br /><br />Poprawiłem <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=5148">wzagra</a> — 25 mar 2015, o 20:03</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[WoodPaker]]></name></author>
<updated>2015-03-25T19:55:20+01:00</updated>
<published>2015-03-25T19:55:20+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11176&amp;p=124622#p124622</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11176&amp;p=124622#p124622"/>
<title type="html"><![CDATA[Re: Problem z zegarkiem - duży błąd przy odmierzaniu czasu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11176&amp;p=124622#p124622"><![CDATA[
OK, pierwsza rzecz<br />[syntax=c]TCCR0 |= (1&lt;&lt;CS02) | (1&lt;&lt;CS00); // zrodlem jest CLK, preskaler 1024<br />         TIMSK |= (1&lt;&lt;TOIE0);           //Przerwanie overflow (przepełnienie timera)<br />         TCNT0 = 6;          //Początkowa wartość licznika[/syntax]<br /><br />Coś tu ustawiasz ale wrodzone lenistwo nie pozwala mi zaglądnąć do DS'a żeby sprawdzić co. Przydała by sie informacja typu &quot;chcę uzyskać częstotliwość mrugania zegarkiem 1Hz&quot;. Wtedy ja czy ktoś inny jesteśmy w stanie sprawdzić czy to co chciałeś uzyskać uzyskałeś czy może tu jest babol. To jeswt pierwsza rzecz i zdanie &quot;prescaler 1024&quot; też niewiele wyjaśnia. <br />Choć dla 2MHz kwarcu i prescalera 1024 przy częstotliwości 1Hz vłąd jest na poziomie 1.28%. Więc podaj więcej informacji, a na pewno ktoś Ci pomoże <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=1425">WoodPaker</a> — 25 mar 2015, o 19:55</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[matti0010]]></name></author>
<updated>2015-03-25T19:45:46+01:00</updated>
<published>2015-03-25T19:45:46+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11176&amp;p=124618#p124618</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11176&amp;p=124618#p124618"/>
<title type="html"><![CDATA[Problem z zegarkiem - duży błąd przy odmierzaniu czasu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11176&amp;p=124618#p124618"><![CDATA[
Witam, <br />mam problem z odmierzaniem czasu a mianowicie: podczas 1 minuty pojawia mi się błąd ok 2sekund. Mogę to skorygować programowo lecz chciałbym by liczyło mi dobrze. Podpiąłem kwarc 2MHz, ustawiłem ATmega8 na zewnętrzny kwarc, dałem C przy nim i błąd nadal pozostał. Czy istnieje możliwość poprawienia tego bez konieczności wkładania dodatkowych układów? Słyszałem o układach RTC lecz jestem w tym zupełnie zielony. <br /><br />Kod:<br />[syntax=c]/*<br /> * main.c<br /> *<br /> *  Created on: Mar 18, 2015<br /> *      Author: mat<br /> */<br /><br />// kwarc zewnętrzny 2MHz<br /><br />#include &lt;avr/io.h&gt;<br />#include &quot;hd44780.h&quot;<br />#include &lt;stdio.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br /><br />volatile uint8_t sek=0;<br />volatile uint8_t a = 0; //skundy<br />volatile uint8_t klik=0; //przycisk<br /><br />int main(void)<br />{<br />//port PB0 i PB1 są wejsciami dla przyciskó z podciagnięciem do VCC<br />DDRB = 0x00;<br />PORTB = 0x03;<br />//linie PD0..PD6 sa podawane na LCD<br /><br />sei(); //Globalne uruchomienie przerwań<br /><br />/* Funkcja inicjalizuje wyswietlacz*/<br />lcd_init();<br />/* Wlacza wyswietlanie */<br />LCD_DISPLAY(LCDDISPLAY);<br /><br />//bufory by moc wyrzucic liczby na LCD<br />char bufor1&#91;10&#93;;<br />char bufor2&#91;10&#93;;<br />char bufor3&#91;10&#93;;<br />char bufor4&#91;10&#93;;<br />char bufor5&#91;10&#93;;<br />char bufor6&#91;10&#93;;<br /><br />int c=0;//godziny<br />int b=0;//minuty<br />int d=0;//zmienna co ustawiam w budziku<br />int e=0;//godziny<br />int f=0;//minuty<br />int g=0;//sekundy<br />int prz1=0; //flaga zwolnienia/zajecia przycisku<br />int prz2=0;<br />int prz3=0;<br />int prz4=0;<br /><br />//TIMER<br /> TCCR0 |= (1&lt;&lt;CS02) | (1&lt;&lt;CS00); // zrodlem jest CLK, preskaler 1024<br /> TIMSK |= (1&lt;&lt;TOIE0);           //Przerwanie overflow (przepełnienie timera)<br /> TCNT0 = 6;          //Początkowa wartość licznika<br /><br /><br /><br />while(1)<br />{<br />//rzutowanie liczb na znaki<br />sprintf(bufor1, &quot;%d&quot;, a);<br />sprintf(bufor2, &quot;%d&quot;, b);<br />sprintf(bufor3, &quot;%d&quot;, c);<br />sprintf(bufor4, &quot;%d&quot;, e);<br />sprintf(bufor5, &quot;%d&quot;, f);<br />sprintf(bufor6, &quot;%d&quot;, g);<br />//wyswietlanie liczb na LCD<br />LCD_LOCATE(6,0);<br />lcd_puts(bufor1);<br />LCD_LOCATE(3,0);<br />lcd_puts(bufor2);<br />LCD_LOCATE(5,0);<br />lcd_puts(&quot;:&quot;);<br />LCD_LOCATE(2,0);<br />lcd_puts(&quot;:&quot;);<br />LCD_LOCATE(0,0);<br />lcd_puts(bufor3);<br />LCD_LOCATE(0,1);<br />lcd_puts(&quot;budzik: &quot;);<br />LCD_LOCATE(8,1);<br />lcd_puts(bufor4);<br />LCD_LOCATE(10,1);<br />lcd_puts(&quot;:&quot;);<br />LCD_LOCATE(11,1);<br />lcd_puts(bufor5);<br />LCD_LOCATE(13,1);<br />lcd_puts(&quot;:&quot;);<br />LCD_LOCATE(14,1);<br />lcd_puts(bufor6);<br /><br />if(a==60)<br />{<br />LCD_CLEAR;<br />a=0;<br />b++;<br />}<br />if(b==60)<br />{<br />LCD_CLEAR;<br />b=0;<br />c++;<br />}<br />if(c==24)<br />{<br />LCD_CLEAR;<br />c=0;<br />}<br /><br /><br />if (!(PINB &amp; 0x01) &amp;&amp; (klik==0) &amp;&amp; (prz2==0))<br />{<br />prz2=1;<br />d++;<br />d=d%4;<br />}<br />if (PINB &amp; 0x01)<br />{<br />prz2=0;//zeruje flage po puszczeniu przycisku<br />}<br /><br />if ((d==1) &amp;&amp; (!(PINB &amp; 0x02)) &amp;&amp; (klik==0) &amp;&amp; (prz1==0))<br />{<br />prz1=1;//ustawia flage przycisku i trzymie ja do czasu puszczenia przycisku<br />e++;<br />e=e%24;<br />LCD_LOCATE(8,1);<br />lcd_puts(&quot;  &quot;);<br />}<br />if (PINB &amp; 0x02)<br />{<br />prz1=0;//zeruje flage po puszczeniu przycisku<br />}<br />if ((d==2) &amp;&amp; (!(PINB &amp; 0x02)) &amp;&amp; (klik==0) &amp;&amp; (prz3==0))<br />{<br />prz3=1;//ustawia flage przycisku i trzymie ja do czasu puszczenia przycisku<br />f++;<br />f=f%60;<br />LCD_LOCATE(11,1);<br />lcd_puts(&quot;  &quot;);<br />}<br />if (PINB &amp; 0x02)<br />{<br />prz3=0;//zeruje flage po puszczeniu przycisku<br />}<br />if ((d==3) &amp;&amp; (!(PINB &amp; 0x02)) &amp;&amp; (klik==0) &amp;&amp; (prz4==0))<br />{<br />prz4=1;//ustawia flage przycisku i trzymie ja do czasu puszczenia przycisku<br />g++;<br />g=g%60;<br />LCD_LOCATE(14,1);<br />lcd_puts(&quot;  &quot;);<br />}<br />if (PINB &amp; 0x02)<br />{<br />prz4=0;//zeruje flage po puszczeniu przycisku<br />}<br /><br />}<br />}<br /><br />//Procedura obsługi przerwania od przepełnienia timera<br />ISR(TIMER0_OVF_vect)<br />{<br />//jak dam 6 to roznica pomiaru wynosi 6 sekund (spieszy)<br />TCNT0 = 6; //jak dam 5 to roznica w 1 minucie pomiary wynosi 2sekundy (spoznia)<br />sek++;<br />klik=!klik;<br /><br />if(sek&gt;7)<br />{<br />a++;<br />sek=0;<br />}<br /><br />}[/syntax]<br /><br />Pozdrawiam forumowiczów <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=5344">matti0010</a> — 25 mar 2015, o 19:45</p><hr />
]]></content>
</entry>
</feed>