18F14K50 problème sur le ADC
Répondre à la discussion
Affichage des résultats 1 à 7 sur 7

18F14K50 problème sur le ADC



  1. #1
    amoniaque

    Question 18F14K50 problème sur le ADC


    ------

    Bonjour

    J'utilise la carte de développement DV164126 de Microchip sur laquelle se trouve un 18F14K50, cadencé à 12MHz, un bouton poussoir sur RA3, des DEL sur RC0 à RC3 et un potentiomètre sur RB4.

    Le principe de mon code est simple : lorsque j'appuie sur mon b-p, le résultat de l'acquisition est "affiché" sur les DEL.

    Voici mon code :

    Code:
    #include <p18F14K50.h>
    #include <stdio.h>
    #include <delays.h>
    
    #define USE_AND_MASKS	//indique quel type de masque est utilisé pour configuré la ADC
    #include <adc.h>
    
    
    #pragma config CPUDIV = NOCLKDIV, USBDIV = OFF	// CONFIG1L
    #pragma config FOSC = HS, PLLEN=OFF, PCLKEN = ON, FCMEN = OFF, IESO = OFF	// CONFIG1H
    #pragma config PWRTEN = OFF, BOREN = OFF, BORV = 30					// CONFIG2L
    #pragma config WDTEN = OFF, WDTPS = 32768                                     // CONFIG2H
    #pragma config MCLRE = OFF, HFOFST = OFF				        // CONFIG3H
    #pragma config STVREN = ON, LVP = OFF, BBSIZ=OFF, XINST = OFF	// CONFIG4L
    #pragma config CP0 = OFF, CP1 = OFF						                    // CONFIG5L
    #pragma config CPB = OFF, CPD = OFF                                    			    // CONFIG5H
    #pragma config WRT0 = OFF, WRT1 = OFF						                // CONFIG6L
    #pragma config WRTB = OFF, WRTC = OFF                            			// CONFIG6H
    
    #pragma config EBTR0 = OFF, EBTR1 = OFF							           	// CONFIG7L
    #pragma config EBTRB = OFF                                                  // CONFIG7H
    
    // Configuration du ADC
    void ConfigurationADC(void)
    {
    	//Fréquence de Fosc/32; mot justifié à droite; temps de conversion 20Tad ; sur le canal 10
    	//pas d'interruptions, réf sur VDD-VSS
    		
    	OpenADC( ADC_FOSC_32 & ADC_RIGHT_JUST & ADC_20_TAD, 
    		ADC_CH10 &  ADC_INT_OFF , 
    		ADC_REF_VDD_VDD & ADC_REF_VDD_VSS, 
    		0b0000010000000000);
    }
    
    
    //Acquisition analogique et affichage sur les DEL
    void AcqAN10AffDEL(void)
    {
    	int result = 0;
    	
    	ConvertADC();	// Lancement de la conversion
    	while( BusyADC() );	// Ne rien faire tant que la conversion est en cours
    	result = ReadADC();	// Récupération de la valeur acquise
    	
    	if (result < 256 )	//Allumer RC0 si la valeur < 256
    	{
    		PORTC = 0x01;
    	}
    	else if (result >= 256 && result < 512 )	//allumer RC1 si valeur comprise entre 256 et 512
    	{
    		PORTC = 0x02;
    	}
    	else if (result >= 512 && result < 768 )	//allumer RC2 si valeur comprise entre 512 et 768
    	{
    		PORTC = 0x04;
    	}
    	else if (result >= 768 )
    	{
    		PORTC = 0x08;	//allumer RC3 si la valeur est supérieure à 768
    	}		
    }
    
    void main (void)
    {
    	TRISC = 0xF0;	//RC0-RC3 en sorties, RC4-RC7 en entrées
    	
    	CloseADC();	//efface la configuration du CNA des fois qu'il ne le soit pas ou mal
    
    	//2 a - configuration du ADC
    	ConfigurationADC();
    	Delay10TCYx( 5 );
    	
    	//2 b - acquisition AN10 et affichage sur les DEL
    	while (1)
    	{
    		if ((PORTA & 0x08)==0)	//Si le bouton poussoir est appuyé, lancer l'acquisition et afficher sur les DEL
    		{
    			AcqAN10AffDEL();
    		}
    		else	//Sinon éteindre toutes les DEL
    		{
    			PORTC = 0x00;
    		}	
    	}
    	CloseADC();
    }
    Lorsque je programme le PIC, le fonctionnement n'a pas vraiment avoir avec ce qui état prévu. Lorsque j'appuie sur le b-p, il y a deux types de réactions :
    1. RC3 passe à 1 quand la tension est supérieure à 0
    2. si la tension est proche ou égale à 0V alors RC0 passe à 1 et les trois autres sorties clignotent

    Je n'arrive pas à comprendre pourquoi ça ne fonctionne pas, surtout qu'avant de tester sur la carte, j'ai simulé sous Isis et aucun problèmes ...

    Merci d'avance pour ceux qui prendront le temps de répondre .

    -----

  2. #2
    RISC

    Re : 18F14K50 problème sur le ADC

    Salut,

    Le PIC18F14K50 est très particulier au niveau connection USB / ICSP...
    Peux-tu montrer le schéma précis et à jour de tout ton système (en particulier Alimentation, circuit de reset, oscillateur et ICSP) ?

    Quel outil de programmation utilises-tu ?

    a+

  3. #3
    amoniaque

    Re : 18F14K50 problème sur le ADC

    Bonjour,

    J'utilise la carte DV164126 et PicKit2 et voici la datasheet de la carte : http://ww1.microchip.com/downloads/e...Doc/41356B.pdf .

    Le schéma que j'ai utilisé pour simuler sous Isis est en fichier joint.

    Lorsque je teste sur la carte, je l'alimente via USB en connectant sur J1.

    Personnellement je penche plus pour une faute de ma part dans le programme car avant de m'attaquer au ADC j'ai fait un simple chenillard (lors de l'appuie sur le b-p) et tout fonctionnait bien (autant en simulation que sur la carte).
    Images attachées Images attachées  

  4. #4
    RISC

    Re : 18F14K50 problème sur le ADC

    Salut,

    Tout d'abord oublie ton simulateur...Même si ISIS est un très bon simulateur, il n'est pas en mesure de détecter les problèmes hardware.
    La vraie vie existe SEULEMENT sur ta carte !

    Si tu utilises la carte DV164126 en l'alimentant par l'USB tu violes certainement la spécification des broches ICSP (PGC, PGD)...
    J'ai eu des PB avec ce micro car il faut utiliser des adaptateurs pour démultiplexer les broches.

    Les broches PGC/PGD sont multiplexées avec les broches USB D+/D- qui sont spécifiées à 3.3V +0.3V MAX.
    Donc si tu mets le cavalier J14 entre les broches 2 et 3, tu as Vdd = Vbus = 5V.
    Donc le Pickit2 envoie 5V sur PGC/PGD (car il voir Vdd = 5V)....alors qu'il ne faudrait envoyer que 3.3V...
    Pour éviter cela 2 solutions :
    1/ Soit tu alimentes ta carte en 3.3V
    2/ soit tu utilises l'adaptateur AC164114 (programmer) ou AC164023 (debugger)

    Si tu n'utilises pas ces adaptateurs je peux te prédire que tu vas avoir des problèmes de programmation car cela endommage le PIC d'envoyer 5V sur les broches D+/D-...

    a+

  5. A voir en vidéo sur Futura
  6. #5
    amoniaque

    Re : 18F14K50 problème sur le ADC

    En effet Isis n'est que simulation, je l'utilise surtout pour élaguer les grosses erreurs en évitant de perdre du temps et de la vie du PIC en le programmant inutilement et une fois ces gros problèmes réglés, je passe sur la carte et vois ces nouveaux problèmes que je ne sais expliquer .

    Merci pour ces infos mais j'ai oublié de préciser une chose : PicKIT2 n'est plus connecté quand je branche l'USB. Je prend le soin de le débrancher de J6 pour éviter toutes perturbations du PIC et surtout d'endommager PicKIT.

  7. #6
    amoniaque

    Re : 18F14K50 problème sur le ADC

    Bonsoir,

    Un petit ajout de mesures et d'informations.
    Le fichier joint est mon relevé des sorties RC0 (sur CH1) et RC1 (sur CH2). Dans ce cas je mesurai 3.7mv sur AN10 avec mon voltmètre (vu que c'est moins de (5V/1024) = 4.8mv, ça voudrait dire que le ADC relève une valeur de 0).

    J'ai tenté de faire varier délicatement la valeur sur AN10 (je dis bien tenté car c'est un potentiomètre qui est utilisé donc chaud chaud ) et en ayant du 15mV sur AN10 alors RC0-2 passent à 0 et RC3 à 1 (et ceci jusqu'à 5V sur AN10).

    Bonne nuit et que vos rêves soient aussi colorés que le code des couleurs .
    Images attachées Images attachées  

  8. #7
    amoniaque

    Re : 18F14K50 problème sur le ADC

    powa !

    ça fonctionne et c'était bien un souci de code !

    pour savoir quoi utiliser comme masque pour la configuration ( & ou | ) il faut l'indiquer : USE_OR_MASK ou USE_AND_MASK

    au départ j'utilisai les AND et là juste pour tester et être sûr que le problème ne venait pas de là, j'ai tenté les OR et miracle Ô miracle ça fonctionne !

    donc je pense (enfin je suppose) qu'il doit y avoir un léger raté dans le adc.h ... je ne vois pas d'autres explications !

    merci à vous (et à moi, je me remercie moi même )

    ++

Discussions similaires

  1. 18F14K50 - ADC et Tad
    Par amoniaque dans le forum Électronique
    Réponses: 1
    Dernier message: 09/12/2010, 23h58
  2. Problème conversions analogiques ADC sur PIC24FJxxx
    Par marmotte dans le forum Électronique
    Réponses: 4
    Dernier message: 10/11/2010, 13h28
  3. Probleme ADC PIC18F4620
    Par invite52e85ae4 dans le forum Électronique
    Réponses: 9
    Dernier message: 28/07/2010, 07h40
  4. [Blanc] Panne sur sèche-linge ADC 524E
    Par franbour dans le forum Dépannage
    Réponses: 1
    Dernier message: 21/04/2009, 15h34
  5. passage ADC sur mémoire
    Par invite16331e6f dans le forum Électronique
    Réponses: 5
    Dernier message: 15/04/2007, 09h48
Découvrez nos comparatifs produits sur l'informatique et les technologies.