Atmel 328P Hardware UART abtastung

Gast #4070333
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 :)
(Firma: Vescomp) #4070375
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.

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