Uma situação óbvia em que interrupções baseadas em nível são úteis é a situação em que o sinal já está nesse estado quando o código começa a monitorar o sinal.
Vamos considerar um exemplo típico ...
Sinal: "Case_Over_Temperature" Reduz quando o ambiente na caixa é muito alto para operação normal.
Obviamente, esse sinal pode ficar baixo a qualquer momento, seja porque estamos fazendo muito calor ou porque a caixa está instalada em um local quente.
Obviamente, na energização, essa linha pode estar em qualquer uma das condições. Vamos supor, no momento, que o código de inicialização não seja apenas visualizado, mas confie na interrupção. Se a interrupção for acionada pela borda e o sinal já estiver baixo, quando a interrupção for ativada, o código apropriado não será executado. Interrupções sensíveis ao nível seriam prudentes aqui.
Da mesma forma, se o processador for colocado no modo de suspensão e não estiver definido para ativar essa interrupção, essa linha poderá ficar baixa a qualquer momento. Quando o que quer que seja que acorde aconteça, você deseja que a interrupção seja acionada naquele momento.
De fato, sem dúvida, com a prevalência de processadores no modo de suspensão, as interrupções com base em níveis tornaram-se mais úteis.
No entanto, como em todas as coisas relacionadas ao código, sempre há mais de uma maneira de "esfolar um gato". Se você não usar o nível, o código de ativação precisará pesquisar os pinos de interrupção, se não forem colocados na fila automaticamente pelo processador.
Obviamente, o nível acionado também vem com seu próprio conjunto de problemas, em que o código precisa lidar sabendo que já tratou da condição etc.