PIC24 : redirection printf sur uart 1
Répondre à la discussion
Affichage des résultats 1 à 14 sur 14

PIC24 : redirection printf sur uart 1



  1. #1
    MiKL.66

    PIC24 : redirection printf sur uart 1


    ------

    Bonjour à tous,

    J'ai beaucoup cherché sur le net une solution à mon problème, mais sans succès.
    On parle beaucoup de "redirect stdout" ...

    Comme indiquer sur le titre, je voudrais utiliser la fonction printf sur l'UART 1.
    Quelqu'un aurait il la solution ou une piste ?

    Pour le moment, je contourne le problème avec la fonction sprintf, mais ça fait 2 lignes de code !

    -----

  2. #2
    Jack
    Modérateur

    Re : PIC24 : redirection printf sur uart 1

    Il faudrait voir ça du coté de la doc de ton compilateur, de manière à y trouver que port physique est utilisé pour stdout, et éventuellement comment en définir un nouveau. J'ai déjà vu ça avec un compilateur IAR ou il suffisait d'écrire le code pour la sortie élémentaire d'un caractère, putchar() si ma mémoire est bonne (ça remonte à 20 ans).
    Bref, c'est lié au compilateur

  3. #3
    kevin8z

    Re : PIC24 : redirection printf sur uart 1

    Tu utilise quoi comme compilo?
    Perso avec les PICs 8 bits j'utilise le compilateur XC8 et il faut écrire la fonction "putch"

  4. #4
    MiKL.66

    Re : PIC24 : redirection printf sur uart 1

    Bonsoir,

    @Jack
    Je n'ai rien trouvé dans la doc du compilateur !
    Vu que mon anglais n'est pas top, je vais essayer de chercher encore ...

    @Kevin8z
    Je travaille encore avec le vieux C30 V3.31 et l'IDE V8.91.
    Je sais qu'il faut que je bascule, mais à chaque fois que j'ai essayé MPLAB X et XC16, j'ai eu des problèmes au niveau de la compilation.
    Tout le monde y arrive à part moi ... lol

    Si quelqu'un à la solution avec XC16, je suis prêt à tenter ...
    Pour le moment, je continu à chercher, car il n'y a pas de raison que ça ne marche pas !

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

    Re : PIC24 : redirection printf sur uart 1

    Un truc simple, il faudrait que tu regarde quelle fonction appel la fonction printf, et ça jusqu'à temps de tomber sur une fonction qui en appel pas d'autre et regarder comment elle est fait et voir pour la modifier

  7. #6
    MiKL.66

    Re : PIC24 : redirection printf sur uart 1

    J'ai cherché dans le fichier <stdio.h>.

    La seule chose que l'on peut trouver concernant "printf" est : "extern unsigned char printf(const char *, ...);"
    J'ai l'impression que l'on n'a pas accès au fichier source !

  8. #7
    kevin8z

    Re : PIC24 : redirection printf sur uart 1

    Peut être que ça, ça va pouvoir t'aider :
    http://www.microchip.com/forums/m203816.aspx

  9. #8
    spown

    Re : PIC24 : redirection printf sur uart 1

    Pour faire fonctionner le printf avec le UART, il faut ajouter en header #include <libpic30.h>

    Par la suite, ajoute à la fin des déclarations des ports et des registres __C30_UART = 1; ( dans le main )

    Puis essayes printf("\r spown \n");

    Question: ton UART 1 marche correctement sans le printf ?

  10. #9
    RISC

    Re : PIC24 : redirection printf sur uart 1

    Salut,

    La fonction printf() est une fonction des librairies, il faut donc chercher dans le manuel des librairies :
    C:\Program Files (x86)\Microchip\xc16\v1.24\doc s\16-Bit_Language_Tools_Libraries_M anual.pdf

    A la page 206 on trouve la directive __C30_UART ;=)

    a+

  11. #10
    MiKL.66

    Re : PIC24 : redirection printf sur uart 1

    Merci les gars pour votre aide !

    En fait, il fallait que j'utilise la librairie <libpic30.h>
    Je vais lire tout ça et faire des essais ...

    Si je comprends bien, il faut écrire "__C30_UART = 1;" avant d'utiliser le printf pour l'UART 1 et "__C30_UART = 2;" avant d'utiliser le printf pour l'UART 2 !

  12. #11
    MiKL.66

    Re : PIC24 : redirection printf sur uart 1

    ça marche super bien !
    Merci à tous

    Maintenant, faut que j'approfondisse l'utilisation du printf ...
    Par exemple, si je veux afficher la variable :
    unsigned int Courant = 0;
    Je veux afficher le courant qui vaut 2A ...
    Je fais donc "printf ("%d A", Courant);"
    cela affiche : "2 A"
    Jusque là, pas de soucis ... par contre, par soucis d'alignement, je voudrais que cela m'affiche "02 A",
    car quand Courant vaudra 10 A ça me décale tout et ce n'est pas esthétique !

    Quelqu'un a t il une idée ?

  13. #12
    paulfjujo

    Re : PIC24 : redirection printf sur uart 1

    bonjour

    Code:
    "printf ("% 2d A", Courant);
    et avec un blanc devant (entre % et 2d et sur 2 digits ?

    sinon pour afficher les 0
    Code:
    "printf ("%02d A", Courant);

  14. #13
    Jack
    Modérateur

    Re : PIC24 : redirection printf sur uart 1

    printf ("%02d A", Courant);

    t'affichera comme tu le souhaites


    PS: grillé par paulfjujo

  15. #14
    MiKL.66

    Re : PIC24 : redirection printf sur uart 1

    Super, merci.
    Pour la suite, je vais bouquiner un peu ...

Discussions similaires

  1. cabler uart sur pic24
    Par invitead206e95 dans le forum Électronique
    Réponses: 28
    Dernier message: 08/12/2012, 17h08
  2. UART sur PIC24 sous Mplab
    Par PtiBruno dans le forum Électronique
    Réponses: 1
    Dernier message: 17/05/2011, 22h40
  3. pic24 et UART, la reception ne marche pas ??
    Par nordiste dans le forum Électronique
    Réponses: 19
    Dernier message: 28/05/2010, 08h42
  4. probleme uart pic24
    Par djwolf dans le forum Électronique
    Réponses: 3
    Dernier message: 02/06/2008, 23h07
  5. printf pour LCD
    Par Jack dans le forum Électronique
    Réponses: 3
    Dernier message: 10/08/2004, 16h21
Découvrez nos comparatifs produits sur l'informatique et les technologies.