Forum: Mikrocontroller und Digitale Elektronik UART mehrfach abtasten


von Mido (Gast)


Lesenswert?

Hallo,
ich habe mal eine Frage :
 "Warum tastet man mehrfach ein UART-Signal ab ?"

ich habe in google gesucht und in forums auch aber keine konkrete 
antworten, ich hoffe ich bekomme hier die richtigen Antworten.

Vielen Dank im Voraus.
Gruß
Mido

von Jörg H. (idc-dragon)


Lesenswert?

Als Fehlerschutz gegen Stör-Spikes auf der Leitung. Man kann dann 
mehrheitlich entscheiden ob das Signal im Bit-Intervall high oder low 
war.

Jörg

von Mido (Gast)


Lesenswert?

Danke schön.

von Patrick C. (pcrom)


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 ?

von Hinz oder Kunz (Gast)


Lesenswert?

Uns um zu synchronisieren. Die Uebertragung ist asynchron, waehrend das 
Abtasten mit festem Raster geschieht.

Wann wird ein byte als byte akzeptiert...

von Peter II (Gast)


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.

von Hinz oder Kunz (Gast)


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.

von Peter D. (peda)


Lesenswert?

Der Witz bei der Mehrfachabtastung ist, daß sich die Filterbandbreite 
automatisch an die Baudrate anpaßt.
Senkt man die Baudrate, sind längere Störimpulse erlaubt.

von Wilhelm F. (Gast)


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.

von Hinz oder Kunz (Gast)


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...

von Falk B. (falk)


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 ;-)

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.