Bonjour,
J’utilise un PIC18F4682, et je réalise 5 conversions A/D successives et je stocke le résultat a chaque fois qu’une conversion est terminée dans une variable(les résultats que je retiens sont codés sur 8bit, je ne lis que le registre ADRESH). Pour information, une fois les 5 conversions réalisées, j’enverrais les 5 variables par le biais d’un bus CAN, je traiterai le résultat dans un autre PIC pour ensuite afficher les résultats sur LCD.
Pouvez-vous me dire ce que vous en pensez:déclarations des variables,… (Il n’y a que la partie conversion A/D)
Comment se passe la déclaration des registres, aton besoin de le faire quelque part?
ça serait vraiment sympa si vous pouviez y jeter un ptit coup d'oeil...

Merci
Nico


////////Conversion Analogique/Numérique


unsigned int vbattD, vbatt1, vbatt2,vs,Ichargeur; //Déclarations variables codées sur 32bits



ADCON0=0x01; // CAN on-Selection entree analogique entree RA0/AN0-Conversion autorisee
ADCON1=0x07; // Vref+=Vdd,Vref-=Vss/Configuration Port A (analog input-digital I/O)
ADCON2=0x00; // Justification à gauche-Clock conversion=Fosc/2
ADRESH=0x00; // Mise à zero du registre ADRESH
ADCON0bits.GO_DONE=1; // SOC (Start Of Conversion)
while(ADCON0bits.GO_DONE); // Attente de l'EOC(End Of Conversion)
ADCON0bits.GO_DONE=0; // EOC
vbattD=ADRESH; // Stockage du résultat dans une variable

ADCON0=0x05; // CAN on-Selection entree analogique entree RA1/AN1
ADCON1=0x07; // Vref+=Vdd,Vref-=Vss/Configuration Port A (analog input-digital I/O)
ADCON2=0x00; // Justification à gauche-Clock conversion=Fosc/2
ADRESH=0x00; // Mise à zero du registre ADRESH
ADCON0bits.GO_DONE=1; // SOC (Start Of Conversion)
while(ADCON0bits.GO_DONE); // Attente de l'EOC(End Of Conversion)
ADCON0bits.GO_DONE=0; // EOC
vbatt1=ADRESH; // Stockage du résultat dans une variable

ADCON0=0x09; // CAN on-Selection entree analogique entree RA2/AN2
ADCON1=0x07; // Vref+=Vdd,Vref-=Vss/Configuration Port A (analog input-digital I/O)
ADCON2=0x00; // Justification à gauche-Clock conversion=Fosc/2
ADRESH=0x00; // Mise à zero du registre ADRESH
ADCON0bits.GO_DONE=1; // SOC (Start Of Conversion)
while(ADCON0bits.GO_DONE); // Attente de l'EOC(End Of Conversion)
ADCON0bits.GO_DONE=0; // EOC
vbatt2=ADRESH; // Stockage du résultat dans une variable

ADCON0=0x0D; // CAN on-Selection entree analogique entree RA3/AN3
ADCON1=0x07; // Vref+=Vdd,Vref-=Vss/Configuration Port A (analog input-digital I/O)
ADCON2=0x00; // Justification à gauche-Clock conversion=Fosc/2
ADRESH=0x00; // Mise à zero du registre ADRESH
ADCON0bits.GO_DONE=1; // SOC (Start Of Conversion)
while(ADCON0bits.GO_DONE); // Attente de l'EOC(End Of Conversion)
ADCON0bits.GO_DONE=0; // EOC
vs=ADRESH; // Stockage du résultat dans une variable

ADCON0=0x11; // CAN on-Selection entree analogique entree RA5/AN4
ADCON1=0x07; // Vref+=Vdd,Vref-=Vss/Configuration Port A (analog input-digital I/O)
ADCON2=0x00; // Justification à gauche-Clock conversion=Fosc/2
ADRESH=0x00; // Mise à zero du registre ADRESH
ADCON0bits.GO_DONE=1; // SOC (Start Of Conversion)
while(ADCON0bits.GO_DONE); // Attente de l'EOC(End Of Conversion)
ADCON0bits.GO_DONE=0; // EOC
Ichargeur=ADRESH; // Stockage du résultat dans une variable