[Programmation] PIC16F877A - ADC - Bluetooth UART [Résolu]
Répondre à la discussion
Affichage des résultats 1 à 6 sur 6

PIC16F877A - ADC - Bluetooth UART [Résolu]



  1. #1
    invitebc553ca0

    PIC16F877A - ADC - Bluetooth UART [Résolu]


    ------

    Mesdames et Messieurs les spécialistes du codage de microcontrôleur ce message s'adresse à vous je remercie à l'avance celui ou celle qui prendra de son temps pour me mettre sur la bonne voie

    Je comprends pas pourquoi j'obtiens jamais la même valeur alors que ma tension d'entrée ne change pas ?
    Assurément mon truc et pas au point,

    Code:
    #include <xc.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <htc.h>
    
    #define _XTAL_FREQ 20000000 
    
    #pragma config FOSC = HS       
    #pragma config WDTE = OFF      
    #pragma config PWRTE = ON      
    #pragma config BOREN = ON       
    #pragma config LVP = OFF       
    #pragma config CPD = OFF       
    #pragma config WRT = OFF      
    #pragma config CP = OFF      
    
    
    void putch(char data)
    {
    while(!TXIF);
    TXREG = data;
    }
    
    unsigned int read_input(unsigned char channel){
        ADCON0=0b00000000;
        CHS0=0;                  
        ADON = 1;
        GO_DONE = 1;
    
        while (GO_DONE);
        ADON = 0;
        return ((ADRESH >> 2) + ADRESL);     
    }
        
    void main(void)
    {
     
        while(1)
        {  
          TRISA = 1;
          ADCON1 = 0b10000000;
          unsigned int x = read_input(0);
          char buffer[10];
          itoa(buffer,x,10);  
          printf("ADC%s\n",buffer); // pour test
          // Bluetooth UART \\
        }
         
    }

    -----

  2. #2
    adipie

    Re : PIC16F877A - ADC - Bluetooth UART

    Bonjour,
    Vous avez oublié de joindre le schéma.

  3. #3
    invite5637435c

    Re : PIC16F877A - ADC - Bluetooth UART

    Bonjour,

    avec ADFM=1 vous avez choisi la justification à droite (ADCON1 = 0b10000000; )
    Donc votre décalage à droite de 2 pas est à enlever, il suffit juste de concaténer dans un registre 16 bits (entier non signé) et de traiter.

  4. #4
    invitec504c6f5

    Re : PIC16F877A - ADC - Bluetooth UART

    T'est sur de ta function itoa?
    avec un recherche sur internet je trouve ca comme prototype:

    char * itoa(int val, char * s, int radix)

    https://www.microchip.com/webdoc/AVR...ca4bd2f00.html


    itoa(x, buffer,10);

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

    Re : PIC16F877A - ADC - Bluetooth UART

    Citation Envoyé par HULK28 Voir le message
    avec ADFM=1 vous avez choisi la justification à droite (ADCON1 = 0b10000000; )
    Donc votre décalage à droite de 2 pas est à enlever, il suffit juste de concaténer dans un registre 16 bits (entier non signé) et de traiter.
    Vous pouvez faire ainsi:
    Code:
    unsigned int ADC_result;
    
    ADC_result=ADRESL;
    ADC_result+=(ADRESH << 8);
    return(ADC_result);
    Ensuite il vous faut convertir le résultat (0 à 1023) en valeur de tension par exemple.
    Code:
    float convert_ADC;
    
    convert_adc = (ADC_result * 5.0)/1024.0; // si AVDD=5V par exemple
    Vous obtenez un flotant comme résultat (par exemple 3.5601.....) qui vous donne directement la valeur en volt.
    Il vous faut une conversion float to string pour transférer chaque décimale de cette tension à travers l'UART.
    Sinon vous utilisez une conversion int to string pour transférer le résultat de l'ADC, ce qui me semble moins pratique à interpréter.

  7. #6
    invitebc553ca0

    Re : PIC16F877A - ADC - Bluetooth UART

    Super vraiment !!! Merci à tous pour votre aide, ci après mon code, je ne suis pas certain que la construction respecte les règles de codages mais ça fonctionne ces le principal maintenant je suis à l'écoute bien entendu de vos remarques.

    Code:
    #include <xc.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    #pragma config FOSC = HS        
    #pragma config WDTE = OFF      
    #pragma config PWRTE = ON       
    #pragma config BOREN = ON      
    #pragma config LVP = OFF       
    #pragma config CPD = OFF       
    #pragma config WRT = OFF        
    #pragma config CP = OFF         
    
    unsigned int ADC_result;
    unsigned int convert_ADC;
    
    void putch(char data)
    {
    while(!TXIF);
    TXREG = data;
    }
    
    unsigned int read_input(unsigned char channel){ 
        ADCON0=0b00000000;
        CHS0=0;                  
        ADON = 1;
        GO_DONE = 1;
    
        while (GO_DONE);
        ADON = 0;
        __delay_ms(500);
        ADC_result=ADRESL;
        ADC_result+=(ADRESH << 8);
        return(ADC_result); 
    }
        
    void main(void)
    {
    
        while(1) 
        {     
          __delay_ms(10);
          TRISA = 1;
          unsigned int x = read_input(0);
          float convert_ADC = (ADC_result * 5.0)/1024.0;  // si AVDD=5V par exemple
    
          char buffer[10];
          itoa(buffer,convert_ADC,10);   // here 2 means binary
          __delay_ms(500);
          printf("ADC%s\n",buffer);
        }
    
    }
    Nom : Screenshot_2019-11-18-00-19-14.jpg
Affichages : 96
Taille : 21,8 Ko

Discussions similaires

  1. connexion windev mobile & microncontroleur via port série UART sur bluetooth
    Par invite0ff7640c dans le forum Programmation et langages, Algorithmique
    Réponses: 1
    Dernier message: 24/10/2017, 23h36
  2. Envoi de données via l'uart d'un PIC16F877A
    Par invite639d7aaf dans le forum Électronique
    Réponses: 7
    Dernier message: 05/06/2014, 15h46
  3. Syntaxe UART pour envoi String sur bluetooth profile SPP ?
    Par invitebd358db9 dans le forum Électronique
    Réponses: 4
    Dernier message: 16/04/2014, 16h49
  4. commande d'une LED et supervision d'un LM35 via UART pic16f877A
    Par invite0cc83eeb dans le forum Électronique
    Réponses: 2
    Dernier message: 09/05/2013, 12h00
  5. Bluetooth et UART
    Par invite3f22feff dans le forum Électronique
    Réponses: 0
    Dernier message: 07/04/2010, 10h35
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...