Sebi2020
11.12.2012, 19:55 (editiert von Sebi2020 am 11.12.2012 um 20:36) |
Taktsynchronisation bei RS-232 (Elektronik) |
Hey, hatte mir ja die RS232 Schnittstelle angeschaut, und hätte da eine Frage nochmal dazu, die mir dabei aufgekommen ist. Es wird ja kein Takt mitgeliefert, bei der Schnittstelle und es ist keine Taktrückgewinnung möglich. Jetzt heißt es auf der Seite wo ich geschaut habe, dass also Sender und Empfänger eine eigene Bezugsfrequenz haben, die übereinstimmen muss. Nun ergibt sich für mich allerdings die Frage, wie man sicher geht, das die Abtastphase auch gleich ist. Sonst könnten doch womöglich Fehlinterpretationen entstehen, oder? Theoretisch müsste ja die Phase des Empfängers mit der Flanke des Startbits übereinstimmen..., aber das kann doch nicht gewährleistet sein, oder?
Zudem steht dort, das Datensignal in der Mitte abgetastet wird. Wie erreicht man technisch, das ein Signal weder bei Steigender, noch bei Fallender, noch die ganze Zeit während es einen bestimmten Zustand hat, sondern nur in der Mitte abgetastet wird? Würde ich versuchen einen Empfänger in Software zu schreiben, würde ich Oversampling betreiben...
Ich mein z.B dieses Bild:

Da liegen die Clock und das Datensignal mit der Flanke genau richtig, aber wer sagt den, das das Startbit seine Flanke genau dann hat, wann die Clock ihre auch hat...
Viele Grüße,
Sebi2020 |
hws

59425 Unna, 11.12.2012, 20:09
@ Sebi2020
|
Taktsynchronisation bei RS-232 |
Der Empfänger wird mit Startbit des Senders synchronisiert. Eine bestimmte Baudrate ist vereinbart.
Also weiß der Empfänger, wann das nächste, 2., 3.,...nte Bit kommen müsste.
Wenn der Empfänger in der Mitte jedes Bits abtastet, ein Byte 10Bits lang ist (Start und Stopbit dazugerechnet), dürften die Zeitbasen von Sender und Empfänger maximal 1/20 abweichen. Bei Quarzgenauigkeit wohl kein Problem.
Bei ner Softwarelösung muss man halt die Takte zählen, in Assembler geht das, in Hochsprache meist nicht.
Und das nächste Byte hat wieder ein Startbit und damit erneut synchronisiert.
hws |
Sebi2020
11.12.2012, 21:33 (editiert von Sebi2020 am 11.12.2012 um 21:36)
@ hws
|
Taktsynchronisation bei RS-232 |
» Der Empfänger wird mit Startbit des Senders synchronisiert. Eine bestimmte
» Baudrate ist vereinbart.
» Also weiß der Empfänger, wann das nächste, 2., 3.,...nte Bit kommen
» müsste.
» Wenn der Empfänger in der Mitte jedes Bits abtastet, ein Byte 10Bits lang
» ist (Start und Stopbit dazugerechnet), dürften die Zeitbasen von Sender
» und Empfänger maximal 1/20 abweichen. Bei Quarzgenauigkeit wohl kein
» Problem.
» Bei ner Softwarelösung muss man halt die Takte zählen, in Assembler geht
» das, in Hochsprache meist nicht.
»
» Und das nächste Byte hat wieder ein Startbit und damit erneut
» synchronisiert.
»
» hws
Aber damit er das Startbit überhaupt erkennt müssen doch die Signalflanken des Taktsignals vom Empfänger mit der Startflanke übereinstimmen, das kann ich doch garnicht garantieren, da ich überhaupt nciht weis, wann das Startbit kommt. Wer sagt dann das die Phase bei beiden Signalen 0° beträgt... was ist z.B. bei folgendem Fall:
Keiner kann, sagen, wann der Quarz angeschwungen ist, wenn nicht beide Baugleich exxakt sind und im genau selben Moment angeschwungen sind, was selten so sein dürfte, da ich Empfänger nie exakt gleich mit Sender einschalte. z.B. Modem und PC. Also wie will man garantieren, das der Empfänger auch wirklich die Mitte trifft?
 |
