Forum: Mikrocontroller und Digitale Elektronik Arduino Baudrate 115,2k


von Gaat12 (Gast)


Lesenswert?

Hallo.

Ich hätte eine Frage bezüglicher der Baudraten des Arduino Megas. Und 
zwar verrät mir das Datenblatt, dass eine eingestellt Baudrate von 
115,2k und verwendeten CPU Frequenz von 16 Mhz mit einem "erheblichen" 
Fehler belegt sind. Ich habe den UART auch selber mit der genannten 
Baudrate angesprochen und es wurden nur fehlerhafte Daten übertragen. 
Mich würde interessieren, wie das ganze so problemlos mit den Arduino 
Bibliotheken und dem Befehl Serial.print funktioniert.

Eine weitere Frage, die sich mir stellt ist, warum ich bei höheren 
Baudraten (250k, 0,5M und 1M) keine Fehler mehr habe.

Viele Grüße.

von Hubert G. (hubertg)


Lesenswert?

Gaat12 schrieb:
> Eine weitere Frage, die sich mir stellt ist, warum ich bei höheren
> Baudraten (250k, 0,5M und 1M) keine Fehler mehr habe.

Schau ins Datenblatt unter USART/Example of Baud Rate Settings, dort 
siehst du die Errorrate.

von Stefan K. (stefan64)


Lesenswert?

Die 16Mhz werden intern geradzahlig geteilt, um auf Deine Baudrate zu 
kommen. dadurch kommst Du nicht exakt auf die 115200Baud, wohl aber auf 
1Mbaud.

Gruß, Stefan

von Guest (Gast)


Lesenswert?

Sieh Dir mal an, wie die Übertragungsrate bei den AtMegas eingestellt 
wird: es gibt nur ganzzahlige Teiler.
Kleine Übersicht: http://wormfood.net/avrbaudcalc.php

von Jim M. (turboj)


Lesenswert?

Gaat12 schrieb:
> zwar verrät mir das Datenblatt, dass eine eingestellt Baudrate von
> 115,2k und verwendeten CPU Frequenz von 16 Mhz mit einem "erheblichen"
> Fehler belegt sind.

Definiere "erheblich". IIRC kann man trotzdem eine korrekte Übertragung 
erwarten, UART erlaubt so ca. 5% Abweichung.

> Ich habe den UART auch selber mit der genannten
> Baudrate angesprochen und es wurden nur fehlerhafte Daten übertragen.

Welche Gegenstelle, welche Abweichung in % war das?
Fieserweise muss man dabei die Abweichung beider Seiten 
berücksichtigen.
Übliche USB2UART Chips haben <1% Abweichung bei 115200 Baud.


Gaat12 schrieb:
> Eine weitere Frage, die sich mir stellt ist, warum ich bei höheren
> Baudraten (250k, 0,5M und 1M) keine Fehler mehr habe.

Die 16000000 Hz werden halt durch eine ganze Zahl geteilt. Im Datenblatt 
steht auch drin wie der Teiler genau funktioniert, der Rest ist nur 
Mathe. Da hätte man im Unterricht vielleicht mal aufpassen müssen.

von Philipp K. (philipp_k59)


Lesenswert?

Wie man das am besten macht kann man am Baudraten Calculator 
herausfinden..

Ich hatte letztens einen eigenen Arduino Bootloader kompiliert.. Da muss 
man sich vorher Gedanken über den Quarz und Uart machen.

Zb. hatte ich angepeilt unter 12Mhz für 3,3V zu bleiben und den Upload 
über 115K Serial zu realisieren. Zuerst erschien mir 11,0592 Mhz für 
230,4K Maxbaud unterhalb von 12Mhz Perfekt..

Mit 11,0592 kann man bis 230,4K Standard Baudrate immer ohne Rest 
Teilen.

Dann dreht sich aber gerade beim Arduino ein Problem um, denn 
Microsekunden und Millisekunden benötigen im Core einen Quarz mit 6 
nullen am Ende um ohne einen Rest Ganzzahlig zu zählen..

Hab dann nach dem Baudrate Calculator 12Mhz mit 115,2K Upload genommen..

: Bearbeitet durch User
von jb (Gast)


Lesenswert?

geh mal unter "Arduino-Pfad"/hardware/tools

dann gib "mode" ein und schaue welche Einstellungen dein Port hat.
Ich hatte schon 7 Datenbits, 0 Baudrate etc. als Standart geladen.

GRuß J

von Stefan F. (Gast)


Lesenswert?

Ich habe Arduino Nano Clones aus China mit 16Mhz Keramikoszillator und 
CH340 Chip problemlos mit 115200 Baud verwenden können.

Das Datenblatt des AVR empfiehlt in diesem Fall einen anderen Quarz 
(z.B. 14,7Mhz) um die Abweichung gering zu halten.

5% Abweichung sind noch Ok. Aber wenn das Gerät am anderen Ende des 
Kabel auch 5% (in die andere Richtung) abweicht, dann geht ganz sicher 
nichts mehr.

von Frickelfritze (Gast)


Lesenswert?

Stefan U. schrieb:
> Ich habe Arduino Nano Clones aus China mit 16Mhz Keramikoszillator und
> CH340 Chip problemlos mit 115200 Baud verwenden können.

Man glaubt es fast nicht, aber die funktionieren scheinbar "besser"
als die Arduinos mit ATMega16U2 als seriell USB Interface.
(Einzelerfahrung aus Arduino Mega2560)

von Veit D. (devil-elec)


Lesenswert?

Hallo,

kurz und knapp. µC Takt und Baudrate sollten in einem Ganzzahlen 
Teilerverhältnis stehen. Also nimm mit 16MHz zum Bsp. eine Baudrate von 
250k und freu dich.

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.