Forum: Mikrocontroller und Digitale Elektronik itoa bei 10 Bit Zahlen


von Großes F. (112)


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...

von Klaus W. (mfgkw)


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'.

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.