probleme fonction "sprintf" sur pic18 et 18f4550
Répondre à la discussion
Affichage des résultats 1 à 5 sur 5

probleme fonction "sprintf" sur pic18 et 18f4550



  1. #1
    inviteac751535

    probleme fonction "sprintf" sur pic18 et 18f4550


    ------

    bonsoir a tous,

    je vous presente mon code
    Code:
    #include <p18f4550.h>
    #include <delays.h>
    #include <stdio.h>
    #include "xlcd.h"
    #include "project.h"   
    
    #pragma config WDT = OFF	//watchdog OFF
    
    //definition des variables globales
    
    static char temp1 [15] = "";//variable affichage temp1
    static char temp2 [15] = "HELLO";//variable affichage temp2
    
    //alternativement static char temp1 [15] = "coucou";
    	
    //*******************************************************************
    //					Fonction Main									*
    //*******************************************************************
    
    void main (void)
    {
    
    //initialisation logicielle
    LcdInit();
    
    
    while(1) 
    {
    	sprintf(temp1,"coucou");//erreur---------------------<<<<
    	SetDDRamAddr(0x80);//debut 1ere ligne
    	putsXLCD(temp1);//affichage de l'heure
    	while( BusyXLCD() );
    	
    	SetDDRamAddr(0xC0);//debut seconde ligne
    	putsXLCD(temp2);//affichage de la temperature
    	while( BusyXLCD() );
    }//fin de la boucle
    
    }//fin du main
    
    
    //*******************************************************************
    //					Fonctions d'Initialisation						*
    //*******************************************************************
    
    void LcdInit(void) // initalisation du LCD sur PORTD (D0-D6)
    {
    PORTD=0x00; 
    TRISD=0x00;    
    LATD=0x00;
    
    OpenXLCD( FOUR_BIT & LINES_5X7 );
    while( BusyXLCD() );
    WriteCmdXLCD( FOUR_BIT & LINES_5X7 );
    while( BusyXLCD() );
    WriteCmdXLCD( DON & BLINK_OFF);
    while( BusyXLCD() );
    }
    
    //*******************************************************************
    //					Fonctions de temporisation						*
    //					pour les fonctions LCD							*
    //*******************************************************************
    
    void DelayFor18TCY( void ) //50micro
    {
    Delay10TCYx(6);
    return;
    }
    void DelayPORXLCD(void)//15ms
    {
    Delay1KTCYx(16); 
    return;
    }
    void DelayXLCD(void)//5ms
    {
    Delay1KTCYx(6); 
    return;
    }

    Donc la fonction sprintf ne marche pas sur mon PIC. Etonnament cela fonctionne tres bien sur Proteus avec le .hex en simulation.enfin!!!
    En resume si j'assigne a la variable temp1 via "static char temp1 [15] = "coucou" j'ai bien "coucou" qui s'affiche a la 1ere ligne LCD
    En revanche si j'assigne a temp1 via -->sprintf(temp1,"coucou") il ne s'affiche rien .

    Ca me navre car par la suite tout le programme de mon logger de temperature utilise cette fonction via des pointeurs (et oui tout le programme fonctionne tres bien en simulation avec le .hex...chiotte alors).

    Lors de la compile j'ai seulement un warning "type mismatch in assignment"...donc peut etre que temp1 est du mauvais format???
    enfin je ne vois pas.

    mercide votre aide toujours aussi precieuse.

    -----

  2. #2
    RISC

    Re : probleme fonction "sprintf" sur pic18 et 18f4550

    Salut,

    Si tu as un message d'erreur c'est que ton utilisation de la fonction n'est pas en phase avec le prototype de cette fonction dans le fichier "stdio.h" :
    Code:
    int sprintf (auto char *buf, auto const MEM_MODEL rom char *fmt, ...);
    Au fait...la vraie vie c'est le PIC !!! pas le simulateur. Si cela marche sur le simulateur et pas sur le PIC c'est que le simulateur est bogué !!! PAS L'INVERSE

    a+

  3. #3
    inviteac751535

    Re : probleme fonction "sprintf" sur pic18 et 18f4550

    bonjour,

    Tout a fait d'accord Risc.
    Mais j'avoue que lorsque je ne suis pas a la maison, le simulateur est un super jouet pour continuer a programmer et a tester.
    Mais oui le simulateur n'est pas l'ideal...la preuve.

    Enfin pour revenir a nos moutons,
    Code:
    int sprintf (auto char *buf, auto const MEM_MODEL rom char *fmt, ...);
    c'est pas facile a comprendre si je superpose avec ma fonction :
    Code:
    static char temp1 [15] = "";//variable affichage temp1
    sprintf(temp1,"coucou");
    static char temp1[15] n'est pas un auto char*buf???
    qu'est ce qu'un MEM_MODEL?

    J'ai trouve sur internet
    Code:
     sprintf(string," HELLO",0);

    merci

  4. #4
    inviteac751535

    Re : probleme fonction "sprintf" sur pic18 et 18f4550

    sprintf fonctionne t'il sur les pic18?

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

    Re : probleme fonction "sprintf" sur pic18 et 18f4550

    Bonsoir,

    ce soir je flippe grave car je me rends compte que ca va etre chaud de comprendre pourquoi ca ne marche pas.
    Je me suis baladé pas mal sur internet et j'ai trouve divers trucs mais riende concret.
    stdout=_H_USER entre autre.
    Mais il semblerqait que l'utilisation en directe de sprintf fonctionne tres bien pour certain pour un affichage par la suite sur un LCD.
    Pour ma part c'est la m.... car rien de rien.
    Je ne vois pas comment faire...alors aidez moi SVP.
    Mon projet depends tellement de de ce Sprintf. pour la temperature, l'heure que je suis un peu flippe de ne pas comprendre comment faire pour l'utilisation ou pour detrourner cette fonction.

    Meri de votre aide...merci.

Discussions similaires

  1. Matlab: fonction "filter" --> le signal est "retourné" --> pourquoi ?
    Par invitea29b3af3 dans le forum Électronique
    Réponses: 1
    Dernier message: 21/11/2011, 09h24
  2. Fonction " sprintf " et LCD sur ATMEL
    Par Poseidon88 dans le forum Électronique
    Réponses: 7
    Dernier message: 23/02/2011, 17h13
  3. question de définition entre "fonction" et "application linéaire"
    Par invite00c17237 dans le forum Mathématiques du supérieur
    Réponses: 3
    Dernier message: 19/02/2009, 15h52
  4. Problème avec pic16f84 fonction "delay_ms()"
    Par Montd'est dans le forum Électronique
    Réponses: 2
    Dernier message: 15/06/2008, 00h36
  5. probleme avec la fonction sprintf sur pic18
    Par modelvincent dans le forum Électronique
    Réponses: 3
    Dernier message: 22/05/2007, 18h17
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...