Hallo, wollte mal nachfragen ob man mit dem sprintf-Befehl eine Float-Zahl nach Ascii umwandel kann und wie???
Hi, sprintf(buf, "%f", floatvar); Besser verwendest du aber um buffer overflows vorzubeugen snprintf: snprintf(buf, sizeof(buf), "%f", floatvar); Grüße, Daniel
Allg. Syntax: int sprintf ( char * str, const char * format, ... ); Beispiel: char string[50]; float floatzahl; sprintf(string, "%f", floatzahl);
Hi, hab das ganze wie oben deklariert, die floatzahl sollte 2,54 betragen, allerdings erscheint beim Terminal dann nur ein Viereck??? char string[50]; float floatzahl; sprintf(string, "%f", floatzahl); Kann der Fehler daher kommen das ich die floatzahl vorher in das TXREG schiebe und muss man eine Zahl od Char überhaupt in das TXREG schieben wenn man dann den Wert mit sprintf oder putc ausgibt?
(Folgendes gilt nur für AVR-GCC - ich muss hier raten, da nichts angegeben wurde:) Standardmäßig wird eine minimalistische printf-Version ohne Fließkomma-Unterstützung gelinkt. Die sollte aber eigentlich an den fraglichen Stellen Fragezeichen '?' anzeigen. Um die volle Version zu bekommen, muss man mit diesen Optionen linken:
1 | -Wl,-u,vfprintf -lprintf_flt -lm |
Siehe auch http://www.nongnu.org/avr-libc/user-manual/group__avr__stdio.html#ga3b98c0d17b35642c0f3e4649092b9f1 Nachtrag: TXREG klingt doch eher nach PIC o.ä. -> prüfen, ob nicht vielleicht auf die gleiche Art Speicher gespart wird und dies mit entsprechenden Optionen abgeschaltet werden muss. Gruß David
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.