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