Bonjour,
Je voudrais faire une conversion analogique vers numérique avec un PIC18f2520. Avec une conversion ça fonctionne tres bien mais lorsque j'essaie avec plusieur c'est la soupe. Le resultat de la conversion x se retrouve dans la suivante je ne comprends pas pourquoi.
voici le codeCode:void main () { // L'accolade ouverte correspond // à l'entité DEBUT de l'ordinogramme init(); //Initialisation RB0=1; RB2=0; RB3=1; while(1) { reg_vit();//sur RA0 axe_X(); // sur RA1 axe_Y(); // sur RA2 axe_Z(); // sur RA3 } } // INITIALISATION du PIC et de l'écran LCD // ======================================= void init(void) { OSCCON=0b01110110; T2CON=0b00000110; PR2=0xff; CCP1CON=0b00111100; ADCON0=0b00111100; ADCON1=0b00001010; ADCON2=0b10001000; TRISA=0b11111111; PORTA=0; TRISB=0b00000010; PORTB=0; TRISC=0b00000000; PORTC=0; lcd_init(); lcd_clear(); } void axe_X(void) { char ligne1[8]; unsigned int resultat=(((ADRESH*256)+ADRESL)/10.24); // addition de ADRESH ET ADRESL et reduction sur 100. ADCON0=0b00000101; delay_ms(1); GO=1; delay_ms(1); sprintf(ligne1,"X%2d",resultat); lcd_goto(0); lcd_puts(ligne1); } void axe_Y(void) { char ligne1[8]; unsigned int resultat=(((ADRESH*256)+ADRESL)/10.24); // addition de ADRESH ET ADRESL et reduction sur 100 ADCON0=0b0001001; delay_ms(1); GO=1; delay_ms(1); sprintf(ligne1,"Y%2d",resultat); lcd_goto(0x03); lcd_puts(ligne1); } void axe_Z(void) { char ligne1[8]; unsigned int resultat=(((ADRESH*256)+ADRESL)/10.24); // addition de ADRESH ET ADRESL et reduction sur 100 ADCON0=0b00001101; delay_ms(1); GO=1; delay_ms(1); sprintf(ligne1,"Z%1d",resultat); lcd_goto(0x06); lcd_puts(ligne1); } void reg_vit(void) { char ligne1[8]; unsigned int resultat=(((ADRESH*256)+ADRESL)/10.24); // reduction sur 165 car signal pwm a 8Mhz resolution max = 165 (90 - 255). ADCON0=0b00010001; CCPR1L=resultat+90; delay_ms(1); GO=1; delay_ms(1); sprintf(ligne1,"vit=%d ",resultat); lcd_goto(0x40); lcd_puts(ligne1); }
-----