Hi, also das UART läuft auf jeden Fall schon mal fehlerfrei. Nur bekomme ich nicht ganz die Zeichen die ich haben möchte. Wenn ich z.B eiene "1" sende am Terminal dann ist UDR = 49 bei "2" ist UDR = 50 usw. Ist das der ASCII code? Wenn ja, wie bekomme ich da wieder "richtige" Zeichen raus. Ich habe irgendwo gelesen das man bei Ziffern nur die NULL abziehen muss. Aber wie soll dann aus 49 eine 1 werden? Oder ist das "49\0" Ich bin verwirrt.... Habt ihr vielleicht einen guten Link dazu oder ne kurze Erklärung?
Also, die 49 ist nur ein einziges Byte, daher muß sie auch nicht als String behandelt werden. Die Zahl 49 und das ASCII-Zeichen "2" sind nichts anderes als unterschiedliche Schreibweisen desselben 8-Bit-Datenwortes.
Wenn es schnell gehen soll und Du nur einziffrige Zahlen brauchst, ziehe einfach 48 ab. ;-)) Gruß Sven
ok stimmt, daruf bin ich garnicht gekommen. aber wie macht man das richtg? Ich habe da nicht zu gefunden. Oder falsch gesucht...
Also, wenn Du nur Ascii senden kannst, kannst Du auch mit der Funktion atoi (ascii to int) einen Ascii String umwandeln. Diese Funktion findest Du im avr-lib. Such einfach in der Doku nach atoi.
Jabber Wock wrote: > ok stimmt, daruf bin ich garnicht gekommen. aber wie macht man das > richtg? Ich habe da nicht zu gefunden. Oder falsch gesucht... Im einfachsten Fall: Einfach 48 (oder besser '0') abziehen char c; c = UDR; c = c - '0'; // ist gleichbedeutend mit c = c - 48; // da 48 der ASCII Code von '0' ist. Wenn in c eines der Zeichen '0', '1', '2' ... '9' empfangen wurde, dann enthält c nach der Subtraktion die entsprechende Zahl von 0 bis 9. Wenn in c was anderes empfangen wurde, zb ein 'a', dann kannst du mit dem Ergebnis der Subtraktion natürlich nicht so viel anfangen. Studier einfach mal eine ASCII Tabelle (danach googeln).
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.