www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Protokoll implementieren


Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich hab für ein µC-Projekt ein Befehlsprotokoll erstellt, also wie 
welcher Befehl auszusehen hat, wie die Parameter und Daten aufgebaut 
sind usw.

Mein Problem ist, wie ich das Protokoll richtig implementiere. Damit 
meine ich, vom Empfang über die Prüfung bis zur Ausführung des Befehls. 
Wie macht ihr das?
Kann mir da jemand Beispiele zeigen?

Ralf

Autor: Dieter Werner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Frage erinnert mich ein wenig an:
ich will von Hamburg nach München, wie mach ich das am besten?

Die Abarbeitung eines Protokolls hängt von vielen verschiedenen 
Umständen ab. Ein paar mehr Infos wären nicht schlecht.

Ist es Multi- oder Singlemaster
Wie viele Teilnehmer kommunizieren miteinander
Welche Datenmengen sind zu erwarten

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Dieter,

okay, habs zu ungenau beschrieben, da hast du recht.

Also, es ist nur ein SingleMaster. PC ist Master, µC ist Slave. Pro 
Befehl gehen maximal 48 Byte an den µC, die Antworten sind maximal 
genauso lang.
Es geht mir nicht um ein Übertragungs-Protokoll, sondern darum, das 
Protokoll richtig im µC umzusetzen. Mir fehlt quasi die Schnittstelle 
zwischen Empfang eines Befehls, der Aufbereitung der Daten und dem 
Ausführen des Befehls.

Ralf

Autor: Roland Praml (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hier mal was einfaches:

<header-byte>
<destination-byte>
<payload-length>
<payload...>
<crc>

Dann baust dir eine Statemachine, welche automatisch nach einer Weile 
wenn nichts übertragen wird in State 0 springt.

in State 0 wartest auf das Eintreffen des (oder der) Header Bytes und 
springst dann auf State 1.
In State 1 empfängst das Adressbyte (z.B. die Modulnummer)
In State 2 dann die Payloadlength.
Dann bleibst so lange in State3 bis die Payloadlength erreicht ist, die 
Bytes schreibst dabei in einem Puffer.
In State 4 prüfst dann mittels einem CRC-Verfahren ob die Übertragung 
korrekt war. Weiterhin prüfst ob das empfangene Paket für den 
entsprechenen µC war. Wenn dieses alles korrekt ist, dann kannst die 
Daten weiterverarbeiten.
Danach springst in State 0 und sendest evtl eine Antwort zurück zum 
Master.
Kommt keine Antwort kann der Master davon ausgehen, das das Paket 
fehlerhaft übertragen wurde.

Dies ist zwar nicht das Beste Protokoll aber relativ einfach zu 
implementieren. Am Besten schaust dir mal ein paar andere Protokolle an 
(z.B. SNAP, CAN, Nokia FBus/MBus oder auch TCP/IP) und verstehst ihre 
Vor und Nachteile und implementierst dann eins, was für deinen 
Anwendungszweck passt.

Gruß
Roland

Autor: rene (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Controller ist eine Statemaschine. Die Zustandshierarchie sollte so 
flach wie moeglich sein. Dh man sollte von jedem Zustand in einem 
anderen gelangen koennen, sofern das physikalisch ueberhaupt moeglich 
ist. Die Commands aktivieren entweder Vorgaenge oder aendern den 
Zustand. Zudem gibt es noch Statusabfragen. Die Zustaende und die 
Commands sollen so zusammenpassen, dass auch mal ein Command 
verschwinden kann. Das Protokol sollte auf ein command eine Antwort 
bedingen. Damit kann der PC pruefen, ob das command angekommen ist. Ein 
Beispiel :
http://www.ibrtses.com/embedded/shortmsgprotocol.html


rene

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.