[?] Atmega128 USART Baudrate erkennen

Gast #4195665
Lesenswert?
• ▲
▼
NIBO2 mit Mega128 @16MHz, UART0 über Serial-USB Wandler (UCOM-IR2X) mit 
PC und PuttyTel verbunden - ISP-Programmieren und serielle Kommunikation 
(600 - 38k4 Baud) funktionieren.

Ich würde im Mega128 gerne eine automatische 
Baudratenerkennung/-anpassung realisieren:
Standard Setup des Mega128 UART ist 19200,8,n,1

Terminal mit 19200 Baud -> alles i.O.
Terminal mit  9600 Baud -> UART meldet FE (Frameerror) - o.K. UART 
Baudrate ist zu verringern
Terminal mit 38400 Baud -> passiert nix, auch kein UART Error

Kennt jemand vielleicht eine Möglichkeit festzustellen, dass die 
Baudrate des UART erhöht werden muss, damit mit dem Terminal 
kommuniziert werden kann?
Gast #4195779
Lesenswert?
• ▲
▼
Erstmal Danke für die 1. zeitnahe Antwort..

Habe in der Zwischenzeit Weiteres probiert - Fazit "Knoten in der Birne 
o. es geht nicht bis nur eingeschränkt".

Kurz zur Bedienung:
Nach dem Neustart des Controllers soll dieser ja nicht sofort mit dem 
Texten über den UART beginnen, sondern erst dann, wenn sich über den 
UART auch wirklich etwas tut. Bei mir sind's zwei Leerzeichen, die 
empfangen sein müssen, dann erst wird der Startscreen gesendet.

Workflow
Flashen mit Dude -> Dude gibt die Serielle wieder frei (und Programm im 
mega läuft los) -> PuTTYtel starten -> Doppelklick auf Config -> 1.x 
Leertaste -> UART-Settings werden im Sekundentakt gesendet -> 2.x 
Leertaste -> Startbild/-menu wird gesendet..

Also Baudraten von hoch nach niedrig durchschalten:
UART Initialisiert auf 38k4 und Terminal mit 9k6 gestartet.
- Leertaste -> FE -> UART init mit 28k8 (oder 14k4)
- Leertaste -> kein FE und auch kein Zeichen im UDR ;-(

Mit der Leertaste bekomme ich den FE nur, wenn das Verhältnis UART- und 
Terminal-Baudrate einer 2er-Potenz entspricht.

UART Initialisiert auf 38k4 und Terminal mit 9k6 gestartet.
- Leertaste -> FE -> UART init mit 19k2
- Leertaste -> FE -> UART init mit  9k6
- Leertaste -> UART sendet Parameterstring mit 9600

Beim UART1 wäre es vllt. einfacher zu realisieren, weil dort INT3 und 
INT4 verfügbar sind - kennt jemand dafür eine Lösung?
Gast #4196397
Lesenswert?
• ▲
▼
Ein Dank an Atmega für die Docs..So etwas habe ich nicht selber 
gefunden?!

Das von Renesas muss ich mir noch genauer ansehen (vom 1. April 2010?!);

und das von TI macht das gleiche, was bei mir gewissermaßen auch schon 
funktioniert.. beim Frameerror die Baudrate halbieren.

Nun gut - der USART0 ist als Debug-Ausgabe sowieso "fest" mit dem PC 
verbunden -> fixe Baudrate.

Btw. - Ich finde diesen o.a. nicai-Programmer voll praktisch für den 
ATmega128, weil mit einem Gerät kann man flashen, seriell Daten 
übertragen sowie RC5 IR senden und empfangen - und das ohne 
umzustöpseln; am Roboter habe ich mir die ISP-Schnittstelle und eine 
externe Spannungsversorgung auf 8-pol Westernbuchse gelegt - ein Stöpsel 
raus und der Roboter ist mobil, ein Stöpsel eingeklinkt, und schon isser 
wieder mit der Programmierumgebung verbunden - auf den Unterschied im 
Handling Pfostenstecker zu Westernstecker
brauche ich wohl nicht eingehen.

Beim USART1 als "mobile" Kommunikationsschnittstelle (XBEE) bin ich noch 
nicht - da werde ich dann aber die Timervarianten über Flankenwechsel 
versuchen..

Danke nochmal /BirgerT

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.