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