Alternative Baud-Rate

Gast #52575
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
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
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

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