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

Affichage résultat d'une Conversion A/N via RS232 (p18f4520 + C18)



  1. #1
    Madje55

    Affichage résultat d'une Conversion A/N via RS232 (p18f4520 + C18)


    ------

    Bonjour à tous,

    Je dispose donc d'un p18f4520, d'une carte picdem 2+ et du compilateur C18.

    J'aimerais afficher le résultat d'une conversion analogique numérique sur l'hyperterminal Windows (via liaison RS232 configurée en 9600 8 N 1).

    J'ai tout d'abord testé les 2 programmes indépendamment:
    -Envoi de données sur le terminal.
    -Allumage de LEDs, en fonction de la position du potentiomètre (RA0).

    Ils fonctionnent.

    A présent je souhaiterais observer les valeurs évoluer sur le terminal lorsque je bouge le potar. Mon problème c'est que ma valeur est à 0 quand le potar est à 0, mais passe et reste à 1023 dès qu'il n'est plus à 0, quelque soit sa position.

    Voici mon programme:

    Code:
    #include <p18cxxx.H>
    #include <stdio.h>
    #include <stdlib.h>
    #include <ctype.h>
    #include <usart.h>
    #include <adc.h>
    #include <delays.h>
    #include <string.h>
    //#define q 4.8828e-3 
    
    int i;
    char str_n[30];
    int resultat;
    
    
    void Send_CR_LF (void)
    	{
    
    
    	while (BusyUSART());						// Wait if USART busy transmitting
    			WriteUSART( 0x0D ); 							//write value 
    
    	while (BusyUSART());						// Wait if USART busy transmitting
    			WriteUSART( 0x0A ); 							//write value 
    
    	}
    void Send_String_ROM (const rom char *data)		
    	{
    
    		do
     			{  // Transmit a byte
       			while(BusyUSART());
        			if (*data != 0) {WriteUSART(*data);}
     			} while( *data++ );
    
    
    	}
    
    
    void main (void)
    {
    TRISCbits.TRISC6=1;  //RX - UART Définit l'entrée RS232
    TRISCbits.TRISC7=1;	 //TX - UART Définit l'entrée RS232
    
    /*Configuration de l'USART */
    OpenUSART( USART_TX_INT_ON & //Interruption de la transmission activée
    	       USART_RX_INT_ON & //Interruption de la réception activée
    		   USART_ASYNCH_MODE & // Mode asynchrone
    		   USART_EIGHT_BIT & //Données sur 8 bits
    		   USART_SINGLE_RX &  //Une seule réception
    		   USART_BRGH_HIGH, //High baud rate
    					25); // With USART_BRGH_HIGH: baud rate = FOSC / (16 * (spbrg + 1)) 
    
    /* Configuration du module ADC */
    
    OpenADC(ADC_RIGHT_JUST &	ADC_4_TAD & 
    	    ADC_FOSC_32, ADC_CH0 &
    		ADC_VREFPLUS_VDD &
     		ADC_VREFMINUS_VSS &		
    		ADC_INT_ON, ADC_1ANA);
    	
    //Temps d'initialisation de l'ADC
    Delay10KTCYx(10);
    
    ConvertADC(); //conversion Analogique Numérique
    while(BusyADC()); //Attente fin de conversion
    resultat=ReadADC(); //on enregistre la valeur
    
    itoa(resultat, str_n); // Conversion de l'entier en châine de caractères
    
    //Affichage de la valeur
    
    	Send_CR_LF(); 
    	Send_CR_LF(); 
    
    	Send_String_ROM("******ValeurADC******");
    	Send_CR_LF(); // End of line
    
    	putsUSART(str_n);
    
    	Delay10KTCYx(500); // Tempo pour défilement des valeurs
    
    }
    Est-ce la bonne façon de procéder? Merci d'avance.

    -----

  2. Publicité
  3. #2
    Madje55

    Re : Affichage résultat d'une Conversion A/N via RS232 (p18f4520 + C18)

    PS: J'ai un warning "Suspicious pointer conversion" à la ligne itoa(resultat, str_n);.

    Le problème doit venir de là, mais je ne sais pas comment faire :s

  4. #3
    kronanberg

    Re : Affichage résultat d'une Conversion A/N via RS232 (p18f4520 + C18)

    salut !!

    Ta broche TX doit être configurer en sortie et non en entrée !!
    Même si ta fonction OpenUsart doit peut être les configurer derrière !!

    Sinon si tu voyait ton leds varier en fonction de la tension entrée sur le convertisseur, il n'y a pas de raison que ça ne fonctionne pas en rajoutant l'UART.
    Sinon essaie de mesurer ta tension en entrée du PIC lorsque tu fais varier ton potentiomètre. Je suppose que tu converties une valeur entre 0 et 5V. (donc vérifie que ça ne dépasse)
    Et verifie aussi que ton impédance d'entrée sur ta broche RA0 ne dépasse pas de trop les 2k (Impédance d'entrée typ. doc constructeur)

    @+

  5. #4
    kronanberg

    Re : Affichage résultat d'une Conversion A/N via RS232 (p18f4520 + C18)

    Lorsque tu converties ton entier tu lui passes une variables "int" et un pointeur vers une chaine de caractères !!

    Vérifie ta synthaxe pour la fonction itoa et surtout regarde comment est déclaré la deuxième variable !

  6. A voir en vidéo sur Futura
  7. Comparatifs

    Gagnez du temps et de l'argent grâce à nos comparatifs de produits. Parmi nos sujets :
  8. #5
    Madje55

    Re : Affichage résultat d'une Conversion A/N via RS232 (p18f4520 + C18)

    Salut, merci de ta réponse.

    J'ai fait toutes les vérifications, et je n'ai plus le warning. Par contre j'ai toujours le même problème...

  9. #6
    Madje55

    Re : Affichage résultat d'une Conversion A/N via RS232 (p18f4520 + C18)

    Rectification. Après d'autres test, le problème viendrait du programme de conversion A/D (valeur qui se bloque à 1023 dès que le potar passe la barre des 1V)....

  10. Publicité
  11. #7
    vede

    Cool Re : Affichage résultat d'une Conversion A/N via RS232 (p18f4520 + C18)

    Bonjour,

    c'est très très bizarre...
    pour que l'ADC "mesure" 1023 avec 1V en entrée,
    une seule possibilité, c'est que VRef+ est "mal" configurée...
    si veux "mesurer" 0-5V, il faut configurer VRef+ = VDD et VRef- = VSS

    ATTENTION de ne jamais dépasser 5V en entrée du PIC...
    c'est quoi ta source de tension variable en entrée?
    tu es bien sur qu'elle varie entre 0 et 5V??
    c'est "câblé" comment??

    vede
    ;O]
    _______________________
    VIVE les PICS ;O]

  12. #8
    Madje55

    Re : Affichage résultat d'une Conversion A/N via RS232 (p18f4520 + C18)

    Salut vede,

    Il me semble avoir bien configuré "VRef+ = VDD" et "VRef- = VSS".


    OpenADC(ADC_RIGHT_JUST & ADC_4_TAD &
    ADC_FOSC_32, ADC_CH0 &
    ADC_VREFPLUS_VDD &
    ADC_VREFMINUS_VSS &
    ADC_INT_ON, ADC_1ANA);

    La source en entrée c'est le potentiomètre intégré à la carte picdem 2+. Il varie de 0V à 5V maximum.

Discussions similaires

  1. Communication RS232 avec Picdem 2+ et p18f4520
    Par Madje55 dans le forum Électronique
    Réponses: 16
    Dernier message: 27/04/2010, 18h03
  2. P18f4520, affichage d'une valeur sur écran LCD picdem 2+
    Par Madje55 dans le forum Électronique
    Réponses: 3
    Dernier message: 21/04/2010, 15h57
  3. Réponses: 3
    Dernier message: 30/03/2009, 19h50
  4. Pb de types C18 sur 18F - Resultat de calcul faux
    Par The Jack dans le forum Électronique
    Réponses: 14
    Dernier message: 12/04/2007, 21h32
  5. resultat d'une conversion A/N
    Par solid_sneak06 dans le forum Électronique
    Réponses: 21
    Dernier message: 21/05/2006, 14h16
Découvrez nos comparatifs produits sur l'informatique et les technologies.