Interrupt Flashcards
[Betont] Geben Sie alle Aktionen an, die ein Mikrocontroller ausführt, nachdem eine Interrupt-Anforderung erkannt wurde.
- Interrupt Controller priorisiert die Interrupt anfrage
- Informiert die CPU über ein Event
- CPU führt den gerade laufenden Befehl bis zum Ende aus.r
- CPU liest die Vector nummer vom Interrupt Controller (um die Adresse der ISR in der Interrupt Vector Tabelle zu ermitteln)
- Sichern des CPU Kontextes (Program Counter, Statusregister, operating Register, etc.) auf dem Stack mittels PUSH operation.
- Berechnung der Adresse der ISR
- Interrupt anfrage wird entfernt
- Sprung zur berechneten Adresse
- ISR ausführen
- Register wieder holen (IAR, PSW, [Register]) mittels POP operation
- Rücksprung ins eigentliche Programm (RETI-Befehl)
Was wird in einer Interrupt-Vektortabelle gespeichert? Wo innerhalb des Speichers befindet es sich typischerweise und was wird darin gespeichert?
In der Interrupt-Vektor Tabelle sind die Sprungadressen für die Interrupt-Service-Routinen hinterlegt.
befindet sich meistens im unteren Speicherbereich (niedrige Adressen)
Was muss programmiert werden, um einen Interrupt-Mechanismus für eine bestimmte Interrupt-Source zu verwenden.
Programm mittels CubeIDE Interruptfähig machen –> Cube erstellt Interrupt/Callback Funktionen
Was ist zu beachten, wenn mehrere Interrupt-Anforderungen gleichzeitig (innerhalb eines Abtastintervalls) ausgelöst werden?
Priorisierung der Interrupts erstellen (mittels Interrupt-Controller)
Dieser Leitet dann nur den wichtigsten Interrupt an den Prozessor weiter, danach den Zweitwichtigsten usw.
Was ist zu beachten, wenn eine Interrupt-Anforderung auftritt, während die CPU eine andere Interrupt-Anforderung bearbeitet?
● Sobald ein Interrupt ausgelöst wird, sollen alle Interrupts deaktiviert werden, bis der Interrupt durchgeführt wurde.
● Verschachteln 🡪 ein Interrupt unterbricht den anderen. Sobald der eine fertig ist, wird der andere fortgesetzt
[Betont] Erklären Sie den Begriff Interrupt-Latenz.
Zeit, die zwischen dem Auftreten des Interrupts und dem ersten Befehl der Interrupt-Service-Routine vergeht
[Betont] Erklären Sie den Ausdruck interrupt nesting.
Wird nach dem Einsprung in die ISR die Interrupt-Verarbeitung des Prozessors wieder aktiviert, kann ein weiterer Interrupt mit höherer Priorität die ISR des Interrupts mit geringerer Priorität unterbrechen. Dieser Interrupt wird dann behandelt, danach erfolgt der Rücksprung in die erste ISR.
Was passiert im Einzelnen, wenn ein Interrupt freigegeben wird, die entsprechende Interrupt-Anforderung auftritt, eine geeignete Interrupt-Service-Routine jedoch fehlt?
Hierbei weist die Sprungadresse auf den Beginn der IVT (Interrupt-Vector-Table) also der Adresse 0x000 und erzeugt einen Software-Reset. –> MC wird neugestartet –> man springt zurück zur main
Erklären Sie mögliche Wege, um eine Interrupt-Anforderung zu senden.
● Über externe GPIO-Pins
● Über analog-digital Konverter 🡪 Führe Interrupt bei bestimmten Wert aus.
● Timer 🡪 Führe Interrupt nach gewisser Zeit aus
Was sind Exceptions und wie unterscheiden sie sich von Interrupt-Service-Requests?
- Exceptions werden geworfen, sobald ein Fehler im Programm auftritt (z.B. Division durch 0).
- Interrupts werden ausgeführt, sobald ein definiertes Event (kann auch ein Fehler sein) eintritt.
Wo im Code ist die Vektortabelle definiert?
im Anfangsbereich des Speichers definiert, oft in einer Start-up-Routine oder einer speziellen Assembly-Datei.
Wie können Sie Informationen an/von einer Service Routine übermitteln/übergeben? Was ist in solchen Situationen zu beachten?
Kann über globale Variablen, Pointer übermittelt werden.