Embedded Systems und Firmware
Was sollte in einem Interrupt-Handler am ehesten vermieden werden?
- AEine 1 in eine Flag-Variable schreiben, um das Hauptprogramm zu informieren
- BDas Bit löschen, das die Interrupt-Ursache anzeigt
- CZeitaufwendige Verarbeitung wie die Ausgabe langer Zeichenketten mit printf oder Schleifen, die warten, bis etwas eintritt
Antwort und Erläuterung anzeigen
Antwort: C. Zeitaufwendige Verarbeitung wie die Ausgabe langer Zeichenketten mit printf oder Schleifen, die warten, bis etwas eintritt
Läuft ein Interrupt-Handler lange, kann er währenddessen nicht auf andere Interrupts reagieren, und auch das Hauptprogramm steht still. printf braucht bis zum Ende der Ausgabe Zeit und verwendet intern teils Interrupts, ist also besonders gefährlich. Im Handler wird nur das Minimum erledigt, etwa Daten empfangen und in einen Puffer legen oder ein Flag setzen; aufwendige Verarbeitung überlässt man dem Hauptprogramm oder einem Task. Das Löschen des Ursachenbits darf nicht vergessen werden.