Hola a todos!
He estado haciendo simulaciones con el MPLAB de un código y de vez en cuando salta a la interrupcion void _AddressError(void) por intentar acceder a una direccion impar, cosa que no puede hacer el PIC24F.
Al depurar el codigo he visto que si se produce una interrupcion (en este caso por TMR1) cambia misteriosamente el dato de WREG0 y no se a que es debido. Segun el manual una interrupcion solo modifica el valor de el PC, pero en la simulacion paso a paso veo q cambia y no se si es un BUG o se me esta escapando algo...
Aqui dejo una foto con los datos de la ejecucion del codigo sin IRQ a la izq, y con IRQ a la drch. Como se puede ver el valor de WREG0 no es el esperado si se produce la interrupcion.
Cuando vuelve de la IRQ con el dato impar en W0 y ejecuta la siguiente instrucción se produce un error de direccionamiento y su interrupción asociada.
¿A que puede ser debido?
¿Estoy haciendo algo mal?
¿Como puedo evitar este error?