Schnipi schrieb:
> LED im 1 Sekundenabstand blinken lassen ( Takt 1HZ)
> ATMEGA 8 wird verwendet CPU Taktfrequenz (4MHZ)
> 8 BIT Timer
> Vorteiler soll 256 sein
Das geht schlicht und einfach nicht. Der maximale Wert, den du in einen
8Bit-Timer laden kannst, ist 255, was effektiv als ein Teiler von 256
wirkt. Die kleinstmögliche Überlauffrequenz bei Vorteiler 256 ist dann
also:
4.000.000
--------------- = ca. 61Hz
256 * (255 + 1)
Im CTC-Mode mit Output-Toggle oder den PWM-Modi != FAST-PWM könnte man
das nochmal durch zwei teilen und käme dann auf ca. 30,5Hz
Ausgangsfrequenz.
Und selbst der größtmögliche Vorteiler von 1024 könnte das auch nur um
den Faktor 4 ändern, damit käme man dann auf knapp 8Hz.
Kurzfassung: Du mußt entweder einen 16Bit-Zähler verwenden oder den
Zählumfang des 8Bit-Zählers per Software erweitern, um eine Ausgabe von
1Hz erreichen zu können.
Um bei 4MHz Takt und Vorteiler 256 exakt 1Hz zu erreichen, wäre es
sinnvoll, den CTC-Modus zu verwenden und das CTC-Register mit 124 oder
249 zu laden, dann läuft der Timer mit 125Hz oder 62,5Hz über.
In beiden Fällen brauchst du bloß noch ein Byte, um die
Software-Zählererweiterung beherbergen zu können. Der Unterschied steckt
im Code der ISR. Der Nutzcode der ISR für die 62,5Hz-Variante ist etwas
aufwendiger, dafür wird sie aber auch nur halb so oft aufgerufen, was
den Interrupt-Overhead um die Hälfte reduziert. Insgesamt dürfte deshalb
die 62,5Hz-Variante effizienter sein.