Ich nutze den Arduino Uno mit aktueller Entwicklungsumgebung Version 1.8.13. Beim Versuch, im seriellen Monitor aus der Liste der Übertragungsraten 250000 Baud auszuwählen, erscheint die Fehlermeldung "Fehler beim Festlegen der Parameter für den seriellen Port: 250.000 N 8 1". Alle anderen Werte von 300 bis 2000000 Baud liefern diesen Fehler nicht. Ist das ein Bug? Wer verursacht den Fehler? Was kann ich tun?
Hi
>Was kann ich tun?
Rechnen!
Bei !6MHz und 1MBd ist UBRR=0.
MfG Spess
Ardur schrieb: > Ich nutze den Arduino Uno mit aktueller Entwicklungsumgebung Version > 1.8.13. Ich auch Ardur schrieb: > Beim Versuch, im seriellen Monitor aus der Liste der Übertragungsraten > 250000 Baud auszuwählen, erscheint die Fehlermeldung "Fehler beim > Festlegen der Parameter für den seriellen Port: 250.000 N 8 1". Kann ich nicht bestätigen. Das tuts bei mir. Ardur schrieb: > Ist das ein Bug? Wer verursacht den Fehler? Was kann ich tun? Ein UNO Klon mit exotischem Schnittstellenbaustein, welcher keine 250000 Baud kann?
#define UBRR ((FOSC / (BAUD * 16L)) - 1) Also 16000000 / (250000 * 16) ist 4 Na und? Was hat das mit dem "seriellen Monitor" der Entwicklungsumgebung zu tun?
Ardur schrieb: > Alle anderen Werte von 300 bis 2000000 Baud liefern diesen Fehler nicht. Ardur schrieb: > bis 2000000 Baud -------654321------ Dreckfuhler oder beabsichtigt?
>Ein UNO Klon mit exotischem Schnittstellenbaustein, welcher keine 250000
Baud kann?
Habs auch mit der Original-"SMD Edition" ausprobiert. Alle liefern diese
Fehlermeldung
>> bis 2000000 Baud >-------654321------ > >Dreckfuhler oder beabsichtigt? Das geht tatsächlich in neueren Arduino-IDEs
Ardur schrieb: > Das geht tatsächlich in neueren Arduino-IDEs Das mag schon sein, entscheidend ist doch aber ob dein Controller das auch kann. Aus eigener Erfahrung lässt sich berichten dass Baudraten jenseite der 115200 bei den AVR-Controllern auf den Arduinos nicht mehr funktionieren, manchmal auch schon die 115200 selbst. Grund scheint für mich zu sein dass der auf den Controllern verwendete Keramik-Resonator oft nicht genau genug ist. Mit einem Quarz wär's vielleicht gerade noch gegangen.
Ardur schrieb: > Alle anderen Werte von 300 bis 2000000 Baud liefern diesen Fehler nicht. > Ist das ein Bug? Wer verursacht den Fehler? Was kann ich tun? Dann nimmst Du einfach die 2.000.000 Baud. Ist doch schneller als 200.000 Baud. Genügen Dir denn nicht auch 100.000 Baud? mfg Klaus
jo mei schrieb: >> Das geht tatsächlich in neueren Arduino-IDEs > > Das mag schon sein, entscheidend ist doch aber ob dein > Controller das auch kann. > > Aus eigener Erfahrung lässt sich berichten dass Baudraten > jenseite der 115200 bei den AVR-Controllern auf den Arduinos > nicht mehr funktionieren, manchmal auch schon die 115200 > selbst. > > Grund scheint für mich zu sein dass der auf den Controllern > verwendete Keramik-Resonator oft nicht genau genug ist. Mit > einem Quarz wär's vielleicht gerade noch gegangen. Ich hab 2MBit schon erfolgreich genutzt, aber wir driften vom Thema ab. Es geht hier um die Schnittstelle, die vom "seriellen Monitor" auf jede langsamere und schnellere Geschwindigkeit außer 250000 Baud gesetzt werden kann. Liegt's daran, dass ich ein Linux-System verwende?
Klaus R. schrieb: > Genügen Dir denn nicht auch 100.000 Baud? Wozu so schnell? 9600 Baud sind doch auch gut. Außerdem geht bei 300 Baud bestimmt nichts schief, also ... warum sind eigentlich moderne CPUs in PCs und Smartphones im GHz-Bereich getaktet. Früher beim C-64 haben doch auch 985kHz gereicht ...
jo mei schrieb: > Grund scheint für mich zu sein dass der auf den Controllern > verwendete Keramik-Resonator oft nicht genau genug ist. Mit > einem Quarz wär's vielleicht gerade noch gegangen. Die IDE weiß aber nicht, wie genau der Keramik-Resonator auf dem Board ist und kann deshalb auch nicht meckern.
Ardur schrieb: > Liegt's daran, dass ich ein Linux-System verwende? Möglich. Wie schon gesagt. Keinen Probleme mit 250000 Baud. Unter Win 10 Ohne Quelle: > Fedora it seems to work fine, while Ubuntu fails to use 250000.
Wolfgang schrieb: > Die IDE weiß aber nicht, wie genau der Keramik-Resonator auf dem Board > ist und kann deshalb auch nicht meckern. Bei so einer "glatten" Zahl wie 250.000 Baud ist die Genauigkeit am Ende auf jeden Fall viel besser, als bei 115200 Baud.
Jetzt habe ich wirklich alle angebotenen Baudraten durchprobiert und: "Fehler beim Festlegen der Parameter für den seriellen Port: 74.880 N 8 1" Geht also auch nicht?!
Manche Leute sind unverbesserlich
250000 Baud, das sind 25000 Zeichen pro Sekunde. Willst du da auf der seriellen Konsole mitlesen? Selbst bei einem Zehntel komme ich nicht mit. Oder soll etwas abgespeichert werden? Aber 25000 Zeichen die Sekunde? Kann ein Arduino überhaupt 25K sinnvolle Daten pro Sekunde erzeugen. Die Betonung liegt auf sinnvoll. Wenn 250000 nicht geht, dann nimmt man eben 115200. Reicht auch noch aus. Manchmal ist die Hardware eben etwas zickig.
das dürfte ein Problem des verwendeten USB-Serial Chips sein. Stelle ich 74880 ein und habe ein NodeMCU Board (esp8266) dran, ist alles ok. Wechsle ich dann zu einem LGT8Fx Board (schneller Atmega328 clone), bekomme ich exakt diese Fehlermeldung. Es unterstützt scheinbar nicht jeder USB-Serial Chip diese exotischen Baudraten.
Versuche doch mal andere Terminalprogramme und Schnittstellen um das einzugrenzen.
Wolfgang schrieb: > jo mei schrieb: >> Grund scheint für mich zu sein dass der auf den Controllern >> verwendete Keramik-Resonator oft nicht genau genug ist. Mit >> einem Quarz wär's vielleicht gerade noch gegangen. > > Die IDE weiß aber nicht, wie genau der Keramik-Resonator auf dem Board > ist und kann deshalb auch nicht meckern. Ich weiß jetzt nicht, wer.da was ironisch meint. Die Genauigkeit des quarzes beeinflusst NICHT die erzielbare baudrate. Bei perfekten Signalflanken brauchst Du die gleiche Genauigkeit für 300Baud oder 3MBaud.
Ja, ich brauche das Ganze, um über die serielle Schnittstelle live mit einem Device zu "reden", das auf 250kBaud eingestellt ist. Ich schrieb schon oben, dass ich "Arduino Uno R3 SMD Edition" verwende und einen perfekten Clone, alle mit dem ATmega16U2 als USB-CPU bestückt. Z.B. mit 500kBaud und 115.2k kann ich andere Devices problemlos ansprechen. Ich persönlich tippe jetzt immer mehr auf den USB-Hub des Computers oder die Betriebssystem-Treiber.
Das Problem ist nicht der "Arduino", zumindest nur Teilweise. ;-) Arduino bedeutet ja ATMega328p (oder Derivate) und einen UART-IC. Bei den original UART ist ein FTDI, ich glaub FT232R drauf. Der kann so ziemlich alle Baudraten, bis 2,5MBd. Bei den preiswerten Klonen ist zumeist ein billigerer CH340 drauf. Der kann deutlich weniger. Das Problem ist aber nachher der Treiber aufm PC. Der muss die Baudrate kennen und einstellen können, dann geht das auch. Ich vermute also das hängt ganz stark vom OS und den Treibern ab. P.S. höhere Baudraten machen durchaus auch Sinn, wenn nur wenige Daten übertragen wrden. Z.B. kurze Statusmeldungen. Wenn der µC in den SleepMode geht können die sonst zerstückelt werden. Mit höheren Baudraten schaffen sie es aber noch bis kurz vorm Einschlafen.
Das sind so die Probleme, bei denen es vom Bug in der IDE über die Treiber bis zur Hardware unzählige Fehlerquellen gibt, deren Überprüfung einfach kompliziert bis unmöglich ist. Alles, was ich tun konnte, habe ich mittlerweile getan. Wem noch etwas einfällt, nur zu. PittyJ schrieb: > 250000 Baud, das sind 25000 Zeichen pro Sekunde. > [...] Aber 25000 Zeichen die Sekunde? > Kann ein Arduino überhaupt 25K sinnvolle Daten pro Sekunde erzeugen > [...] dann nimmt man eben 115200. Reicht auch noch aus. Es ist doch ein Irrsinn im Internet beobachtbar, den Menschen im Real-Life offenbar verbergen. Ich hatte doch obenschon geschrieben, dass ich 2MBaud problemlos produktiv am Laufen habe und dass 500kBaud im seriellen Monitor auch gehen. Das hier ist kein Quarz-Genauigkeits- oder Taktflanken-Störungs-Problem. Das war doch eigentlich klar. Und woher nimmt man eigentlich immer wieder das Recht, in Frage zu stellen, dass hohe Geschwindkeiten nicht gehen "können" und nicht gebraucht werden?!
Ardur schrieb: > Alles, was ich tun konnte, habe ich mittlerweile getan. Wem noch etwas > einfällt, nur zu. Gegentest auf einem Win System. Da tut es. Denn sowohl die Arduino IDE, als auch der UNO mit ATMega16U2 hat kein Problem mit 250000 Baud. Das Resonator Gequatsche ist auch Unsinnig, da das Probleme ja zwischen USB Serial Wandler und PC auftritt. Der Wandler ist mit einem Quarz ausgerüstet.
Ja, Gegentest auf Windows muss allerdings ausfallen, da hier tatsächlich nicht ein einziger Windows-Rechner herumsteht. Hätte mir einiges an Arbeit gespart. Danke für die Antworten
@Fanboy: Deine Bemerkung von ganz oben, dass es bei Dir geht, hat mich auf die richtige Fährte gebracht. Danke
Ardur schrieb: > Das sind so die Probleme, bei denen es vom Bug in der IDE über die > Treiber bis zur Hardware unzählige Fehlerquellen gibt, deren Überprüfung > einfach kompliziert bis unmöglich ist. Unter Linux könnte man den strace Befehl benutzen, um herauszufinden, mit welchen Parametern die IDE den seriellen Port öffnet (wenn sie es denn tut) und ob der Kernel dann einen Fehlercode zurück liefert. Man könnte auch einen Gegentest machen, indem man einfach mal ein anderes Terminalprogramm verwendet bei dem man weiß, dass es diesbezüglich keine Einschränkung hat. Zum Beispiel das Hammer Terminal oder Cutecom.
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.