UART mehrfach abtasten

#3244350
Lesenswert?

Anderes Antwort : Synchronisierung.

Da bei RS232 kein separater Clock mit gesended wird mussen Sender und 
Empfanger beiden ein eigenen Clock produzieren. wenn der Sender und 
Empfanger zB 2% unterschiedlich sind, laufen die beide clocks schon 
schnell nicht-synchron. Deswegen wird das einkommende signal oefter 
abgetasted damit man beide Clocks synchronisieren kann.

Deswegen auc die start-und stopbits.

Es hoert dich an wie eine Schul-aufgabe, stimmt das ?
Gast #3244355
Lesenswert?

Patrick C. schrieb:
> Da bei RS232 kein separater Clock mit gesended wird mussen Sender und
> Empfanger beiden ein eigenen Clock produzieren. wenn der Sender und
> Empfanger zB 2% unterschiedlich sind, laufen die beide clocks schon
> schnell nicht-synchron. Deswegen wird das einkommende signal oefter
> abgetasted damit man beide Clocks synchronisieren kann.

ich denke das geht auch anders, aber das geht eventuell in Hardware 
nicht so gut.

Einfach auf die erste Flanke warten und dann mit hilfe der Baudrate die 
Mitte der Bits ermitteln und zu diesem Zeitpunkt einlesen. Dafür braucht 
man eigentlich keine Mehrfachabtastung.
Gast #3244377
Lesenswert?

>Dafür braucht man eigentlich keine Mehrfachabtastung.

Naja. Man moechte eine moeglichst zuverlaessige und fehlertolerante 
Loesung, nicht eine akademische Minimalisten Loesung, die suboptimal 
arbeitet.
Gast #3244407
Lesenswert?

Filterung gegen Störungen. Ein Standard-8051 z.B. tastet intern per 
Hardware jedes bit drei oder vier mal ab, soweit ich weiß. Deswegen ist 
die Grundfrequenz für die Baudrate meistens auch ein Vielfaches von 2, 
eben weil da noch was für die Zusatzlogik benötigt wird.

So ein Filter erinnert mich ein wenig an Tastenentprellung per Software. 
Ich nenne das jetzt mal nur beispielhaft. Eine Taste wird auch erst nach 
mehrmaligem gleichen Pegel in zeitlicher Folge für gültig erklärt, und 
für den Entprellzähler könnte man durchaus auch die Zahl 4 wählen. Wird 
sie bspw. gedrückt erkannt, wird sie nach 5, 10, und 15ms aus dem 
Timerinterrupt noch mal auf diesen Pegel überprüft, sonst verworfen.

Eine getaktete Simplex-UART-Verbindung braucht eine Zusatzkontrolle 
natürlich nicht, und sie ist auch nicht baudratenabhängig. Dort hat man 
ja ein Clock-Signal, das funktioniert dann einfach nur wie ein 
Schieberegister. Man stellt zwar am Sender eine Übertragungsrate ein, 
aber die ist dem Empfänger dann völlig Wumpe. Der arbeitet per externem 
Clocksignal, nicht mit dem internen Takt. Bei Simplex-Mode braucht 
nichts synchronisiert zu sein, wie im Duplex-Mode.

Ein einfacher Soft-UART tastet schon mal nur einmal mitten im bit ab, je 
nach Anforderungen, die man hat. Bspw. 8048, die hatten noch keinen 
integrierten UART. Die Software mußte aber hinterher kommen, da konnte 
man nicht sehr viel an Kontrolle mit rein packen.
Gast #3244511
Lesenswert?

Naja. Die ersten Baudratenlisten beinhalteten 50,110, 150, 300, oder so. 
Und damit ging man auf einen sogenannten TTY : Einen Teletype : etwas 
wie einen Telexdrucker, Da war nichts mit Geschwindigkeit. 100 Baud 
waren 10 Zeichen pro Sekunde. Mach das mal von Hand ueber eine Zeit. Das 
war schon ordentlich was.

Ein gutes Uart macht zB 8 fach oversampling. Dh jedes bit wird 8 mal 
abgetastet und erst wenn Start- und StopBit per Mehrheitsentscheid(?) 
einrasten wird das Byte erkannt. Dh dann wir in Receiver register 
kopiert.
Ich stell mit das als kette von 10*8 Flipflops vor, die an einem 10 fach 
Mehrheitsentscheid haengen und wenn das Byte per Start- und StopBit 
erkannt wurde, werden die einzelnen bits per Mehrheitsentscheid 
uebernommen.
Wobei Mehrheitsentscheid nicht zwingend mehr als 50% heissen muss, kann 
auch 3/4 sein...
#3244520
Lesenswert?

@ Hinz oder Kunz (Gast)

>Ich stell mit das als kette von 10*8 Flipflops vor, die an einem 10 fach
>Mehrheitsentscheid haengen und wenn das Byte per Start- und StopBit
>erkannt wurde, werden die einzelnen bits per Mehrheitsentscheid
>uebernommen.

Auch wenn im Zeitalter von 28nm Technologie einzelne FlipFlops praktisch 
nix kosten, nimmt man eher ein normales Schiebregister mit 10-11 Bit, 
dort landen die abgetasteten Bits. Die x8 oder x16 Abtastung incl. 
Mehrfachentscheid macht man mit einem Dutzend FlipFlops in einer 
statemachine. Ist deutlich effizenter.

>Wobei Mehrheitsentscheid nicht zwingend mehr als 50% heissen muss, kann
>auch 3/4 sein...

Der UART im AVR nimmt 3 Abtastwerte aus der Bitmitte und bildest die 2/3 
Mehrheit, also voll demokratisch ;-)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren