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...
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.