Hallo alle meiteinander =) Ich bastel schon einige Zeit an einer Funkbrücke zwischen 2x Arduino Pro Mini 328p 5V/16Mhz auf basis der RFM70 Funkmodule. Die Wahl ist auf diese Funkmodule gefallen, da ich für die Schaltung nur begrenzten Platz habe. Ich habe mir aus verschiedenen Quellen einen Code zusammengesucht, weil ich mich mit diesen Funkmodulen noch nicht sehr gut auskenne und das Datenblatt etwas dürftig ist. Langsam weiß ich aber nicht mehr, was ich noch versuchen könnte. Ich krieg einfach nichts übertragen. Die Pinbelegung sieht so aus: Schaltung wird mit 3,3V versorgt (<-könnte hier schon das Problem liegen?) Das SPI Interface der Funkmodule ist mit den Arduinos verbunden Miso=Miso, Mosi=Mosi, CSN=SS Pin14, CE=Pin 1, SCK=SCK, IRQ=INT0 Pin32 am Atmega328p. Die Arduinos hängen fürs Debugging an jeweils einer seriellen Verbindung zum PC, damit ich sehen kann ob was ankommt. Nach meinen jetzigen Tests kommt eine Verbindung zwischen Arduino und RFM70 zustande, aber nicht zwischen den beiden RFMs. Ich wäre mehr als dankbar, wenn mir jemand von euch Profis weiterhelfen könnte. Grüße Modellflieger
Modellflieger schrieb: > das Datenblatt etwas dürftig ist Das würde ich so nicht sagen. Da steht schon alles drin, was man wissen muss. Für den Anfang vermisst man halt einen Ablaufplan, der einem die notwendigen Schritte zur Initialisierung vorgibt. Das nächste Problem ist das Zusammensuchen von Code aus verschiedenen Quellen. Es gibt zwar den Beispiel-Code vom Hersteller, aber der ist auch nicht 100%ig sinnvoll. Es werden z.B. Register mit demselben Inhalt initialisiert, den sie nach dem Einschalt-Reset sowieso schon haben. Und es werden auch einzelne Bit gesetzt, obwohl sie oder das ganze Register den Status "read only" haben. Also macht man sich die Mühe, die Register alle der Reihe nach anzuschauen un kann dann überlegen, welchen Wert man ihnen verpasst. Zur Inbetriebnahme der Module muss natürlich zuerst die SPI-Schnittstelle funktionieren. (Clock Idle Low und senden mit steigender Clockflanke). Die Initialisierung von Sender und Empfänger läuft dann wie folgt: Wartezeit nach dem Einschalten. In Bank 0 die Register 0-7 und 17-22 beschreiben, dann in Bank 1 die Register 0-5 und 12-14. Dann zur Bank 0 zurückschalten und das ACTIVATE-Kommando ausführen. Jetzt fehlen noch die Register 28 und 29 in Bank 0 und das Kommando FLUSH_TX oder FLUSH_RX, jenachdem, ob gesendet oder empfangen werden soll. (Tx und Rx Init unterscheiden sich nur im Register 0 in Bank 0 und dem FLUSH_TX oder _RX Kommando. Die Init ist somit fertig. Erst jetzt schalte ich die Chip-Enable Leitung auf High. Dann kanns losgehen: beim Sender: - Status lesen, wenn Bit5, TX_DS Data sent "0" ist - per Kommando W_TX_PAYLOAD Daten in den Tx-FIFO schreiben - warten, bis das RF-Modul mit Daten senden fertig ist -> IRQ Pin "Low" - IRQ löschen (Bit5, TX_DS im Status Register auf "1" setzen) - ... beim Empfänger: - warten, bis das RF-Modul Daten empfangen hat -> IRQ Pin "Low" - per Kommando W_RX_PAYLOAD Daten aus dem Rx-FIFO lesen - IRQ löschen (Bit6, RX_DR im Status Register auf "1" setzen) - ... Ach ja, bei der Wahl der RF-Frequenz sollte man vielleicht nicht dieselbe wählen, die man fürs eigene WLAN benutzt oder die des Nachbarn. Viel Erfolg.
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.