wastel
11.12.2012, 22:36
@ Sebi2020
|
Taktsynchronisation bei RS-232 |
Der Empfänger fängt bei der Flanke an zu zählen. Der Quarz wird ein Vielfaches der Baudrate haben und hat somit bestimmt kein Problem mit "treffen" haben. |
soso
11.12.2012, 22:42
@ wastel
|
Taktsynchronisation bei RS-232 |
Vielleicht hilfts.
http://de.wikipedia.org/wiki/Universal_Asynchronous_Receiver_Transmitter |
hws

59425 Unna, 12.12.2012, 10:40
@ Sebi2020
|
Taktsynchronisation bei RS-232 |
» Aber damit er das Startbit überhaupt erkennt müssen doch die Signalflanken
» des Taktsignals vom Empfänger mit der Startflanke übereinstimmen, das kann
» ich doch garnicht garantieren, da ich überhaupt nciht weis, wann das
» Startbit kommt.
Dein Denkfehler: es gibt im Empfänger keinen "festgelegten Baudratentakt". Der Empfänger arbeitet üblicherweise intern mit einem 16fachen Takt der Baudrate. Also genug Genauigkeit um beim 8. Takt die Mitte des Bytes zu treffen.
» Keiner kann, sagen, wann der Quarz angeschwungen ist,
Der Quarz schwingt mit dem Einschalten des gesamten Gerätes an und nicht erst bei Empfang eines Startbits. Außerdem bewegt sich dessen Frequenz üblicherweise im MHz Bereich. Ein Takt mehr oder weniger macht an der Genauigkeit der Flankenerkennung auch nicht viel aus.
Einen Empfänger erst beim Empfang des Startbits einzuschalten geht eh in die Hose, weil es neben Quarz Anschwingen noch weitere Verzögerungen und Einschalt Resets gibt.
» ..Empfänger auch wirklich die Mitte trifft?
Indem das Empfänger IC mit Quarzgeschwinigkeit oder mindestens der 16fachen Baudrate die Flanke des Startbits erkennt.
hws |
Seb

14.12.2012, 22:31
@ hws
|
Taktsynchronisation bei RS-232 |
» Dein Denkfehler: es gibt im Empfänger keinen "festgelegten Baudratentakt".
» Der Empfänger arbeitet üblicherweise intern mit einem 16fachen Takt der
» Baudrate. Also genug Genauigkeit um beim 8. Takt die Mitte des Bytes zu
» treffen.
Wenn er schon beim ersten Bit nicht die Mitte trift, wie soll er dann beim 8. die Mitte treffen? Die Mitte kann das Ding nur treffen, wenn die 16x Abtastung im Gleichtakt läuft. Da aber kein Taktsignal vom Sender kommt, sondern das Ding seinen 16 Fache Abtasttakt selber erzeugen muss. Kann man den Fehler durch höhere Frequenzen doch lediglich minimieren, in dem Fall, das er das Signal höchstens 1/16 von der Mitte entfernt abtastet. |
hws

59425 Unna, 15.12.2012, 12:58
@ Seb
|
Taktsynchronisation bei RS-232 |
» Wenn er schon beim ersten Bit nicht die Mitte trift, wie soll er dann beim
» 8. die Mitte treffen?
Die trifft er, weil er sich auf die fallende Flanke des Startbits synchronisiert. Da er die Baudrate weiß, weiß er auch, wann das nächste Bit kommt. (üblichderweise mit Quartzgenauigkeit, irgendwas mit 10e-6) Und beim Startbit des nächsten Bytes wird neu synchronisiert. Stimmen Sender und Empfänger Baudrate nicht überein, gibts Müll. Kannst ja mal ein Terminalprogramm falsch einstellen - ergibt nur Müll (oder nix, wenn das Parity bit ausgewertet wird.)
Kauf dir einen fertigen UART oder einen µC mit eingebauter UART. Es gibt für µCs auch Softwarelösungen, die zumindest bei niedrigen Baudraten zufriedenstellend funktionieren. Und wenn du das nicht programmieren willst, schau die wenigstens solche Programme an. Ergibt Verständnis für einen UART Empfänger.
hws |