Was genau passiert, wenn ein Interrupt ausgelöst wird, während noch einer im Gange ist?
Mir fallen dazu 2 grundlegende Strategien ein:
1. Wenn der Code in eine Interrupt-Service-Routine eintritt, werden alle Interrupts gesperrt und vor beenden der ISR wieder freigegeben.
2. Es wird für alle Interrupt-Service-Routinen eine globale Variable definiert, die anzeigt, dass ein Interrupt bearbeitet wird (evtl. auch welcher). Stellt eine ISR fest, dass noch eine andre ISR arbeitet, beendet sie sich wieder, als wäre nichts gewesen.
Wichtig ist in allen Interrupt-Service-Routinen grundsätzlich, dass man veränderte CPU-Register sichert und beim Beenden der ISR wieder herstellt.
MfG
Lesezeichen