Forum: Mikrocontroller und Digitale Elektronik Ratlos mit RFM12


von Peter Hacke (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

Seit etwa vier Wochen schlage ich mich mit der Programmierung der RFM12 
Funkmodule von Pollin herum (Bestellnr: 810 049). Ich habe viele 
verschiedene Codes, die ich in diesem und anderen Foren gefunden habe, 
getestet.
Codebeispiele (alle BASCOM):
http://kanal35.npage.de/funkmodul.html

Beitrag "Beispielprogramm für RFM12 433MHz Funk-Module"

http://bascom-forum.de/showthread.php?1600-RFM12-Codebeispiele

Das Programm, dass ich momentan verwende, ist das aus dem ersten Link, 
natürlich auf meine Hardware angepasst, aber mit grundsätzlich gleicher 
Verkabelung.
Zu Beginn habe ich zwei selbstgebaute Platinen (Lochraster) verwendet, 
mittlerweile bin ich um Schaltungsfehler auszuschließen, auf die 
Funkboard-Bausätze (bestellnr. 810 046) von Pollin gewechselt.

Grundsätzlich scheint die SPI Kommunikation (Hardware-SPI) mit dem Modul 
zu funktionieren. Mit einem Oszi habe ich alle relevanten Pins 
überprüft. Am CLK-Pin erhalte ich den eingestellten Takt, am SCK-Pin den 
Takt je nach SPI Clockrate und verwendetem Quarz. Das Auswählen des 
Moduls über nSEL funktioniert und ich erhalte beim Senden und Empfangen 
Datensignale an SDI und SDO. Als Antenne verwende ich ein 16 cm langes 
Stück Cu-Lackdraht.

Nun zu meinem Problem:

Der Empfänger empfängt nichts. Absolut nichts, egal wie lange er läuft.

Stellt man dagegen den Fifo von &HCA83 auf &HCA87 (alles empfangen), so 
erhalte ich als Signal rauschen, also irgedwelche wilden Buchstaben, 
ohne Muster.
Das Interessante dabei ist aber nun, dass mit diesen Einstellungen der 
Empfänger spürt, wenn der Sender eingeschaltet wird. Das ist deutlich 
sichtbar an Lcd, Diode oder Monitor. Der Empfänger spürt auch das 
Einschalten durch drei Stockwerke hindurch. Aber er empfängt  nur 
Nullen, während der gesamten Zeit, in der der Sender an ist. Ist dieser 
aus, wird wieder Rauschen aufgenommen.

In einem Forum habe ich gelesen, dass manche Codebeispiele, nur für 
ältere Versionen von Bascom funktionieren, aber geholfen hat mir das 
nicht.

Mittlerweile gehen mir einfach die Ideen aus. Vielleicht hat hier jemand 
das gleiche Problem. Ich würde mich sehr über eine Antwort freuen.

Grüße,
Peter Hacke

von Dieter (Gast)


Lesenswert?

Hallo Peter

Leider ist in deinem Anhang keine Datei zu sehen.

Gruß Dieter

von RFM (Gast)


Lesenswert?

Eine leere ZIP-Datei ist schon mal kein toller Anfang.

Das &HCA87 schaltet die Sync-Erkennung ab, damit ist der FIFO praktisch 
immer offen.

Peter Hacke schrieb:
> Aber er empfängt  nur
> Nullen, während der gesamten Zeit, in der der Sender an ist.

Damit dürfte klar sein das du auch nur Nullen sendest. Somit kommt auch 
nie ein Sync-Wort beim Empfänger an.

von Peter Hacke (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

Entschuldigung wegen dem leeren Anhang. Jetzt sollte alles drin sein.

Die Bedeutung des &HCA87 ist mir klar. Die Commands habe ich mit dem 
RFM12_EVA Comand Generator erstellt, bzw. von vorhandenen Programmen und 
Datenblättern übernommen.

Viele Grüße,
Peter Hacke

von Peter Hacke (Gast)


Lesenswert?

Hat niemand eine Idee? Vielleicht könnte jemand, der auch die 
Pollinboards hat, mein Programm testen, oder mir seins schicken.
Das würde mir schon sehr helfen.

von Holger W. (holgerw)


Lesenswert?

Leider kenne ich mich mit Bascom und AVR gar nicht aus.
Ich hab das Beispiel von Benedikt aus deinem 2. Link auf PIC C18 
umgesetzt und einige Anwendungen damit laufen.
Ich verwende die Initialisierungen aus dem Link immer noch 1:1 und auch 
Software SPI, dann ist es einfacher einfach mal ein paar andere PINs zu 
verwenden, die gerade frei sind.
Die Berechnung der Baudrate hab ich nicht hinbekommen und hab das durch 
switch mit festen Werten ersetzt.
Ich würde dir raten nimm nochmal die Initialisierungen aus dem Link, 
setze die Baudrate nicht so hoch (ich verwende nur 4800 Baud), teste ob 
die Kommunikation läuft (CLK ändern).

Holger

von Peter Hacke (Gast)


Lesenswert?

Danke für den Vorschlag. Ich werde das morgen früh gleich mal testen.

von Dieter (Gast)


Lesenswert?

Hallo Peter

Ich habe dein Programm die Tage mal getestet und festgestellt, das
dauernd Verkehr auf deinem SPI Bus ist. Ich hatte nicht viel Zeit und 
keinen Mega 32.

Erhöhe mal den Softwarestack und schaue mit dem Ozi die Ports an.

mit den Overlay Variablen würde ich Abstand nehmen.

Schau dir mal High & Low in der Hilfe an.
Meine Funktionen zum senden sehen so aus
1
' Funktionen zum senden von Daten an das RFM 12
2
Sub Rf_data(byval Sdi_byte As Byte)                         'wait for TX FIFO IRQ
3
   Bitwait Nirq , Reset                                     'warten bis bereit
4
   Sdi(1) = &HB8                                            'wir senden Daten
5
   Sdi(2) = Sdi_byte                                        'Datenbyte
6
   Spiout Sdi(1) , 2
7
End Sub
8
9
' Funktion zum senden von Befehlen an das RFM12
10
Sub Rf_cmd(byval Tmp As Word)
11
   Cmd(2) = Low(tmp)
12
   Cmd(1) = High(tmp)
13
   Spiout Cmd(1) , 2
14
End Sub

sdi & cmd sind Arrays.

Ich bekomme die Daten in einem Interupt
1
     Spiin Fifo(1) , 2                                    '1 Byte senden & 1 Byte lesen
2
      byte_recived = Fifo(2)                                'das gelesene Byte liegt an 2. Stelle

Siehe dir dazu mal den spi config befehl an, besonders den letzten 
Parameter in der Zeile
1
 Config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = Yes , Polarity = Low , Phase = 0 , Clockrate = 64 , Noss = 0 , Spiin = &HB0

Gruß Dieter

von Peter Hacke (Gast)


Lesenswert?

Die Änderung der Baudrate hat nichts gebracht. Alles unverändert.

Ich werde mir nun den Vorschlag von Dieter ansehen. Das mit High und Low 
hab ich denk ich soweit verstanden. Dein Vorschlag ist ja so ähnlich wie 
die Programme aus dem dritten Link von meinem ersten Post.

von Holger W. (holgerw)


Lesenswert?

Wollte dich auch nur unterstützen nicht den Mut zu verlieren.
Die Dinger funktionieren wenn man sie einmal beherrscht !

Für PIC habe ich Beispiele da.

Holger

von Peter Hacke (Gast)


Lesenswert?

Hallo,

Oh heut ist ein guter Tag...

Ich habe noch bisschen rumgespielt mit den Beispielen aus dem Bascom 
Forum und siehe da, es läuft. Die Sende- und Empfangsfunktionen sind 
ähnlich wie die von Dieter.

Nochmal herzlichen Dank, an alle, die mir geholfen haben.

von Michael A. (Gast)


Lesenswert?

Peter Hacke schrieb:
> Die Sende- und Empfangsfunktionen sind ähnlich wie die von Dieter.

Vielleicht kannst du deinen funktionierenden Code noch hier posten, 
damit andere mit ähnlichen Problemen an deinem Erfolg Teil haben können.

von Peter Hacke (Gast)


Angehängte Dateien:

Lesenswert?

Kein Problem.
Im Anhang die beiden (bei mir) funktionierenden BASCOM-Programme. Ich 
arbeite mit einem Atmega 32 mit dem internen 8 MHz Takt und den 433 MHz 
RFM12 Modulen (5V). Alles befindet sich auf einem Pollin-Funk-Board und 
ist auf die entsprechenden Pins angepasst.
Autor des Originalprogramms ist Holli, hier nochmal der Link:

http://bascom-forum.de/showthread.php?1600-RFM12-Codebeispiele&highlight=rfm12+codebeispiele

Ich habe den Code auf die 433 MHz angepasst (Initialisierung von &H80e7 
auf &H80d7 umgestellt) und ein paar kleine Sachen verändert, meist mit 
Kommentar.
Für die Erstellung der Commands kann ich den "RFM12_EVA Comand 
Generator" sehr empfehlen.

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.