Forum: Mikrocontroller und Digitale Elektronik Arduino Uno mit Entwicklungsumgebung 1.8.13: 250000 Baud geht nicht im Monitor


von Ardur (Gast)


Lesenswert?

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?

von spess53 (Gast)


Lesenswert?

Hi

>Was kann ich tun?

Rechnen!

Bei !6MHz und 1MBd ist UBRR=0.

MfG Spess

von Einer K. (Gast)


Lesenswert?

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?

von Ardur (Gast)


Lesenswert?

#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?

von jo mei (Gast)


Lesenswert?

Ardur schrieb:
> Alle anderen Werte von 300 bis 2000000 Baud liefern diesen Fehler nicht.

Ardur schrieb:
> bis 2000000 Baud
-------654321------

Dreckfuhler oder beabsichtigt?

von Ardur (Gast)


Lesenswert?

>Ein UNO Klon mit exotischem Schnittstellenbaustein, welcher keine 250000
Baud kann?

Habs auch mit der Original-"SMD Edition" ausprobiert. Alle liefern diese 
Fehlermeldung

von Ardur (Gast)


Lesenswert?

>> bis 2000000 Baud
>-------654321------
>
>Dreckfuhler oder beabsichtigt?

Das geht tatsächlich in neueren Arduino-IDEs

von jo mei (Gast)


Lesenswert?

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.

von Klaus R. (klara)


Lesenswert?

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

von Ardur (Gast)


Lesenswert?

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?

von Ardur (Gast)


Lesenswert?

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

von Wolfgang (Gast)


Lesenswert?

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.

von Einer K. (Gast)


Lesenswert?

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.

von Stefan F. (Gast)


Lesenswert?

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.

von Ardur (Gast)


Lesenswert?

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

von jo mei (Gast)


Lesenswert?

Ardur schrieb:
> Geht also auch nicht?!

spess53 schrieb:
> Rechnen!

von Ardur (Gast)


Lesenswert?

Manche Leute sind unverbesserlich

von PittyJ (Gast)


Lesenswert?

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.

von G. H. (schufti)


Lesenswert?

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.

von Mono (Gast)


Lesenswert?

Versuche doch mal andere Terminalprogramme und Schnittstellen um das 
einzugrenzen.

von A. S. (Gast)


Lesenswert?

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.

von Ardur (Gast)


Lesenswert?

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.

von Prometheus (Gast)


Lesenswert?

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.

von Ardur (Gast)


Lesenswert?

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

von Einer K. (Gast)


Lesenswert?

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.

von Ardur (Gast)


Lesenswert?

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

von Ardur (Gast)


Lesenswert?

@Fanboy: Deine Bemerkung von ganz oben, dass es bei Dir geht, hat mich 
auf die richtige Fährte gebracht. Danke

von Stefan F. (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.