Hallo zusammen,
auch wenn das der X-te Beitrag mittlerweile zu dem RFM12, finde ich
nirgends ein Beitrag mit dem gleichen Problem..
Folgender Hardware-Aufbau auf Steckbrett:
2x: PIC18 über fünf Port-Pins mit RFM12 verbunden
(SDI,SDO,SCK,nSEL,nIRQ)
Der eine PIC soll das RFM12 als Empfänger und der andere als Sender
verwenden.
Als Monoantenne ist ein Stück Draht (~16,7 cm) am Antennen-Pin der
RFM12.
Nachdem ich erfolglos das Codebeispiel aus dem Datenblatt
(http://www.hoperf.com/upload/rf/RF12.pdf) für den C18-Compiler portiert
habe,
habe ich den Treiber von Christian Stadler eingebunden
(http://www.picprojects.net/rfm12/index.html9)
Das Schreiben über den SPI funktioniert ordentlich und die
Mindestabstände im Timing Diagramm werden auch eingehalten.
Der Status des RFM12 lässt sich auch aulesen (zumind. bekomme ich eine
Antwort vom Modul).
Allerdings sind die Bits 8 und 10 bis 15 immer 0 beim Empfänger. Bit 9
ist gelegentlich gesetzt (FIFO-Puffer ist leer ) und Bit 0 bis 7
variieren.
DQD meist gesetzt:
1 | iStatus = RFM12_Write(0x0000); //Status => 0x0080
|
2 | /* enable RX */
|
3 | RFM12_Write(0x82C8);
|
4 | iStatus = RFM12_Write(0x0000); //Status => 0x00A0
|
5 | /* wait until FIFO ready */
|
6 | while (!(RFM12_GetSDO())); //Hier bleibt der Empfänger für immer...
|
Nach dem Aktivieren des Empfänger durch 0x82C8 warten das Programm
vergeblich, bis das "Busy-Flag" vom Modul TRUE wird...
Beim Sender hingegen ist im Status vor dem Aufruf von RFM_TxData(...)
nur Bit 15 gesetzt - also Sender bereit
1 | iStatus = RFM12_Write(0x0000); //Status => 0x8000
|
2 | RFM12_TxData(txbuf, 8);
|
3 | iStatus = RFM12_Write(0x0000); //Status => 0xA000
|
Nach dem Senden ist Bit 13 zudem gesetzt - "RGUR" Register underrun.
(Status 0xA000)
Wenn ich den Status nach dem Aktivieren des Senders
(RFM12_Write(0x8238)) aber noch vor dem eigentlichen Senden auslese
steht dort 0xA100 -
ATS ist gesetzt... "Das Antennenabstimmschaltung hat ein starkes
Radiosignal detektiert (Was auch immer das bedeutet. Könnte auch
perfekte Antennen-Fehlanpassung beim Senden sein.)"
Aktuell habe ich noch die Schwierigkeit ausser ein Debugger für die
PIC's und ein Multimeter kein weiteres "Debugging-Werkzeug" zu
besitzen...Also an ein Oszi komme ich erst in ein paar Tagen.
Die relevanten Codedateien und ein Bild vom Steckbrettaufbau sind im
Anhang.
Bisher habe ich in den ganzen Forenbeiträgen immer nur von Problemen in
der Art "verstümelter Empfang" u.ä. gelesen, aber dass gar nichts geht
ist mir noch nicht untergekommen.
Ich vermute auch aus dem Grund, dass ich zum einen das Codebeispiel aus
dem Datenblatt und zum anderen einen funktionierenden Treiber
(http://www.picprojects.net/rfm12/index.html) ausprobiert
habe und auch kein Fehler in den Funktionen zum Schreiben der Register
vom RFM12 finde, dass der Fehler in der Hardware steckt.
Mir ist es leider während der IBN zudem noch passiert, dass während des
Betriebs beide Antennen aneinander gekommen sind...Ich kann leider nicht
sagen, ob mir das die beiden Module
nun übel nehmen oder ob tatsächlich noch ein Fehler im Code steckt.
Kann einer helfen?
Danke schonmal im vorraus für eure Antworten ;-)