Hallo alle zusammen, ich beschäftige mich seit geraumer Zeit mit den RFM12B Funkmodulen, dabei habe ich mich weitest gehend an folgenden Beitrag orientiert: Beitrag "Re: Beispielprogramm für RFM12 433MHz Funk-Module" Meine RFM12B Funkmodule sind für ein 868 Mhz Band ausgelegt und über einen Spannungsteiler mit den Atmega 1284P verbunden. Wobei FSK/DATA/nFFS über ein 10K Pullup Widerstand mit vdd(ca. 3.3V) verbunden ist. Ich benutze ausschließlich CS,SDO, SDI und SCK. Die Verdrahtung scheint auch richtig zu sein, weil die Init soweit durchläuft und ich am CLK Ausgang des Rfm12B 10 Mhz messe. Ich kann auch beide Module auf Senden einstelle und dies Klappt ebenso einwandfrei. Ich sehe dann auf meinen Spektrumsanalysator ein sehr eindeutiges Signal in meinen Frequenzbereich. Mein Code den ich verwende ist im Anhang verfügbar. Vielleicht sieht von euch jemand den Fehler. MFG
Schau dir mal auf ARSSI an, ob das Modul überhaupt einmal ein Signal bekommt. Das ist einer der SMD-Kondensatoren am Rand auf dem Modul. Bekommt das Modul ein Signal (erkennbar am Anstieg der Spannung an ARSSI) kann es noch sein, dass der FIFO nicht triggert. Das kann man an einem der Pins des Moduls mit dem OSZI anschauen (MISO glaube ich). Hast du an ARSSI was, am FIFO nichts, ist das Modul schon mal auf Empfang, aber der FIFO triggert nicht. Kleiner Tipp: Erfolg hatte ich damit: Den gleichen Chip verkauft Microchip auch, unter dem Namen MRF49XA (vermutlich gebrandet). Da gibts ein Codebeispiel und eine Appnote dazu. http://www.microchip.com/wwwproducts/Devices.aspx?product=MRF49XA Das Beispiel lief bei mir - nach Änderung der Frqeuenz - sofort. Die Portierung sollte recht einfach sein, es ist ja nur eine Software-SPI.
Am ARSSI Pin 15 messe ich 0V...?Muss das RFM12B anders eingestellt werden als das RFM12? Ich bin gerade etwas überfragt... MFG
hiho, bin auch derzeitig dabei das RFM12b 868 Mhz zum empfangen zu bringen. Bzw arbeite mit Bastelbube zusammen. Und ich habe vergebens versucht am Kondensator eine spannung zu messen. Ich habe das jedenfalls so verstanden das wenn ein HF Signal empfangen wird das sich die spannung an diesem Kondensator von ca 450mV auf 1150 mV ändern soll?. Kann man ja auch gut im Datenblatt sehen. Passiert dies bei jedem HF Signal oder nur nur beim 1. Empfangenden. btw habe an mehreren Punkten mit einem Speicheroziloskop gemessen konnte nix feststellen. Das heisst doch das unser Empfänger kein HF-Signal misst. Die Bandbreite seht aber schon 200kHz und beide module werden druch die gleiche ini initialisiert. Und müsste mann nicht sowieso noch 2 Zusätzliche Register in der INI aufrufen, da wir ja ein RFM 12b haben. Welche noch das 12. PPL Settings(CC77) und das 8. Synchron Pattern(CED4). Damit etwas passiert? MFG
Auch wenn jetzt viele schreien werden. Schau Dir mal die RFM12 Teile der für Arduino vorgesehenen Lib an: https://github.com/jcw/jeelib Die können problemlos (wenig Modifikationen sind nötig) auch ohne Arduino-Basis verwendet werden. Ich hatte zunächst ebenfalls Probleme mit dem RFM12; habe keine Datenübertragung hinbekommen. Daher nahm ich einfach ein Arduino-Beispiel und schrieb dieses auf zwei Attiny84. Nun hatte ich eine funktionierende Verbindung auf die ich aufbauen kann. Ich habe jetzt auf jeden Fall einen funktionierenden Teil und kann den anderen selber entwickeln.
Norbert Windmann schrieb: > Auch wenn jetzt viele schreien werden. > Schau Dir mal die RFM12 Teile der für Arduino vorgesehenen Lib an: > https://github.com/jcw/jeelib > Die können problemlos (wenig Modifikationen sind nötig) auch ohne > Arduino-Basis verwendet werden. > > Ich hatte zunächst ebenfalls Probleme mit dem RFM12; habe keine > Datenübertragung hinbekommen. Daher nahm ich einfach ein > Arduino-Beispiel und schrieb dieses auf zwei Attiny84. Nun hatte ich > eine funktionierende Verbindung auf die ich aufbauen kann. Ich habe > jetzt auf jeden Fall einen funktionierenden Teil und kann den anderen > selber entwickeln. Danke für die Hilfe hab eine Lib mit klappt ja auch senden. Wollt schon gern wissen wieso es nicht funktioniert und dies auch ändern. Weil ich so schon recht viel gelehrnt habe. Daher fände ich es nicht so gut wieder auf neue lib um zu steigen, wobei ich auch keine Erfahung von Arduino habe. ergänzend zu meinem vorherigen Beitrag hatte leider kleinen fehler bei der Software-Spi, hatte da bissel rumgespielt. Jetzt konnte ich ne spannung von ca 400mV messen am ARSSI messen. Aber leider den Sprung auf die besagte 1000mv konnte ich nicht festellen. Wäre für weitere denkanstöße offen :) MFG
Update: WehOhWeh schrieb: > Bekommt das Modul ein Signal (erkennbar am Anstieg der Spannung an > ARSSI) kann es noch sein, dass der FIFO nicht triggert. Das kann man an > einem der Pins des Moduls mit dem OSZI anschauen (MISO glaube ich). heute morgen habe ich nochmal beide module angeschlossen einen auf senden gestellt und den anderen auf empfangen. Und nochmals an am ARSSI gemessen ich konnte ein Flanken wechsel festellen aber leider von ca 300mv auf 0V. Kann das auch sein kann man das mit einem Register umstellen?. Und wenn unser Empfänger ein Hf signal empfängt, schlägt die Fifo triggerung fehl? Dann sollte ich mir also das Register 0xCA-XX anschauen. MFG
Die Art und Weise, wie du empfangen willst, wird nicht funktionieren, weil beim RFM12 aufgrund des kleinen Puffers der Empfang quasi in Echtzeit abgehandelt werden muss und du mit deiner Sequenz "Einschalten - sofort FIFO auslesen" den genauen Empfangszeitpunkt nie erwischen wirst. Also musst du den Receiver dauerhaft eingeschaltet haben und immer wieder den FIFO-Status (MSB im Status-Register) abfragen. Erst wenn dieses Bit 1 ist, befinden sich Daten im FIFO, die dann relativ fix ausgelesen werden sollten, damit es keinen Überlauf gibt (FIFO ist nur 16 Bit groß!). In der main.c muss es also etwa so aussehen (ich verwende den Synthesizer, also schicke ich 82D8 und nicht 82C8):
1 | rfm_cmd(0x82D8); // RX on (set bit ER in Power Management) |
2 | rfm_cmd(0xCA81);// set FIFO mode |
3 | rfm_cmd(0xCA83);// enable FIFO: sync word search |
4 | |
5 | for (;;) { |
6 | if(rfm_trans(0x0000) & 32768) { |
7 | receive(); |
8 | }
|
9 | }
|
Aus der rxdata-Funktion musst du die drei rfm_trans-Befehle vor der for-Schleife dementsprechend rausschmeißen.
:
Bearbeitet durch User
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.