Hallo,
ich gehe mal davon aus, das es ein AVR-µC ist und der Code mit GCC
übersetzt wird (wenn man sowas dazuschreibt, kann man auch gezielter
abtworten...).
Innerhalb einer ISR sind die Interrupts gesperrt und werden erst durch
RETI wieder freigegeben.
Wenn also
1 | cli();
|
2 | read_adc(); //hier soll noch kein sprung in die ISR erfolgen
|
3 | sei(); //aber hier <-- würde der Sprung in die ISR erfolgen
|
innerhalb einer ISR steht, ist cli/sei überflüssig.
Nach dem Ende einer ISR wird noch ein Befehl des Hauptprogramms
ausgeführt, bevor ein anstehender Interrupt bearbeitet wird.
Gruß aus Berlin
Michael