Was passiert im Detail, wenn im Arduino ein Interrupt ausgelöst wird?

preview_player
Показать описание
Heute sehen wir uns ganz genau an, wie ein PinChange Interrupt im Atmega328 abläuft. Wie gehen dazu ins Disassembly.
Der Ablauf im AVR Prozessor:
1. Interrupt wird ausgelöst
2. Weitere Interrupts werden gesperrt
3. Rücksprungadresse (PC + 1) wird im Stack gesichert
4. PC wird auf die Vektortabelle gesetzt.
ohne Nummer: Auslösendes Interrupt-Flag wird gelöscht
5. Sprung zur ISR
6. ISR wird abgearbeitet
7. Am Ende der ISR: Return from Interrupt (reti)
8. PC wird aus dem Stack zurückgeholt
9. Interrupts werden wieder frei gegeben
10. Mindestens ein Assembler Befehl wird ausgeführt

Danach, weil's so schön war, ein weiterer Ablauf ohne ISR_NAKED.

00:00 Interrupt - was passiert?
Рекомендации по теме