UART Baudrate eingeben

Gast #5666906
Lesenswert?
• ▲
▼
Hallo,

ich bin dabei, mir die UART zu konfigurieren. Hierbei weis ich nicht,
wie ich das BAUD Register füllen soll.

Die Baudrate soll 115200 Bd betragen.
Jetzt habe ich folgende Formel gegeben:

BAUD = 65536*(1- 16*fBAUD/FRef) mit FRef = 8 MHz; 16 ist Oversampling

Ich habe für fBAUD = 115200 eingesetzt:

BAUD = 65536*(1 - 16*115200/8000000) = 50436,5056 = C504(hex Vorkomma)

Damit funktioniert die Übertragung allerdings nicht.


Kann es sein, dass fBAUD != die Baudrate ist ?
Angehängte Dateien:
#5666915
Lesenswert?
• ▲
▼
Hans schrieb:
> ich bin dabei, mir die UART zu konfigurieren. Hierbei weis ich nicht,
> wie ich das BAUD Register füllen soll.

Gibt es dafür nicht Dutzende Tutorials?

> Die Baudrate soll 115200 Bd betragen.
> Jetzt habe ich folgende Formel gegeben:

Hmm, sieht nach MSP430 aus.

> BAUD = 65536*(1- 16*fBAUD/FRef) mit FRef = 8 MHz; 16 ist Oversampling
>
> Ich habe für fBAUD = 115200 eingesetzt:
>
> BAUD = 65536*(1 - 16*115200/8000000) = 50436,5056 = C504(hex Vorkomma)

Soweit OK.

> Damit funktioniert die Übertragung allerdings nicht.

Das kann noch viele andere Ursachen haben. Prüfe erstmal den Ausgang 
deines UARTs beim Senden mit einem Oszi oder Logicanalyzer.

> Kann es sein, dass fBAUD != die Baudrate ist ?

Nein.
#5667050
Lesenswert?
• ▲
▼
Hans schrieb:
> Kann es sein, dass fBAUD != die Baudrate ist ?

Nein, aber der Compiler darf das IMHO als int berechnen.

Häng mal an die Baudrate ein UL hinten ran (115200UL), damit er das als 
unsigned long mit (meistens) 32 Bits berechnet.

Bei AVR ist auch gerne mal die CLKDIV8 Fuse an, dann stimmen die 8MHz 
nicht und man hat nur 14400 Baud.

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