TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: jgpeiro06 en 12 de Septiembre de 2009, 07:47:09

Título: ¿Bug importante en el MPLAB SIM?
Publicado por: jgpeiro06 en 12 de Septiembre de 2009, 07:47:09
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.
(http://farm4.static.flickr.com/3473/3912174282_dcbdc39a1a_o.jpg)

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?
Título: Re: ¿Bug importante en el MPLAB SIM?
Publicado por: jgpeiro06 en 17 de Septiembre de 2009, 10:08:09
He encontrado un hilo en el foro de microchip donde hablan del mismo fallo. Parece ser que solo courre con algunos modelos de pic24. Pueden leer algo mas aqui:
http://www.microchip.com/forums/tm.aspx?m=379342&mpage=1&key=PIC24F&#379453
Título: Re: ¿Bug importante en el MPLAB SIM?
Publicado por: Nocturno en 17 de Septiembre de 2009, 10:15:57
Menos mal que tú te lo guisas, te lo comes, y encimas nos enseñas la receta. Gracias por ilustrarnos.