kleiner Affe schrieb:
> Ich möchte alle 5ms mit dem Timer0 ein Interrupt erzeugen.
OK.
> So wies ich
> das verstehe kann man nun mit den CS2 bis CS0 Bits im TCCR0 Register die
> Taktquelle wählen,
Ja.
> was ich auf I/O Takt gestellt habe.
Also ohne Prescaler.
> Nun frage ich
> mich jedoch, wo man diesen I/O Takt einstellen kann.
Der IO-Takt ist in der Frequenz immer gleich dem CPU-Takt.
Der einzige Grund, beide namentlich zu unterscheiden ist, dass sie
in den verschiedenen Schlaf-Möglichkeiten unterschiedlich behandelt
werden.
> (Momentan ist er
> gleich schnell wie der Quarz), doch hoffe ich diesen noch mit 256 teilen
> zu können.
Der ATmega8 hat keinerlei Vorteiler für den Takt, anders als seine
(pinkompatiblen) Nachfolgemodelle (ATmega88 etc.).
Wenn es unbedingt der Timer0 sein muss, dann würde ich dir ernsthaft
zu etwas Modernerem als einem ATmega8 raten. Der Timer0 dort hat
als einzige Interruptmöglichkeit den Overflow-Interrupt. Wenn man
den Interrupt nicht nur aller 256 Zählertakte auslösen lassen will,
dann muss man in der ISR den Zähler neu vorladen. Jegliche
Verzögerung dieser Aktion (durch vorübergehende Interruptsperre)
führt zu Jitter und längeren Taktzeiten. Neuere AVRs haben hier
einen so genannten CTC-Modus (Clear Timer on Compare match), bei
dem sich „ungerade“ Teilerfaktoren durch die Hardware erledigen
lassen.