Répondre à la discussion
Affichage des résultats 1 à 2 sur 2

Code conversion A/N pic 18f2550



  1. #1
    Kurosaki

    Code conversion A/N pic 18f2550


    ------

    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
    	}
    }

    -----

  2. #2
    RISC

    Re : Code conversion A/N pic 18f2550

    Salut,

    Concernant la programmation du convertisseurs A/N en C18 sur les PIC18, tu devrais trouver des exemples dans les notes d'application : http://www.microchip.com/stellent/id...rects=appnotes

    Sur ce site tu trouveras également un très bon cours en C sur les PIC18 : http://www.aix-mrs.iufm.fr/formation...indexPIC_C.htm

    a+

Discussions similaires

  1. PIC 18F2550 pour l' USB
    Par Shaiton dans le forum Électronique
    Réponses: 7
    Dernier message: 26/05/2011, 22h34
  2. Conversion A/D PIC 18F4520
    Par Mkv dans le forum Électronique
    Réponses: 0
    Dernier message: 14/05/2008, 16h23
  3. Conversion dans un PIC
    Par Toufinet dans le forum Électronique
    Réponses: 16
    Dernier message: 25/08/2007, 14h30
  4. Pic 18f2550
    Par mastermix dans le forum Électronique
    Réponses: 1
    Dernier message: 04/04/2007, 13h04
  5. conversion a base de pic
    Par T-bag dans le forum Électronique
    Réponses: 7
    Dernier message: 10/12/2006, 11h52
Découvrez nos comparatifs produits sur l'informatique et les technologies.