Una situación obvia en la que las interrupciones basadas en niveles son útiles es para la situación en la que la señal ya se encuentra 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 el funcionamiento normal ..
Obviamente, esta señal podría bajar en cualquier momento, ya sea porque estamos generando demasiado calor o porque la caja está instalada en una ubicación caliente.
Obviamente, en el encendido esa línea podría estar en cualquiera de las dos condiciones. Supongamos por un momento que el código de encendido no solo se ve, sino que se basa en la interrupción. Si la interrupción se activa por flanco y la señal ya es baja, cuando se habilite la interrupción, no se ejecutará el código apropiado . Las interrupciones sensibles al nivel serían prudentes aquí.
De forma similar, si el procesador se pone en suspensión y no está configurado para activarse en esa interrupción, esa línea puede bajar en cualquier momento. Cuando ocurra lo que sea que lo despierte, quiere que la interrupción se dispare en ese momento.
De hecho, podría decirse que, con la prevalencia de los procesadores en 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 "despellejar a un gato". Si no usa el nivel basado en, el código de activación debe ir a 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, ya que el código debe manejarse sabiendo que ya ha manejado la condición, etc.