Hallo,
ich hatte zwar schon mal einen Thread zu dem Thema gestartet und auch
ein paar Tips bekommen, welche aber noch keinen Erfolg gebracht haben.
Ich verzweifle jedenfalls gerade an einem RFM02. Habe zwei Eval-Boards
von Pollin mit je einem RFM01 und einem RFM02 und versuche gerade mit
einem kleinen Testprogramm das RFM02 zum laufen zu bringen. Das Programm
bleibt aber immer in der Funktion rf02_txdata hängen und ich finde
einfach nicht heraus, warum.
Hier der Code der Funktion:
1 | void rf02_txdata(unsigned char *data, unsigned char number)
|
2 | { unsigned char i,wert;
|
3 | wert=0xC6;
|
4 | cbi(CS_PORT, CS);
|
5 | for (i=0; i<8; i++)
|
6 | {
|
7 | if (wert&128)
|
8 | sbi(SDI_PORT, SDI);
|
9 | else
|
10 | cbi(SDI_PORT, SDI);
|
11 | sbi(SCK_PORT, SCK);
|
12 | wert<<=1;
|
13 | _delay_us(0.2);
|
14 | cbi(SCK_PORT, SCK);
|
15 |
|
16 | }
|
17 | rf02_shiftout(0xAA);
|
18 | rf02_shiftout(0xAA);
|
19 | rf02_shiftout(0xAA);
|
20 | rf02_shiftout(0x2D);
|
21 | rf02_shiftout(0xD4);
|
22 | for (i=0; i<number; i++)
|
23 | rf02_shiftout(*data++);
|
24 | sbi(CS_PORT, CS);
|
25 | while(IRQ_PIN&(1<<IRQ)); // wait until transfer done
|
26 | rf02_trans(0xC464); // TX off after 10us
|
27 | }
|
und hier mein kleines Testprogramm:
1 | #include <avr/io.h>
|
2 | #include <avr/interrupt.h>
|
3 | #include <avr/pgmspace.h>
|
4 | #include <avr/eeprom.h>
|
5 | #include <stdlib.h>
|
6 | #include <util/delay.h>
|
7 | #include "global.h"
|
8 | #include "rf02.h"
|
9 |
|
10 | #define Taster_PORT PORTB
|
11 | #define Taster_DDR DDRB
|
12 | #define Taster_PIN PINB
|
13 | #define Taster 1
|
14 |
|
15 | #define LED_PORT PORTD
|
16 | #define LED_DDR DDRD
|
17 | #define LED_PIN PIND
|
18 | #define LED 5
|
19 |
|
20 |
|
21 | unsigned char test[2]="01";
|
22 |
|
23 | int main(void)
|
24 | {
|
25 | Taster_DDR &= ~(1<<Taster);
|
26 | LED_DDR |= (1<<LED);
|
27 |
|
28 | rf02_init(); // ein paar Register setzen (z.B. CLK auf 10MHz)
|
29 | rf02_setfreq(RF02FREQ(433.92)); // Sende/Empfangsfrequenz auf 433,92MHz einstellen
|
30 | rf02_setpower(0); // -0dBm Ausgangangsleistung
|
31 | rf02_setmodfreq(3); // 120kHz Frequenzshift
|
32 | rf02_setbaud(19200); // 19200 Baud
|
33 |
|
34 |
|
35 | while(1)
|
36 | {
|
37 | if (Taster_PIN & (1<<Taster))
|
38 | {
|
39 | rf02_txdata(test,2);
|
40 | LED_PORT |= (1<<LED);
|
41 | _delay_ms(1000);
|
42 | LED_PORT &= ~(1<<LED);
|
43 | }
|
44 | }
|
45 | }
|
Die gesamte Library für das rfm02 habe ich mal in den Anhang gepackt.
Hoffe Ihr könnt mir weiterhelfen. Schon mal vielen Dank für jegliche
Hilfe.