Forum: Mikrocontroller und Digitale Elektronik Gibt es Probleme beim ATtiny841 bei ser. Protokoll mit nur einem Stopp-Bit?


von Fanny (Gast)


Lesenswert?

Hallo,

beim Datenaustausch über eine asynchron arbeitende UART werden manche 
µCs schon einmal leicht überfordert. Die UART wird deshalb auch häufig 
in Errata-Sheets genannt.

Speziell beim Empfang von Daten mit nur einem Stopp-Bit treten 
gelegentlich Probleme auf. Deshalb kann ja wohl auch fast immer zwischen 
einem und zwei Stopp-Bits gewählt werden.

Hat jemand beim ATtiny841 auch schon einmal Probleme mit einem Stopp-Bit 
gehabt, die durch Verwendung von zwei Stopp-Bits eliminiert wurden?

von Harald (Gast)


Lesenswert?

Nein.

von M. K. (sylaina)


Lesenswert?

Fanny schrieb:
> Hat jemand beim ATtiny841 auch schon einmal Probleme mit einem Stopp-Bit
> gehabt, die durch Verwendung von zwei Stopp-Bits eliminiert wurden?

Welche Probleme hast denn du damit derzeit? Oder tritt das Problem etwa 
gar nicht bei dir auf?

von Dietrich L. (dietrichl)


Lesenswert?

Das Problem kann auftreten, wenn der Sender-Takt etwas höher ist als der 
des Empfängers. Dann ist der Empfänger noch nicht fertig wenn der Sender 
schon das nächste Zeichen sendet.
Hier können 2 Stopbits beim Sender helfen. Der Empfänger, eingestellt 
auf 1 Stopbit, wertet das 2. Bit nicht aus und ist dann eher bereit für 
das folgende Startbit.

Das hat also nichts mit dem µC-Typ zu tun, sondern mit der Genauigkeit 
von Takt und Baudrateneinstellung.
Aber unabhängig von dem "Reparaturversuch" mit 2 Stopbits ist bei einem 
zu großem Taktfehler die Übertragungsicherheit sowieso gefährdet.

Ergänzung:
Unabhängig von HW und Takt kann die SW auch Probleme verursachen, wenn 
sie nach Empfang eines Zeichens zu lange mit der Bearbeitung 
"herummacht" und das nächste Zeichen verpasst.

von Peter D. (peda)


Lesenswert?

Bei einem Baudratenfehler sind 2 Stopbits noch problematischer, da ja 
nun 11 Bits synchron sein müssen. Ist der Empfänger zu langsam, kann er 
das nächste Startbit verlieren, wärend er noch auf das 2. Stopbit 
wartet.

Nimm für Sender und Empfänger ein Baudratenquarz und gut.

von Peter D. (peda)


Lesenswert?

Dietrich L. schrieb:
> Hier können 2 Stopbits beim Sender helfen. Der Empfänger, eingestellt
> auf 1 Stopbit, wertet das 2. Bit nicht aus und ist dann eher bereit für
> das folgende Startbit.

Das erfordert dann aber zwingend Halb-Duplex, d.h. für jede Richtung 
müssen sich Sender und Empfänger jedesmal umkonfigurieren.

von spess53 (Gast)


Lesenswert?

Hi

>Ist der Empfänger zu langsam, kann er
>das nächste Startbit verlieren, wärend er noch auf das 2. Stopbit
>wartet.

Bei AVRs werden die für RX die eingestellten Stop-Bits > 1 ignoriert.

MfG Spess

von Dietrich L. (dietrichl)


Lesenswert?

Peter D. schrieb:
> Nimm für Sender und Empfänger ein Baudratenquarz und gut.

Peter D. schrieb:
> Das erfordert dann aber zwingend Halb-Duplex, d.h. für jede Richtung
> müssen sich Sender und Empfänger jedesmal umkonfigurieren.

