Bonjour,
Voici mon code écrit en langage C. Pourtant il ne fonctionne pas, quelqu'un saurait-il me dire pourquoi ? Merci
Code://Fichier de déclaration des registres internes du microcontroleur 18F2550.H #include <p18f2550.h> #include <delays.h> #include <adc.h> //On définit la valeur du quantum : 1024 points pour 0V - 5.3V #define q 5.1757e-3 //Fonction d'initialisation des ports void init_port(void) { // Configuration de l'interruption INTCON = 1; PIR1bits.ADIF = 0; PIE1bits.ADIE = 1; // Configuration des ports d'entrée/sortie TRISA = 0b00101111; //AN0 -> AN4 sont des entrées TRISB = 0b00011111; //AN8 -> AN12 sont des entrées } //Fonction d'initialisation du CAN void init_can(void) { //Activation du CAN ADCON0bits.ADON = 1; //Au départ, la sélection de l'entrée à mesurer est à 0 ADCON0bits.CHS3 = 0; ADCON0bits.CHS2 = 0; ADCON0bits.CHS1 = 0; ADCON0bits.CHS0 = 0; //On prend comme réferences les tensions d'alimentation ADCON1bits.VCFG0 = 0; ADCON1bits.VCFG1 = 0; //On définit les ports A et B comme analogiques ADCON1bits.PCFG0 = 1; ADCON1bits.PCFG1 = 0; ADCON1bits.PCFG2 = 0; ADCON1bits.PCFG3 = 0; //On définit le temps d'acquisition( TACQ = 2 TAD; environ 2.6µs ) ADCON2bits.ACQT0 = 1; ADCON2bits.ACQT1 = 0; ADCON2bits.ACQT2 = 0; //On définit la période d'horloge pour la conversion (TAD = 64 TOSC à 48 Mhz) ADCON2bits.ADCS0 = 0; ADCON2bits.ADCS1 = 1; ADCON2bits.ADCS2 = 1; } // Fonction de conversion [A MODIFIER POUR SELECTION D'ENTREE. INT A LA PLACE DE VOID] int convertir(unsigned char channel) { int result; SetChanADC(channel); Delay10TCYx(5); // Délai d'attente nécessaire avant de démarrer conversion ConvertADC(); //ADCON0bits.GO_DONE = 1; while(BusyADC()); result = ReadADC();//result = (int)ADRESH;result = result<<8 | ADRESL; return result; } //Programme principal void main(void) { //Cette variable va contenir la valeur de la tension float valeur; //Cette chaine de caractère va définir le canal à mesurer unsigned char select = ADC_CH0; /*Réglage de la clock interne du pic à 48 Mhz (osc de 12Mhz) CONFIG1L.PLLDIV0 = 0; CONFIG1L.PLLDIV1 = 1; CONFIG1L.PLLDIV1 = 0; CONFIG1L.CPUDIV0 = 0; CONFIG1L.CPUDIV1 = 0; CONFIG1L.USBDIV = 1; CONFIG1L.FOSC1 = 1; CONFIG1L.FOSC2 = 0; CONFIG1L.FOSC3 = 0;*/ init_port(); //initialisation des ports init_can(); //intitialisation du can while(1) { //inclure ligne de code pour récuperer valeur de select valeur = q*convertir(select); //inclure ligne de code pour envoyer cette valeur vers USB } }
-----