Zwei verschiedene Timeouts

#275865
Lesenswert?

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.

...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren