Fuente de interrupción Atmega169PA

1

¿Existe una forma sencilla de determinar qué módulo causa una interrupción en un ATmega169PA? Tengo 3.000 unidades ejecutando el mismo código y hubo 10 unidades que ejecutaron mi controlador ISR (BADISR_vect) haciendo que estas unidades se detengan y muestren un código de error de interrupción incorrecto. Estoy tratando de averiguar qué vector de interrupción se está utilizando o qué módulo está generando la mala interrupción. Deshabilité los módulos escribiendo un "1" en su bit correspondiente en el PRR, excepto el LCD, UART y Timer2. Tanto UART como Timer 2 tienen sus propios controladores de interrupción y el bit de habilitación de interrupción de la pantalla LCD es "0". El bit de habilitación de interrupción del otro módulo es "0" por defecto. ¿Es posible que un módulo deshabilitado pueda generar una interrupción?

    
pregunta Baforeale

1 respuesta

1

Creo que he visto este problema antes. Dado que los vectores de interrupción están al principio de la sección del código del chip, existe la posibilidad de que salte accidentalmente a algún lugar de esta región. Como todos los vectores están configurados de forma implícita para saltar a BADISR, casi cada vez que saltes allí, se ejecutará BADISR.

¿Estás trabajando con punteros de función? Tal vez una serie de punteros de función? Asegúrese de que no está utilizando campos sin inicializar y que no está superando los límites.

    
respondido por el Dzarda

Lea otras preguntas en las etiquetas