mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Synchronisation µP <-> Seriell <-> PC


Autor: Kupfer Michi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich bin auf der Suche nach einem effizienten und robusten
Synchronisationsverfahren für eine serielle µP - PC Kommunikation.
Die Verbindung wird oft unterbrochen so dass ein sicheres
wiederaufsetzen auf der Applikationsprotokollebene notwendig ist.

Übertragen werden 8Bit Binaermessages. Auf der PC Seite kann nicht 9Bit
oder Missbrauch der Stopbits als Frame Information verwenden.

Bleibt also nur umkodieren 8Bit->7Bit und setzen eines Frame
Startbits.

Oder gibts da andere Tricks?

Autor: Stefan R. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

schau dir dazu mal das KISS-Protokoll (kommt von Packet-Radio, also
Datenfunk) an. Dabei geht es genau um dein Problem, nämlich eine
Sequenz von 8-Bit-Daten mit eindeutigem "Startbyte" zu übertragen.
Man definiert dazu zusätzlich zu dem Startbyte (dort FEND genannt) ein
"Escape"-Byte (FESC), ein "transponiertes" Startbyte (TFEND) und
ein "transponiertes" "Escape"-Byte (TFESC). Kommt nun im Datenstrom
nach dem Start des Frames ein Startbyte (FEND) vor, wird es durch die
2-Byte-Kombination FESC-TFEND ersetzt (FESC signalisiert quasi, dass
das aktuelle Byte durch zwei Bytes im Datenstrom übertragen wird).
Kommt im Datenstrom ein FESC vor, wird dieses durch FESC-TFESC ersetzt.
Somit kommt im Datenstrom das Startbyte niemals vor, und man kann
trotzdem alle 8 Bit nutzen. Die Erklärung war jetzt vielleicht etwas
schwammig, aber schau dir einfach mal das an:

http://bips.bi.ehu.es/prj/modem/evm56002/kiss.html

C++ Implementation Sender/Empfänger:
http://www.scs.carleton.ca/~barbeau/Courses/SETP/A...

Gruß, Stefan

Autor: Kupfer Michi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die Links! werd sie mir noch genauer anschauen.

ich hatte mir auch schon kurz die Verwendung von einem Escape Char
überlegt bin dann aber doch etwas davor zurückgeschreckt da mann dann
bei ungünstigen Daten glatt eine verdopplung der Datenlänge hat.

Die Verwendung verschiedener Esc Bytes ist gegenüber der einfacheren
Variante robuster in der Synchronisation, hat aber auch das Problem der
nicht genau verhersagbaren Messagelänge/Übertragungszeit.

Allerdings wenn man schon mit Esc Chars arbeitet, dann könnte man auch
gleich eine einfache RLE Kompression vorchalten und das Längenproblem
wäre entschärft.

mal sehen...

Autor: Stefan R. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

> RLE-Kompression

oder einfach, wenn die Daten nicht allzu schnell kommen, die serielle
Geschwindigkeit verdoppeln, so dass selbst im ungünstigsten Fall die
Geschwindigkeit Frames/Sekunde gleich bleicht. Die Übertragungszeit ist
zwar nicht vorhersehbar, aber da die einzelnen Frames ja taktgenau
erzeugt werden (bzw. die Messdaten gemessen werden), dürfte das z.B.
für einen Datenlogger kein Problem sein. Das dürfte nur dann
problematisch werden, wenn über den angeschlossenen Computer z.B. eine
schnelle Regelung gemacht wird.

Gruß,
Stefan

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.