Una interrupción sensible al nivel y una interrupción sensible al borde son en realidad dos cosas muy diferentes. Intentaré dar algunas ideas generales que podrían ayudarlo a comprender cómo funcionan otras interrupciones.
Supongamos que su CPU puede ejecutar código en dos modos: modo normal y modo interrumpido. Para pasar del modo normal al modo de interrupción, debe ocurrir una interrupción, sea lo que sea, mientras que para volver, se debe ejecutar la instrucción IRET
. Supongamos también que si se produce una interrupción mientras se está en modo de interrupción, se guarda de alguna manera pero no se repara de inmediato, es decir, cuando se está en modo de interrupción, la CPU no puede ser interrumpida.
Entonces, ¿qué es una interrupción? Yo diría que es un evento : algo que sucede, un temporizador se desborda, un pin se apaga, lo que sea. La CPU hace algo para responder al evento y luego reanuda la ejecución normal. ¿Qué sucede si ocurre un evento mientras se atiende a otro? Generalmente se establece un bit en algún registro y, justo después de la instrucción IRET
, la CPU se vuelve a interrumpir, comprueba qué bit se establece y ejecuta la rutina de servicio de interrupción correcta.
Ahora puede ver por qué el nivel activado y el borde activado son dos cosas diferentes: son dos eventos diferentes. Cuando se ejecuta su ISR en el nivel de interrupción activada, probablemente borre el bit de interrupción como primera cosa: si el nivel se mantiene bajo, el hardware activa de inmediato otra interrupción que recibirá servicio justo cuando haya terminado con esto. En una interrupción activada por flanco, necesita que el pasador suba y vuelva a bajar para activar la interrupción una vez más.
No puedo pensar en un ejemplo significativo de cuándo necesitarías una interrupción activada por nivel, la activación por flanco parece mucho más útil y lo que normalmente necesitarías de todos modos.