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
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.
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
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. ;-)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.