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.
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.
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
Sieh Dir mal an, wie die Übertragungsrate bei den AtMegas eingestellt wird: es gibt nur ganzzahlige Teiler. Kleine Übersicht: http://wormfood.net/avrbaudcalc.php
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.
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
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
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.
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)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.