Bonsoir à tous et merci d'être indulgent car je suis nouveau sur le site.
je souhaite être aiguillé s'il vous plait dans mon projet
je cherche à convertir un signal 0-5v provenant d'un potentiomètre en sortie digitale afin de faire varier la luminosité de ma led. Rien de plus simple me diriez vous. Cela dit ça fait longtemps que je patine la dessus.
sur le pic 18f4550 par exemple je sais que l'on peut par les registres programmer la valeur des tads ce qui n'est pas le cas du pic 18F452 que je fais tourner avec un quartz de 8Mhz.
Lors de la simulation, le programme reste bloqué sur l'instruction :"while(ADCON0bits.GO_DONE != 0);"
merci de m'éclairer sur les tads et surtout comment prend t-on en compte le temps d'acquisition
.Code:#include <p18f452.h> //Librairie de notre PIC #include <delays.h> //Librairie pour faire des délais (attendre) // Intialisation du PIC #pragma config OSC = HS //Oscillateur interne coupé( Quartz de 8MHz) #pragma config WDT = OFF //Désactiver le timer du watchdog #pragma config DEBUG = ON //Activer le mode débuggage #pragma config LVP = OFF //processeur en 5v #define led0 PORTAbits.RA1 #define trisled0 TRISAbits.TRISA1 #define potar PORTAbits.RA0 #define trispotar TRISAbits.TRISA0 void Init(void); //Déclaration de la fonction Init void main(void) { int delay; void init(); while(1) { ADCON0bits.GO_DONE = 1;//Start A/D Conversion while(ADCON0bits.GO_DONE != 0);//attente de la conversion delay = ADRESL;// led0 =~led0;//faire clignoter la led if (delay > 0) Delay1KTCYx(delay); } } void init(void) { //INTCON2bits.RBPU = 0; //TRISBbits.TRISB0= 0; //led0 = 0; trisled0 = 0; trispotar = 1; // config port A0 en entrée //potar = 0;//initialisation de RA0 ADCON1 = 0x0E; //config PORTA en digital sauf A0 analogique /* ADCON1bits.PCFG0 = 0; ADCON1bits.PCFG1 = 1; ADCON1bits.PCFG2 = 1; ADCON1bits.PCFG3 = 1; */ ADCON0 = 0x00;// config selection de canal de conversion AN0 /* ADCON0bits.CHS0 =1; ADCON0bits.CHS1 =1; ADCON0bits.CHS2 =1; */ ADCON1bits.ADFM = 1;//resultat de conversion ADC dans ADRESL ADCON0bits.ADCS0= 1; //config horloge de conversion AD: fosc2 ADCON0bits.ADCS1 = 0; ADCON1bits.ADCS2 = 1; PIE1bits.ADIE = 0;//config annulation de l'interruption ADC INTCON = 0x00;// GIE,GIEH, PEIE,INTOIE;RBIE ADCON0bits.ADON= 1; //config validation de la conversion ADC }
-----