Interrupciones que dejan de funcionar (MPLAB X + Assembler)

#1
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)
.

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


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
 
#2
Sin código, sería adivinar. Es cosa de ver configuración de registros.
Si usas librerías, verifica que no estén deshabilitando las interrupciones.
Programar con DEBUG activo hace que el microcontrolador solo funcione en modo de depuración.
Y hablando es este último, depurar con ICD puede servir bastante para encontrar el problema.
 
#3
Gracias por la rapida respuesta

Sin código, sería adivinar.
El codigo no ha cambiado y tampoco es tan complicado, sinceramente no creo que el problema sea ese....

Programar con DEBUG activo hace que el microcontrolador solo funcione en modo de depuración.
Hummmm, interesante, no lo sabia...
Lo siguiente seria saber como se desactiva... voy a investigar un poco

Pues parece que se ha solucionado

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 ha vuelto a funcionar.

Gracias por la ayuda.
 

Temas similares

Arriba