Baudratenproblem bei 16Mhz Quarz

Gast #2129937
Hallo,

ich hab ein merkwürdiges Problem und wollte mal fragen ob jemand schon 
ähnliches durch hat...

Ich habe ein Atmega168 auf meinem STK500 stecken und betreibe ihn mit 
einem 16MHz Quarz... die Freqenz passt soweit...
Das ganze wird mit einem USB-Serialadapter verbunden... später im 
Projekt wird das selbe durch ein FTI232 getan...
Ich benutzte die UART Lib von Peter Fleury, die bisher immer 
funktionierte.

Laut diesem Rechner: 
http://www.gjlay.de/helferlein/avr-uart-rechner.html

Könnte ich die Baudraten 38.4k, 76.8k und 250k benutzen...

Die erste Baudrate funktioniert tadellos, nur leider ist sie für meine 
Anwendung zu langsam.
Die letzte (250k) funktioniert beim Empfangen von Daten vom µC ohne 
Probleme, aber wenn ich was sende, kommt nur Müll an?!
Und die Baudrate mit 76.8k funktioniert anschneiend überhaupt nicht... 
da kommt nicht mal ein Zeichen an... und die wäre genau die richtige für 
mich...

Achso und 115.2k hab ich auch testweise probiert... aber bei 3% Fehler 
kommen immer mal wieder das falsche Bytes durch... (klar)

Ich versteh einfach nicht, warum es bei 76.8k zu solchen Problemen 
kommt, wenn sich alle anderen Baudraten wie erwartet verhalten (bis auf 
das senden mit 250k). Liegt es etwa an dem USB-Serial Wandler?

MfG

Basti
Gast #2129959
könnte man tun...
Ich verwende nur gern die 16MHz weil ich dann einen Timerinterrupt aller 
1,02ms Aufrufen kann und das ziemlich nützlich für mich ist...
deswegen wollte ich erstmal nicht den Quarz wechseln und das eher als 
letzte Möglichkeit ansehen.
Außerdem würde das das Phänomen mit den 76.8k nicht erklären...
Gast #2129960
Situation

1. Es ist unbekannt, für welche Baudraten und Genauigkeiten der 
USB-Seriell-Adapter spezifiziert ist.
2. Unabhängig davon, ist Typ und Hersteller des USB-Seriell-Adapters 
unbekannt, so das kein Vergleich mit den Erfahrungen von anderen möglich 
ist.
Gast #2129964
Basti schrieb:
> Das ganze wird mit einem USB-Serialadapter verbunden... später im
> Projekt wird das selbe durch ein FTI232 getan...

Basti schrieb:
> Die letzte (250k) funktioniert beim Empfangen von Daten vom µC ohne
> Probleme, aber wenn ich was sende, kommt nur Müll an?!

Da stellt sich für mich die Frage: kann dein RS232-Treiber überhaupt die 
hohe Baudrate? bzw. wie lang ist Dein Kabel?

Basti schrieb:
> Achso und 115.2k hab ich auch testweise probiert... aber bei 3% Fehler
> kommen immer mal wieder das falsche Bytes durch... (klar)

Ich komme (mit Bit Baudratenverdoppelung gesetzt) nur auf 2,1% Fehler.

Bei 57600 Baud würdest Du mit Baudratenverdoppelung unter 1% Fehler 
haben.

Gruß Anja
Gast #2129987
> Kann da leider keine Informationen finden, welche Baudraten das Teil
> unterstützt und welche nicht... [..] 76.8k [..]

Der angebotene Treiber legt nahe dass da ein PL2303 drin ist. Der 
wiedrum kann laut Datenplatt keine 76k8.

Spar Dir die vergliche Liebesmüh und nimm einen Baudratenquartz.
Gast #2130065
Ja Anja du hast recht, ich sollte mal in einen neuen Adapter 
investieren... wenn ich immer den FT232R verbaue, dann sollte man auch 
mit einem solchen Adapter Debugen... das ergibt Sinn und deswegen liegt 
das Teil jetzt im Warenkorb... ;)


