Jürgen schrieb:
> Sorry. ich verstehe leider nur Bahnhof.
>
> Es geht ja um einen 16-Bit-Timer. da geht es ja darum das ich ein
> compare wert vorgebe. habe ich ein compare match, als wurde beim
> hochzählen eben dieser wert erreicht wird ein interrupt ausgelöst, oder?
Nein. Es geht in erster Linie nicht um einen Timer.
Es geht darum wie Interrupts bearbeitet werden.
Tritt etwas Interruptwürdiges auf, so wird das entsprechende Bit im TIFR
Register gesetzt um dort festzuhalten, dass das Ereignis aufgetreten
ist.
Ob dieses Ereignis dann dazu führt, dass die zugehörige ISR aufgerufen
wird oder nicht, entscheidet das TIMSK Register. Nur wenn das zugehörige
Bit dort gesetzt ist, mündet das ganze in einem Aufruf der ISR.
Alle Interrupt-Mechanismen auf dem AVR funktionieren so:
Mit einem Bit wird festgehalten, dass das Ereignis aufgetreten ist
Mit einem anderen Bit wird festgelegt, ob die dazu gehörende ISR
aufgerufen wird.
Das ein bestimmtes Ereignis aufgetreten ist, wird IMMER mit einem Bit
festgehalten. Egal ob eine ISR dafür vereinbart wurde oder nicht. Egal
ob die Interrupts generell freigegeben sind (sei()) oder nicht (cli()).