Forum: Compiler & IDEs timer


von alex (Gast)


Lesenswert?

hallo,

ich arbeite gerade mit dem µC von myAVR und versuche den 16-bit timer
auf genau eine sekunde einzustellen! kann mir da jemand helfen was ich
für einen vorteiler einstellen muss bzw. wie weit der counter dann noch
zählen muss?!

Gruß

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Im Auslieferungszustand wird der ATmega8 mit dem internen
1-MHz-RC-Oszillator betrieben.  Da der 16-bit-Zähler maximal
bis 65535 zählen kann, brauchst du also einen Vorteiler von
mehr als 1000000/65536 = 15.258.  Der nächste mögliche Vorteiler
wäre 64 (CS10 und CS11 in TCCR1B gesetzt).  1000000/64 ergibt
15625 Hz Taktfrequenz für den Timer.

Du müsstest als Betriebsmodus den CTC-Modus (clear timer on
compare match) einstellen (WGM12 in TCCR1B gesetzt) und in
OCR1A den Wert 15625 laden, dann bekommst du einen compare
match jede Sekunde.  Dazu wirst du vermutlich den compare match
1A Interrupt einschalten wollen, damit du zum Ablauf jeder
Sekunde auch irgendwas erledigen kannst. ;-)

Falls du den vorhandenen Quarz per Fuse konfiguriert haben
solltest, ändert sich die Rechnung natürlich.  Ich habe aber
keine Ahnung, welche Frequenz selbiger haben soll.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.