Da hast Du völlig recht! Die Bastelei mit den Stopbits ist wirklich 
keine tolle Lösung - oder einfach nur Murks.

von Jim M. (turboj)


Lesenswert?

Dietrich L. schrieb:
> Hier können 2 Stopbits beim Sender helfen. Der Empfänger, eingestellt
> auf 1 Stopbit, wertet das 2. Bit nicht aus und ist dann eher bereit für
> das folgende Startbit.

Nicht wirklich. Das letzte Daten Bit ist dann mit hoher 
Wahrscheinlichkeit auch schon kaputt.

von Dietrich L. (dietrichl)


Lesenswert?

Jim M. schrieb:
> Nicht wirklich. Das letzte Daten Bit ist dann mit hoher
> Wahrscheinlichkeit auch schon kaputt.

Dietrich L. schrieb:
> Aber unabhängig von dem "Reparaturversuch" mit 2 Stopbits ist bei einem
> zu großem Taktfehler die Übertragungsicherheit sowieso gefährdet.

;-))

von Uwe K. (ukhl)


Lesenswert?

Peter D. schrieb:
> Bei einem Baudratenfehler sind 2 Stopbits noch problematischer, da ja
> nun 11 Bits synchron sein müssen. Ist der Empfänger zu langsam, kann er
> das nächste Startbit verlieren, wärend er noch auf das 2. Stopbit
> wartet.

Ganz so ist das nicht. Das Stopbit stellt keine Information im 
eigentlichen Sinne bereit und muss auch nicht gelesen werden. Es schadet 
aber nicht das erste Stopbit zu lesen, um den Frame zu prüfen.

Das Stopbit ist schlicht die Pause zwischen den übertragenen Zeichen. 
Mit dem Stopbit stellt man die kleinste Pause beim Senden ein. Darüber 
hinaus kann die Pause beliebig lang sein. Ein zweites Stopbit beim 
Senden kann sinnvoll sein, wenn der Empfänger nicht der schnellste ist 
und mehr Zeit für die Verarbeitung braucht. Gelesen oder geprüft wird 
das zweite Stopbit nicht.

von Fanny (Gast)


Lesenswert?

Uwe K. schrieb:
> Das Stopbit ist schlicht die Pause zwischen den übertragenen Zeichen.

Und genau diese Pause wird benötigt, damit sich die interne µC-Hardware 
für den Empfang des nächsten Start-Bits (und der nachfolgenden 
Datenbits) vorbereiten kann. Dem µC ist dabei die reale Datenrate 
absolut egal, ihn interessiert nur die eigene Datenrate und die damit 
verbundenen Abtastzeitpunkte (oft drei pro Bit) für den Datenstrom. In 
vielen Protokollen darf die Pause vor dem Startbit auch beliebig lang 
gemacht werden, Hauptsache die Mindestzeit (meist 1 Bitzeit = 1 
Stoppbit) wird nicht unterschritten.

von A. S. (Gast)


Lesenswert?

Natürlich sind Stoppbits nur im SENDER!

Mit 1 Stoppbit darf die Baudrate (bei perfekten Signalen) etwa 3% 
abweichen. Mit 2 Stoppbit etwa 4%.  (Anmerkung: Die Differenz ist etwas 
kleiner als 1%) Dazu reichen schon 1.5Stopbits, darum gibt es die auch.

Ein weitere Vorteil von 2 Stoppbits ist die schnellere 
Neu-Synchronisiation bei einem Back-To-Back-Datenstrom. Gedankenspiel: 
Bei 10 Stoppbits ist man spätestens im 2ten Byte syncronisiert.

von A. S. (Gast)


Lesenswert?

Jim M. schrieb:
> Nicht wirklich. Das letzte Daten Bit ist dann mit hoher
> Wahrscheinlichkeit auch schon kaputt.

