Forum: Mikrocontroller und Digitale Elektronik Zeit - Wechsel der Baudrate im laufenden Programm


von bd (Gast)


Lesenswert?

Hallo,

ich nutze einen Atmega128 (14.7456MHz Quarz) und muss in meinem 
Programmablauf die Baudrate wechseln. Kann mir jemand sagen, wie lange 
es dauert, bis der Uart mit der neuen Baudrate wieder verfügbar ist? 
Sprich: Die Zeit ab Register setzen bis neue Zeichen empfangen werden 
können.

Viele Grüße
BD

von Pandur S. (jetztnicht)


Lesenswert?

Per direktes Schreiben auf das Baudrate Register ?
Etwa 1 langsames Byte lang ? Miss nach.

Dir ist aber klar, dass das auf dem PC nicht so schnell geht .. nur 
falls das die andere Seite sein sollte.

von The D. (thedaz)


Lesenswert?

Auf Seite 222 steht :

"• Bit 11:0 – UBRR11:0: USART Baud Rate Register
This is a 12-bit register which contains the USART baud rate. The UBRRH 
contains the four most significant bits, and the UBRRL contains the 
eight least significant bits of the USART baud rate. Ongoing 
transmissions by the Transmitter and Receiver will be corrupted if the 
baud rate is changed. Writing UBRRL will trigger an immediate update of 
the baud rate prescaler."

Das sollte deine Frage doch beantworten.

von bd (Gast)


Lesenswert?

"Dir ist aber klar, dass das auf dem PC nicht so schnell geht .. nur
falls das die andere Seite sein sollte."

--> ja, die Gegenstelle ist aber kein PC, sondern ebenfalls ein uC.


@The Daz: Leider beantwortet das meine Frage nicht. Dass ich während der 
Umstellung nichts empfangen kann, ist ja klar. Deshalb war ja meine 
Frage, wie lange eben diese Umstellung dauert.

von Pandur S. (jetztnicht)


Lesenswert?

Also. Der Teiler wird sofort umgestellt. Vielleicht sind noch ein paar 
Bits am Rausgeschoben werden. Die werden dann also auf der neuen 
Baudrate geschoben.
Was haelt dich davon ab, das nachzumessen, wenn's so wichtig ist. 
Einfach einen Pin toggeln vor dem Vorgang, und nochmals wenn's stimmt. 
Dann mit dem Oszilloskop die Zeit dazwischen messen.

von Jim M. (turboj)


Lesenswert?

bd schrieb:
> @The Daz: Leider beantwortet das meine Frage nicht. Dass ich während der
> Umstellung nichts empfangen kann, ist ja klar. Deshalb war ja meine
> Frage, wie lange eben diese Umstellung dauert.

Die Differenz zwischen Umschalten am "Sender"-µC und "Empfänger"-µC 
dürfte um Größenordnungen höher sein als die Zeit der Umstellung 
innerhalb des µC - völlig egal wie diese Umstellung signalisiert wird.

Daher ist die Totzeit entsprechend dieser Differenz anzupassen.

von bd (Gast)


Lesenswert?

ok ich danke Euch.

Euren Beiträgen entnehme ich, dass ich davon ausgehen kann, dass, wenn 
die Register gesetzt sind, der UART auch sofort wieder bereit ist. Ich 
dachte, dass es evtl. sein könnte, dass man die Register setzt, der UART 
aber dennoch nicht sofort bereit sei.

Vielen Dank nochmal!

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Nur mal am Rande gefragt: Welchen Sinn hat das Umschalten der Baudrate 
bei einer bereits bestehenden Verbindung?

von Falk B. (falk)


Lesenswert?

Bei DMX512: ein BREAK generieren.

von W.S. (Gast)


Lesenswert?

Rufus Τ. F. schrieb:
> Nur mal am Rande gefragt: Welchen Sinn hat das Umschalten der Baudrate
> bei einer bereits bestehenden Verbindung?

Es hat manchmal seinen Sinn. Ich mach das in bestimmten Fällen auch. Bei 
ganz gewöhnlichen Dingen wie Hintergrundmonitor usw. reichen 9600 völlig 
aus und das geht auch über große Entfernungen, was bei 56K nicht so 
zutrifft.

Aber:

Man muß dazu eben nicht nur die Baudrate bei beiden Seiten umschalten, 
sondern (wieder mal) beide Seiten miteinander synchronisieren. genau DAS 
ist extrem wichtig, um Konfusionen zu vermeiden. Wieviel Zeit das 
eigentliche Umschalten braucht, ist dabei herzlich egal.

W.S.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

W.S. schrieb:
> Es hat manchmal seinen Sinn.

Wann?

> Ich mach das in bestimmten Fällen auch.
> Bei ganz gewöhnlichen Dingen wie Hintergrundmonitor usw.
> reichen 9600 völlig aus und das geht auch über große
> Entfernungen, was bei 56K nicht so zutrifft.

Und die großen Entfernungen ändern sich während einer bestehenden
 Verbindung? Im laufenden Betrieb? Wie das?

: Bearbeitet durch User
von Soul E. (Gast)


Lesenswert?

Rufus Τ. F. schrieb:

> Nur mal am Rande gefragt: Welchen Sinn hat das Umschalten der Baudrate
> bei einer bereits bestehenden Verbindung?

So kann man z.B. den Sync Break für einen LIN-Frame erzeugen. Das sind 
12..15 Bitzeiten low (dominant), also mehr als mit 8N1 normal möglich 
ist.

Das klappt sogar am PC mit dem PC16550-UART unter LabView.

von W.A. (Gast)


Lesenswert?

W.S. schrieb:
> Man muß dazu eben nicht nur die Baudrate bei beiden Seiten umschalten,
> sondern (wieder mal) beide Seiten miteinander synchronisieren.

Warum soll die Synchronität überhaupt verloren gehen? Der Empfänger 
sollte nur rechtzeitig Bescheid kriegen, damit er auch umschaltet.

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.