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"
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
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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.