Hola a todos, estoy tratando de implementar un indicador de batería para esto, yo estoy usando CCS y el modulo comparador de un Pic12f629, aparentemente funciona pero tengo problemas al inicio o después de un reset, si el voltaje de batería es menor que la referencia (3.6V), el comparador no funciona, necesariamente tengo que incrementar el valor de voltaje por encima de los 3.6V, recién ahí empieza a funcionar el comparador.
Alguien me puede decir cual es mi error y como puedo solucionar esto?
#include <12F629.h>
#fuses INTRC_IO, NOWDT, NOPROTECT
#use delay(clock=4000000)
#use rs232(baud=9600, xmit=PIN_A2)
#define BATTERY PIN_A1
#define LED_R PIN_A4
#define LED_V PIN_A5
#define ON output_high
#define OFF output_low
#INT_COMP
void isr() {
if (C1OUT == 0){
printf("Baterry Voltage level is above 3.6 V\r\n");
OFF (LED_R);
ON (LED_V);
}
else {
printf("WARNING!! Baterry Voltage level is below 3.6 V\r\n");
OFF (LED_V);
ON (LED_R);
}
}
main() {
OFF (LED_R);
ON (LED_V);
setup_comparator(A1_VR);
delay_us(10); //just allow a little time for the voltages to settle
clear_interrupt(INT_COMP); //now ensure the interrupt is clear.
setup_vref(VREF_HIGH|15);
enable_interrupts(INT_COMP);
enable_interrupts(GLOBAL);
while(TRUE);
}
[/font]