PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : itoa nimmt höchstens int16_t mit nem AVR??



yaro
29.05.2009, 18:08
Hallo Leute,
ich bin gerade dabei, mehr oder weniger schwierige Berechnungen auf einem ATmega8 durchführen zu lassen. Um mir zwischenergebnisse ausgeben zu lassen, forme ich die Zahl mit itoa in ein Array um, und gebe es auf einem LCD-Display aus. Das problem ist nun, dass itoa anscheinend alle Zahlen, die ich ihm gebe als 16-bit signed integer interpretiert.
So ergibt dies hier itoa(60000UL, buf, 10); das Array "-5535"
und das hier itoa(68000UL, buf, 10); das Array "2464"
Wenn ich das auf dem PC ausführe, dann kommi immer das richtige Array raus.
Habt ihr vielleicht einen Tipp?

Danke im Voraus, Yaro

p_mork
29.05.2009, 18:20
Hallo Yaro,

auf dem AVR ist int 16 bit groß, deshalb funktioniert itoa (integer to ascii) nur mit diesem Zahlentyp. Für 32-Bit Werte muss man utoa (unsigned long to ascii) oder ltoa (long to ascii) nehmen.

MfG Mark

yaro
29.05.2009, 18:32
Vielen Dank für die superschnelle Hilfe!