MezData-Logo

Zylonenauge OOP

Zylonenauge umverpackt

Ziel eine Klasse entwickeln, die die Hardware komfortabel wegabstrahiert.

 

Beispiel Arduino: wiring.c

Timer0 CTC-ISR jede 1ms

F_CPU gibt die eingestellte Frequenz vor.

F_CPU Taktzahl Vorteiler TZ/VT OCR0A Korrekturfaktor
1MHz 1000 8 125 124  
2MHz 2000 8 250 249  
4MHz 4000 64 62,5 62 1/2
6MHz 6000 64 93,75 93 1/4
8MHz 8000 64 125 124  
16MHz 16000 64 250 249  
20MHz 20000 256 78,125 78 7/8

Durch Korrekturfaktoren kann für alle Frequenzen eine gute 1ms Zeitbasis mit Timer0 erreicht werden. Beispiel 4MHz: Die ISR müsste nach 62,5 Schritten ausgelöst werden. Wenn OCR0A auf 62 eingestellt wird passiert die ISR nach 63 Schritten, ein halber Schritt zu spät. Die Milisekunden würden zu langsam gezählt werden. Deshalb der Korrekturfaktor 1/2: Jeden zweiten Durchlauf eine ms dazuzählen.

Stimmt die Überlegung oder liegt ein Denkfehler vor?


Timer0 kann auch für die Anzeige im Zeitmultiplexverfahren verwendet werden.