Bonjour a tous cher électronicienne et électronicien !
J'ai un petit problème avec un programme pour mon dsPIC33.
voici le schéma de mon circuit électronique
Donc le but est de faire une conversion de la tension du potentiomètre pour ensuite faire clignoté la led en RB2 plus ou moins vite.
Attention je ne parle pas de PWM où c'est le rapport cyclique qui varie. Or moi c'est plus une tempo que je cherche a faire varié.
autrement dit :
Conversion --> valeur de la conversion --> boucle tempo ( for(i=0;i<r;i++); ) --> faire clignoté une led
Voici mon code:
Voila donc si certaines personnes en savent un petit peux sur les dsPIC et peuvent m'aidé sur la conversion analogique numérique... Merci a tous d'avance !Code:/*****************************************************/ /* /* TEST LED /* /* Faire clignoter une led en sortie du pic /* /*****************************************************/ /** I N C L U D E S **************************************/ #include <p33FJ128MC802.h> /** C O N F I G U R A T I O N S ****************************/ _FBS ( RBS_NO_RAM & BSS_NO_BOOT_CODE & BWRP_WRPROTECT_OFF ); _FSS ( RSS_NO_RAM & SSS_NO_FLASH & SWRP_WRPROTECT_OFF ); _FGS ( GSS_OFF & GCP_OFF & GWRP_OFF ); _FOSCSEL( FNOSC_PRIPLL & IESO_OFF ); _FOSC ( FCKSM_CSDCMD & IOL1WAY_OFF & OSCIOFNC_OFF & POSCMD_HS ); _FWDT ( FWDTEN_OFF & WINDIS_OFF ); _FPOR ( PWMPIN_OFF & ALTI2C_OFF & FPWRT_PWR1 ); _FICD ( JTAGEN_OFF & ICS_PGD1 ); #define Fosc 7500000 #define FCY (Fosc / 2) #define FPWM 16000 #define LEDR PORTBbits.RB2 /** V A R I A B L E S ************************************/ int i,n,r; /** P O R T **********************************************/ /** M A I N **********************************************/ void main (void) { TRISA = 0x01; TRISB = 0x00; //***Configure AD1CON1 REGISTER// AD1CON1bits.ADON = 1; // AD1CON1bits.ADSIDL = 0; // AD1CON1bits.ADDMABM = 1; // AD1CON1bits.AD12B = 0; // AD1CON1bits.FORM = 0b11; // AD1CON1bits.SSRC = 0b010; // AD1CON1bits.SIMSAM = 0; // AD1CON1bits.ASAM = 1; // AD1CON1bits.SAMP = 0; // //******************************/ //***Configure AD1CON2 REGISTER// AD1CON2bits.VCFG = 0b0000; // AD1CON2bits.CSCNA = 0; // AD1CON2bits.CHPS = 0b00; // AD1CON2bits.BUFS = 0; // AD1CON2bits.SMPI = 0b0000; // AD1CON2bits.BUFM = 0; // AD1CON2bits.ALTS = 0; // //******************************/ //***Configure AD1CON3 REGISTER// AD1CON3bits.ADRC = 0; // AD1CON3bits.SAMC = 0b00000;// AD1CON3bits.ADCS = 0x11; // //******************************/ //***Configure AD1CON4 REGISTER// AD1CON4bits.DMABL = 0b000; // //******************************/ //*Configure AD1CHS123 REGISTER// AD1CHS123bits.CH123NB = 0b00;// AD1CHS123bits.CH123SB = 0; // AD1CHS123bits.CH123NA = 0b00;// AD1CHS123bits.CH123SA = 0; // //******************************/ //**Configure AD1CHS0 REGISTER*// AD1CHS0bits.CH0NB = 0x00; // AD1CHS0bits.CH0SB = 0; // AD1CHS0bits.CH0NA = 0x00; // AD1CHS0bits.CH0SA = 4; // //******************************/ //**Configure AD1CSSL REGISTER*// AD1CSSL = 0x0001; // //******************************/ //**Configure AD1PCFGL REGISTER// AD1PCFGL = 0xFFEF; // //******************************/ while(1) { AD1CON1bits.ASAM = 1; while(AD1CON1bits.DONE == 1) { r = ADC1BUF0; } LEDR=1; for(i=0;i<r;i++); LEDR=0; for(i=0;i<r;i++); } }
-----