Forum: Compiler & IDEs sprintf unter AVR Studio 5


von Hilfe suchend (Gast)


Lesenswert?

Hallo,

ich habe ein Problem mit sprintf()unter AVR Studio 5. Ich will folgenden 
String formatieren.

sprintf(current1, "Trafo2 = %F1.2 A\n", tmp);
oder
sprintf(current1, "Trafo2 = %f1.2 A\n", tmp);
oder
sprintf(current1, "Trafo2 = %e1.2 A\n", tmp);
oder
sprintf(current1, "Trafo2 = %E1.2 A\n", tmp);

Die Ausgabe erfolgt auf einen LCD Display.
Das Display gibt bei allen Formaten folgendes aus:

'Trafo2 = ?1.2 A'

mit
sprintf(current1, "Trafo2 = %d1.2 A\n", tmp);

'Trafo2 = -123451.2 A' wobei -12345 nur ein Beispiel ist um zu zeigen, 
dass bei %d eine Formatanweisung ausgeführt wird.
tmp ist float = 1.33.

Kann jemand helfen, habe ich irgend eine Bibliothek nicht geladen?

folgende Files habe ich importiert:

#include <stdbool.h>
#include <stdio.h>
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#include <string.h>

#include "display_current.h"
#include "lcd_dip204ks0073_spi_avr.h"       // LCD-Funktionen
#include "hardware.h"
#include "config.h"

von Falko J. (spacefrog)


Lesenswert?

Hallo!
> sprintf(current1, "Trafo2 = %F1.2 A\n", tmp);
> oder
> sprintf(current1, "Trafo2 = %f1.2 A\n", tmp);
> oder
> sprintf(current1, "Trafo2 = %e1.2 A\n", tmp);
> oder
> sprintf(current1, "Trafo2 = %E1.2 A\n", tmp);
>

Versuchs mal mit z.B.:
sprintf(current1, "Trafo2 = %01.2f A\n", tmp);

(Kennung am Ende)
Damit sollte es klappen!

Gruß
Falko

von Hilfe suchend (Gast)


Lesenswert?

Danke für den späten Tip. Er macht jetzt etwas aber immer noch nicht das 
Richtige.

Die Ausgabe ist mit deiner Formatierung
( tmp=1.33;
  sprintf(current1, "Trafo2 = %01.2f A", tmp);)
wie folgt:

'Trafo1 = ? A'

wäre ja auch zu schön, wenn das gleich geklappt hätte.

von Falko J. (spacefrog)


Lesenswert?

okay, dann fehlt dir noch die Unterstützung von float ausgaben.
Schau mal hier:

http://www.mikrocontroller.net/articles/FAQ#Aktivieren_der_Floating_Point_Version_von_sprintf_beim_WinAVR_mit_AVR-Studio


Jetzt ist abver erstmal Feierabend für heute....
Gruß
Falko

von pedro (Gast)


Lesenswert?


von Hilfe suchend (Gast)


Lesenswert?

Hallo Zusammen,

danke, das war der entscheidende Tip. Jetzt ist alles in Butter.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.