mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Suche Idee, Protokoll für bidir serielle Kommunikation


Autor: Ulrich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
Ich suche eine Idee, Protokoll für serielle schnittstellen

Es soll folgende Dinge beherrschen:
es darf nix ausmachen wenn mal ein Byte verloren geht
Fehlerkorrektur bzw. erkennen von Datenfehlern und wiederanfordern von 
dem Block
Unterbrechung im Betrieb erkennen und wieder synchronisieren bei 
Verbindung
usw....

Für so was bietet sich eine Blockweise Übertragung an. Jeder Block eine 
ID CRC usw. Wie erkennt der Empfänger wo der Block anfängt usw.. usw...

Falls irgendjemand Ideen, Links uvm hat o soll er sich bitte hier 
melden.


Mfg
Ulrich

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wir nehmen für sowas immer das Protokoll, was der LMX9820 Blutooth-Chip 
benutzt. Allerdings bei Bedarf mit CRC.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kermit-, X-MODEM, Y-MODEM oder ZMODEM-Protokoll, wie sie bereits vor 
Jahrzehnten zur Datenübertragung verwendet wurden.

Autor: Annegret (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sind die beiden (oder mehrere) Knoten gleichberechtigt, oder ist die 
Kommunikation Master-slave ?

Autor: Ulrich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
gleichberechtigt

z-modem klingt schonmal ganz interesannt. Blockweise Übertragung, CRC

Allerdings vermisse ich noch den Punkt. Was ist wenn mal ein Byte 
verloren geht, dann würde eventuell das startbyte vom nächsten Paket als 
crc interpretiert werden? Muss man da eventuell eine Präambel senden? 
4Bytes z.B.?

Dann würde der empfänger ja merken wenn die empfangene Struktur 
nichtmehr stimmt.....

Aber wenn jetzt die übertragung in beide richtungen gestört war, was 
dann? dan kann ja der empfänger nichtmal mehr dem sender mitteilen das 
es probleme gibt?

Auf diesen Punkt geht weder x/y/z-Modem ein?

PS: Natürlich bin ich mir bewusst das es für mich nix fertiges gibt, und 
ich das selber rogrammieren muss, aber ich suche ja nur die Ideen und 
Vorlagen.....

Autor: _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eine gute und einfache Methode seriell Daten zu übertragen ist die 
Signalspreizung.

Solange 50% + 1Bit der Daten durchkommen wird das Signal erkannt.
Soviel ich weis wurde das gleiche Prinzip beim Voyager-Projekt 
verwendet.

Das Ganze Funktioniert so:
Jedes Bit wird mit einer ungeraden Anzahl von Bits exclusiv verodert und 
gesendet.

So wird jedes Bit mehrfach versendet.
Wenn man z.B. einen String aus 99 Bits verwendet wird jedes Bit 99 mal 
gesendet.
(Der Vorteil dabei ist dass es gleich ein wenig verschlüsselt wird.)

Solange 50 Bits durchkommen wird das Signal verstanden.

Wenn man das Ganze nocheinmal invertiert sendet und eine Checksumme 
verwendet, wird die Empfangssicherheit erhöht.

Autor: Dirk S. (tomcat)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
HDLC und LAPB sind geeignete Stichwörter für deine weitere Suche.

Einige Eigenschaften:
CRC-gesicherte Blockübertragung
Block-Startbyte wird in den Daten durch Escapesequenz abgebildet.
Wiederholung beschädigter Blöcke
Gleichzeitige Bestätigung mehrere Blöcke (bei sehr langen 
Übertragungsstrecken ungemein mützlich)
...

Autor: Dirk S. (tomcat)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
oder auch mal PPP anschauen. Hat die gleichen Wurzeln.
...

Autor: Ulrich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Dirk:
Vielen Dank, das klingt schonmal ganz gut, mehrere Blöcke würde ich 
nicht für lange übertragungswege nehmen sondern für kleine Pakete 
(gleicher effekt)

Autor: Mario (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das 10Mbit Ethernet mit CSMA/CD Protokoll sollte das alles auch können.
Das kann dann auch mit fertigem chip realisiert werden, Bsp. den 
ENC28J60 hier im Shop.

Autor: Ulrich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
viel zu teuer......... 1€pro Stück wäre für meinen Zweck OK

ich habe mir jetzt alles durchgelesen und suche mir das raus was ich 
benötige und definiere mein eigenes Protokoll:

START;CONTROLL;LENGTH;DATEN;CRC;STOP

Und fertig.

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.