7 votos

Lo que ' s la diferencia real entre interrupciones sensibles sensibles y nivel de borde

En la actualidad estoy trabajando en un C8051F120 MCU donde Interrupciones Externas puede ser definido de dos maneras:

  1. Borde sensible (la Caída)
  2. Nivel sensible (de bajo nivel)

En el nivel sensible a las interrupciones tan pronto como el MCU detecta un nivel bajo en el pin externo se ejecutará el ISR que es lo mismo que la detección de un flanco de bajada.

Sé que estoy equivocado, ya que ambos no pueden ser el mismo. Por lo tanto estoy haciendo esta pregunta: ¿cuál es la diferencia real entre los dos, en su procedimiento de detección o en la ejecución de la ISR?

9voto

fishlein Puntos 46

Su exactlly lo que se dice.

Si el borde de interrupción se establece, el ISR sólo despedido por la caída de/flanco de subida de un pulso. Mientras que si el nivel sensible de interrupción (como usted dice) se establece el ISR serán despedidos cada vez que hay un nivel bajo/alto nivel de la señal en el pin correspondiente.

En resumen, el borde de interrupción despiden sólo sobre el cambio de los bordes, mientras que el nivel de interrupciones despiden mientras el pulso es alto o bajo.

Así que si usted tiene bajo nivel de interrupción conjunto, MCU mantendrá la ejecución de la ISR, mientras que el pin es baja.

5voto

Sammo034 Puntos 26

Un nivel sensible de interrupción y un borde sensible de interrupción en realidad son dos cosas muy diferentes. Voy a tratar de dar algunas ideas generales que pueden ayudarle a entender cómo otras interrupciones de trabajo también.

Supongamos que la CPU puede ejecutar código en dos modos: modo normal, y la interrupción del modo. Para cambiar de modo normal a modo de interrupción de una interrupción, sea lo que sea, debe suceder, mientras que para volver a la IRET instrucción que debe ser ejecutada. Supongamos también que si una interrupción ocurre durante el modo de interrupción se vuelve de alguna manera a salvo, pero no es inmediatamente atendida, es decir, cuando está en modo de interrupción de la CPU no puede ser interrumpida.

Entonces, ¿qué es una interrupción? Yo diría que se trata de un evento: algo que sucede, un temporizador se desborda, un pin pasa a nivel bajo, lo que sea. La CPU no hace algo para responder al evento, a continuación, se reanuda la ejecución normal. ¿Qué sucede si se produce un evento, mientras que la otra es ser atendida? Generalmente un bit se establece en algún registro y justo después de la IRET de instrucciones de la CPU se interrumpe de nuevo, comprueba que el bit se establece y ejecuta la correcta rutina de servicio de interrupción.

Usted puede ver ahora por qué el nivel disparado y el borde activa son dos cosas diferentes: son dos eventos diferentes. Cuando el ISR en el nivel activa de interrupción se ejecuta probablemente desactive la interrupción poco como lo primero: si el nivel se mantiene bajo el hardware activa inmediatamente a otra interrupción que serán atendidas sólo cuando haya terminado con esto. En un borde, se activa la interrupción usted necesita el pin para ir de alta y luego baja de nuevo para activar la interrupción una vez más.

No puedo pensar en un ejemplo significativo de cuando usted necesita un nivel activa de interrupción, edge triggered parece mucho más útil y lo que por lo general necesitan de todos modos.

2voto

Alex Andronov Puntos 178

En muchos sistemas, las interrupciones pueden ser divididos en tres categorías, no sólo dos; muchos de los sistemas de apoyo sólo dos de los tres, pero puede haber alguna diferencia en cuanto a que dos de ellos de apoyo.

Un edge-triggered interrupción causa de la CPU para cambiar al modo de interrupción en cualquier momento las interrupciones están habilitadas, la línea de interrupción ha sido en la inactivo estado algún tiempo después de la interrupción de la última restauración, y ha sido en el activo del estado algún tiempo después de eso.

Un "puro" activa en el nivel de interrupción causa de la CPU para cambiar al modo de interrupción en cualquier momento las interrupciones están habilitadas y la interrupción de la señal está activa actualmente.

Un "puro" activa en el nivel de interrupción causa de la CPU para cambiar al modo de interrupción en cualquier momento las interrupciones están habilitadas y la interrupción de la señal ha sido en su estado activo desde el último reset (si era en su estado activo cuando se restablece, es posible que simplemente se han quedado en ese estado).

Una ventaja importante de la activa en el nivel de las interrupciones es que si, mientras que un dispositivo está siendo atendida por una razón, la otra razón por la que surge que podría causar que requieren atención (u otro dispositivo usando la misma línea requiere atención), la CPU se mantenga revisitng el aparato hasta que esté completamente satisfecho y no tiene causa para celebrar el restablecimiento de la línea.

Las principales desventajas de activa en el nivel de las interrupciones que a menudo requieren que el CPU tomar acción explícita para restablecer ellos (edge-triggered las interrupciones son a menudo implícitamente restablecer el controlador de interrupción cuando la interrupción se distribuye), y que una interrupción que se habilita cuando la CPU no tiene idea de cómo el servicio puede bloquear el sistema, ya que la CPU va a hacer nada, excepto repetidamente invocar el controlador de interrupción debido a que el dispositivo se necesitan constantemente (pero nunca recibir atención.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X