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
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
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 ?
Uns um zu synchronisieren. Die Uebertragung ist asynchron, waehrend das Abtasten mit festem Raster geschieht. Wann wird ein byte als byte akzeptiert...
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.
>Dafür braucht man eigentlich keine Mehrfachabtastung.
Naja. Man moechte eine moeglichst zuverlaessige und fehlertolerante
Loesung, nicht eine akademische Minimalisten Loesung, die suboptimal
arbeitet.
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.
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.
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...
@ 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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.