Me gustaría saber qué ocurre si se activa una interrupción (por ejemplo: Interrupción por pérdida de arbitraje en el módulo CAN del LPC1778 de NXP), pero no se ha definido ningún ISR para la interrupción.
Cuando se produce una interrupción de este tipo, sé que la bandera de interrupción respectiva se pondrá en marcha, pero ya que no he definido ningún ISR, no habrá ninguna dirección de desplazamiento del vector de interrupción almacenada para la transferencia de control para una interrupción de este tipo y por lo que el control pasará de nuevo a la rutina principal, y puedo restablecer la bandera de interrupción por el sondeo en la rutina principal (esto es lo que estoy pensando).
Cualquier solución sobre lo que puede pasar me puede ayudar mucho.
Gracias.
Actualización:
Habilité la Interrupción CAN en mi uC, pero no definí un ISR. Cuando realicé una prueba de bucle interno, el código entró en un bucle infinito. Aquí está el código de desmontaje del bucle infinito que se ejecuta en LPC1778:
B .
ENDP
Así que ya, si estás usando interrupciones, usa el ISR.
3 votos
No necesitas habilitar la interrupción para poder sondear las banderas en tu función principal. Si la condición que establece la bandera ocurre, esa bandera se establecerá independientemente de que hayas habilitado o no la interrupción asociada.
0 votos
¿Dices que la bandera de interrupción por pérdida de arbitraje del bus se activará incluso si no habilito la "interrupción por pérdida de arbitraje del bus" (aunque no hay ningún registro de estado que pueda indicar la pérdida de arbitraje del bus excepto el registro de estado de la interrupción)?
0 votos
Sí, en todas las MCU con las que he trabajado, las banderas de interrupción se activan siempre que se produce la condición que debería activarlas. La activación de la interrupción hace que el MCU vectorice al manejador cuando la bandera asociada se establece y la desactivación de la interrupción hace que se ignore la bandera y no se vectorice al manejador aunque la bandera esté activada . Desactivar/desactivar la interrupción sólo afecta al comportamiento de salto al gestor de la interrupción, no al comportamiento de establecimiento de la bandera.
0 votos
Wow. Eso es algo que no sabía. Muchas gracias. Así que cada conductor debe comprobar periódicamente los registros de estado de interrupción y restablecerlos aunque las interrupciones no se han habilitado :)
0 votos
@AkshayImmanuelD sólo si importa. Si la interrupción está siempre desactivada, y nada más se preocupa por la bandera, entonces si se establece o se borra es irrelevante.
0 votos
@hobbs- Sí, eso es cierto. :)
0 votos
Para tu aplicación, parece que puedes hacerlo sin habilitar las interrupciones. Este es el método más seguro, en lugar de habilitar una interrupción y no inicializar el ISR. El problema con esto es que si no lo haces, se "definirá" por ti, lo que puede causar un comportamiento impredecible del uC.