itoa bei 10 Bit Zahlen

OP #1863594
Lesenswert?

Hallo allerseits,

also es geht bei mir nun darum, Zahlen per USART zu übertragen. Die 
Verbindung funktioniert und bei dem Hyperterminal kommt etwas an. Es 
geht aber im Speziellen nun darum, Messwerte vom AD-Wandler zu 
übertragen.

Die Messerte liegen zwischen 0 und 1023.
Ich verwende folgenden Code und es klappt auch alles wunderbar.

char s[7];
 int16_t i = ADCMesswert;

 itoa( i, s, 10 ); // 10 fuer radix -> Dezimalsystem
 uart_puts( s );
 uart_putc(' ');
 _delay_ms(250);

Das Problem ist nun, dass ich mich wundere, dass diese Funktionen 
aufgrund des Zahlenbereiches nicht rumspinnen, (also eigentlich 
Verwunderung, anstatt eines Problems). Ich dachte, es könnten nur 8 Bit 
Werte übergeben werden, die Messwerte vom ADC sind aber aus dem Bereich 
von 10 Bit und mein USART habe ich auf 8Bit Datenübertragung 
eingestellt...
#1863596
Lesenswert?

Großes Fragezeichen schrieb:
> Ich dachte, es könnten nur 8 Bit
> Werte übergeben werden,

Wieso das? itoa bekommt eine int.
Und die ist bei AVR 2 Byte groß.

> mein USART habe ich auf 8Bit Datenübertragung
Du überträgst aber doch nicht die int mit 8 Bit, sondern den daraus 
erzeugten String - Byte für Byte mit je acht Bit.

Also bei ADC-Wert=510 überträgst du mit 8 Bit eine '5', mit 8 Bit
eine '1' und mit weiteren 8 Bit eine '0'.

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