Forum: Mikrocontroller und Digitale Elektronik Woran erkennt ein UART eigentlich das Startbit?


von Thomas B. (escamoteur)


Lesenswert?

Hi,

ich hab mal ne Verständnisfrage. Wie RS232 Übertragung funktioniert 
verstehe ich ab dem Moment wenn das Startbit empfangen wurde, nur wie 
weiß der UART eigentlich welches Bit aus dem Serielln Bitstrom das 
Startbit ist?

Gruß
Tom

von Karl H. (kbuchegg)


Lesenswert?

Thomas Burkhart schrieb:
> Hi,
>
> ich hab mal ne Verständnisfrage. Wie RS232 Übertragung funktioniert
> verstehe ich ab dem Moment wenn das Startbit empfangen wurde, nur wie
> weiß der UART eigentlich welches Bit aus dem Serielln Bitstrom das
> Startbit ist?

Exakt weiß er es nicht.

Die Annahme ist, dass die Verbindung im Grundzustand ist. Die erste 
Flanke ist dann der Beginn des Startbits.

Wenn aber der Sender kontiunierlich sendet und sich der Empfänger 
irgendwann dazuschaltet (und damit nicht weiß auf welcher Flanke er sich 
einklinkt), dann hat der Empfänger keine Chance aus den vielen Flanken 
das Startbit rauszufiltern.

Da es aber in der überwiegenden Mehrzahl der Fälle so ist, dass auch der 
Sender irgenwann einmal Pause macht, ergibt sich eine Pause die lang 
genug ist, so dass sich der Empfänger wieder auf das Startbit 
synchronisieren kann.

von Bernhard M. (boregard)


Lesenswert?

Er weiß es nicht.

Wenn eine Pause war, dann muß das nächst Bit das Startbit sein.
Wenn keine Pause war, und das letzte Byte komplett empfangen wurde, dann 
muß das nächste Bit auch das Startbit sein...

Edit: ups, zu spät...

von Nils S. (kruemeltee) Benutzerseite


Lesenswert?

>und das letzte Byte komplett empfangen wurde, dann
>muß das nächste Bit auch das Startbit sein...
woher willst du denn wissen ob genau diese 8 Bits das Byte waren?
Ausserdem gehört ja noch mindestens das Startbit dazu, also 9Bit pro 
Byte eigentlich

von Thomas B. (escamoteur)


Lesenswert?

Ahhhja, dass es so "primitiv" ist hatte ich nicht erwartet. Wäre ein 
prima zusatz im RS232 Artikel.

Danke & Gruß
Tom

von Tim (Gast)


Lesenswert?

War es nicht immer so, dass das Startbit eine andere Farbe hatte als die 
anderen? ;)

von Purzel H. (hacky)


Lesenswert?

Es ist nicht so, das die erste flanke das startbit ist. Das erste Bit 
wird wie alle anderen als Mehrheitsentscheid genommen. zB 6 von 8 Sample 
muessen hoch sein fuer ein 1-bit. Das naechste was nach einen Stopbit 
kommt ist wieder ein Startbit. Aber das Startbit ist nicht wesentlich. 
Der vorgang geht etwa so. Ein Schieberegister von 10(+parity) x 8 bit 
wird mit dem 8 fachen Baudrateclock beschickt. Es wird laufend geprueft, 
ob durch Mehrheitsgewichtung Start und Stopbit vorhanden sind. Falls die 
das sind, wird das Byte als Byte erkannt. Dann wird die 80 clocks 
gewartet bis die Erkennung neu angeworfen wird.

von Falk B. (falk)


Lesenswert?

@  Nebliger Pfad (Firma: vorgestern) (hacky)

>Es ist nicht so, das die erste flanke das startbit ist.

Doch, es ist der Übergang zwischen Stop zum Startbit.

> Das erste Bit
>wird wie alle anderen als Mehrheitsentscheid genommen. zB 6 von 8 Sample
>muessen hoch sein fuer ein 1-bit.

