[Programmation] fonction sprintf avec ATMEL studio
Répondre à la discussion
Affichage des résultats 1 à 6 sur 6

fonction sprintf avec ATMEL studio



  1. #1
    invite71015e86

    fonction sprintf avec ATMEL studio


    ------

    Bonsoir, me revoilà avec mes questions.
    Après avoir pas mal galéré pour faire fonctionner la RTC16 de mon ATXMEGA (j'avais pas vu que pour fonctionner à 32.7kHz il faut un quartz externe). Je veux afficher la fréquence de rotation de mon capteur et la cela merdouille avec la fonction sprintf.
    j'écris
    sprintf(buffer," %.2f Hz, %.1f tr/min",freq_cal, rpm_cal);
    et au résultat sur mon afficheur j'ai
    ? Hz, ? tr/min
    Que mes variables soient déclarées en float ou double c'est le même résultat j'ai bien un warning à la compil qui me parle de problème d'un pd signe je crois (de mémoire mais je l'ai vu juste au moment de partir).
    dans mon buffer j'ai bien un "?" c'est donc pas un pb d'affichage.
    Si je calcul en entier et que j'affiche en %d pas de soucis?
    qqu'un aurais une explication a me donner sur ce fonctionnement?
    Y at'il d'autre moyen de déclaration de mes variables autre que float et double
    j'ai été voir sur le site ATMEL mais l'explication de la fonction n'est pas très prolixe!

    -----

  2. #2
    bobflux

    Re : fonction sprintf avec ATMEL studio

    sprintf est une fonction relativement complexe, et il est possible que la version compatible avec les float ne soit pas activée pour économiser de la mémoire. Regarde dans la doc, il doit y avoir moyen de choisir la version de librarie à utiliser pour linker la bonne fonction.

  3. #3
    invite71015e86

    Re : fonction sprintf avec ATMEL studio

    Alors là tu me parle javanais!!
    je sais programmer en C à peu près mais tous ce qui est compilation et environnement je suis perdu.
    C'est comme la voiture je sais conduire et faire les opérations de base mais pour le changement de courroie de distribution c'est plus dans mes compétences.
    Je vais aller fouiller un peu plus profondément sur AVR freaks peut e^tre que j'y trouverais une solutions toute faite avec un peu de chance.
    Sinon cela sera fait à la mano à coups d'entiers et de reste.

  4. #4
    invite71015e86

    Re : fonction sprintf avec ATMEL studio

    Je pense à une chose mon buffer est en 'uint8_t', faut'il qu'il soit en 'char' par hasard?

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

    Re : fonction sprintf avec ATMEL studio

    pouic

    solution dans le 2è post je pense

    http://www.avrfreaks.net/forum/sprintf-floats-studio-6

  7. #6
    invite71015e86

    Re : fonction sprintf avec ATMEL studio

    Merci Bobfuck
    In no case does a non-existent or small field width cause truncation of a numeric field; if the result of a conversion is wider than the field width, the field is expanded to contain the conversion result.
    Since the full implementation of all the mentioned features becomes fairly large, three different flavours of vfprintf() can be selected using linker options. The default vfprintf() implements all the mentioned functionality except floating point conversions. A minimized version of vfprintf() is available that only implements the very basic integer and string conversion facilities, but only the # additional option can be specified using conversion flags (these flags are parsed correctly from the format specification, but then simply ignored). This version can be requested using the following compiler options:
    -Wl,-u,vfprintf -lprintf_min
    If the full functionality including the floating point conversions is required, the following options should be used:
    -Wl,-u,vfprintf -lprintf_flt -lm
    Limitations:
    The specified width and precision can be at most 255.
    Notes:
    For floating-point conversions, if you link default or minimized version of vfprintf(), the symbol ? will be output and double argument will be skiped. So you output below will not be crashed. For default version the width field and the "pad to left" ( symbol minus ) option will work in this case.
    The hh length modifier is ignored (char argument is promouted to int). More exactly, this realization does not check the number of h symbols.
    But the ll length modifier will to abort the output, as this realization does not operate long long arguments.
    The variable width or precision field (an asterisk * symbol) is not realized and will to abort the output.
    bon il faut encore que je comprenne ou l'on met les arguments pour la compil!
    Dernière modification par Antoane ; 15/03/2016 à 07h44. Motif: Remplacement des balises [CODE] par [QUOTE].

Discussions similaires

  1. [Programmation] Utilisation de type Uint16 avec le compilateur ATMEL STUDIO
    Par invite71015e86 dans le forum Électronique
    Réponses: 14
    Dernier message: 11/03/2016, 23h44
  2. Réponses: 0
    Dernier message: 28/05/2015, 15h52
  3. Utiliser un Arduino UNO R3 avec ATMEL Studio 6
    Par HAYAC dans le forum Électronique
    Réponses: 2
    Dernier message: 27/07/2012, 15h12
  4. Fonction " sprintf " et LCD sur ATMEL
    Par Poseidon88 dans le forum Électronique
    Réponses: 7
    Dernier message: 23/02/2011, 17h13
  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...