Bonjour !
Voila j'ai tres peu de connaissance en langage C, et j'aimerais pouvoir convertir un signal analogique en signal numerique avec l'adc intégret dans le PIC 18F4520
J'ai fait l'initialisation de l'adc mais je sais pas du tout comment ecrir la suite du programme pour démarrer et convertir le signal qui arrive sur le PORTA et mettre les resultat dans le registre AdressH et Adress L (conversion sur 12 bits)
Pouvez vous m'aider svp ?
C'est un programme assez court normalement.
Merci
ps : voila mon debut (y'a peut etre des erreurs notamment a la fin )
#include <p18f4520.h>
#include <adc.h>
void main(void)
{
TRISA=1; // PORTA en Entrée
PORTA=1; // PORTA a 1
ADCON0bits.ADON = 1 ; // A/D convert ON
ADCON0bits.CHS0 = 0 ; // Choisir la voie a convertir => AN0
ADCON0bits.CHS1 = 0 ; // Choisir la voie a convertir => AN0
ADCON0bits.CHS2 = 0 ; // Choisir la voie a convertir => AN0
ADCON0bits.CHS3 = 0 ; // Choisir la voie a convertir => AN0
ADCON1bits.PCFG0 = 1 ; // Configuration des ports A/D = AN1 et AN0
ADCON1bits.PCFG1 = 0 ; // Configuration des ports A/D = AN1 et AN0
ADCON1bits.PCFG2 = 1 ; // Configuration des ports A/D = AN1 et AN0
ADCON1bits.PCFG3 = 1 ; // Configuration des ports A/D = AN1 et AN0
ADCON1bits.VCFG0 = 0 ; // references de tension a utiliser par le CAN => Vref+ = Vdd
ADCON1bits.VCFG1 = 0 ; // references de tension a utiliser par le CAN => Vref- = Vss
ADCON2bits.ADCS0 = 0 ; // configurer horloge selection
ADCON2bits.ADCS1 = 0 ; // configurer horloge selection
ADCON2bits.ADCS2 = 1 ; // configurer horloge selection
ADCON2bits.ACQT0 = 0 ; // configurer un temps d'acquisition
ADCON2bits.ACQT1 = 0 ; // configurer un temps d'acquisition
ADCON2bits.ACQT2 = 0 ; // configurer un temps d'acquisition
ADCON2bits.ADFM = 1 ; // justification a droite
ADRESH=0x00 ; // Mise à zero du registre ADRESH
ADCON0bits.GO_DONE = 1; // A/D conversion in progress (Start Of Conversion)
while(ADCON0bits.GO_DONE) // Attente de l'EOC
{
ADCON0bits.GO_DONE=0; // EOC
X=ADRESH;
X<<=8;
X|=ADRESL;
}
}
-----