UART Baudrate 460800 Atmel328P / Arduino Uno

OP #4535900
Lesenswert?

Hallo,

ich möchte mein Arduino Uno mit einer Baudrate von genau 460800 
betreiben. Serial.begin() lässt zwar Werte bis 2.000.000 zu, jedoch ist 
die tatsächliche Baudrate bei 500.000, wenn man Serial.being(460800) 
angibt. Kennt hier jemand eine Lösung oder weiss, was ich falsch mache?

Danke!
#4535928
Lesenswert?

Da es den Arduino, soweit mir bekannt, nicht mit Baudratenquarzen gibt, 
würde ich mir (vorher) ganz genau überlegen, und auch im Handbuch 
nachschlagen, was da machbar ist.
Bei niedrigen Übertragungsraten ist das oft kein Problem. Aber an den 
Grenzen muss man den Fehler, der bei der Teilung entsteht, im Auge 
behalten.
#4535936
Lesenswert?

460800 Baud kannst Du mit den üblichen Baudratenquarzen erzeugen, z.B. 
mit 14,7456MHz.
In 8051 Schaltungen hat man daher häufig 11,0592MHz als CPU Takt 
verwendet.
Quarze mit ganzzahligen MHz-Werten nimmt man vorzugsweise für den 
CAN-Bus.
Allen anderen Anwendungen ist die Quarzfrequenz völlig schnurz.
OP #4535942
Lesenswert?

Danke für die schnelle Antwort.
Es sollen nur 8 ASCII Zeichen übertragen werden, evtl. geht es daher mit 
einer höheren Fehlerrate.
Wäre die richtige Herangehensweise den Quarz am Uno gegen einen anderen 
zu wechseln, um auf die 460800 zu kommen? Oder was sollte ich am besten 
machen?
Gast #4535981
Lesenswert?

Vermutlich gibt es keine Probleme. Allerdings musst du bedenken dass 
alles was genaue Zeiten braucht etwas langsamer läuft 
(Software-Verzögerungen, UART-Baudrate, u.ä.), denn die Arduino-IDE 
denkt es wäre ein 16MHz Quarz angeschlossen.

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