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?
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
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?!
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.
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
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.