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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren