Gast
#1912047
Hallo, ich nutze AVR-Studio mit WINAVR. Code: ... sprintf(s,"adc:%f\r\n",2.88); uputs(s); ... Ausgabe: adc:? Wo ist das Problem? Ich verzweifle hier noch...
|
Anzeige
|
sprintf %f geht nicht
Gast
#1912047
Hallo, ich nutze AVR-Studio mit WINAVR. Code: ... sprintf(s,"adc:%f\r\n",2.88); uputs(s); ... Ausgabe: adc:? Wo ist das Problem? Ich verzweifle hier noch...
Gast
#1912059
http://www.mikrocontroller.net/articles/FAQ#Aktivieren_der_Floating_Point_Version_von_sprintf_beim_WinAVR_mit_AVR-Studio pauschal würde ich sagen, lass dass mit den floats und lies dir den Artikel Festkommaarithmetik durch. Außerdem solltest du dir angewöhnen mehr Code zu zeigen, in mit den Möglichkeiten der Foren-Software zu formatieren und vor allem sollte der Code kompilierbar sein. Rest siehe Netiquette. tset schrieb: > pauschal würde ich sagen, lass dass mit den floats Pauschal würde ich sagen, dass pauschale Aussagen Unfug sind. ;-) Gleitkommazahlen haben einen unbeschreiblichen Vorteil: eine recht gute Dynamik, sodass man gerade während der Prototypenphase damit erst einmal schnell zu einem Ergebnis kommt. Ihre Darstellung entspricht dem, was wir als normale Zahlendarstellung benutzen, der Debugger kann sie einem direkt anzeigen. Wenn man also 1.55 für eine Variable sieht, dann weiß man, dass da soeben 1,55 V gemessen worden sind, während das für 0x0623 nicht so offensichtlich ist. Außerdem muss man sich erstmal nicht um irgendwelche Zahlenbereichsüberläufe und dergleichen kümmern. Wenn der Algorithmus erst einmal steht, und man mit ihm nicht zufrieden ist (zu viel Speicherverbrauch, zu lange Rechenzeit, zu geringe Genauigkeit), kann man sich allemal an die Optimierung mittels Festkommaarithmetik machen. Ehrlich gesagt, verstehe ich diesen Hype "Nimm ja nicht auf keinen Fall überhaupt jemals keine Gleitkommazahlen auf so einem kleinen Controller!" nicht. Controller, die größer als der Ur-AT90S1200 sind, sind schon lange erfunden, und deren Mehrpreis (im Vergleich zum kleinsten möglichen Controller) liegt selbst nach Maßgaben eines Hobbybudgets in der Regel kaum bei einer Stunde Arbeitszeit -- und die hat man ganz schnell durch die Bequemlichkeit wieder rein. Wenn man für richtig große Stückzahlen entwickelt, ist das natürlich was anderes, aber wen von uns hier betrifft das denn wirklich? hake schrieb: > sprintf(s,"adc:%f\r\n",2.88); Ich bin mir jetzt nicht sicher, meine aber, dass standardmäßig eine kastrierte printf-Routine verwendet wird, die nicht alle Optionen unterstützt. Man kann aber mittels Schalter, o.ä. die große Version aktivieren.
Gast
#1912132
Jörg Wunsch schrieb: > tset schrieb: >> pauschal würde ich sagen, lass dass mit den floats > Pauschal würde ich sagen, dass pauschale Aussagen Unfug sind. ;-) Pauschal würde ich sagen, dass man an einem Zweizeiler nicht viel erkennen kann, also kann zumindest ich dann nur pauschale Aussagen treffen und da stehe ich zu 'wenn moeglich kein float auf einem AVR'. ;-) Zu dem Rest deines Beitrags: ich habe auf den Artikel Festkommaarithmetik hingewiesen, um zu entscheiden, ob float oder nicht, hat er jetzt schon einiges zum Lesen. Ich hätte ja auch
schreiben können, wäre bei dem, was man aus dem Zweizeiler sehen kann, auch richtig gewesen. ;-)
Gast
#1912133
Mist
@Christian H. (netzwanze) Siehe http://www.mikrocontroller.net/articles/FAQ#Aktivieren_der_Floating_Point_Version_von_sprintf_beim_WinAVR_mit_AVR-Studio ;-) Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|