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


von Hegy (Gast)


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

von Robert Teufel (Gast)


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

von Hegy (Gast)


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.

von Peter D. (peda)


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

von cazy horse (Gast)


Lesenswert?

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

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.