TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: Loudness en 16 de Abril de 2018, 22:58:24

Título: Interrupciones que dejan de funcionar (MPLAB X + Assembler)
Publicado por: Loudness en 16 de Abril de 2018, 22:58:24
Saludos.

Pues como dice el titulo, y no me ha pasado solo una vez sino varias y en diferentes programas con el PIC16F877A.

La historia es que escribo un programa en assembler y MPLAB X (Ver 3.61) utilizando alguna interrupcion, Timer1 o bien interrupcion externa por RB0 que son las que mas uso.
El caso es que el programa compila sin errores y funciona perfectamente. Pasa un tiempo determinado y, al compilarlo de nuevo sin errores de ningun tipo, ya no salta la interrupcion (el resto del programa, sin problema aparente)  :huh: .

Es el mismo programa, no ha cambiado nada, solo el dia de compilado :shock: :shock: :shock:

Comprobando con el simulador del MPLAB X, en el registro INTCON, el flag correspondiente (INTF) salta, pero el programa sigue su curso sin hacer caso del flag ni de nada.

Quemando el PIC y probando en protoboard lo mismo, la interrupcion no salta... :?

Alguien tiene alguna idea de que porque puede pasar esto? Misma experiencia? Agradecere cualquier ayuda

No quiero parecer desesperado pero llevo varios dias con esto y me esta empezando a echar humo la cabeza :cry:




Título: Re:Interrupciones que dejan de funcionar (MPLAB X + Assembler)
Publicado por: KILLERJC en 17 de Abril de 2018, 09:18:52
Podes proveer un ejemplo minimo donde esto ocurra?

Tiene que existir algun problema en el codigo, ya que si decis que tampoco en el micro lo hace, entonces es el codigo y no el MPLAB X, el compilador me resulta dificil de creer tambien que ocurra, ya que el ASM es una traduccion directa al codigo maquina.
Título: Re:Interrupciones que dejan de funcionar (MPLAB X + Assembler)
Publicado por: Loudness en 17 de Abril de 2018, 21:43:29
Pues no era problema del programa.

Por lo que me han dicho, en MPLAB X parece que programar con DEBUG activo hace que el microcontrolador solo funcione en modo de depuración.

En el MPLAB he configurado el menu FILE → PROJECT PROPERTIES → HARDWARE TOOLS y he cambiado "Simulator" por "PIC KIT 3".

Al hacer BUILD PROJECT he probado el archivo HEX resultante en el Proteus (ahora no dispongo de ninguna placa) y parece que la interrupcion (y el resto del programa) ha vuelto a funcionar.

Manana lo probare en un circuito real pero parece que va bien.