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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.