Hallo!
Wie bei allen Prozessoren, die ich kenne, können auch beim ATmega die
Interrupts nur nacheinander abgearbeitet werden. Dass ist auch logisch,
da nur ein Prozessorkern vorhanden ist und zur gleichen Zeit nun mal nur
ein Maschinenbefehl abgearbeitet werden kann.
Ein Interrupt sperrt sich immer selbst. D.h. wird der Intrrupt
ausgelöst, kann er nicht ein weiteres Mal aufgerufen werden, bevor der
Interrupt nicht wieder freigegeben wird. Üblicherweise wird dies durch
ein RETI realisiert. Ein Interrupt kann aber durch einen anderen
Interrupt unterbrochen werden, wenn dieser eine höhere Priorität hat.
Auch beim ATmega gibt es Prioritäten bei den Interrupts. Für den
ATmega8 habe ich mal in der Doku nachgelesen. Im Dokument
"doc2486.pdf" von ATMEL steht auf Seite 10, dass die Interrupts in
Abhängigkeit ihrer Position in der Vektortabelle auch eine Priorität
haben. Je niedriger die Unterbrechungsvektoradresse, desto höher die
Priorität.
@ Jan M.
Interrupts werden nicht automatisch global gesperrt. Es wird nur der
Interrupt gesperrt, desser ISR gerade abgearbeitet wird, bis ein RETI
die ISR beendet.
Gruß
Guido