Forum: Mikrocontroller und Digitale Elektronik Interpretation der Logikpegel TTL UART


von Werner B. (cyrano1960)


Angehängte Dateien:

Lesenswert?

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?

von Michael R. (mr-action)


Lesenswert?

Dein Denkfehler ist, das du von den falschen Pegeln ausgehst. High ist 0 
und Low ist 1...

von Werner B. (cyrano1960)


Lesenswert?

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.

von Route_66 H. (route_66)


Lesenswert?

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
von Tobias B. (Firma: www.elpra.de) (ttobsen) Benutzerseite


Lesenswert?

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.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Angehängte Dateien:

Lesenswert?

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
von Bernd B. (microwave-designer)


Lesenswert?

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