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

envoyer float par USB- PIC18f4550



  1. #1
    titoff

    envoyer float par USB- PIC18f4550


    ------

    Bonjour,

    Je souhaiterais connaitre la valeur d'une variable déclarée en float.
    Cette valeur je souhaite l'envoyer vers mon PC via le port USB.
    Je me casse la tête depuis qq jours avez vous une solution ?
    J'utilise le soft PCW pour compiler mon programme.

    Merci

    -----

  2. Publicité
  3. #2
    Seb.26

    Re : envoyer float par USB- PIC18f4550

    bonjour,

    un float, c'est 4 octets ( à vérifier dans la doc du compilo ) ... il suffit donc d'envoyer les 4 octets sur l'USB ... Et de recréer un float équivalent ( attention aux normes ! ) sur le PC ...
    << L'histoire nous apprend que l'on apprend rien de l'histoire. >>

  4. #3
    titoff

    Re : envoyer float par USB- PIC18f4550

    oui un float est sur 32 bits mais je ne vois pas quelle commande me permet de le faire

  5. #4
    titoff

    Re : envoyer float par USB- PIC18f4550

    Citation Envoyé par titoff Voir le message
    oui un float est sur 32 bits mais je ne vois pas quelle commande me permet de le faire
    voilà mon code:

    float y[20],tmp;
    char seuil2, seuil3;

    tmp=3;
    usb_cdc_putc(tmp);

    Quand je lis mon usb sur le PC j'ai le caractère € qui apparait et non pas "3"

  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
    touffdad

    Re : envoyer float par USB- PIC18f4550

    Salut!
    J'y connais rien mais bon jtente quand même.
    t'as essayé avec : tmp = 3.0;

    Edit: Tu peux nous donner l'instruction qui te permet de lire "tmp" sut ton pc stp?

  9. #6
    Seb.26

    Re : envoyer float par USB- PIC18f4550

    Citation Envoyé par titoff Voir le message
    oui un float est sur 32 bits mais je ne vois pas quelle commande me permet de le faire
    Comment ça "quelle commande" ???

    Y'a pas de commande à trouver ou quoi que ce soit, t'envoie juste les 4 octets qui composent ton float et basta ...

    Si c'est sur comment faire ça que tu bloque, c'est du coté de l'arithmétique des pointeurs qu'il te faut regarder ...
    << L'histoire nous apprend que l'on apprend rien de l'histoire. >>

  10. Publicité
  11. #7
    Xtr£M

    Re : envoyer float par USB- PIC18f4550

    Bien le bonjour!!!!

    Alors titoff,

    Comme il te l'a été dit, un float est un nombre sur 32 bits, soit 4 octets!!
    Ici tu utilises la commande putc, pour put (pousser) c pour char! Soit un caractère!!! OR un caractère c'est 8 bits!!!!

    Donc voilà comment tu dois procéder!
    Tu as ton float TMP sur 32 bits

    Tu découpes TMP en 4 octets différents (avec make8(); avec un masque et un décalage par exemple)
    TMP[0] = make8(TMP, 0);
    TMP[1] = make8(TMP, 1); .......
    ou
    TMP[0] = (TMP & 0xFF000000) >> 24;
    TMP[1] = (TMP & 0x00FF0000) >> 16; .....

    Ensuite tu envoies tes 4 octets
    putc(TMP[0]);
    putc(TMP[1]);
    putc(TMP[2]);
    putc(TMP[3]);


    Maintenant tu dois "reconstruire" le float sur ton PC! il doit y avoir un Make32
    2ème solution juste pour le débug^^ Ton float tu peux le voir en mode debug
    soit 3.0000 => 0x 80 40 00 00
    tu recevais le caractère € soit le code 0x 80 !!!
    Tu es donc sur la bonne piste!

    @ +, bon courrage
    Rien ne sert de courir ......

  12. #8
    titoff

    Re : envoyer float par USB- PIC18f4550

    Citation Envoyé par Xtr£M Voir le message
    Bien le bonjour!!!!

    Alors titoff,

    Comme il te l'a été dit, un float est un nombre sur 32 bits, soit 4 octets!!
    Ici tu utilises la commande putc, pour put (pousser) c pour char! Soit un caractère!!! OR un caractère c'est 8 bits!!!!

    Donc voilà comment tu dois procéder!
    Tu as ton float TMP sur 32 bits

    Tu découpes TMP en 4 octets différents (avec make8(); avec un masque et un décalage par exemple)
    TMP[0] = make8(TMP, 0);
    TMP[1] = make8(TMP, 1); .......
    ou
    TMP[0] = (TMP & 0xFF000000) >> 24;
    TMP[1] = (TMP & 0x00FF0000) >> 16; .....

    Ensuite tu envoies tes 4 octets
    putc(TMP[0]);
    putc(TMP[1]);
    putc(TMP[2]);
    putc(TMP[3]);


    Maintenant tu dois "reconstruire" le float sur ton PC! il doit y avoir un Make32
    2ème solution juste pour le débug^^ Ton float tu peux le voir en mode debug
    soit 3.0000 => 0x 80 40 00 00
    tu recevais le caractère € soit le code 0x 80 !!!
    Tu es donc sur la bonne piste!

    @ +, bon courrage
    Merci pour toutes ces indications, je vais essayer tout cela

    Pour touffdad, j'utilise un petit soft gratuit (terminal) qui permet de lire les ports com de mon PC

  13. #9
    Seb.26

    Re : envoyer float par USB- PIC18f4550

    Citation Envoyé par Xtr£M Voir le message
    TMP[0] = (TMP & 0xFF000000) >> 24;
    TMP[1] = (TMP & 0x00FF0000) >> 16; .....
    AMA ça marche pas : le compilo va probablement utiliser la valeur du float, et pas les bytes en RAM ...

    Fais un truc dans ce genre là :
    Code:
    float myFloat;
    uChar *p_myFloat;
    ...
    {
      // Init du pointeur
      p_myFloat = (uChar*)(&myFloat);
    }
    ...
    // Prototype fonction putc()
    void putc( uChar data );
    ...
    {
      // Envoie du float
      uChar i;
      for( i=0 ; i<4 ; i++ )
        putc( *(myFloat+i) );
    }
    Et ça devrait rouler ... aux erreur de compil évidement ( j'ai pas essayé de compiler ... )

    @+
    << L'histoire nous apprend que l'on apprend rien de l'histoire. >>

  14. #10
    Xtr£M

    Re : envoyer float par USB- PIC18f4550

    re bonjour,

    oui seb je suis assez d'accord dans le principe c'est beaucoup mieux de prendre un pointeur! Seul problème, si titoff pose cette question, s'embrouiller avec des pointeur n'est pas forcément le plus évident, surtout par forum interposé!
    Quand aux fonctionnement il ne doit pas poser de soucis, il m'est déjà arrivé de le faire avec un PIC18Fxxxx. Par contre il est bien sur interdit d'utiliser ce genre de fonction pour une opération type soustraction, addition ....
    Rien ne sert de courir ......

Discussions similaires

  1. Comment envoyer des données au Pc via USB
    Par Rubot dans le forum Électronique
    Réponses: 3
    Dernier message: 22/03/2012, 21h41
  2. Débuter avec un PIC18F4550 USB
    Par synapsium dans le forum Électronique
    Réponses: 11
    Dernier message: 22/03/2012, 21h40
  3. Probleme PIC18F4550 et USB
    Par RicounetZap dans le forum Électronique
    Réponses: 0
    Dernier message: 14/07/2008, 22h59
  4. Comment faire pour envoyer un SMS par µC
    Par Super Seb dans le forum Électronique
    Réponses: 16
    Dernier message: 02/12/2007, 18h17
  5. envoyer des dossier par ftp.
    Par v_711 dans le forum Internet - Réseau - Sécurité générale
    Réponses: 3
    Dernier message: 10/12/2004, 19h48
Découvrez nos comparatifs produits sur l'informatique et les technologies.