Comportamiento de interrupción de alto nivel incomprensible

0

Soy un novato y estoy tratando de entender cómo las interrupciones de alto nivel son manejadas por un microcontrolador. Estoy usando un LPC1347 con CPU Cortex M3. Entiendo cómo funcionan las interrupciones de borde pero las interrupciones de nivel tienen comportamientos inesperados.

Hasta ahora pensé que una interrupción de nivel es una notificación de que un dispositivo necesita atención. Mientras la línea de IRQ esté activada, obtenemos una interrupción.

LPC1347 tiene diferentes comportamientos. En primer lugar, tengo que borrar el estado de IRQ que alterna el tipo de nivel. Por ejemplo, si configuro la interrupción a nivel alto y cambio el estado de pin a alta obtengo la primera interrupción, luego borro el estado de la interrupción y el tipo de interrupción cambia automáticamente a la baja para que la próxima interrupción ocurra cuando el estado de la clavija cambie a la baja . Como resultado siempre tengo dos interrupciones; cuando el estado del pin cambia de 0 a 1 y de 1 a 0.

¿Es este solo un concepto diferente de manejo de interrupciones de nivel o no lo entiendo correctamente?

    
pregunta Mati33

1 respuesta

0

En la primera rutina de interrupción siempre tiene la posibilidad de no volver a habilitar las interrupciones hasta que salga del procedimiento de servicio. Luego, cuando cambia la condición de interrupción (dentro de la rutina de servicio), borre el estado de interrupción pendiente que aparece.

    
respondido por el Michael Karas

Lea otras preguntas en las etiquetas