voy a reflotar este post, me parece interesante....
yo acabo de hacer un capacimetro con un 16f886 el cual con el pin de mclr, un transistor pnp(2N3906)y la instruccion restart_cause no he tenido ningun problema
el transistor alimenta a un 555 y a el lcd.... con lo cual el consumo con el capacimetro en sleep no consume ni 300uA....
lo primero es habilitar una salida del pic para el polarizar la base del transistor PNP, lo segundo habilitar el pic MCLR....
setup_oscillator(OSC_NORMAL); //config oscilador
set_tris_a(0xFF); //entradas para reducir consumos de fugas
set_tris_b(0xFF); //
set_tris_c((0b01011111)); //salidas para el control del transistor de alimentacion y el de escala de uf
output_c(0b10100000); //activadas las 2 salidas para los pnp
//setup_timer_2(t2_div_by_16,255,1);
//setup_ccp1(ccp_pwm);
setup_comparator(NC_NC_NC_NC);
setup_adc_ports(no_analogs);
setup_wdt(WDT_OFF);
reset_sleep=restart_cause();
switch(reset_sleep){
case MCLR_FROM_RUN: set_tris_a(0xFF); //si el reset se produjo en marcha
set_tris_b(0x11111111); //entradas
set_tris_c(0b01011111); //entradas
output_c(0b10100000);
delay_ms(300);
sleep(); //lo duermo si se ha producido reset estando en marcha el uc(imito el stanby), cuando pulse de nuevo el reset
break; //se despertara, hasta que vuelva a resetear el pic volviendo a cumplirse la condicion
case WDT_TIMEOUT: set_tris_a(0x00);
set_tris_b(0x01);
set_tris_c(0x1E);
output_low(pin_C7);
output_high(pin_C5);
lcd_init();
lcd_putc(" ERROR! ");
delay_ms(800);
lcd_putc("\f");
delay_ms(800);
lcd_putc(" ERROR! ");
delay_ms(800);
lcd_putc("\f");
delay_ms(800);
lcd_putc(" ERROR! ");
delay_ms(800);
lcd_putc("\f");
delay_ms(2000);
lcd_putc(" ERROR! ");
output_high(pin_C7);
output_high(pin_C5);
sleep();
break;
}
set_tris_a(0x00); //saliendo del sleep, el microcontrolador continua con su rutina...
set_tris_b(0x01); //esperando el reset
set_tris_c(0x1E);
output_low(pin_C7);
output_high(pin_C0);
output_high(pin_a0);
output_high(pin_a1);
delay_ms(20);
lcd_init();
lcd_putc("\f Calibrando \n Espere.... ");
yo lo estoy probando y va de maravilla... 0 problemas, rapido, facil, al alcanze de todos y barato.... (1 pulsador y 1 transistor y una resistencia)...
un saludo gente