Forum: Mikrocontroller und Digitale Elektronik LPC 2220 Baudrate ändern


von Johann (Gast)


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

von Microman (Gast)


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

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.