Um
nun aus diesem Systemtakt 440 Hz zu erzeugen, ist mittels der
Möglichkeiten, die der Vorteiler des Zählers und der Zäh ler selbst
bieten, der Systemtakt herab zuteilen. Dabei muss beachtet werden, dass
der Vorteiler-Faktor so zu wählen ist, dass die gewünschte Wartezeit im
8-Bit-Zählbereich des Zählers von 1 bis 255 liegt. Die Wartezyklen
werden dann bei jedem Interrupt des Timers als Differenz zu 255 in den
Zähler geladen. Eine Re-Initialisierung bei diesem Differenzwert
bewirkt, dass die Zyklen bis zum nächsten Nulldurchlauf wieder
herabgezählt werden. Bei der relativ geringen Auflösung unseres
8-Bit-Zählers und der ganzzahligen Teilung wird nicht jede gewünschte
Frequenz exakt erreicht werden, so auch unsere 440 Hz. Denn wenn wir die
Taktzyklen exakt durch die Vorteiler-Faktoren teilen, ergeben sich
immer Nachkommastellen, die mit dem ganzzahligen Zähler nicht zu
realisieren sind. Wir vernachlässigen jedoch hier die geringe
Abweichung, die unter einem Prozent liegt. Wir teilen also die o. g.
4189 Taktzyklen durch 64, 256 und 1024 und erhalten als nächstliegende
ganze Zählerwerte entsprechend 65, 16 und 4. Rechnen wir zurück:
64 x 65 = 4160
256 x 16 = 4096
1024 x 4 = 4096
4160
liegt dem Ziel 4189 am nächsten, also wählen wir die Kombination:
Vorteiler 64, und Re-Initialisierungswert 190 (255 – 65). Auf diese
Weise kann man nahezu jede beliebige Frequenz bis herauf zur
Taktfrequenz (dann ist der Vorteiler über das Register TCCR0
abzuschalten) erzeugen. Nachdem wir nun alle benötigten Voraussetzungen
besprochen haben, was zeigt, wie man eine zu lösende Aufgabe vorab
durchdenken muss, können wir nun an das Schreiben des Programms gehen.