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.
Könnte mit der Einstellung printf zu tun haben. "Choosing the printf() compiler support setting" http://processors.wiki.ti.com/index.php/Printf_support_for_MSP430_CCSTUDIO_compiler Steht die auf minimal?
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, ???
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.