Nun übertreib mal nicht. Einige UART prüfen das Startbit noch einmal, 
meist mit drei Abtastwerten aus der Bitmitte. Einige aber auch nicht.

> Das naechste was nach einen Stopbit
>kommt ist wieder ein Startbit. Aber das Startbit ist nicht wesentlich.

Doch, denn ohne Startbit keine Flanke ;-)

>Der vorgang geht etwa so. Ein Schieberegister von 10x8 bit wird mit dem
>8 fachen Baudrateclock beschickt. Es wird laufend geprueft, ob durch
>Mehrheitsgewichtung Start und Stopbit vorhanden sind.

NEIN! Schau dir mal einen UART von "innen" an, z.B. als VHDL. Die 
Statemachine macht was anderes. Sie wartet erst auf die Flanke zwischen 
Stop und Startbit.

MFG
Falk

von Karl H. (kbuchegg)


Lesenswert?

Ich denke, das das alles technische Details sind, die für das 
Verständnis nicht wirklich wesentlich sind.
Konzeptionell beginnt das Startbit mit der nächsten Flanke aus der 
Ruhephase heraus. Wie die Hardware dann konkret erkennt, ob das nur eine 
Störung war oder tatsächlich die Bitlänge eingehalten wurde, ist ein 
Detail welches die Beschreibung der Vorgänge auf Signalebene nicht 
tangiert (dort wird sowieso von einer fehlerfreien Übertragungsstrecke 
ausgegangen. Liegt der Pegel auf 0, dann deswegen weil ihn der Sender 
auf 0 gezogen hat und umgekehrt)

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


Lesenswert?

> Es wird laufend geprueft, ob durch Mehrheitsgewichtung Start und Stopbit
> vorhanden sind. Falls die das sind, wird das Byte als Byte erkannt.
Nein, so eine RS232 ist viel simpler.

Da wird einfach die erste fallende Flanke als Anfang des Startbits 
hergenommen. Wenn du z.B. so einen 8N1 Datenstrom hast:
010101010101010101010101010101010101010101010101010101010101
dann kann jede 0 ein Startbit sein. Urigerweise macht das hier nichts 
aus, es wird immer richtig 10101010 = 0xAA empfangen  ;-)
Wenn du aber sowas hast:
010101111101010111110101011111010101111101010111110101011111
dann kann das übertragene Zeichen ein 10101111 oder ein 10111110 oder 
auch ein 11111010 sein, weil ja wieder jede 0 ein Startbit sein 
könnte...

Erst, wenn der Sender mal mindestens 1 Byte Pause macht, kann der 
EMpänger sicher wieder aufsynchronisieren:
010101111101010111110101011111111111111010101111101010111110101011111
                          ^           ^^
                          '--Pause----'Startbit

von Michael U. (amiga)


Lesenswert?

Hallo,

richtig ist, daß nicht die Flanke definiert ist, sondern der Zustand Low 
(Mark) für eine Bitzeit ist das Startbit. Ruhuzustand ist SPACE (High), 
genauso wie das/die 1, 1,5 oder 2 Stoppbits.
Genau die Versionen mit mehr als einem Stoppbit sollten sicherstellen, 
daß das nächste Startbit auch erkannt wurde.
Die ganzen Versionen mit Mehrfachabtastung usw. sind dann nach und nach 
entstanden, um die Geschichte unempfindlicher gegen Störungen zu machen.

Simple-Versionen haben wirklich auf die H/L-Flanke gewartet, dann eine 
halbe Bitzeit gewartet und dann stur jeweils nach einer Bitzeit auf 
Bitmitte den Pegel gelesen. Das Stoppbit am Ende dann einfach ignoriert, 
mußte ja H sein und wieder auf die nächste Startbit-Flanke gewartet.

Wenn von Außen keine Störungen kommen, funktioniert das auch heute noch 
zuverlässig...

PS: grrr... Lothar Miller war schneller... ;-))

Gruß aus Berlin
Michael

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.