Hallo Leute, ich bin nach allen Information, die ich bisher hatte immer davon ausgegangen, dass der High-Pegel bei einem TTL UART z. B. der 5 V entspricht und der Low-Pegel dem GND-Potenzial. Auch in den Datenblättern z. B. beim Atmel AVR finde ich z. B. den Hinweis, dass das Startbit immer 0 ist. Jetzt habe ich mehr aus Zufall die Signale mit einem Oszi aufgezeichnet und erhalte das folgende Bild (s. Anhang). Dabei habe ich mit einem Arduino einfach nur ein Zeichen (hier ein M) gesendet. Das Oszi zeigt das folgende Bild: Der Pegel ist zunächst auf 5 V und wird dann durch das Startbit auf GND gezogen. Das wäre auch genauso wie ich es vermutet habe. Jetzt folgt eine Bitfolge von: 1 0 1 1 0 0 1 0 danach geht die Leitung wieder auf High (was dem Stoppbit entspräche) und bleibt dort, weil keine weiteren Zeichen kommen. Der obige binäre Code entspricht einer dezimalen 178, was mit dem "M" nichts zu tun hätte. Invertiere ich allerdings diese Folge, bekomme ich: 0 1 0 0 1 1 0 1 das wäre eine 77 und somit genau der ASCII-Code für "M". Dann würde aber der High-Pegel einer 0 entsprechen und der der Low-Pegel der 5 V (oder z. B. der 3,3). Hat jemand eine Idee, wo mein Denkfehler sein könnte?
Dein Denkfehler ist, das du von den falschen Pegeln ausgehst. High ist 0 und Low ist 1...
Hallo Michael, vielen Dank für Deine Antwort, aber ich glaube nicht, dass das richtig ist. Wie gesagt, selbst im Atmel-Datenblatt steht, dass die Übertragung mit dem Startbit beginnt ("... start bit is always zero...") und ich glaube nicht, dass die mit zero GND meinen. Mir ist aber ein ganz anderer Fehler bei mir aufgefallen. Nach dem Start-Bit kommt das LSB und nicht das MSB und wenn ich die Reihenfolge umkehre wird aus der 178 eine 77. Das ist mehr als ein blöder Zufall, das hier eine Spiegelung auch exakt einer Negierung entspricht. Damit wäre dann aber auch der Fall geklärt. Aber vielleicht ist es für den ein oder anderen ja ganz hilfreich.
Michael R. schrieb: > Dein Denkfehler ist, das du von den falschen Pegeln ausgehst. High > ist 0 > und Low ist 1... Falsch! Die Bitreihenfolge ist nur anders herum: Bit0 zuerst und Bit7 vor dem Stopp-Bit. zu langsam!
:
Bearbeitet durch User
Route 6. schrieb: > Falsch! > Die Bitreihenfolge ist nur anders herum: Bit0 zuerst und Bit7 vor dem > Stopp-Bit. Daher empfiehlt es sich für solche Tests immer ein möglichst asymmetrisches Testpattern zu verwenden. Z.B. "_" als ASCII 0x5F.
Werner B. schrieb: > Wie gesagt, selbst im Atmel-Datenblatt steht, dass die Übertragung mit > dem Startbit beginnt ("... start bit is always zero...") und ich glaube > nicht, dass die mit zero GND meinen. Doch. Das Startbit hat auf der TTL-Seite 0V. Oder andersrum: der Ruhepegel der RS232-Schnitte auf TTL ist high ('1' oder +5V oder +3,3V oder wassonstauchimmer). Der Übertragungsbeginn wird mit der fallenden Flanke (auf '0', low, GND 0V) des Startbits eingeleitet. Dann kommt das LSB usw... Damit hast du also:
1 | LSB MSB |
2 | 1011 0010 |
und somit "von MSB zum LSB" binär 0100 1101 = 0x4D. Ein tadelloses großes 'M'
:
Bearbeitet durch Moderator
Hallo Foristen, alles was Ihr hier neu lernt stammt aus der Fernschreibtechnik (Fernschreibertechnik). Dort benannte man die Zustände Mark und Space. Es floss dauerhaft ein Strom durch den Fernschreibmagnet, der dafür sorgte, dass nichts passierte. Wurde der Strom unterbrochen, wurde der Magnet verwendet den Buchstaben auszuwählen und auf das Papier zu schleudern. Wer mehr wissen will, einfach googleln oder einmal einen OM (Funkamateur) fragen. Gruß Bernd
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.