mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Baudratenumschaltung 10400->19k2


Autor: Hegy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

wie kann ich mit einem Controller mit 2 UARTS die Baudrate so
einstellen, dass der eine mit 10400 Baud laeuft und der andere z.B. mit
19200?

beim 8051 kann man mit den passenden Reload-Werten und einem 11,0592MHz
Quartz 19200 Baud genau einstellen, aber keine 10400. Dies geht aber mit
einem 12Mhz Quartz, damit kann ich aber wiederum keine 19k2 einstellen.
2 Quartze benutzen und umschalten?

Da 10400 Baud nun wirklich kein PC-Standart ist, soll der uC erst mal
als Baudratenwandler dienen und spaeter noch mehr machen bzw. einiges
selbsstaendig machen.

 - Martin

Autor: Robert Teufel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Martin,

baudraten werden dadurch erzeugt, dass von einer nennen wir sie mal CPU
frequenz Vorteiler da sind und wie du schon bemerkt hast lassen sich
Standardbaudraten und 10400 schlecht verheiraten. Also was Du machen
musst ist eine Grundfrequenz zu haben, die schnell genug ist, damit du
beide Baudraten HINREICHEND GENAU hinbekommst. Ein UART kann locker 2%
Abweichung hinnehmen ohne dass es zu Problemen in der Uebertragung
kommt. Wie genau soll denn die 10400 sein, scheint was spezielles zu
sein, da gibt es manchmal (unsinnige) Genauigkeitsforderungen. Nehmen
wir mal die 12 MHz her, damit kannst du die 10400 auch nicht genau
erreichen (10417). UARTs haben oft eine 16-fache Oversampling Rate,
d.h. die Frequenz verfuegbar zur Baudratenerzeugung waere 12 MHz / 16 =
750kHz. Der Teilerfaktor 39 von dieser Zahl ergibt ca. eine Baudrate von
19231 Baud. Das ist definitiv hinreichend genau zur Kommunikation ueber
einen normalen UART.
Also das Geheimnis heisst verschiedene Vorteiler fuer die beiden
seriellen Schnittstellen.

Robert

Autor: Hegy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie Baudraten erzeugt werden ist mir schon klar, nur mal eben bei der
8051 Serie den Autoreloadwert um 1 zu ändern bringt einen ziemlichen
Sprung mit sich. Ich habe vorhin mal bei Atmels AVR Serie gekukkt, da
geht das etwas leichter. Wenn UBRR = 39 bei 12 MHZ ist, habe ich 19231
Baud (+0,16%) und bei UBRR = 72 erhalte ich 10417 (+0,16%). Das wäre
doch oké. Also ist hier schonmal AVR im Vorteil.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du mußt doch für die 2.UART die Baudrate mit T2 einstellen, da ist das
doch kein Problem.

Wenn der Fehler unter 1% ist, dann gibt es noch keine Probleme.

z.B. 11,0592MHz  32  10400 = 33, Fehler = 0,7% ist o.k.


Peter

Autor: cazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
du solltest langsam schlafen gehen...Mach ich jetzt auch, der Drachen im
Bett wird schon wieder knurren :-)

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.