Forum: Mikrocontroller und Digitale Elektronik RFM69 wie fertige Library nutzen


von N'Abend (Gast)


Lesenswert?

Ich habe mal eine Grundsatzfrage (also die Details sind nicht so 
relevant, nur gerade für mich aktuell): Es gibt ja jede Menge fertige 
und auch gute Libraries, nur sind die immer schon auf einen konkreten 
Einzelfall zugeschnitten. Ich habe jetzt das LPC845-BRK (btw.: Wo 
bekomme ich das draufgeflashte "Ursprungsprogramm" wieder her?) und will 
da ein RFM69 anschließen. Gegenstelle erstmal ein Raspi oder ESP32 oder 
ESP8266 zum Spielen. Da habe ich zugeschnittene Lösungen gefunden. Für 
den LPC845 nun aber nicht.

Da ja sehr viele Sachen auf der gleichen Basis von LowPowerLabs 
aufbauen, wollte ich die auf den LPC845 "portieren". Aber da weiß ich 
irgendwie gar nicht, wie ich strukturiert anfangen soll. Das geht ja 
schon mit
#include <Arduino.h>
los. Da wird so viel Zeug inkludiert und ich weiß nicht, was für 
mich/meine Plattform davon relevant ist.

Muß ich jetzt in den ganzen Dateien "nur" die Teile raussuchen, die 
wirklich RFM-relevant sind und den Rest mit meiner Plattform ersetzen? 
Dazu müßte ich ja den kompletten Chip verstanden haben und dann wäre ein 
kompletter Neuschrieb ja schon fast einfacher (würde ich natürlich nicht 
hinkriegen, meine aber das Prinzip und man hätte auch gleich seinen 
eigenen Stil drin).

von Christian S. (roehrenvorheizer)


Lesenswert?

" Aber da weiß ich irgendwie gar nicht, wie ich strukturiert anfangen 
soll."

Wenn die Vorlagen zu verwirrend sind, könnte das Schreiben eigener 
Software die Lösung sein. Zu Beginn genügt es, wenn mit dem RFM69 die 
SPI-Kommunikation klappt, dann die Statusregister gelesen werden können 
und Du die Betriebsarten umschalten kannst. Später geht es an das 
Reagieren auf Ereignisse mit Hilfe der Flags  der Statusregister. Das 
Datenblatt ist nicht überall wirklich exakt. Du wirst es "lieben" 
lernen.

Ein RFM12 ist da wesentlich einfacher zu bedienen, die Steigerung wäre 
ein RFM70.

MfG

: Bearbeitet durch User
von Johannes S. (Gast)


Lesenswert?

N'Abend schrieb:
> Das geht ja
> schon mit
> #include <Arduino.h>
> los. Da wird so viel Zeug inkludiert und ich weiß nicht, was für
> mich/meine Plattform davon relevant ist.

Das Arduino Include weglassen und sehen wo der Compiler meckert, die 
Funktionen muss man sich dann nachbauen. Es sind im wesentlichen Digital 
I/O, SPI 8-Bit read/write, Interrupthandling für einen Input und eine 
Timerfunktion um Zeitdifferenzen in ms messen zu können.
Ich benutze den RFM69 Code von Lowpowerlabs mit einem LPC812/824 und 
mbed2, nur der 845 ist zu neu und es gibt keine fertigen Code für dieses 
Target. Den LPC845 möchte ich auch noch in mbed2 einbauen, aber im 
Moment komme ich nicht dazu.

Christian S. schrieb:
> Ein RFM12 ist da wesentlich einfacher zu bedienen, die Steigerung wäre
> ein RFM70.

sehe ich anders, der RFM69 hat einen grösseren Fifo und das macht 
einiges einfacher. Die Initialiserung und das Senden/Empfangen ist auch 
alles in der LPL Lib drin. Das kann man in Details noch verbessern aber 
man hat einen funktionierenden Anfang.

von N'Abend (Gast)


Lesenswert?

Ich habe es befürchtet. Also werde ich es am Wochenende mal mit 
Fleißarbeit versuchen. Also mal mit RFM69.h und RFM69.cpp anfangen und 
"fremden" Code verfolgen. Das geht mit Eclipse (F3) ja meistens ganz 
gut. In der Tat scheinen es auf den ersten Blick genau die von Johannes 
genannten Eckdaten zu sein. Ich werde mal versuchen, dann eine 
interfaces.h und interfaces.c o.ä. zu schreiben und dort die "fehlenden" 
Sachen (Funktionen, macros und defines) für meine Architektur 
unterzubringen. Es fallen ja auch viele Sachen weg wie flash, OTA usw..

von N'Abend (Gast)


Lesenswert?

Versuch 1, nun ja, hat nicht so gefruchtet. Ich bin da von einem define 
und ifdef zum nächsten gehüpft und weiß so langsam gar nichts mehr. Was 
gehört zu Arduino, was gehört zur RFM-Lib usw..
Dann noch C++ dazu, wo ich doch gerade mal mit C so halbwegs unfallfrei 
über die Straße komme. Bischen viel auf einmal. Also Strategiewechsel. 
Ich glaube herausgefunden zu haben, daß die Libs (Arduino und RFM) so 
ziemlich jede Variante abdecken (mit #ifdef satt usw.) und ich daher 
nicht durchblicke.
Da ich nur eine Plattform (im Moment LPC845) umsetzen will wird mein 
nächster Versuch sein, alles aus den RFM-Libs rauszuschmeißen und nur 
den Teil nachzubilden, den ich jetzt brauche. Das wird allerdings dazu 
führen, daß bei einem Update der Lib die Diffs in "meiner" Version 
nachgepflegt werden müssen. Also keine Kapselung aller Änderungen in 
einer interfaces .h und .c. Spricht da grundsätzlich was gegen? Wenn ich 
später mehr Durchblick habe, kann ich das ja wieder rückgängig machen.
Denn vom RFM will ich auch langsam etwas verstehen und nicht einfach 
irgendwas kopieren. Zusammenhänge Frequenzhub, Bitrate usw. kenne ich so 
ungefähr, nur nicht bei diesem Chip.
Und ein paar Erfolgsergebnisse fördern halt die Motivation :-)

von Christian S. (roehrenvorheizer)


Lesenswert?

Hallo,

konntest Du anhand der vorhandenen Libs so etwas wie einen Ablaufplan 
erstellen, unter welchem Betriebszustand was nacheinander eingestellt 
oder gelesen werden muß?

MfG

von N'Abend (Gast)


Lesenswert?

Sorry, aber nun hat es auch mich voll erwischt und die Grippeerfahrung 
der Kollegen sagt "1 Woche unfähig zu irgendwas".

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
Noch kein Account? Hier anmelden.