Pollin Funkmodule

#2732781
Lesenswert?

Hallo,
Ich versuche seit einiger Zeit die Funkmodule RFM01 und RMF02 von Pollin 
zum laufen zu kriegen. Mitlerweile ist es mir sogar gelungen das RFM02 
korrekt anzusteuern, leider regt sich seit mitlerweile 1.5Monaten noch 
immer nichts bei dem RFM01. Der Code stammt aus diesem Beitrag: 
Beitrag "Beispielprogramm für RFM12 433MHz Funk-Module" von Benedikt K.. Der 
verwendete Mikrocontroller ist ein Atmega23(programmiert in c) mit einem 
16MHz Quarz(beim Sender wurden die 10MHz des Funkmoduls verwendet).

Ich vermute, dass die Frequenz des SPI nicht stimmt(von diesem Problem 
haben einige berichtet), leider habe ich nicht herausgefunden wie ich 
die Taktrate des SPI anpassen kann?!
1
#define RF_PORT  PORTB
2
#define RF_DDR  DDRB
3
#define RF_PIN  PINB
4

5
#define SDI    5  // SDI,  -> RF02
6
#define SCK    6  // SCK,  -> RF02
7
#define CS    7  // nSEL, -> RF02
8
#define SDO    0  // SDO,  <- RF02
9

10
// nFFS: 1-10k Pullup an Vcc !!!
11

12
static unsigned char sdrssi, sgain;
13

14
void rf01_trans(unsigned short wert)
15
{  unsigned char i;
16

17
  cbi(RF_PORT, CS);
18
  for (i=0; i<16; i++)
19
  {  if (wert&32768)
20
      sbi(RF_PORT, SDI);
21
    else
22
      cbi(RF_PORT, SDI);
23
    sbi(RF_PORT, SCK);
24
    wert<<=1;
25
    _delay_us(0.2);
26
    cbi(RF_PORT, SCK);
27
  }
28
  sbi(RF_PORT, CS);
29
}
30

31
void rf01_init(void)
32
{  unsigned char i;
33
  RF_PORT=(1<<CS);
34
  RF_DDR=(1<<SDI)|(1<<SCK)|(1<<CS);
35

36
  for (i=0; i<11; i++)
37
    _delay_ms(10);      // wait until POR done
38

39
  rf01_trans(0xC2E0);      // AVR CLK: 10MHz
40
  rf01_trans(0xC42B);      // Data Filter: internal
41
  rf01_trans(0xCE88);      // FIFO mode
42
  rf01_trans(0xC6F7);      // AFC settings: autotuning: -10kHz...+7,5kHz
43
  rf01_trans(0xE000);      // disable wakeuptimer
44
  rf01_trans(0xCC00);      // disable low duty cycle
45
}

Ich hoffe ihr könnt/wollt mir helfen :)

MfG Daniel
Gast #2766951
Lesenswert?

Was meinst du mit regt sich nichts?
Versuch mal nicht das init auszuführen sondern einfach mal nach dem 
Start
Int result = rf01_trans(0x0) auszuführen.
Kommt dort was zurück?

Bei mir war meistens wenn's garnicht geklappt hat die verkabelung 
schuld.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren