-
Hmm ... ich konnte bis grade mit dem Begriff "Überlauf des Timers" nichts anfangen, jetzt bin ich schlauer :)
So, ich habe nur Timer0 oder Timer2 zur Verfügung, beide 8-bit.
Der Atmega8 läuft mit den internen 8MHz.
8MHz / 1024 (prescale) = 7812,5 Hz / Sekunde
Dann 7812,5Hz / 256 (8-bit) = 30,51
Heisst doch das der Timer0 dann 30,51 mal pro Sekunde überläuft oder ?
Um den Timer0 dann alle 20 überlaufen zu lassen müsste ich also
den Timer schon bei 2692,5 loslaufen lassen ?
Hab ich das so richtig verstanden ?
Gruß
Jens
-
Hallo Blue72,
der 8-Bit Timer kann nur von 0-255 zählen, dann löst er einen Interrupt (Überlauf) aus und fängt bei 0 wieder an.
Wenn du jetzt ausgerechnet hast, daß der Überlauf 30mal pro Sekunde auftritt und du ein Ereignis nach 3 Sekunden haben möchtest gilt:
1 Sekunde 30mal
3 Sekunden 90mal
also füge in die Interruptroutine eine Variable ein die auf 90 zählt, dann führst du deinen Code aus und setzt die Variable wieder auf 0.
Günter
-
Hallo Günter,
stimmt das habe ich so ausgerechnet, wollte nur wissen ob das was ich rechne überhaupt richtig ist (zum verstehen).
Gruß
Jens