¿Necesito 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.
No, no necesita borrar el estado pendiente en el NVIC, eso se hace automáticamente cuando se atiende la interrupción (consulte Joseph Yiu, The Definitive Guide to ARM Cortex-M3 and Cortex-M4 Processors, 3rd Edition, page 247) .
Sin embargo, es posible que deba borrar la condición que provocó la interrupción en el periférico específico.
EN PIO uno solo tiene que leer el estado PIO_ISR dentro del procedimiento de interrupción. En otro caso, hace que la interrupción quede pendiente directamente después de la salida de la interrupción. Actualmente no estoy seguro, pero creo que el controlador Atmel ASF lo está haciendo automáticamente, pero al pasar a un nivel inferior, uno no tiene que olvidarse de hacerlo por sí mismo.
Gracias abc por la pista. Me tomó semanas descubrirlo, ya que el controlador ASF NO lo hace automáticamente. Dado que solo tengo un pin activo para la interrupción, no necesito leer ese registro para localizar el pin. Ahora, siempre leyendo ese registro, todo funciona bien.
Sugerencia: En la interfaz de usuario de 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 detectó al menos un cambio de entrada en la línea de E/S desde que se leyó por última vez PIO_ISR. o desde el reinicio”. Creo que eso es muy difícil de encontrar.
DoxyLover