Alternative Baud-Rate

Gast #52575
Lesenswert?
• ▲
▼
Hallo

Ich benötige mal wieder den Rat von Experten…!

Aufgabenstellung:

Datenübertragung PC - Interface (Modelleisenbahn)
Basis des Interface ist ein MEGA162

Das Interface soll alternativ Daten mit einer einstellbaren Baud-Rate
(9600 / 19200) empfangen können.
Um sicherzustellen, dass solche „Altlasten“ (aus
Kompatibilitäts-Gründen) noch bedient werden können, wurde folgende
Regelung vorgesehen:

Die PC-Software sendet in einer Initialisierungs-Phase zunächst mit
einer Baud-Rate von 9600 und erwartet – falls das Interface die Daten
falsch empfangen hat - noch keine Antwort, um es dann nochmals mit
19200 zu probieren.

war der Versuch positiv erwartet die PC-Software ein vereinbartes
Check-Byte als Rückantwort und sendet dann mit 9600 Baud…

war der erste Versuch negativ, ist keine Rückantwort erforderlich !!!

Dann sendet der PC (nach einer ebenfalls vereinbarten Zeitspanne) wie
erwähnt mit 19200 (im positiven Fall : Check-Byte an PC senden)

Falls auch der zweite Versuch nicht erfoglreich war, kann das Spielchen
seitens des PC’s abgebrochen werden oder nochmals von vorne beginnen
(Fehlermeldung und Dateneingabe  (Abbruch ? / Weiter ?) über Check-Box
am PC)

Frage:
Wie kann ich im M162 erkennen , ob der Sende-Versuch des PC-Programmes
im Bezug auf die Frame-Parameter (9600,8,N,1) im ersten Versuch falsch
oder richtig war (in welchem UART1-Register / welches Bit ?)

Kann mir jemand weiterhelfen ?

Günter
#52576
Lesenswert?
• ▲
▼
Das geht nur, indem Du ein bestimmtes vereinbartes Zeichen sendest, und
der AVR dann vergleicht, ob es richtig war oder Müll.

Vorher auch eine schön lange Wartezeit lassen, damit die UART auch auf
das richtige Startbit triggert und nicht auf irgendeine 1-0-Flanke
innerhalb des Bytes.


Peter
Gast #52577
Lesenswert?
• ▲
▼
Du könntest am Anfang auch einfach den Rx-Pin abtasten (nicht mit dem
Hardware-UART, sondern "von Hand")und so die Baudrate des ersten
Zeichens feststellen. Ich kenne das von einem 8031-Basic (keine Ahnung
wie das genau hieß); da schickte man vom PC aus ein Leerzeichen als
Startzeichen und daraufhin hat der Microcontroller die Geschwindigkeit
passend eingestellt.

Markus

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.