Eine offensichtliche Situation, in der pegelbasierte Interrupts nützlich sind, ist die Situation, in der sich das Signal bereits in diesem Zustand befindet, wenn der Code beginnt, das Signal zu überwachen.
Betrachten wir ein typisches Beispiel ...
Signal: "Case_Over_Temperature" Wird niedrig, wenn die Umgebung in der Box für den normalen Betrieb zu hoch ist.
Offensichtlich kann dieses Signal jederzeit niedrig werden, entweder weil wir zu viel Wärme erzeugen oder weil die Box an einem heißen Ort installiert ist.
Offensichtlich könnte sich diese Leitung beim Einschalten in einem der beiden Zustände befinden. Nehmen wir für den Moment an, dass der Einschaltcode nicht nur nachschaut, sondern sich stattdessen auf den Interrupt stützt. Wenn der Interrupt flankengetriggert ist und das Signal bereits niedrig ist, wird bei Aktivierung des Interrupts der entsprechende Code nicht ausgeführt. Pegelsensitive Interrupts wären hier umsichtig.
In ähnlicher Weise kann diese Leitung jederzeit niedrig werden, wenn der Prozessor in den Ruhezustand versetzt wird und nicht so eingestellt ist, dass er bei diesem Interrupt aufwacht. Wenn etwas anderes aufwacht, soll der Interrupt zu diesem Zeitpunkt ausgelöst werden.
In der Tat sind mit der Verbreitung von Prozessoren im Schlafmodus pegelbasierte Interrupts wohl nützlicher geworden.
Wie bei allem, was mit Code zu tun hat, gibt es jedoch immer mehr als einen Weg, eine Katze zu "häuten". Wenn Sie kein Level-basiertes verwenden, muss der Weckcode die Interrupt-Pins abfragen, wenn sie nicht automatisch vom Prozessor in die Warteschlange gestellt werden.
Offensichtlich hat das ausgelöste Level auch seine eigenen Probleme, da der Code mit dem Wissen umgehen muss, dass er die Bedingung usw. bereits behandelt hat.