UART-Bibliothek von Peter Fleury

Gast #3632887
Lesenswert?

Hallo zusammen,

in der UART-Bibliothek von Peter Fleury wird die Baudrate wie folgt 
gesetzt:
1
#define UART_BAUD_SELECT(baudRate,xtalCpu) ((xtalCpu)/((baudRate)*16l)-1)

Dabei werden bei der Berechnung auftretende Nachkommastellen 
abgeschnitten. Das hat bei manchen Baudraten zur Folge, dass der Fehler 
so groß wird, dass eine Kommunikation nicht möglich ist.
So wird z.B. bei 8 MHz und 57600 Baud ein Wert von 7,7 berechnet, der 
auf 7 abgeschnitten wird, so dass der Fehler bei +8,5% liegt.

Wenn in diese Definition eine Rundung eingebaut wird, funktioniert das 
wieder:
1
#define UART_BAUD_SELECT(baudRate,xtalCpu) ((xtalCpu+
2
(8l*(baudRate)))/((baudRate)*16l)-1)

Damit wird bei obigem Beispiel ein Wert von 8 erzeugt und der Fehler 
liegt nur noch bei -3,5%;

Hat schon mal jemand diese Beobachtung gemacht bzw. lässt sich das 
Problem an anderer Stelle beheben?

Schöne Grüße
Sören

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