snprintf avr

Gast #284416
Lesenswert?

hallo,
ich habe ein problem mit der funktion snprintf.
bisher habe ich auf mein lcd nur ints ausgegeben so:
snprintf(s,6,"%u",counter) wobei counter int s car[8] ist
funktioniert einwandfrei.
nun wollte ich eine double/float variable ausgeben.
laut doku sollte es so gehen:
snprintf(s,8,"%4.2f",f) f ist float und s char[8] wie oben.
geht aber nicht. gibt ? aus oder unsinn wenn ich sprintf verwende.
habe auch alsformatstring %u und %d probiert hilft nix,
kann mir jemand mit dieser funktion helfen oder mir sagen wie ich ein
float auf dem lcd ausgeben kann?
gruss ralf
Gast #284417
Lesenswert?

Du musst noch die Float-Version von printf im Makefile aktivieren:

...
#---------------- Library Options ----------------
# Minimalistic printf version
PRINTF_LIB_MIN = -Wl,-u,vfprintf -lprintf_min

# Floating point printf version (requires MATH_LIB = -lm below)
PRINTF_LIB_FLOAT = -Wl,-u,vfprintf -lprintf_flt

# If this is left blank, then it will use the Standard printf version.
#PRINTF_LIB =
#PRINTF_LIB = $(PRINTF_LIB_MIN)
PRINTF_LIB = $(PRINTF_LIB_FLOAT)
...
Gast #284418
Lesenswert?

hallo,
danke für den tip,
ich habe die schon eingebunden. ändert allerdings nichts,
möglicherweise liegts an meinen lcd routinen, wobei ich keinen fehler
sehe. wenn jemand noch einne anderen tipp hat, würde ich mich freuen.
zur zeit habe ich mir damit beholfen, dass ich die funktion dtostrf
verwende. hiermit gehts:
  dtostrf(f,6,2,s);
   display_string(s);
wobei s char[10] und f double ist. 6,2 ist die precision.
ich verwende gcc.
gruss

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren