Para borrar o no borrar ARM Cortex-M NVIC interrupción pendiente

6

¿Debo borrar el estado pendiente de una interrupción en la rutina de servicio de interrupción de una MCU ARM Cortex-M0?

No se pudo encontrar información sobre esto en la web.

    
pregunta RHaguiuda

3 respuestas

5

No, no es necesario que borre el estado pendiente en el NVIC, que se realiza automáticamente cuando se atiende la interrupción (consulte Joseph Yiu, Guía definitiva para procesadores ARM Cortex-M3 y Cortex-M4, 3ª edición, página 247).

Sin embargo, es posible que deba eliminar la condición que causa la interrupción en el periférico específico.

    
respondido por el starblue
1

EN PIO uno solo tiene que leer el estado PIO_ISR dentro del procedimiento de interrupción. En otro caso, el interrut está pendiente directamente después de la interrupción de salida. Actualmente no estoy seguro, pero creo que el controlador de ASF Atmel lo está haciendo automáticamente, pero al pasar a un nivel inferior, uno no debe olvidarse de hacerlo por sí mismo.

    
respondido por el abc
1

Gracias abc por la pista. Me tomó semanas descubrirlo, ya que el controlador ASF NO lo está haciendo automáticamente. Como solo tengo un pin activo para la interrupción, no necesito leer ese registro para la localización del pin. Ahora, siempre leyendo ese registro todo funciona bien.

Sugerencia: en la interfaz de usuario PIO de la hoja de datos de SAM E70 (mi procesador) bajo la descripción del registro PIO_ISR, se encuentra la siguiente oración: „1: Se ha detectado al menos un cambio de entrada en la línea de E / S desde la última vez que se leyó PIO_ISR o desde que se restableció." Creo que es muy difícil de encontrar.

    
respondido por el OliRi

Lea otras preguntas en las etiquetas