Baudrate im laufenden Program ändern

Gast #3995134
Lesenswert?
• ▲
▼
Hallo,

ich hab schon im Forum gesucht, aber keine passende Antwort gefunden.

Ich muss im laufenden Programm die Baudrate des COM-Port (ATMega8) 
umschalten. Die Baudrate wird auch umgeschaltet, allerdings werden an 
den auszugebenden Text noch zwei Zeichen angehängt. Wo kann der Fehler 
liegen?


Config Com1 = 9600 , Synchrone = 0 , Parity = None , Stopbits = 1 , 
Databits = 8 , Clockpol = 0

print "Hallo"

In der Hauptschleife:

do
  toggle baudrate

  select case baudrate
    case 0: baud = 4800
    case 1: baud = 9600
 end select

 print "Hallo"
 wait 1
loop

Das Programm printet jede sekunde "Hallo" abwechselnd mit 4800 oder 9600 
Baud. Allerdings werden an das "Hallo" noch 2 Zeichen angehängt!?
(ASCII 43 und ASCII 85). Das "Hallo" vor der Hauptschleife wird richtig 
ausgegeben.


Vielen Dank im Voraus, dani
Gast #3995207
Lesenswert?
• ▲
▼
@ Magnus: Ich lasse das Terminalprogram auf 9600 Baud, aber dann sollte 
jedes 2. "Hallo" lesbar sein.

Ich hab aber den Fehler gefunden:

"Before doing a re-initialization with changed baud rate or frame 
format, be sure that there are no ongoing transmissions during the 
period the registers are changed."

... jaja, ich sollte das Datenblatt lesen befor ich hier poste.

Dennoch vielen Dank
Gast #3995217
Lesenswert?
• ▲
▼
dani schrieb:
> Das Programm printet jede sekunde "Hallo" abwechselnd mit 4800 oder 9600
> Baud. Allerdings werden an das "Hallo" noch 2 Zeichen angehängt!?

Zeig doch mal, wie baudrate dimensioniert ist.
Die 2 Zeichen sind CR/LF, die können so:

print "Hallo";

unterdrückt werden.

Karl Heinz schrieb:
> Keine Ahnung was passiert, wenn man der UART die Baudrate umdreht,
> während gerade 1 Byte rausgetaktet wird.

Ungepuffertes print arbeitet blockierend, da wird nix während des 
Sendens umgedreht. Und selbst wenn es gepuffert wäre, in 1 Sekunde sind 
selbst bei 4800 Baud alle 7 Zeichen draußen.

dani schrieb:
> "Before doing a re-initialization with changed baud rate or frame
> format, be sure that there are no ongoing transmissions during the
> period the registers are changed."

Du hast keine laufende Übertragung.

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.