Arduino + timer2 + 32768Hz-es kristály

Processing/Wiring (illetve C) nyelvű programozási fogások, tippek. (AVR-Duino, Arduino, EthDuino, Diecimila, Severino, Nano, LilyPad)
Válasz küldése
Avatar
Ecku01
DrótVégénSzéndarab
Hozzászólások: 47
Csatlakozott: 2011. szeptember 12. hétfő, 6:00

Arduino + timer2 + 32768Hz-es kristály

Hozzászólás Szerző: Ecku01 »

Sziasztok!

Arduinon belül szeretnék csinálni egy "pontos" órát (16MHz-es kristály helyett egy 32768Hz-es kristállyal), de most a példa kedvéért egy 1 másodpercenként felvillanó leddel is beérem(ha ez megy onnantól már csak egy kis egyszerű programozás a perc, óra).
Én mindezt úgy gondoltam, hogy az atmega 328-as avr-t úgy állítom be, hogy a belső 8MHz-es óráját használja, így a 16Mhz-es külső kristály helyére be lehet tenni az órakristályt. (ezt már megoldottam, belső óráját szépen használja).
Úgy tudom h a Timer2-essel lehet túlcsordulást vizsgálni a külső kristályon, ehhez szeretnék segítséget kérni, hogy hogyan lehetséges ez? (ehhez nem találtam igazán jó leírást)
Ezután természetesen interrupt-ot és a sleep-elést is meg kéne oldani (,de ehhez már bőségesen találtam leírást).
Az atmega 328-ast természetesen kitettem próbapanelre, csak így lehetett mellétenni az órakristályt. Szeretném leszögezni, hogy nekem az avr-ezés csak laza hobbi, nem célom professzionális szinten űzni ezt, ezért ha valamit nem értek, vagy rosszul gondoltam nézzétek el nekem és javítsatok ki! :)

Üdv.: Ecku01
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Re: Arduino + timer2 + 32768Hz-es kristály

Hozzászólás Szerző: Robert »

Probléma:
Belső 8 MHz esetén a feltöltési sebességed max 9600 bps lehet (stabilitási probléma).
Így a boards.txt állományt is szerkesztened kell az új áramköröd függvényében.

A Timer2 használatával kinyúlsz az Arduino keretrendszerből. Miért nem jó, hogy beépített órát használsz a 16 MHz-s kvarcból?
http://playground.arduino.cc/Code/SimpleTimer
http://playground.arduino.cc/Code/Time

Itt ami alapján elindulnék az a MsTimer2:
http://playground.arduino.cc/Main/MsTimer2

Csak ötletelek. :)
A 32kHz pontossága ugyanannyi, mint a 16MHz-s kvarcé... És az életed bonyolultabb....

Óratippek:
http://avr.tavir.hu/modules.php?name=Co ... ge&pid=167
Avatar
Ecku01
DrótVégénSzéndarab
Hozzászólások: 47
Csatlakozott: 2011. szeptember 12. hétfő, 6:00

Re: Arduino + timer2 + 32768Hz-es kristály

Hozzászólás Szerző: Ecku01 »

Mivel a 32768Hz a 2 15 hatványa így az előosztásokkal pontosan kapom meg a másodpercet.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Re: Arduino + timer2 + 32768Hz-es kristály

Hozzászólás Szerző: Robert »

Kivéve, hogy a 16 MHz-ből is leosztja a függvény + a belső timerek nem 0...255 illetve 0...65535 közt járhatnak, hanem a számolás során megadhatsz kezdőértéket...

A külső kvarc ilyen óraalapú használata Arduino alatt nem igazán támogatott, mert:
- biztosítékbiteket kell átírni
- a belső 8 MHz esetén a soros port használhatatlan pontosságú lesz (ezért van a max 9600 bps)
- minden időzítésre épülő programrész időzítése széthullik (millis(), microseconds() -> LCD kezelés, időzítés, hanggenerálás, PWM frekvencia, Tone() és tone2()...)

Próbáld ki: egy sima programban az egyik lábat magas majd alacsony szintre rakod, közte meg 500 usec szünet. Az eredmény ~1 kHz hang. Most a chipet hajszárítóval melegítsd fel. A hangmagasság változik. Azaz a chip _órajele_ elmászott. Persze utánállítható az osccal regiszterrel :)
De ez már jócskán túlmutat az Arduino-n, de a Bascom-AVR rendszeren is... Ez HW közeli esemény :).
Avatar
Ecku01
DrótVégénSzéndarab
Hozzászólások: 47
Csatlakozott: 2011. szeptember 12. hétfő, 6:00

Re: Arduino + timer2 + 32768Hz-es kristály

Hozzászólás Szerző: Ecku01 »

Akkor azt mondod h 16MHz-es kristállyal is el tudok érni olyan eredményt, hogy nem fog brutálisan (1 hónap alatt több mint 2-3 perccel) eltérni az idő?
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Re: Arduino + timer2 + 32768Hz-es kristály

Hozzászólás Szerző: Robert »

Igen. A pontosság a 32768 és a 16 MHz kristálynál azonos.
20-30 ppm
Ez, ha nem számoltam el: 1M rezgés esetén +/-30 rezgést jelent.
Azaz 86400 mp/hó esetén <1 sec a hiba...


Ha mindenképp tutipontos kell:
- GPS
- NET NTP protokoll
- GSM modem időszerverként
- cézium óra
- termosztált kristály
Avatar
Ecku01
DrótVégénSzéndarab
Hozzászólások: 47
Csatlakozott: 2011. szeptember 12. hétfő, 6:00

Re: Arduino + timer2 + 32768Hz-es kristály

Hozzászólás Szerző: Ecku01 »

Rendben, meggyőztél maradok a 16MHz-es kristálynál, sleepelést és az interruptot már megoldottam, teszek még bele egy szoftware-es időkorrigálást és kész is a viszonylag pontos óra.
Köszönöm a segítséget!
Válasz küldése