Una situación obvia donde las interrupciones basadas en el nivel son útiles es para la situación en la que la señal ya está en ese estado cuando el código comienza a monitorear la señal.
Consideremos un ejemplo típico ...
Señal: "Case_Over_Temperature" baja cuando el ambiente en la caja es demasiado alto para la operación normal.
Obviamente, esta señal podría bajar en cualquier momento, ya sea porque estamos haciendo demasiado calor o porque la caja está instalada en un lugar caliente.
Obviamente, al encender esa línea podría estar en cualquier condición. Supongamos por el momento que el código de encendido no solo se ve, sino que se basa en la interrupción. Si la interrupción es activada por el borde y la señal ya es baja, cuando la interrupción se habilita, el código apropiado no se ejecutará. Las interrupciones sensibles al nivel serían prudentes aquí.
Del mismo modo, si el procesador se pone en suspensión y no está configurado para activarse en esa interrupción, esa línea puede quedar baja en cualquier momento. Cuando ocurra lo que sea que despierte, querrá que la interrupción se active en ese momento.
De hecho, podría decirse que, con la prevalencia de los procesadores del modo de suspensión, las interrupciones basadas en niveles se han vuelto más útiles.
Sin embargo, como con todo lo relacionado con el código, siempre hay más de una forma de "desollar un gato". Si no utiliza el nivel, el código de activación debe sondear los pines de interrupción si el procesador no los pone en cola automáticamente.
Obviamente, el nivel activado también viene con su propio conjunto de problemas en el que el código tiene que manejar sabiendo que ya ha manejado la condición, etc.