EMBLITZ 1.11 GCC vsprindf mit Float geht nicht?

Gast #6912373
Lesenswert?
• ▲
▼
Hallo,

ich benutze EMBlocks2.2 bzw EMBlitz1.11 für den STM32f303.
Die neue 2.1 funktioniert nicht, aber das ist ein anderes Thema.

Nun muss ich auf einem Display float zahlen ausgeben.

Also habe ich mir eine PRINTF Funktion nach lehrbuch mit vsprintf 
gebaut.
Allerdings liefert der eine GCC unter EMBlocks mir mal gleich eine 
falsche Anzahl der Zeichen und es fehlt im String logischerweise der 
Wert.
Unter EMBlitz 1.11 stimmt wenigstens die Anzahl.

Nun habe ich mal einfach nur ein sprintf (Ziel,"%5.1f hallo", 1234.0);
gemacht und auch da fehlt die Zahl komplett.

Mache ich was falsch oder sind die Funktionen einfach nur schrott?
Achso eine HEX oder Dezimal Zahl geht.

Was wäre die alternative?
Gibt es fertige Funktionen für Float to String die auch eine 
Formatierung können? Das kann ich zwar selber schreiben aber dieser weg 
wäre sowieso eine Krücke.
Gast #6912384
Lesenswert?
• ▲
▼
Du musst in den Linker-Einstellungen schon eine stdlib verwenden, die 
float in printf unterstützt.

Die defaultmäßig eingetragene Lib ist aus Platzgründen ohne 
float-Unterstützung in printf.

UND (das hat mich mal mehr als einen Tag Fehlersuche gekostet):
Der Stack muß unbedingt 64-Bit-aligned liegen. Sonst liefert printf zwar 
float-Werte, aber völligen Garbage.

Die Stackadresse sollte also auf 00 enden, keinesfalls auf FF.
Das war irgendwann mal Default in CooCox, den Stack auf die letzte 
RAM-Adresse zu setzen, statt ein Byte dahinter.
Gast #6922637
Lesenswert?
• ▲
▼
So nun muss ich doch mal abschliessend antworten.

Der Tipp mit der falschen LIB war dann der richtige.
Somit wusste ich dann auch wonach ich suchen musste.
Es war bei mir nur ein Harken in der LIB Einstellung.

Bei mir war der Stack schon richtig angelegt, aber viel zu klein.
Was zum Glück aber keine Probleme machen konnte.


Wie läuft das denn wenn ich zum Beispiel ein FREERTOS nehmen würde?
Da kann ich ja nicht garantieren das der Stack von meinem Task so sauber 
liegt. Ist das da egal oder muss man da irgentwelche Tricks anwenden?

VG Dirk

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.