Forum: Mikrocontroller und Digitale Elektronik Alternative Baud-Rate


von guenter (Gast)


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

von Peter D. (peda)


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

von Markus Kaufmann (Gast)


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

von Uwe (Gast)


Lesenswert?

Hi!

$55 oder $AA als Startbyte senden. Wenn nicht erkannt-> Baudrate
falsch.

MFG Uwe

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.