Forum: Mikrocontroller und Digitale Elektronik sprintf merkwürdiges Verhalten


von Guile L. (sphinx)


Lesenswert?

Liebes Forum,
ich habe gerade meinen Bootloader fertig geschrieben.
Das Ganze funktioniert auch wunderbar, allerdings habe ich ein Problem 
mit sprintf bekommen.

Wenn ich meine Anwendung per AVR Studio auf den ATmega2560 (IAR 
Compiler) brenne, läuft sie einwandfrei. Wenn ich meinen Bootloader 
verwende, formatiert sprintf einen string in der Anwendung falsch.

Diese Anweisung: sprintf(stringTestAusgabe, "%2d/%2d", 10, 20);

Gibt folgenden String aus: FF/FF

Und sollte ja eigentlich: 10/20 ausgeben.

Alles andere funtkioniert einwandfrei. Hat vieleicht jemand ähnliches 
erlebt bzw. eine Idee was falsch sein könnte? Ich kann die Anwendung ja 
leider nur in Assembler debuggen wenn ich sie mit dem Bootloader auf den 
uC schiebe.

Vielen Dank im voraus
Grus Jan

von Cosi (Gast)


Lesenswert?

Hast du "stringTestAusgabe" auch als ein char-Array deklariert. Also 
z.B.
char stringTestAusgabe[2];
?

von Cosi (Gast)


Lesenswert?

In deinem Fall natürlich mit mind. 6 Zeichen :) Also
char stringTestAusgabe[6];

von Guile L. (sphinx)


Lesenswert?

Jawohl es ist sogar ein char array der Größe 20!!! :)

Eins muss ich noch korrigieren:
Der String der ausgegeben wird ist XX/XX wobei X für 0xff stehen soll.

von Cosi (Gast)


Lesenswert?

Versuche etwas Abstand im Code zu lassen:
sprintf(stringTestAusgabe, "%2d / %2d", 10, 20);

Und wenns dann noch immer net geht, ohne "/":
sprintf(stringTestAusgabe, "%2d Test %2d", 10, 20);

von Guile L. (sphinx)


Lesenswert?

Hi Cosi,
danke für Deine Hilfe!
Das hat leider nichts gebracht. Auch wenn ich Abstand einfüge.
Das komische ist ja, daß das Ganze funktioniert wenn ich die Anwendung 
direkt  via AVR Studio draufbrenne.

Ich fürchte, der Fehler liegt irgendwo tiefer und das kaputte sprintf 
ist eine Nebenwirkung. :(

von Cosi (Gast)


Lesenswert?

ok...
Du, im avr gcc gibt es bereits Funktionen die dir Konvertieren:
int --> string
und
float --> string

von Guile L. (sphinx)


Lesenswert?

Yipp danke Dir aber ich würde gerne die Ursache finden.
Nicht das da etwas schlimmeres hintersteckt.

Wär ja peinlich wenn der uC plötzlich völlig durchdreht ;) hehe

von Guile L. (sphinx)


Lesenswert?

Das Problem ist gelöst!

Es handelte sich um einen Fehler im IAR Compiler, der durch Installation 
der neusten Version behoben wurde.

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.