-
-
Erfahrener Benutzer
Fleißiges Mitglied
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
-
Erfahrener Benutzer
Begeisterter Techniker
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
-
Erfahrener Benutzer
Fleißiges Mitglied
Hallo Günter,
stimmt das habe ich so ausgerechnet, wollte nur wissen ob das was ich rechne überhaupt richtig ist (zum verstehen).
Gruß
Jens
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen