mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Alternative Baud-Rate


Autor: guenter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Markus Kaufmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Uwe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!

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

MFG Uwe

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.