Bonjour à tous,
j'aimerai détecter l'état de charge ma pile d'alimentation d'un PIC12f675.
Lorsque le niveau de charge de la pile arrive à 4,5v le PIC génère des bips.
Voici le programme que j'ai repiqué ici et là et adapté:
D'après vous, est-ce que ce programme peut fonctionner ou contient-il des erreurs?Code:Langage "C" - MPLab8.00 - compiler CCS /* PIC12F675 le 04/03/2009 pile faible essai01.c N = 1024*(AN/VDD) Calculs pour VDD = 6v bips sur GP2 si AN=4,5v ==> soit N=1024/6x4.5=768 */ #include <12F675.h> #device adc=8 #use delay(clock=4000000) #fuses WDT,INTRC_IO,NOCPD,NOPROTECT,NOMCLR,NOPUT,NOBROWNOUT #define GP0 PIN_A0 #define GP1 PIN_A1 #define GP2 PIN_A2 #define GP3 PIN_A3 #define GP4 PIN_A4 #define GP5 PIN_A5 #use fast_io(A) //#include "c:\init675.h" byte pas_fini; byte N=768; unsigned int8 mesureVDD=0x00; void main() { debut: setup_wdt(WDT_2304MS); delay_ms(500); setup_adc_ports(ALL_ANALOG); //configuration des entrées analogiques setup_adc(ADC_CLOCK_DIV_8);//choix de l'horloge pour le CAN { set_adc_channel(0); //choix entrée AN0 pour le CAN delay_us(10); //délai de 10 microsecondes obligatoires mesureVDD = read_adc(); //lecture du résultat de la conversion if (mesureVDD<N) //PORTBbits.RB0=1; { pas_fini=250; // 200mS div. par 800µS=250 boucles while (pas_fini>0) { output_high (GP2); delay_us(300); // largeur du pulse (pin à 1) output_low (GP2); delay_us(500); // largeur du temps mort pour fréquence(pin à 0) pas_fini-=1; } } } sleep(); goto debut; }
Je ne connais rien dans l'utilisation du CAN.
merci d'avance,
michel5002
-----