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

Compilateur C18 sprintf



  1. #1
    invitef4b539ee

    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. #2
    simon.

    Re : Compilateur C18 sprintf

    Essaie voir:

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

  3. #3
    invitef4b539ee

    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;

  4. #4
    simon.

    Re : Compilateur C18 sprintf

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

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

    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...

  7. #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 !

  8. #7
    invitef4b539ee

    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

Discussions similaires

  1. Programmation de microchip 18f452 par compilateur C18
    Par invitec396942c dans le forum Électronique
    Réponses: 0
    Dernier message: 03/11/2010, 20h56
  2. Compilateur C18 et lib LCD !!
    Par invite25df009a dans le forum Électronique
    Réponses: 24
    Dernier message: 22/05/2010, 16h17
  3. Problème Librairie XLCD - compilateur C18
    Par invite3c35244f dans le forum Électronique
    Réponses: 27
    Dernier message: 08/06/2009, 08h00
  4. l'utilité du compilateur C18 v3_20 pour l'instalation du MPLAB.
    Par invitec2fad112 dans le forum Électronique
    Réponses: 3
    Dernier message: 29/04/2008, 19h14
  5. [Programmation]Différence Compilateur C C18/IAR PIC18
    Par invite3c35244f dans le forum Électronique
    Réponses: 3
    Dernier message: 01/04/2008, 09h38
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...