www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik RFM12: erste gehversuche, welches Protokoll


Autor: Michael S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Servus zusammen,

ich hab hier noch 3 so RFM12 Funkmodule rumliegen und könnte sie in 
einem meiner Projekte gebrauchen. Allerdings frage ich mich gerade, wie 
ich das bidirektional hinbekommen soll?
Anforderung ist: 3 Funkmodule (später vielleicht mal mehr) sollen 
miteinander kommunizieren können.
d.h. jeder soll von jedem Daten anfordern können.

Jetzt frage ich mich wie das zu lösen sein könnte.

Meine Idee: Alle sind immer auf Empfangen eingestellt und warten auf 
gültige Daten. Sobald einer was "sagen" möchte, prüft er ob ein anderer 
funkt (ob er also gerade etwas empfängt) und wenn nicht, schaltet er den 
Transmitter ein und sendet los.
Jetzt frage mich aber, wie ich Datenverluste umgehen kann, falls 2 sich 
gleichzeitig überlegen zu senden.
Kann mir hier jemand helfen?
Ich suche schon einige Stunden erfolglos, bzw. finde lediglich 
eindirektionale "Protokolle".

Vielen Dank
Michael

Autor: Lehrmann Michael (ubimbo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
1) Mikrocontroller ist Pflicht
2) Datenbaltt lesen - da steht alles drin.
3) Anfangen das ganze für 1 Modul zu realisieren. Daran sind schon 
einige gescheitert.
4) Dann kann man sich überlegen wie man für mehrere Module vorgehen 
möchte.

Michael S. schrieb:
> Jetzt frage mich aber, wie ich Datenverluste umgehen kann, falls 2 sich
> gleichzeitig überlegen zu senden.

Darum sollte man das Datenblatt lesen.

Autor: test (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Jan K. (pit1)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: R. W. (quakeman)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe mal selber ein einfaches Protokoll für die RFM12 geschrieben 
gehabt, womit ich zwischen zwei RFM12 fehlertolerant Daten austauschen 
kann.

Es sind ein paar Schutzmechanismen eingebaut wie CRC, Transmit-Retry mit 
pseudo-zufälligem Delay, Acknowledge, Not-Acknowledge, Paketzähler für 
die Erkennung doppelter Pakete nach einem Retry.
Ich hatte auch schon mal angefangen eine Adressierung zu implementieren 
um mehr als zwei Funkmodule miteinander zu vernetzen. Aber bis jetzt ist 
diese noch nicht drin, da ich noch keine Motivation/Verwendung für mehr 
als zwei RFM12 hatte. ;)

Der Code ist für einen LPC935 (8051er) geschrieben, wobei aber nur in 
den Low-Level Funktionen spezielle Controller Eigenschaften verwendet 
werden. Das eigentliche High-Level Protokoll ist vollständig unabhängig 
vom verwendeten Controller geschrieben.

Der Code ist unter [1] zu finden. Leider ist er, wegen der Vielzahl an 
#ifdef Anweisungen für diverse Debug Ausgaben, nicht mehr so schön zu 
lesen. Aber wenn man diese entfernt sollte er recht gut verständlich 
sein. Ich habe den Code auch gut dokumentiert.

Vieleicht gibt dir der Code ja Anregungen für ein eigenes Protokoll. Ich 
denke, es macht nicht viel Sinn sich nur nach fertigen Lösungen 
umzusehen. Lieber ein paar Anregungen holen und selber ein Protokoll 
programmieren. :)

Ciao,
     Rainer

[1] 
https://quakeman.homelinux.net/viewvc/uVision/trun...

Autor: Leo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Fox Mulder schrieb:
> [1]
> https://quakeman.homelinux.net/viewvc/uVision/trun...
Bei allen relevanten Dateien die File Properties geändert damit der SVN Header gefüllt wird. Den SVN Header ebenfalls in diesen Dateien zu Beginn eingefügt

    1 /*********************************************************************
    2 * $HeadURL$
    3 * $LastChangedBy$
    4 * $LastChangedDate$
    5 * $LastChangedRevision$
    6 *********************************************************************/
Hat ja super funktioniert. ;-)

Autor: R. W. (quakeman)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Leo schrieb:
> Hat ja super funktioniert. ;-)

Finde ich auch. Ist sehr praktisch so ein Header. ;)

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.