Forum: Mikrocontroller und Digitale Elektronik RFM12 (Code von www.skutek.de)


von Otto (Gast)


Lesenswert?

Guten Abend,

ich arbeite nun schon ewig daran 2 868Mhz RFM12 Module zum laufen zu 
bringen!
Eigene Versuche mit http://www.mikrocontroller.net/articles/RFM12 
brachten mich nicht weiter.
Ich versuche nun einfach mal irgendwas zu senden und zu empfangen!
Habe dazu diese Anleitung entdeckt: 
http://www.skutek.de/projekte/funkmodul/funkmodul.html

Schaut ja ganz gut aus Hardware ist vorhanden, blos bräuchte ich mal 
einen kompletten Beispielcode. z.B. habe ich keine Ahnung was ich mit 
"RFM12_TX_DATA" in der Funktion "rfm12_data_io..." machen soll.
Und wie ich den ganzen Rest deklarieren soll.
Hat jemand zufälligerweise mal diesen Code benutzt und kann mir ein 
komplettes Beispiel zur Verfügung stellen?
Das wäre wirklich sehr nett, ich versuche schon ewig da mal irgendwas 
zum laufen zu bringen!


Ich wünsche noch einen schönen Abend!

Mit freundlichen Grüßen

Otto

von holger (Gast)


Lesenswert?

>Eigene Versuche mit http://www.mikrocontroller.net/articles/RFM12
>brachten mich nicht weiter.

Warum nicht? Probleme zeigen.

von Otto K. (otto8)


Angehängte Dateien:

Lesenswert?

Hallo,

habe mich nun noch einmal mit 
http://www.mikrocontroller.net/articles/RFM12 befasst.
Gleichzeitig habe ich dazu das Programm von Benedikt K. 
Beitrag "Re: Beispielprogramm für RFM12 433MHz Funk-Module" benutzt.

Rausgekommen ist der Code im Anhang für 868Mhz Modul.
Änderungen:
Grundkonfiguration 80xx auf 868Mhz angepasst.
Frequenzeinstellung Axx auf 868,32 Mhz --> 1664
Und noch | eingefüt "RF_PORT =(1<<CS);" --> "RF_PORT |=(1<<CS);" muss 
das so?

Reichen diese Einstellungen für ein 868Mhz Modul?

Das angehängt RFM12 send.txt verstehe ich soweit, aber wie genau sende 
ich jetzt? Einfach anstatt send receive, aber wo wird dann das Interrupt 
Bit im Status Register abgefragt?

Mit freundlichen Grüßen
Otto

von msk (Gast)


Lesenswert?

Otto schrieb:
> Schaut ja ganz gut aus Hardware ist vorhanden, blos bräuchte ich mal
> einen kompletten Beispielcode. z.B. habe ich keine Ahnung was ich mit
> "RFM12_TX_DATA" in der Funktion "rfm12_data_io..." machen soll.
> Und wie ich den ganzen Rest deklarieren soll.

Eine etwas späte Antwort, aber hoffentlich nicht zu spät:

Die Funktion rfm12_data_io() kann den Senderpuffer beschreiben (also 
Senden), das Empfangsfifo auslesen (also der Empfangsbetrieb) oder auch 
das Kontrollregister setzen/lesen. Dafür gibt es die drei Definitionen 
RFM12_TX_DATA, RFM12_RX_DATA und RFM12_REGISTER_DATA. Damit wird also 
die Funktion rfm12_data_io() mittels des letzten Parameters entsprechend 
gesteuert.
Direkt auf der Webseite ist ja auch ein Beispiel, um Daten zu versenden.

Die Initialisierung des Moduls erfolgt einfach mit den Funktionen 
rfm12_pin_init() und rfm12_init(), dabei ist natürlich die individuelle 
Pinbelegung in port_definitions.h entsprechend anzupassen (der Abschnitt 
mit den RFM12-Einträgen)!

Beispielcode wäre also:
1
uint16_t transmit_buffer[RFM12_TXBUFFER_LENGTH];
2
3
rfm12_pin_init();
4
rfm12_init();
5
6
transmit_buffer[0] = 0xb8aa; //sync byte
7
transmit_buffer[1] = 0xb8aa; //sync byte
8
transmit_buffer[2] = 0xb8aa; //sync byte
9
transmit_buffer[3] = 0xb8aa; //sync byte
10
transmit_buffer[4] = 0xb82d; //sync pattern (high byte)
11
transmit_buffer[5] = 0xb8d4; //sync pattern (low byte)
12
13
transmit_buffer[6] = <--- fortfolgende Einträge mit Nutzdaten befüllen
14
...
15
...
16
transmit_buffer[RFM12_TXBUFFER_LENGTH-2] = 0xb8aa; //sync byte
17
transmit_buffer[RFM12_TXBUFFER_LENGTH-1] = 0xb8aa; //sync byte
18
19
20
rfm12_data_io(transmit_buffer, receive_buffer, RFM12_TXBUFFER_LENGTH, RFM12_TX_DATA);

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.