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

Compilateur C18 sprintf



  1. #1
    Theutheu126

    Compilateur C18 sprintf


    ------

    Bonjour,

    Je réalise un projet dans lequel j'utilise un PIC18F56K20 avec le compilateur C18 sous MPLABIDE.

    J'ai un problème avec la fonction "sprintf". Voila je vous explique le problème, j'utilise donc la fonction sprintf pour formater un entier dans une chaine de caractère que j'envoie ensuite à un terminal par RS232. Voici mon code :

    Code:
    for(i=0;i<=25;i++)
    {
        sAddr=(UInt24)(i);
       sData=mE2p_ReadData(sAddr);
       sprintf(sHead1,"Data %d : %d",(UInt24)sAddr,(UInt8)sData);
       Delay10KTCYx(2);
       mRS232_WriteLine(sHead1);
    }
    sAddr s'incrémente correctement de 0 à 25
    sData est un byte provenant d'une mémoire EEPROM et vaut alternativement 0xF0 et 0x0F. J'ai vérifier en pas-à-pas leur valeurs et elles sont justes. Mais dans mon Terminal j'obtiens ceci :

    Data 0 : 0
    Data 0 : 256
    Data 0 : 512
    Data 0 : 768
    Data 0 : 1024
    Data 0 : 1280
    ....
    Et ceci jusqu'à la fin de la boucle...

    Ce que je voudrais devrait ressembler à ça:

    Data 0 : 240
    Data 1 : 15
    Data 2 : 240
    Data 3 : 15
    ...

    Avec tout le degug que j'ai fait, je suis persuader que le problème vient du sprintf mais je sais pas comment le résoudre...

    Si quelqu'un pouvait m'aider ça serait vraiment très sympa parcque la je sèche...

    -----

  2. Publicité
  3. #2
    simon.

    Re : Compilateur C18 sprintf

    Essaie voir:

    sprintf(sHead1,"Data %d : %d",(int)sAddr,(int)sData);

  4. #3
    Theutheu126

    Re : Compilateur C18 sprintf

    Cela ne change rien, je travaille avec une architecture normalisée... UInt24 et UInt8 sont simplement des typedef...

    //--------------------------------
    //Type de variables
    //--------------------------------

    typedef unsigned char UChar;
    typedef char SChar;
    typedef unsigned char UInt8;
    typedef char SInt8;
    typedef unsigned short UInt16;
    typedef short SInt16;
    typedef unsigned short long UInt24;
    typedef short long SInt24;
    typedef unsigned long UInt32;
    typedef long SInt32;
    "Au matin, je vis avec joie, mon ennemi gisant sous l'arbre..."

  5. #4
    simon.

    Re : Compilateur C18 sprintf

    Oui mais ils ne sont pas de la même taille !

  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
    Theutheu126

    Re : Compilateur C18 sprintf

    ça fonctionne !!!!!!

    Un grande merci à toi...

    Je ne comprend pas vraiment la différence... mais je ne vais pas faire la fine bouche...
    "Au matin, je vis avec joie, mon ennemi gisant sous l'arbre..."

  9. #6
    simon.

    Re : Compilateur C18 sprintf

    La différence c'est que %d dans printf attend un int, qui fait 16 bits.
    Toi tu castes ton truc en uint24 qui fait 24 bits. Du coup il y a 8 bits de trop, et ceux-ci sont utilisés par printf pour le champ suivant, qui du coup affiche n'importe quoi.

    C'est pour ca que tu voyais addr=0 (les 16 bits de poids fort de ta valeur mise sur 24 bits) et data=0, puis 256, 512 c'est en fait le poids faible (0, 1, 2) de sAddr décalé de 8 bits !

  10. Publicité
  11. #7
    Theutheu126

    Re : Compilateur C18 sprintf

    Ha d'accord, je comprend mieux maintenant... la doc du compilateur n'est donc pas trés clair...

    En tous cas tu viens de me sortir d'un sacré problème...

    Encore merci
    "Au matin, je vis avec joie, mon ennemi gisant sous l'arbre..."

Discussions similaires

  1. Programmation de microchip 18f452 par compilateur C18
    Par ENIT-PRO dans le forum Électronique
    Réponses: 0
    Dernier message: 03/11/2010, 19h56
  2. Compilateur C18 et lib LCD !!
    Par kronanberg dans le forum Électronique
    Réponses: 24
    Dernier message: 22/05/2010, 15h17
  3. Problème Librairie XLCD - compilateur C18
    Par jorg1n dans le forum Électronique
    Réponses: 27
    Dernier message: 08/06/2009, 07h00
  4. l'utilité du compilateur C18 v3_20 pour l'instalation du MPLAB.
    Par Chaouki22 dans le forum Électronique
    Réponses: 3
    Dernier message: 29/04/2008, 18h14
  5. [Programmation]Différence Compilateur C C18/IAR PIC18
    Par jorg1n dans le forum Électronique
    Réponses: 3
    Dernier message: 01/04/2008, 08h38
Découvrez nos comparatifs produits sur l'informatique et les technologies.