Conversion analogique numérique dsPIC33
Répondre à la discussion
Affichage des résultats 1 à 2 sur 2

Conversion analogique numérique dsPIC33



  1. #1
    lesumodu59

    Question Conversion analogique numérique dsPIC33


    ------

    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:
    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++);
    
    	}
    }
    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 !

    -----

  2. #2
    RISC

    Re : Conversion analogique numérique dsPIC33

    Salut,

    Coté schéma j'aime pas trop le circuit de reset constitué de 2 résistances...Quand tu fermes ton interrupteur c'est la fête des rebonds...et des Reset ;=)
    Commence par mettre une capa à la place de la résistance...et une diode en série entre MCLR du micro et le point milieu du réseau RC. Tu relies aussi le MCLR du micro au MCLR du connecteur ICSP.

    Coté programme, il manque pas mal de choses au démarrage. Ton micro tourne sans PLL et certainement pas à 75MHz...

    Je te recommande de regarder les exemples de code pour le ADC sur dsPIC33 ici : http://www.microchip.com/codeexamples

    a+

Discussions similaires

  1. Conversion analogique numérique PIC
    Par inoxxam dans le forum Électronique
    Réponses: 9
    Dernier message: 03/04/2010, 22h42
  2. Conversion Analogique Numerique
    Par invite7e89304e dans le forum Électronique
    Réponses: 12
    Dernier message: 03/06/2009, 18h00
  3. Conversion analogique numerique
    Par invitef0934d70 dans le forum Électronique
    Réponses: 1
    Dernier message: 28/11/2008, 11h50
  4. conversion analogique numérique
    Par Cedrix57 dans le forum Électronique
    Réponses: 4
    Dernier message: 07/08/2008, 15h12
  5. Conversion analogique numérique
    Par ombeni dans le forum Électronique
    Réponses: 5
    Dernier message: 30/12/2007, 11h06
Découvrez nos comparatifs produits sur l'informatique et les technologies.