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!
Welchen UBBR-wert bräuchtest du denn für 460800 BD? Ja, damit bist du außerhalb den zulässigen Fehlerbereichs von 1% mit den 16 MHz mit denen der Arduino Uno läuft. 500000 würde dafür gehen.
Hallo, was steht im Datenblatt eines atmega328p ? Warum fragst Du dich nicht selbst ? Richtig geht nicht ! 16Mhz/16/2 = 500.000 Bit/s 16Mhz/8/4 = 500.000 Bit/s 16Mhz/8/5 = 400.000 Bit/s
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.
Ich vergaß: Unter Umständen kann es nicht schaden, festzustellen, ob der Kerl das Futter auch schlucken kann. Will sagen: Da kaum Speicher vorhanden ist, müssen die Daten auch mit Eingangsgeschwindigkeit verarbeitet werden.
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.
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?
Merci, da waren die Antworten jetzt schneller als meine Frage / Beitrag. Ich versuchs dann mit einem anderen Quarz :D Wenn ich mir den 14,7456MHz Quarz draufklatsch, gibts dann Probleme beim Flashen mit der Arduino IDE?
Zolfo D. schrieb: > Wenn ich mir den 14,7456MHz Quarz draufklatsch, gibts dann Probleme beim > Flashen mit der Arduino IDE? Vermutlich ja. Du müstest dem Bootloader und den Systemroutinen auch die neue Frequenz bekannt machen. Meistens gibt es dazu das Define F_CPU.
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.
Wenn du den Quarz änderst, funktioniert der bootloade nicht mehr. Dann musst du per ISP Schnittstelle programmieren.
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.