STFL...
dtostrf() aus stdlib.h
N'Abend!
Wie kann ich die Kommawerte der z.B. sin()-Funktion der math.h über USART ausgeben?
Viele Grüße
Florian
*edit*: Als String meine ich!
AVR-Gcc in AVR-Studio verwende ich ...
STFL...
dtostrf() aus stdlib.h
Hallo Uwe!
Geht das so einfach, mit nur einer Funktion!?
Nagut ... ;o)
Gute Nacht
Florian
Hallo Florian,
genauer weis ich's grad auch nicht, aber mir fallen folgende Funktionen ein
itoa ==> integer to asccii
ftoa ==> weis nicht, ob's das in avr-gcc gibt
normalerweise geht es mit
sprintf ... ==> hat aber avr-gcc nicht
ansonsten gibt es den Thread hier
http://www.mikrocontroller.net/forum/read-2-11536.html
Ich habe es schon mal folgendermaßen gemacht:
void printfloat(float x)
{
int num,num2;
num=x;
num2=(x-num)*10;
printf("%d.%d",num,num2);
}
Diese Version ist ziemlich Speicherplatzsparend.
Falls Deine printf Funktion nicht auf die serielle Schnittstelle geht, kannst Du die beiden Integer-Werte mit itoa( int wert ) in ascii verwandeln und dann die einzelnen Zeichen getrennt raus schicken.
Gruss,
stochri
Danke vielmals! :o)
Wie kommst Du darauf ?sprintf ... ==> hat aber avr-gcc nicht
sehe hier
Gruß Sebastian
Linus TorvaldSoftware is like s e x: its better when its free.
Hallo Florian,
Hab noch einen Thread gefunden, über die Problem der dtostrf() Funktion.
http://www.mikrocontroller.net/forum/read-2-17545.html
Würde mich interessieren, ob die bei Dir gut funktioniert.
Auch gute Nacht,
stochri
Hmm, also irgendwie hängt sich mein AVR-Studio auf, wenn ich die stdlib.h einbinde! ;o)=
Hallo Sebastian,sprintf ... ==> hat aber avr-gcc nicht
Wie kommst Du darauf ?
tja, da habe ich mich wohl getäuscht.
Allerdings hatte ich vor längerer Zeit das selbe Problem wie Florian, ich wollte eine Float-Zahl auf einem LCD-Display darstellen. Die printf-Funktion hatte sich entweder aufgehängt oder das falsche Ergebnis geliefert. Nachdem ich mich eine Weile damit rumgeärgert hatte, habe ich die Ausgabe wie oben beschrieben realisiert. Dort werden einfach zuerst die Vorkomma-Stellen und dann der Punkt und eine Nachkommastelle getrennt dargestellt.
Das Verfahren braucht wesentlich weniger Speicherplatz als das Einbinden der Float nach String Formatkonvertierungen.
Gruss,
stochri
Hallo stochri,
Ich habe ehrlich gesagt mit sprintf und Fließkommazahlen auf einem µC bis jetzt nichts gemacht,programmiere gerne in Assembler und da sucht man andere Lösungen
Daß die stdio.h viel Speicher schluckt ist ja bekannt, ich wollte nur nett darauf hinweisen daß es die Funktion wohl gibt
Gruß Sebastian
Linus TorvaldSoftware is like s e x: its better when its free.
Lesezeichen