mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik UART Baudrate


Autor: Ben (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mit HyperTerminal usw. kann man ja per UART Zeichen auf dem PC 
darstellen. Die Baudrate ist bei diesen Programmen ja meistens auf 
115'200 b/s begrenzt. Ich versuche aber zwei mikrocontroller per UART zu 
verbinden, die dann kommunizieren können. So denke ich , da kann ich die 
Baudrate doch beliebig einstellen? Zum Besipiel 200'000, 213'342, 
350'0010 usw oder? Natürlich muss die Baudrate unter der maximalen 
Begrenzung liegen. Mein Problem ist jetzt, dass ich mit 115'200 
wunderbar kommunizieren kann mit doppelter Baudrate(230'400) geht es 
auch, aber noch weiter kann ich die Baudrate nicht weiter 
hinaufschrauebn, denn dann gibt es Fehler. habe einen externen 
Resonator. Ist der Resontor für höhere Baudraten zu ungenau? Müssen 
Baudraten immer ein Vielfaches von 115'200 sein, damit es geht? Oder 
gibt es sonst noch was zu beachten?

Autor: Werner Becker (wirus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nun ja, vieleicht solltest Du den Artikel über Baudratenquarze mal lesen 
....

http://www.mikrocontroller.net/articles/Baudratenquarz


> Ist der Resontor für höhere Baudraten zu ungenau?

Ein Resonator ist eigentlich für alle Baudraten zu ungenau ....

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

bei Kommunikation mit einem PC musst du drauf achten, dass natürlich nur 
die "angebotenen" Baudraten verwendet werden. Desweiteren darf die Zeit, 
die du für ein BIT brauchst, nicht mehr als 3% abweichen, sonst kann 
sich der Empfänger nicht mehr synchronisieren.

Zwischen zwei Controller darf die Baudrate beliebig gewählt werden, 
sofern beide Teilnehmer die gleiche verwenden. Auch hier wieder auf 
Timing achten. Da die Baudrate durch den Taktgeber generiert wird, ist 
die Toleranz des Resonators/Quarzes natürlich kritisch. Daher würde ich 
mal das Datenblatt des Resonators zur Hand nehmen, die Toleranz prüfen 
und mit der eines Quarzes der gleichen Frequenz vergleichen.

Desweiteren ist es maßgeblich, welche Frequenz der Resonator/Quarz an 
sich hat. Du hast bestimmt schon die Quarzwerte 11.0592MHz oder 
22.1184MHz gesehen. Das sind Frequenzen, die besonders für 
Baudratengenerierung geeignet sind (bedingt durch den internen Aufbau 
des UARTs). Wenn du eben einen 12.000MHz Quarz verwendest, dann hast du 
bedingt durch die Formel zur Berechnung der Baudrate schon Abweichungen 
im Timing.

HTH

Ralf

Autor: 3348 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zusaetzlich zur Baudrate die auf 2% genau uebereinstimmen muss, muss der 
Empfaenger auch Zeithaben, das UART zu lesen. Wenn der Empfaenger 
ueberschrieben wird gibt es einen Overrun fehler, den niemand mehr 
auswerted, und die Meldung wird nicht mehr richtig decodiert.

Autor: Schwurbl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also nun mal Butter bei die Fische: Wenn die Kommunikation bei 115200 
funktioniert, aber 921600 Baud nicht, liegt es doch mit Sicherheit nicht 
an der Toleranz des Resonators. Im Übrigen beträgt die Genauigkeit eines 
Resonators ca. 0.5% und ist somit hervorragend für serielle 
Kommunikation geeignet.

Ich würde zu aller erst prüfen, ob die Empfangsroutine der "Datenflut" 
gewachsen ist. Möglichweise addieren sich Interruptlatenz, 
Kontextswitch, Pufferverarbeitung usw. auf unerträglich lange Zeiten. 
Wir wollen Quelltext seh'n :-)

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn du 2 MC nimmst die miteinander kommunizieren sollen, ist die 
Bautrate völlig wurscht, und damit ist der Quarz/Resonator Wert auch 
völlig wurscht. Die Bautrate muss nur auf beiden MCs übereinstimmen.

Bautratenquarze sind nicht nötig. (Ließt sich eigentlich keiner die 
Fragestellung durch???)

Autor: Ben (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habe herausgefunden, dass ich die Baudrate bis auf 250'00 b/s 
raufschrauben kann. 250'200 geht dann schon nicht mehr. was ist da los?

Autor: Anonymous (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
What is the length of the cable?

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ben wrote:
> Habe herausgefunden, dass ich die Baudrate bis auf 250'00 b/s
> raufschrauben kann. 250'200 geht dann schon nicht mehr. was ist da los?

Was meinst Du mit "250'200", sollen das 250,2kBaud sein?

Was fürn MC, was fürn Quarz, welcher Baudratenteiler?

Beim AVR kannst Du bei 16MHz nur zwischen 250kBaud und 333kBaud wählen.

Vielleicht hast Du im Baudratenmacro nen Fehlertest und Du kriegst gar 
kein Hexfile, was nicht geflasht wird und demzufolge nicht gehen kann.

Schau mal ins Compiler-Log.


Peter

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.