Forum: Mikrocontroller und Digitale Elektronik Atmel 328P Hardware UART abtastung


von noob (Gast)


Lesenswert?

Hallo Zusammen,

ich interessiere mich dafür, wie bei meinem Arduino Uno R3 mit dem Atmel 
328P die Abtastung beim Empfangen über UART funktioniert. Ich habe auch 
schon einiges gesucht und bin dabei darauf gestoßen, dass es sich hier 
um einen "major vote" handelt, d.h. jedes bit wird 3 mal abgetastet. Die 
Intervalle zwischen den drei Abtastungen hängen natürlich von der 
baud-rate ab. Als Wert wird das weitergegeben, was mindestens 2 mal 
getastet wurde (major vote), also high oder low. Soweit so gut.
Aber das reicht mir nicht. Ich würde gerne noch mehr darüber wissen. 
Wann wird jeweils abgetastet? Zählt z.B. eine fallende Flanke als erster 
Abtastwert? Oder wird (evtl abhängig von der Baud-rate) z.B. 1µs nach 
der fallenden Flanke das erste mal abgetastet? und wann wird das zweite 
und das dritte mal abgetastet während der Dauer eines Bits? Bzw. wie ist 
es, wenn zwei low-bits hinter einander folgen, dann gibt es ja garkeine 
fallende Flanke, was ja eher dafür sprechen würde, dass nach dem 
Startßbit, bei dem ja auch die synchronisierung stattfindet durchgehend 
mit einer konkreten clock abgetastet wird. Aber wie ist diese Abtastung 
aufgeteilt? Welche Zeiträume sind zwischen den einzelnen Abtastungen, 
bzw. zwischen "beginn" eines Bits und der ersten Abtastung? Wie gesagt, 
dass diese Zeiten abhängig von der Baud-Rate sind ist mir klar, aber ich 
würde trotzdem gerne mich genauer darüber informieren, was für Zeiträume 
das konkret sind.

Ich wäre sehr dankbar, wenn mir jemand irgend welche 
Literaturempfehlungen, Datasheets oder Application notes geben könnte, 
worin dies erklärt ist. Ich lese die auch gerne durch, verlange jetzt 
von keinem, dass er hier einen Vortrag über die Abtastweise von UART 
schreibt. Nur meine Suche über derartige Quellen war leider ziemlich 
erfolglos, weshalb ich nun hoffe dass hier jemand ein paar gute Quellen 
kennt, wo ich mich darüber informieren kann.


Schon mal Danke vorab :)

von Wolfgang (Gast)


Lesenswert?

noob schrieb:
> Zählt z.B. eine fallende Flanke als erster Abtastwert?
Dazu müsste die Flanke mit dem UART-Taktgenerator synchronisiert sein, 
kann sie aber nicht, weil der Sende-UART keine Ahnung vom Clock des 
Empfänger-UARTs hat.

von Konrad S. (maybee)


Lesenswert?

Wie wäre es, wenn du mit dem Datenblatt des Controllers anfängst? Im 
Kapitel "USART0" stehen jede Menge Informationen, speziell im Abschnitt 
"Asynchronous Data Reception".

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

noob schrieb:
> aufgeteilt? Welche Zeiträume sind zwischen den einzelnen Abtastungen,
> bzw. zwischen "beginn" eines Bits und der ersten Abtastung? Wie gesagt,
> dass diese Zeiten abhängig von der Baud-Rate sind ist mir klar, aber ich
> würde trotzdem gerne mich genauer darüber informieren, was für Zeiträume
> das konkret sind.

 Rx wird mit 16xBaud abgetastet, das ergibt 16 samples pro bit.

 Wenn Rx idle ist, wird die erste Abtastung mit Log. 0 als Anfang des
 Startbits gesehen.

 Danach werden (beim Startbit) die Samples 8, 9 und 10 auf Log. 0
 verglichen. Wenn zwei oder mehr Log.1 sind, wird der Startbit
 verworfen.

 Beim Databits werden die Samples 8, 9 und 10 miteinander verglichen und
 der Wert von mindestens 2 gleichen Samples wird als Bitwert genommen.

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.