Forum: Compiler & IDEs Avr Studio Float printf


von Pier S. (bigpier)


Lesenswert?

Hallo Profis,
ich habe folgendes Problem, Ich kann mit Printf kein double anzeigen ich 
krige nur ?f !
Ich verwende das AVR Studio und WinAvr 20080403 ich habe im Avr Studio 
unter includs "libc.a" und "libprintf_flt.a"zum Linken hinzugefügt !

Nach suche hier im Forum habe ich einen Beitrag gefunden das es mit Win 
AVR 20061009 anscheinend fuktioniert und so hab ich das auch ausprobiert 
leider ohne Erfolg

Bitte klärt mich über meine Fehler auf !

Danke im Voraus
MFG

Pier

von Karl H. (kbuchegg)


Lesenswert?

Pier S. schrieb:
> Hallo Profis,
> ich habe folgendes Problem, Ich kann mit Printf kein double anzeigen ich
> krige nur ?f !
> Ich verwende das AVR Studio und WinAvr 20080403 ich habe im Avr Studio
> unter includs "libc.a" und "libprintf_flt.a"zum Linken hinzugefügt !

Das reicht noch nicht.
http://www.mikrocontroller.net/articles/FAQ#Aktivieren_der_Floating_Point_Version_von_sprintf_beim_WinAVR_mit_AVR-Studio

von Pier S. (bigpier)


Lesenswert?

Vielen Dank,
jetzt läüft das ganze !!

Gruß
PIer

von Jürgen M. (mheimer)


Lesenswert?

Hallo,

ich habe dasselbe Problem bei meinen Projekten mit SAM-Controller 
(Arduino Due SAM3).
Leider ist hier die libprintf_flt.a nicht verfügbar, gibt es dafür eine 
andere Lösung?

von greg (Gast)


Lesenswert?

Jürgen M. schrieb:
> Leider ist hier die libprintf_flt.a nicht verfügbar, gibt es dafür eine
> andere Lösung?

Das aktuelle Studio nutzt (AFAIR) newlib-nano. Um float-Unterstützung zu 
aktivieren, füge folgendes zu den Linker-Flags hinzu:

> -u _printf_float

Ob damit auch double funktioniert, weiß ich nicht. Aber double sollte 
man auf einem kleinen MCU sowieso nicht verwenden. Das wäre einfach viel 
zu langsam.

von Jürgen M. (mheimer)


Lesenswert?

Danke für den Tip, die newlib-nano hatte ich in den Linkereinstellungen 
auch schon aktiviert, die von Dir erwähnte _printf_float Lib wird aber 
vom Linker nicht gefunden und befindet sich auch nicht in meinem System.

Muss ich die erst hinzufügen und wenn, woher bekomme ich die?

ok, habs nun hinbekommen:

Bei den Compilersymbolen stand noch printf=iprintf, dieses Symbol habe 
ich entfernt.
Mit der Linkeroption -u _printf_float werden nun float-Werte korrekt 
aufgegeben.

: Bearbeitet durch User
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.