RFM12: erste gehversuche, welches Protokoll

Gast #1918374
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
#1918380
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.
#1919607
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/trunk/Library/RFM12_Funktionen.c?view=markup
Gast #1919795
Lesenswert?
• ▲
▼
Fox Mulder schrieb:
> [1]
> https://quakeman.homelinux.net/viewvc/uVision/trun...
1
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
2

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

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.