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