Serielle Kommunikation zuferlässig?

Hallo miteinander,

mir brennt da eine Frage unter den Nägeln, aus der ich noch nicht so richtig schlau geworden bin.

Bei der Seriellen Kommunikation kann ich ja

Baud           300
Baud        1.200
Baud        2.400
Baud        4.800
Baud        9.600
Baud      19.200
Baud      38.400
Baud      57.600
Baud      74.880
Baud    115.200
Baud    230.400
Baud    250.000
Baud   5.00.000
Baud 1.000.000
Baud 2.000.000

einstellen.

Mit der Baud rate (die Zahl) stelle ich ein wie schnell die Kommunikation abläuft.

Meine Frage ist je schneller ich einstelle je höher ist die Gefahr das ich zeichne unterwegs verliere? oder ist das nihct so? Was verträgt mein Arduino Mega bzw. Uno wirklich ohne Probleme zu bekommen?

Gruß Mücke

Meine Frage ist je schneller ich einstelle je höher ist die Gefahr das ich zeichne unterwegs verliere? oder ist das nihct so? Was verträgt mein Arduino Mega bzw. Uno wirklich ohne Probleme zu bekommen?

Falsche Fragestellung. Der Arduino hat keine Probleme mit der Höhe der Baudrate.

Die Baudrate wird aus dem Systemtakt berechnet. Das ist nicht beliebig genau. Manche Baudraten werden besser getroffen, als andere. Baudrate Rechner

Die Leitungslänge spielt eine Rolle bei der möglichen Höhe der Baudrate. Wikipedia gibt gerne Auskunft.

Ich hab mir den Link mal angeschaut. Ist interessant zusehen dass zum Beispiel bei 16Mhz die Fehlerquote bei 57600bps höher zu sein scheint als bei 76800bps.

Gruß

Das ist keine Fehlerquote, sondern die Abweichung von der richtigen Frequenz. Wenn man weiß, daß die Abtastung des Signals üblicherweise mit der 16-fachen Baudrate erfolgt, dann dann darf sich zwischen Start und Stop Bit eine Abweichung von 8 Takten ergeben (1/16=6%), ohne die Übertragung zu gefährden. Hinzu kommt die Abweichung des CPU Takts von der angenommenen Frequenz (16MHz). Entsprechend sind die Felder mit mehr als 5% Abweichung in der Tabelle rot eingefärbt, da sind Fehler unvermeidlich.

Achso ok, danke für Erklärung! :)

Muecke: Das Forum Lebt von Rückmeldungen, wir helfen ALLE gerne wenn wir ein entsprechendes Feedback bekommen.

? ?

combie:

Das Forum Lebt von Rückmeldungen, wir helfen ALLE gerne wenn wir ein entsprechendes Feedback bekommen.

? ?

:( , wird das jetzt dein Lieblings Zitat? ;)

ich habe mir deinen Link (Baudrate Rechner) angeschaut, verstehe da aber nur Bahnhof.

Was ich da verstanden habe bis jetzt, es wird eine Frequenz berechnet, mit der die Daten empfangen und versendet werden können.

Die Frequenz ist abhängig vom jeweiligen System, wenn z.B. die Empfänger Seite einfach nicht genug Leistung hat dann gehen nur die Niedrigeren Frequenzen, sprich das muss miteinander passen.

jetzt ist natürlich auch immer das Problem das die Frequenzen sich auch reproduzierbar sein muss, wenn (die Einflüsse habe ich nicht nicht verstanden) die Frequenzen nicht stabil genug läuft dann können bei der Übertragungen Defizite entstehen, wodurch dann falsche zeichne zustande kommen oder teile Fehlen in der Übertragung.

SO das ist das was ich so verstanden habe, aus der Unterhaltung meiner Vorredner, und deinem Link (Texte am ende).

Die Tabellen in deinem Link, sind nicht Hübsch (wie sage ich das bei der Kunst meiner Frau, aber sehr selten) verstehen tue ich da überhaupt nichts angefangen von den Überschriften bisher zu den Zahlenwerten die in den Zellen stehen, daher habe ich bisher noch kein Feedback gegeben, da ich auch hier noch etwas im Netz suchen wollte.

kann es aber verstehen das man auch zeitnah ein Feedback gerne zurück bekommt, will aber auch nicht als Schmarotzer da stehen der nichts googelt und selber versucht und Probiert.

Gruß Mücke

Jede Baudrate hat ihr Timing, sprich Zeitdauer von High und Low. Je nach Frequenz des uC trifft man das mehr oder weniger exakt. Wichtig ist, dass sich beide Seiten verstehen. Auch Baudraten wie die 230.400, die ja sehr rot aussehen in der 16mhz-Tabelle, laufen zuverlässig, wenn auf beiden Seiten ein 16mhz Arduino hängt. Zum PC laufen dann 250.000 zuverlässiger als 230.400 (wenn der seriell Chip im pc das auch optimal unterstützt).

So denke ich es mir wenigstens.

So denke ich es mir wenigstens.

Das ist total korrekt.

Wenn die Frequenz bei beiden gleich daneben steht, können die beiden miteinander quatschen. Aber mit keinem welcher eine korrekte Baudrate fährt.

Da die Frequenzen meist unterschiedlich sind, aus der die Taktfrequenz bzw. Baudrate erzeugt wird, können beide Stationen etwas neben dem korrekten Wert liegen. Liegen beide auf der selben Seite, ist die Kommunikation zuverlässiger als wenn einer positiv und der andere negativ abweicht. Sind die Taktfrequenzen gleich kann eigentilcih garkein Fehler auftreten, da beide mit der gleich Baudrate senden bzw. empfangen.

Hallo,

die Berechnung der Einstellungen für die gewünschte Baudrate unterliegt Rundungsfehler. Am Ende wird immer mit Ganzzahlen gerechnet und die Settings für die USART eingestellt. Dadurch entstehen die Abweichungen zwischen Soll und Ist.

Wenn man 0% Abweichung sicherstellen möchte, verwendet man immer eine Baudrate die einem Ganzen vielfachen des µC Taktes entspricht. Also Baudraten wie 200.000 oder 250.000 oder 500.000 sind kein Problem. Abweichung 0%.

Wenn nur unsere 16MHz Arduinos miteinander kommunizieren sollen, dann gilt was Spanier geschrieben hat. Wenn alle gleiche schiefe Einstellungen haben ist es am Ende wieder für alle gleich optimal.

Wenn unterschiedliche System kommunizieren sollen muss man eben schauen welcher der Beste gemeinsame Nenner ist.