uart baudrate

OP #1577135
schönen sonntag morgen,

...und zwar möchte ich eine uart übertragung mit 921600 bps zustande 
bekommen. bei meinem c# programm ist es ja kein problem 921600 bps 
einzustellen - aber beim controller (verwende einen atmega128a) finden 
sich ja in der baudratenliste nur 0.5 und 1 Mbps: sprich die 921600 
stehen nicht drin. kann ich nun trotzdem einfach im UBRR-register 0 
einstellen und das ganze funktioniert dann? (hätte in diesem fall vor 
einen 14.7456 MHz Quarz zu verwenden.)

in diesem thread les ich raus dass es funktionieren müsste:
http://www.embeddedrelated.com/usenet/embedded/show/8794-1.php

kann aber auch sein dass ich etwas übersehen oder falsch verstanden 
habe.

mfg zoechi
Moderator (Firma: Titel) Persönliche Seite
Such mal hier im Forum nach dieser Zahl. Die taucht andauernd auf:
http://www.mikrocontroller.net/search?query=921600&forums[]=1&forums[]=19&forums[]=9&forums[]=10&forums[]=2&forums[]=4&forums[]=3&forums[]=6&forums[]=17&forums[]=11&forums[]=8&forums[]=14&forums[]=12&forums[]=7&forums[]=5&forums[]=18&forums[]=15&forums[]=13&forums[]=16&max_age=-&sort_by_date=0

>>> Nur wozu braucht man 921600 bps?
Diese Frage stellt sich dann immer wieder wie im 
Beitrag "Re: UART mit Baudrate von 921600"
Und irgendwie gibts bei den Threads dann nur selten ein Happy-End  :-o
Gast
Hi

>Und irgendwie gibts bei den Threads dann nur selten ein Happy-End  :-o

Wahrscheinlich, weil die Leute nicht begreifen, das die Baudrate 
meistens nicht der Flaschenhals ist.

MfG Spess
Gast
Hi

>du meinst damit wahrscheinlich dass mir pc seitig die "abholung" der
>daten zu langsam ist?!

Der braucht erstmal nichts abzuholen, da du im Vergleich zu AVR relativ 
grosse Puffer festlegen kannst. Im AVR steht aber hardwaremässig nur ein 
Byte Puffer zur Verfügung. Und der RAM ist auch recht begrenzt.

MfG Spess
OP
Lothar Miller schrieb:
> Und immer noch ohne Antwort:
>>>> Nur wozu braucht man 921600 bps?

hab ein usb-seriell kabel mit dem ftdi chip... und wenn ich das 
anschließe und dann im device manager schaue welche baudraten 
einstellbar sind, dann finde ich dort 921600bps... von daher kommt der 
wert.
Moderator (Firma: Titel) Persönliche Seite
@  Florian Z. (zoechi)
> ... welche baudraten einstellbar sind, dann finde ich dort 921600bps...
> von daher kommt der wert.
Schon eine interessante Einstellung: nur weil ich etwas könnte,
will (bzw. brauche) ich es auch :-o

Zur Erinnerung, die Frage war nicht, ob du es kannst, sondern wofür du 
es /brauchst/:
>>>>>> Nur wozu braucht man 921600 bps?
Gast
Florian Z. schrieb:
> [..] [Baudrate] 921600 bps [..] 14.7456 MHz Quarz [..]

Das ist erstens ein "Baudratenquarz" und zweitens ergibts sich nach Adam 
Riese und Eva Zwerg ein
1
UBRR = fOSC /16 /BAUD -1 = 14.7456e6 /16 /921600 -1 = 0
(mathematisch exakt, nicht gerundet, Formel aus dem Datenblatt). Also 
ist auch der Fehler genau 0. Also alles in Butter.

Aber bedenke: Bei der angestrebten Baudrate bleiben Dir (bei 8N1) genau 
160 Takte um ein ankommendes Datenbyte zu verarbeiten - inklusive ggf. 
Interrupt Ein- und Aussprung und was sonst noch alles dazugehört - und 
der AVR hat ja wahrscheinlich auch noch was anderes zu tun als nur von 
der UART zu lesen.. das ★kann★ eng werden, das ★kann★ aber auch 
nötig/gewünscht sein.. nur bedenken sollte mans gründlich.

HTH und HF
OP
g457 schrieb:
> das ★kann★ eng werden, das ★kann★ aber auch
> nötig/gewünscht sein.. nur bedenken sollte mans gründlich.

mhm... verständlich. muss aber dazusagen dass ich bei meinem prozessor, 
sobald er am Eingang des UART's etwas erhält, eigentlich sämtliche 
anderen Arbeitsschritte unterbreche (und mit "eigentlich sämtliche" 
meine ich "eigentlich alle" ;) ). Außerdem werden die Datensätze die vom 
PC kommen in der Länge auch sehr gering gehalten (werde hier vielleicht 
sogar nur eine Länge von 3 byte anstreben) - zur not werde ich die Daten 
die vom PC rausgehen mit einem Timer senden und den auf 100ms oder so 
stellen. Diese "hohe" Baudrate benötige ich eigentlich nur dafür um die 
gespeichterten Daten des Controllers möglichst schnell an den Computer 
zu bringen - Wenns mit 921600 nicht klappt geh ich einfach auf die 
nächstmögliche Baudrate runter.

und dass ichs nicht vergesse: danke soweit an alle!
Vergiss aber den (Hardware-)Handshake nicht. Ohne wirst du bei den 
Datenraten keinen Blumentopf mehr gewinnen können, auch nicht in 
Richtung zum PC hin. Der Buffer des FT232R (256B) ist bei 921,6kBaud 
nach gerademal 2,8ms schon voll, da reicht ein kleiner Schluckauf auf 
dem USB-Bus oder im Host, und es gehen Daten verloren.

Andreas
Moderator (Firma: Titel) Persönliche Seite
> Diese "hohe" Baudrate benötige ich eigentlich nur dafür um die
> gespeichterten Daten des Controllers möglichst schnell an den Computer
> zu bringen ...
... auf dem dann Windows läuft, das bis zum Taskwechsel eine halbe 
Sekunde pennt, weil du gerade auf die Maustaste geklickt hast   :-o

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 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.