@G456 Danke für die Info... dann brauch ich mich nicht wundern...
Moderator #2130170
Die so genannten "Baudratenquarze" sind auch nur die halbe Miete, da die
USB-Seriell-Umsetzer üblicherweise mit 48 MHz oder 96 MHz betrieben
werden, so dass letztendlich nur solche Baudraten exakt darstellbar
sind, die ganzzahlige Teiler von 3 MBaud (FTDI), 6 MBaud (PL2303X,
PL2303HX) oder 12 MBaud (PL2303HXD) sind. Die meisten Standardbaudraten
werden also auch von den USB-Chips nur näherungsweise erreicht, aller-
dings ist der Fehler wegen des hohen Grundtakts meist vernachlässigbar.

Für die gewünschten 76800 Baud ist der Fehler beim 16-MHz-AVR exakt
gleich groß wie bei den o.g. USB-Chips, so dass ein Baudratenquarz in
diesem Fall keine Verbesserung, sondern eher eine Verschlechterung
bringen würde.

Zusätzlich muss man aber beachten, dass auf PC-Seite durch das Betriebs-
system meist nur eine kleine Auswahl der mit dem USB-Chip theoretisch
möglichen Baudraten unterstützt wird. Bei Windows findet diese Ein-
schränkung in den Treibern, bei Linux im Betriebssystem-API statt. 76800
kBaud sind ohne Umgehung des Standard-APIs weder unter Windows noch
unter Linux möglich.

"Saubere" Baudraten für die Kommunikation zwischen einem 16-MHz-AVR mit
USB-Seriell-Umsetzer und einem Linux-PC sind 500 kBaud und 1 MBaud.
Solch hohe Baudraten setzen natürlich voraus, dass der USB-Chip direkt
auf der Mikrocontrollerplatine sitzt.
#2130483
@  Yalu X. (yalu) (Moderator)

>USB-Seriell-Umsetzer üblicherweise mit 48 MHz oder 96 MHz betrieben
>werden, so dass letztendlich nur solche Baudraten exakt darstellbar
>sind, die ganzzahlige Teiler von 3 MBaud (FTDI), 6 MBaud (PL2303X,
>PL2303HX) oder 12 MBaud (PL2303HXD) sind.

Klares Jain. FT232 & Co können gebrochenrationale Teilerverhältnisse, 
ähnlich dem  MSP430. Sprich, der FT232, kann Teilerfaktoren mit 1/8 Takt 
Auflösung. Damit sind auch mit 12MHz, was keine klassische 
Baudratenfrequenz ist, mit geringem Fehler die normalen Baudraten 
erzeugen.

MfG
Falk
Gast #2130573
Stimme ich Falk zu...

Hab heute folgendes App Note von FTI gelesen... (AN232B-05)

http://www.google.de/url?sa=t&source=web&cd=1&ved=0CBkQFjAA&url=http%3A%2F%2Fwww.ftdichip.com%2FDocuments%2FAppNotes%2FAN232B-05_BaudRates.pdf&rct=j&q=AN232B-05&ei=iLGYTYDmGM7esgaotbXICA&usg=AFQjCNHB1_lIQQiWhe3ljy5XDpxbie6dAQ&sig2=dzKJkWqNFhiQY9_JXiGmvA&cad=rja

Wenn ich das richtig verstanden habe, dann kann man gerade bei niedrigen 
Baudraten nahezu jede beliebige Baudrate unter 3% Fehler einstellen... 
hab mal nen Beispiel durchgerechnet...

Hm, obs Windows mit macht? Der Virtuelle Com Port treiber von FTI wird 
doch hoffentlich die funktionen des Chips nicht blockieren?!
Moderator #2130675
Falk Brunner schrieb:
> FT232 & Co können gebrochenrationale Teilerverhältnisse, ähnlich dem
> MSP430.

Stimmt, danke für den Hinweis. Da ich an hohen Baudraten üblicherweise
nur 230,4 kBaud und 500 kBaud benutze und man bei diesen die gebrochenen
Teilverhältnisse nicht braucht, hatte ich bisher auch gar nicht den
Bedarf nach so einem Feature :)

Basti schrieb:
> Wenn ich das richtig verstanden habe, dann kann man gerade bei niedrigen
> Baudraten nahezu jede beliebige Baudrate unter 3% Fehler einstellen...

Nicht nur bei den niedrigen. Für alle Baudraten bis 1,54 MBaud beträgt
der Fehler maximal 3,03%, bis 115200 kBaud sogar weniger als 0,24%.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 15 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.