Forum: HF, Funk und Felder RFM12 @ PIC18 - Probleme beim Empfang / Senden


von Daniel (Gast)


Angehängte Dateien:

Lesenswert?

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 ;-)

von Daniel (Gast)


Lesenswert?

Hallo zusammen,

ich habe das Modul mittlerweile zum Laufen gebracht.
Im Nachhinein ist auch klar weshalb man mit der obigen 
Problemschilderung kaum auf die Lösung kommen kann.
Ich verwende einen Soft-SPI. Durch das Ersetzten des 4 Mhz Resonators 
auf einen 8 Mhz Resonator war das Problem schlagartig verschwunden (PLL 
aktiv). Offensichtlich reichen 4 Mhz (*4 / PLL) für den Soft-SPI des 
Treibers bzw. für das Modul nicht aus - mit den 8 * 4 Mhz funktioniert 
es nun wunderbar.
Hinweis: Ich habe nur das Demoprogramm am Laufen gehabt als das Problem 
aktuell war, also war keine weitere Arbeit für den PIC ausser 
Senden/Empfangen bzw. Soft-SPI...

von F. Ehler (Gast)


Lesenswert?

Ich tippe da eher auf zwei Schalltungsfehler. Oder das Osccon steht 
falsch. Vdd sollte nicht groesser als 5,3 Volt sein.

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.