nicht wirklich. Wenn jeweils beim 7ten, 8ten und 9ten von 16 Takten 
abgetastet wird, dann darf das letzte Bit 1ns nach dem 8ten Takt zuende 
sein. Das Stoppbit hingegen darf erst mit dem 9ten Takt zuende sein 
(sonst verschiebt sich das nächste Startbit) , zudem ist das Stoppbit 
ein Bit später, was nochmal 10% ausmacht (~1.6 Takte).

Bei 10 Bit + 2 Stoppbit (Start, Daten, Parity) darf der Sender also 8 
Takte auf 160 schneller sein (1/20=0.05*)
Bei 10 Bit + 1 Stoppbit nur 6 Takte auf 176 (1/30 = 0.034)

*) hier gibt allerdings in der Gegenrichtung probleme, da das Stoppbit 
das Parity-Bit zerstört.

von Stefan F. (Gast)


Lesenswert?

Zwei Stoppbits helfen dem Empfänger auch, sich schneller neu zu 
synchronisieren, wenn er mal durcheinander gekommen ist und fortlaufend 
Daten übertragen werden.

von Bernd K. (prof7bit)


Lesenswert?

Peter D. schrieb:
> Ist der Empfänger zu langsam, kann er
> das nächste Startbit verlieren, wärend er noch auf das 2. Stopbit
> wartet.

Also wer einen UART konstruiert der allen ernstes bei RX auf das zweite 
Stopbit wartet der gehört mal für ne Weile in die Ohrfeigenmaschine 
eingespannt.

von Wolfgang (Gast)


Lesenswert?

Peter D. schrieb:
> Bei einem Baudratenfehler sind 2 Stopbits noch problematischer, da ja
> nun 11 Bits synchron sein müssen. Ist der Empfänger zu langsam, kann er
> das nächste Startbit verlieren, wärend er noch auf das 2. Stopbit
> wartet.

Da kann man die Daten mit zwei Stopbits senden und den Empfänger auf ein 
Stopbit konfigurieren. Das gibt dem Empfänger ein ganzes Bit mehr Zeit, 
so dass er früher für das nächste Startbit bereit ist.

von Peter D. (peda)


Lesenswert?

spess53 schrieb:
> Bei AVRs werden die für RX die eingestellten Stop-Bits > 1 ignoriert.

Damit sollte wohl klargestellt sein, daß ich mir nie den Mode mit 2 
Stopbits näher angeschaut, noch ihn benutzt habe.
Es ist also überflüssig, darauf noch weiter rumzureiten.

Im 16550 Datenblatt heißt es: "1 1/2-, or 2-Stop Bit Generation".
Damit ist klar, es betrifft nur den Sender.
Das hätte man im AVR-Datenblatt besser auch so schreiben können.

: Bearbeitet durch User
von spess53 (Gast)


Lesenswert?

Hi

peda Schrieb

>Das hätte man im AVR-Datenblatt besser auch so schreiben können.


Steht eigentlich in jedem Datenblatt (hier mal ATMega16):

• Bit 3 – USBS: Stop Bit Select
This bit selects the number of Stop Bits to be inserted by the 
Transmitter. The Receiver ignores this setting.

MfG Spess

von georg (Gast)


Lesenswert?

spess53 schrieb:
> Steht eigentlich in jedem Datenblatt

Einen Receiver, der beim Fehlen des 2. Stopbits einen Framing Error 
meldet, habe ich in den letzten 40 Jahren nicht gesehen - die 
Einstellung gilt immer nur für den Transmitter. Mögliche Ausnahmen 
könnte es bei selbstgebastelten Software-UARTs geben.

Georg

von Michael K. (Gast)


Lesenswert?

Fanny schrieb:
> beim Datenaustausch über eine asynchron arbeitende UART werden manche
> µCs schon einmal leicht überfordert.

Nach meiner Erfahrung sitzt die Überforderung in den meisten Fällen VOR 
dem Monitor.
Uarts sind mega robust wenn man weiß was man tut.

Auch lese ich häufig Erratas und in den seltensten Fällen waren die 
Uarts ein Problem.

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.