Waitms nimmt man nicht, das ist Unfug.
In Int-Vektorliste Sprünge zu den ISRs eintragen.
In Reset-Routine
- Timer starten (Vorteilerwert in tccr1b schreiben)
- in timsk die gewünschten Interrupts freischalten
- Interrupts global freischalten (SEI)
In ISR für Output-Compare1
- SREG sichern
- OCR1H:OCR1L auslesen
- gewünschte Verzögerung zu OCR1H:OCR1L addieren
- Ergebnis nach OCR1H:OCR1L zurückschteiben
- die Arbeit erledigen, die dieser Interrupt tun soll...
- SREG wiederherstellen
In ISR für Output-Compare2
- SREG sichern
- OCR2H:OCR2L auslesen
- gewünschte Verzögerung zu OCR2H:OCR2L addieren
- Ergebnis nach OCR2H:OCR2L zurückschteiben
- die Arbeit erledigen, die dieser Interrupt tun soll...
- SREG wiederherstellen
Eventuell sind noch Register zu sichern und wiederherzustellen, falls
man keine Exklusivregister für ISR reserviert hat.
...