das Programm hat damit nichts zu tun.
Du musst den Timer so einstellen, dass er alle 100ms einen Interrupt
auslöst.
Entscheidende Faktoren dafür:
-Taktfrequenz
-Vorteiler
-Reload-Wert
Es gibt 2 grundsätzliche Möglichkeiten beim Timerinterrupt:
-den OV-Int benutzen, dann musst du in der ISR den Counter mit dem
passenden Wert laden (der Counter steht auf 0, du lädst einen Wert >0,
d.h. du kannst bestimmen, wie lange es bis zum nächsten Int dauert)
-den OCR-Int in Verbindung mit der CTC-Funktion
Du schreibst den gewünschten Wert einmal ins OCR-Register, erreicht der
Zähler diesen Stand, wird der OCR-Int ausgelöst (da kannst du dann deine
Uhr programmieren), gleichzeitig wird automatisch der Counter auf 0
gesetzt.
Ich bevorzuge die 2.Variante.
Und ein Beispiel: Quarz 4 MHz = 0,25µs, Vorteiler 8 ->
Timertakt=500kHz=2µs.
100ms/2µs=50.000.
Also entweder OCR mit 50.000 laden und den OCR-Int verwenden oder den
Zähler bei jedem OV mit 65536-50000 laden und den OV auswerten.