Pic18f2550 + USB CDC + AN0
Répondre à la discussion
Affichage des résultats 1 à 5 sur 5

Pic18f2550 + USB CDC + AN0



  1. #1
    invite6706d147

    Pic18f2550 + USB CDC + AN0


    ------

    Bonjour a tous,

    je souhaite afficher dans l'hyperTerminal via une liaison USB CDC la température qui est numérisée par le 18f2550 sur AN0.

    La némérisation se passé bien (je pense) et j'arrive a afficher sur l'hyperterminal à peu près tout ce que je veux à l'exeption de ma température.
    Je sais que le résultat de la conversion se trouve dans ADRESH et ADRESL mais je ne comprend pas le type car dans mon hyperterminal ça affiche des caractères bizares...

    je fais donc :

    char buffer[64]; (déclaré en globale)


    buffer[0]=ADRESH;
    buffer[1]=ADRESL;

    if(mUSBUSARTIsTxTrfReady()){
    putsUSBUSART(buffer);}

    déja rien que ça, ça ne marche pas je li des @ô{[# ...

    pouriez vous me dire comment faire svp

    Merci d'avance

    -----

  2. #2
    remy01

    Re : Pic18f2550 + USB CDC + AN0

    Salut,
    le résultat de la numerisation est en binaire. Il faut convertir en BCD,
    puis en ASCII .
    A+ ....Rémy.

  3. #3
    invite6706d147

    Re : Pic18f2550 + USB CDC + AN0

    merci de répondre ci vite ^^ mais c'est quoi BCD ?
    ASCII je connais

  4. #4
    invite6706d147

    Re : Pic18f2550 + USB CDC + AN0

    Oups j'ai rien dit BCD = décimal base 10 si j'ai bien compris...
    Ok donc fo faire une fonction qui converti de la base 2 et base 10 puis convertir la base 10 en ascii ?

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

    Re : Pic18f2550 + USB CDC + AN0

    Bon j'ai fait ce que tu m'a conseillé remy mais ça ne marche toujours pas peux tu me dir où se trouve mon erreur ...

    Voila une partie de mon code.

    void SendUsb(void)
    {
    int i = 0;
    for(i=0;i<64;i++){
    buffer[i] = 0;
    }

    getacd(0, 1);
    BinToBcd(ADRESH, ADRESL);

    if(Switch2IsPressed())
    {
    if(state == 0)
    {
    if(mUSBUSARTIsTxTrfReady())
    {
    putrsUSBUSART("\r\n Tension : ");
    state++;
    }
    }
    else if(state == 1)
    {
    if(mUSBUSARTIsTxTrfReady())
    {
    putrsUSBUSART(buffer[0]);
    state = 0;
    }
    }
    }
    }

    char* BinToBcd(unsigned char binh,unsigned char binl){
    char millier = 0;
    char centaine = 0;
    char dizaine = 0;
    char unite = 0;

    unsigned int v = ((unsigned int)binh << 8) + binl;
    millier = v / 1000;
    centaine = (v/100)%10;
    dizaine = (v/10)%10;
    unite = v%10;

    millier |= 48;
    centaine |= 48;
    dizaine |= 48;
    unite |= 48;

    buffer[0] = millier;
    buffer[1] = centaine;
    buffer[2] = dizaine;
    buffer[3] = unite;
    buffer[4] = 0;

    return 0;
    }


    PS: je suis désolé pour la mise en forme du code mais je n'arrive pas à ce qu'il reste propre, dès que je poste ça le cole tout seul sur le bord gauche...

Discussions similaires

  1. Erreur programmation PIC18F2550
    Par punky591 dans le forum Électronique
    Réponses: 0
    Dernier message: 25/10/2008, 14h03
  2. [Brun] avarie platine 5 CD Philips CDC 751
    Par invitee35e4d49 dans le forum Dépannage
    Réponses: 6
    Dernier message: 12/10/2008, 10h46
  3. [pic-01] Pic18f2550
    Par invitefcd0dbb3 dans le forum Électronique
    Réponses: 1
    Dernier message: 03/09/2008, 08h20
  4. [Divers] Chageur cd blaupunkt CDC-A08
    Par jeanclaude83 dans le forum Dépannage
    Réponses: 0
    Dernier message: 29/04/2008, 14h08
  5. Premier programme pic18f2550
    Par invite03ffb73a dans le forum Électronique
    Réponses: 15
    Dernier message: 16/04/2008, 14h00
Découvrez nos comparatifs produits sur l'informatique et les technologies.