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 PCs 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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.