AVR-Timer-Berechnung

Wie funktioniert die Berechnung : Die Taktfrequenz eines Atmel-AVR wird meist von einem Quarz(oszillator) abgeleitet. Diese Taktfrequenz wird zuerst mit Hilfe des Prescalers runtergeteilt. Das ist bei der Erzeugung kleiner Ausgangsfrequenzen nötig.

Taktfrequenz : Prescaler = Takt_neu
16000000 Hz : 64 = 250000

Der Takt_neu wird durch die gewünschte Zielfrequenz geteilt und ergibt den Zählerwert, den der Timer noch bis zum Überlauf benötigt und damit einen Interrupt auslöst. Ein 8-Bit-Timer läuft bei 255 über, ein 16-Bit-Timer bei 65535.

Takt_neu : Zielfrequenz = Zählerwert
250000 : 2000 Hz = 125

Da der Zählerwert kleiner als 255 ist, kann in diesem Beispiel ein 8-Bit-Timer verwendet werden. Zum Schluss wird der Zählerwert vom Maximalwert des Timers abgezogen, das Ergebnis ist der Preload.

Maximalwert des Timers - Zählerwert = Preload
255 - 125 = 130

Initialiserung : Timer mit Preload laden
der Timer zählt nun von 130 bis 255 und verursacht beim Überlauf einen Interrupt
in der Interruptroutine : Timer mit Preload laden ...