Zitat Zitat von SprinterSB
In der ISR brauchst du kein cli zu machen, ...
Eine Frage hierzu: Ich kenne die AVR-Programmierung nur durch den ASURO. In der dortigen C-Entwicklungsumgebung wird ein angepasster GCC als Compiler genutzt.
Um damit eine ISR zu schreiben gibt es zwei Varianten um eine ISR einzuleiten:

1: SIGNAL (Interrupt-Name)
Das ist die Regel bei den mir bekannten ASURO-Sourcen. Hier werden tatsächlich innerhalb der ISR keine weiteren Interrupt behandelt. Erst nachdem eine ISR fertig ist, prüft die CPU ob eine weitere ISR aufgerufen werden muss.

2: INTERRUPT (Interrupt-Name)
Hier können laut Doku auch innerhalb der ISR-Funktion noch weitere Interrupts kommen, und werden auch sofort bearbeitet solange der zweite Interrupt eine höhere Proiorität hat. (Prio. ist durch die Hardware festgelegt.)
P.S.: Ich hoffe, dass es INTERRUPT (..) heisst, bin aber 100%-sicher, das es diese Variante gibt.

Nun zur Frage:
semicolon nutzt zur ISR-Einleitung ISR (INT0_vect). Ist hier eine andere Compiler-Variante im Spiel? Und wenn ja, gibt es eventuell auch hier die beiden oben aufgeführten Möglichkeiten? Was macht dann aber ISR() genau? (mit/ohne unterbrechbarkeit)

@semicolon
Ich bin nur neugierig. Dieser Eintrag hat nicht allzuviel mit deiner Aufgabenstellung zu tun.