Code Composer Studio (CCS) Probleme mit sprintf

#5740258
Lesenswert?

Bei mir will sprintf mit Variablen, die > 32767 sind, nicht 
funktionieren.
Ursprünglich nahm ich an, CCS kann unsigned int Zahlen nicht 
verarbeiten.
Siehe Beitrag "CCS8 -- unsigned int zählt nicht über >32767", was so nicht 
stimmt.

Im Anhang mein Testprogramm
Bei mir funktioniert nur die Darstellung als Hexadezimalzahl.
sprintf(zaa,"%X",zahla);
63000-2000 = 61000 oder 0xEE48

Mit
sprintf(zaa,"%d",zahla);  (d für vorzeichenbehaftete Dezimalzahl)
wird die falsche Zahl -4536 dargestellt.

Mit   zahl=zahl +100; wird von Null beginnend, bis 32767 hoch gezählt 
und nach Überschreitung  von 32767 wird als negative Zahl zurückgezählt. 
(erscheint so auf der Anzeige)

Kennt sich jemand  mit CCS aus und kann mir helfen.
Angehängte Dateien:
#5741062
Lesenswert?

pegel schrieb:
> Steht die auf minimal?

Rufus Τ. F. schrieb:
> Hast Du schon mal %u ausprobiert?

Eigentlich hatte ich alles, was hier als Hinweise kam, schon mal 
probiert.
Da vermutlich das Programm CCS die Umstellung von 'minimal' auf 'full' 
nicht im laufenden Projekt kapiert hatte, habe ich ein neues Projekt 
begonnen und gleich zu Beginn von 'minimal' auf 'full' umgestellt.
Nachts den Computer abgestellt und heute früh Programm neu angeworfen 
und siehe da, alles in Butter (mit %u).
Aber warum die erste Umstellung von 'minimal' auf 'full' bei „laufendem“ 
Betrieb nicht funktioniert hatte, ???
Persönliche Seite #5741172
Lesenswert?

Wenn Du "%d" angibst, bedeutet das, daß der übergebene Wert -- welchem 
Datentyp auch immer er entspringen mag -- als vorzeichenbehaftet 
interpretiert wird.

"%u" hingegen bedeutet, daß der übergebene Wert als vorzeichenlos 
interpretiert wird.

Das hat nichts mit "minimal" oder "full" zu tun.

1
printf("Wert: %d\n", -12);
2
printf("Wert: %d\n", 61000);
3
printf("Wert: %d\n", 0x8000);
4

5
printf("Wert: %u\n", -12);
6
printf("Wert: %u\n", 61000);
7
printf("Wert: %u\n", 0x8000);

Lass das mal auf Deinem µC laufen (nicht auf Deinem PC!) und sieh Dir 
die Ausgabe genau an.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren