LPC 2220 Baudrate ändern

Gast #1655654
Lesenswert?

Hallo alle miteinander,

ich habe ein kleine Application auf Basis eines LPC2220 Mikrocontroller.
In dieser Anwendung ist es nötig die Baudrate beliebig vom UART0 im 
Programm verlauf  zu ändern. Ansich nicht kompliziert aber es 
funktioniert trotzdem
nicht hierzu einen Ausschnitt aus dem Code um mein Problem zu erläutern:

Gleich nach dem Startup führt der Controller folgendes aus und setzt die
Baudrate by default auf 38400.
//               PCLK
//  Baudrate = -------------------------------------------------
//              16 * (256 * DLM + DLL) * (1 + DivAddVal/MulVal)

U0LCR = 0x83;
U0DLL =30; //38400 Baud
U0DLM = 0;
U0LCR = 0x03;

Die Register UODLL und U0DLM stellen in diesem Fall die Baudrate
auf 38400 Baud.
Bis hierhin klappt das der UART arbeitet mit 38400 Baud.

Später im Programmverlauf will ich die Baudrate auf 19200 umstellen
und mach folgendes:

U0DLL =60; // 19200 Baud
U0DLM = 0;

Leider Funktionierts ab hier nicht mehr das heisst  der UART arbeitet 
einfach weiterhin mit 38400 Baud.

Ich hab alles versucht aber ich kann die Baudrate nicht im 
Programmverlauf ändern. Wenn ich die Register U0DLL und U0DLM auslese 
steht 0x00 drin.

Ich würde mich freuen wenn jemand zu diesem Problem ein paar neue 
Denkansätze liefern könnte
Gast #1659009
Lesenswert?

Hallo Johann,

Du solltest zum Verändern der Baudrate immer auch das bit im LCR 
Register setzen, nur so hast Du Zugriff auf die Baudraten-Register. 
Verwende doch einfach die Sequenz, die Du auch am Anfang verwendest.

Gruß Microman

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren