Hola a todos,
estoy realizando un proyecto con PIC16f88 en el que utilizo uno de sus comparadores y la interrupción por cambio en el comparador
void init(){
...
setup_comparator(NC_NC_A1_A2)
enable_interrupts (COMP)
...
}
el problema es que una vez se produce el cambio de estado en el comparador y salta la interrupción, el pic continúa reentrado una y otra vez a dicha interrupción, aunque vuelva a cambiar el comparador a su estado original. Pensé que CCS borraba automáticamente el flag de cambio de estado del comparador del registro PIR2, pero por si acaso intenté borrarlo yo manualmente
#INT_COMP
void COMP_isr(){
...
clear_interrupt(COMP)
}
sin embargo, al inspeccionar paso por paso el programa me dí cuenta de que tras ejecutar clear_interrupt(COMP) el registro PIR2 no se modifica!! por lo que el flag cambio de estado de comparador permanece siempre alto y por tanto vuelve a entrar en la interrupción.
También miré con detenimiento el datasheet, por si el problema era similar al que ocurre con la interrupción de RB (si no se produce lectura o escritura del PORTB vuelve a entrar en la interrupción repetidamente), pero no he encontrado nada al respecto.
Si alguien tubiera alguna idea de qué es lo que está pasando agradecería lo posteara, ya que, de verdad, no se qué más probar!!
Saludos