Forum: Mikrocontroller und Digitale Elektronik UART-Bibliothek von Peter Fleury


von Sören (Gast)


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

von holger (Gast)


Lesenswert?

>lässt sich das Problem an anderer Stelle beheben?

Ja, benutze einen Baudratenquarz.

von короткое троль (Gast)


Lesenswert?

Der Frequenzfehler sollte 2% sowieso nicht uebersteigen. Also nimm einen 
Baudratenquarz.

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.