Una situazione ovvia in cui gli interrupt di livello sono utili è quella in cui il segnale è già in quello stato quando il codice inizia a monitorare il segnale.
Consideriamo un esempio tipico ...
Segnale: "Case_Over_Temperature" Si abbassa quando l'ambiente nella scatola è troppo alto per il normale funzionamento.
Ovviamente, questo segnale potrebbe abbassarsi in qualsiasi momento, sia perché stiamo producendo troppo calore, sia perché la scatola è installata in un luogo caldo.
Ovviamente, all'accensione quella linea potrebbe essere in entrambe le condizioni. Supponiamo per il momento che il codice di accensione non vada semplicemente a cercare ma si basi invece sull'interruzione. Se l'interruzione è attivata dal fronte e il segnale è già basso, quando l'interruzione viene abilitata il codice appropriato non verrà eseguito. Gli interrupt sensibili al livello sarebbero prudenti qui.
Allo stesso modo, se il processore viene messo in sospensione e non è impostato per riattivarsi su quell'interruzione, quella linea può scendere in qualsiasi momento. Quando qualsiasi altra cosa si sveglia, accade che l'interrupt si attivi in quel momento.
In effetti, probabilmente, con la prevalenza dei processori in modalità sleep, gli interrupt basati sul livello sono diventati più utili.
Tuttavia, come per tutto ciò che riguarda il codice, esiste sempre più di un modo per "scuoiare un gatto". Se non si utilizza il livello di base, il codice di riattivazione deve eseguire il polling dei pin di interruzione se non vengono messi in coda automaticamente dal processore.
Ovviamente, il livello attivato presenta anche una serie di problemi in quanto il codice deve gestire sapendo che ha già gestito la condizione, ecc.