Ein pegelsensitiver Interrupt und ein flankensensitiver Interrupt sind eigentlich zwei ganz verschiedene Dinge. Ich werde versuchen, einige allgemeine Einblicke zu geben, die Ihnen helfen könnten, zu verstehen, wie andere Interrupts auch funktionieren.
Nehmen wir an, Ihre CPU kann Code in zwei Modi ausführen: im normalen Modus und im unterbrochenen Modus. Um vom normalen Modus in den Interrupt-Modus zu wechseln, muss ein Interrupt auftreten, was auch immer es ist, während der IRET
Befehl ausgeführt werden muss, um zurückzukehren. Nehmen wir auch an, dass ein Interrupt im Interrupt-Modus irgendwie gespeichert wird, aber nicht sofort gewartet wird, dh im Interrupt-Modus kann die CPU nicht unterbrochen werden.
Was ist ein Interrupt? Ich würde sagen, es ist ein Ereignis : etwas, das passiert, ein Timer läuft über, ein Pin geht zur Neige, was auch immer. Die CPU reagiert auf das Ereignis und nimmt dann die normale Ausführung wieder auf. Was passiert, wenn ein Ereignis auftritt, während ein anderes bedient wird? Normalerweise wird in einem Register ein Bit gesetzt, und unmittelbar nach dem IRET
Befehl wird die CPU erneut unterbrochen, prüft, welches Bit gesetzt ist, und führt die richtige Interrupt-Serviceroutine aus.
Sie werden jetzt vielleicht sehen, warum Level Triggered und Edge Triggered zwei verschiedene Dinge sind: Es sind zwei verschiedene Ereignisse. Wenn Ihr ISR auf dem durch den Pegel ausgelösten Interrupt ausgeführt wird, löschen Sie wahrscheinlich als erstes das Interrupt-Bit: Wenn der Pegel niedrig bleibt, löst die Hardware sofort einen weiteren Interrupt aus, der gewartet wird, sobald Sie damit fertig sind. Bei einem durch Flanken ausgelösten Interrupt muss der Pin hoch und dann wieder niedrig gehen, um den Interrupt erneut auszulösen.
Ich kann mir kein aussagekräftiges Beispiel dafür vorstellen, wann Sie einen pegelgetriggerten Interrupt benötigen, ein flankengetriggerter scheint viel nützlicher zu sein und was Sie normalerweise sowieso brauchen würden.