Hallo,
weiß jemand ob es einen eindeutig definierten Mindestabstand zwischen
zwei UART-Frames gibt?
Darf nach dem Stoppbit des einen UART-Frames direkt das Startbit des
nächsten Frames gesendet werden?
Vielen Dank schon mal für eure Hilfe
Grüße
Max
Student schrieb:> Also darf das Startbit direkt nach dem Stoppbit gesendet werden?http://www.rn-wissen.de/index.php/UART
Da steht:
[...]und 1-2 Stopbits übertragen. Das 2. Stopbit ist je nach Ausführung
der UART nötig, wenn der Sender etwas schneller ist als der Empfänger.
Teste es einmal mit einem, wenns nicht klappt, dann mit zwei.
Für die von mir aufgebauten Atmel<->PC und PIC<->PC -Verbindungen
reichte immer eins.
Student schrieb:> Also darf das Startbit direkt nach dem Stoppbit gesendet werden?
Ja, das ist so üblich.
Wenn allerdings aus mehreren Zeichen ein "Telegramm" gebildet wird,
kann es je nach Protokoll nötig sein, dass zwischen 2 Telegrammen eine
größere Pause erforderlich ist (Synchronisierung auf Telegrammbeginn bei
Übertragungsfehlern).
Gruß Dietrich
> weiß jemand ob es einen eindeutig definierten Mindestabstand zwischen zwei
UART-Frames gibt?
Kann es sein, dass hinter deiner Frage mehr steckt, als du uns verraten
willst?
Denn es gibt da noch eine 2-te zu berücksichtigende Komponente. Das
Stoppbit ist die eine Sache und ist so gesehen eigentlich nur eine
vorgeschriebene kurze Verzögerung nach dem letzten Datenbit, damit der
Empfänger etwas Zeit hat, das zuletzt empfangene Byte erst mal aus dem
Weg zu schaufeln.
Was damit allerdings nicht ausgesagt ist, ist die Fragestellung: was
macht dann der Empfänger in weiterer Folge mit diesem Byte? Das wird ja
im Normalfall in irgendeiner Form ausgewertet. Und wenn diese Auswertung
schon mal länger dauert, dann reicht eben ein Stoppbit alleine unter
Umständen nicht aus, um dem Empfänger 'die Luft zu geben' die er braucht
um seinen Teil komplett abzuarbeiten.
Karl Heinz schrieb:>> weiß jemand ob es einen eindeutig definierten Mindestabstand zwischen zwei>> UART-Frames gibt?> Denn es gibt da noch eine 2-te zu berücksichtigende Komponente. Das> Stoppbit ist die eine Sache und ist so gesehen eigentlich nur eine> vorgeschriebene kurze Verzögerung nach dem letzten Datenbit, damit der> Empfänger etwas Zeit hat, das zuletzt empfangene Byte erst mal aus dem> Weg zu schaufeln.
Nee, da verlängert man nicht das stopbit sondern pappt wie beim 16550
eine FIFO an den UART.
MfG
Hallo,
also ich sehe das so: das Stop-Bit garantiert, daß am Beginn des
Startbits eine Flanke erzeugt wird.
Das Thema Verarbeitungszeit eines Frames ist beim Design dieser
Schnittstelle sicher keines gewesen, denn da handelte es sich um den
Impuls für den Anschlag eines Fernschreibers.
Wenn Verarbeitungszeit einzuplanen ist, dann muß das im
Übertragungsprotokoll festgelegt werden (siehe z.B. MODBUS). Schließlch
ist ein Stopbit je nach Baudrate ja ein recht unterschiedlicher
Zeitraum.
Gruß,
Michael
Michael Appelt schrieb:> Hallo,>> also ich sehe das so: das Stop-Bit garantiert, daß am Beginn des> Startbits eine Flanke erzeugt wird.
Dann müsste man es aber nicht in unterschiedlichen Längen anbieten.
> Dann müsste man es aber nicht in unterschiedlichen Längen anbieten.
Hallo,
Mal in historischer Reihenfolge:
1,5 Stopbits stammen von den Fernschreibern mit current loop
Schnittstelle
2 Stopbits waren INHO notwendig für asynchrone Übertragungen per Modem
1 Stopbit ist ausreichend für RS232 mit moderner Hardware
Im 2. Fall hatte man pro Bit immer 1 oder 2 Signalwechsel (NRZ & Co),
bei den 2 Stopbits blieb der Wechsel dann aus. Nur so konnte man beim
letzten Zeichen per Timeout das Ende erkennen, denn eine
Sop-Start-Flanke nach dem letzten Zeichen gibt es nicht.
Gruß,
Michael
Karl Heinz schrieb:>> also ich sehe das so: das Stop-Bit garantiert, daß am Beginn des>> Startbits eine Flanke erzeugt wird.>> Dann müsste man es aber nicht in unterschiedlichen Längen anbieten.
Ausgleich von Drehzahltoleranzen. Indem man das Stopbit etwas länger
macht, ist sichergestellt, dass die Abtastwelle eben auf jeden Fall
erstmal angehalten wird, bevor das nächste Startbit sie neu startet.
Wäre sicher selbst damals nicht unbedingt nötig gewesen, hat man
einfach nur mal so festgelegt gehabt. Damals war's ja auch noch ein
5-bit-Code, also mit Start- und Stopbit dann 7,5 bit brutto. ;-)
> 2 Stopbits waren INHO notwendig für asynchrone Übertragungen per Modem
Ganz sicher nicht. Ich habe noch nie 2 Stopbits benutzen müssen. Weder
beim 300 Baud modem, noch bein 57k Modem.
Jörg Wunsch schrieb:> Ausgleich von Drehzahltoleranzen.
"Hä?!?" wird sich jetzt mancher der Youngsters fragen! :-)
Aber es ist doch schön, dass das Wissen über die Herkunft solcher Dinge
noch nicht verloren ist.
Was ich an der Frage nicht ganz verstehe: Geht es hier um Soft-UART?
Weil ansonsten prüfe ich ob der Sendepuffer frei ist und wenn ja packe
ich das zu sendende Byte rein, bzw. besser habe einen Ringpuffer und
schieb das nächste Byte rein, wenn die UART mir via Interrupt
signalisiert daß das letzte Byte gesendet wurde.
Sprich sobald ich ein UART Modul in meinem µC habe dann lasse ich den
das machen.
Udo Schmitt schrieb:> Weil ansonsten prüfe ich ob der Sendepuffer frei ist und wenn ja packe> ich das zu sendende Byte rein,
...womit Du die Wartezeit "Null" gewählt hättest. Die in der Theorie
auch reicht.
Konrad S. schrieb:> Jörg Wunsch schrieb:>> Ausgleich von Drehzahltoleranzen.>> "Hä?!?" wird sich jetzt mancher der Youngsters fragen! :-)> Aber es ist doch schön, dass das Wissen über die Herkunft solcher Dinge> noch nicht verloren ist.
Ich fragte mich wie sowas ausgehen hat, dachte da zuerst an eine
Dampfmaschine wenn ich Fliehkraftregler lese:
Ziemlich unten im Text:
http://www.radiomuseum.org/forum/grossgraf_telegraphen_apparat_typendruck.html?language_id=1
Die Scheiben sind auch geil, das ganze Trum aus Gusseisen, fehlt nur
noch ein Esel vor der Türe der im Kreis läuft und das Ganze über ein
Getriebe und Gestäng antreibt, wie bei historischen Mühlen oder Pumpen.
;)