Mir liegt da irgendwie an, dass das Statusflag (das ist der Trigger für den Interrupt) beim Einsprung in den Interrupt gelöscht wird. Wenn während des ISR-Laufes das Statusflag wieder gesetzt wird, weil weitere Flanken den externen Port-Interrupt auslösen, löst das direkt nach dem Verlassen der ISR erneut einen Interrupt aus.
Abhilfe: Am Ende der ISR das Flag-Register zurücksetzen (Beim Mega168 heißt es, man soll das INTF0/1 im EIFR mit 1 beschreiben, um es zurückzusetzen. Musst Du mal schauen, ob das beim Mega162 auch so geht).
Komisch noch: Normalerweise setzen die Megas automatisch beim Einsprung in eine ISR ein "cli". Erst beim Verlassen geben die die Interrupts über "sei" wieder frei. Ist das beim Mega162 anders?
Lesezeichen