Hallo Forengemeinde,
ich bin seit Tagen daran die Funkmodule RFM01/02 am laufen zu bekommen.
Bei dem RFM02 habe ich das problem das sich das Testprogramm was ich im
Bascomforum gefunden habe beim senden aufhängt bzw. nicht weiter macht,
wenn er TX einschalten soll. Hier mal das Programm:
1 | ' ########################################################################
|
2 | ' # RF02-Test Bascom
|
3 | ' # Pollin Funk-AVR Board - RFM02 auf dem Board
|
4 | ' ########################################################################
|
5 |
|
6 |
|
7 | $regfile = "M16def.dat"
|
8 | $hwstack = 32
|
9 | $swstack = 10
|
10 | $framesize = 40
|
11 | $crystal = 16000000
|
12 | $baud = 9600
|
13 | 'Baud = 19200
|
14 |
|
15 | Config Pind.2 = Input
|
16 | Nirq Alias Pind.2
|
17 |
|
18 | Config Pind.7 = Output
|
19 | Fsk Alias Portd.7
|
20 |
|
21 | Led Alias Portd.5
|
22 | Config Portd.5 = Output 'LED zur Kontrolle
|
23 |
|
24 | Dim Count As Byte
|
25 | Dim Temp As Byte
|
26 | Dim Cmd(2) As Byte
|
27 |
|
28 |
|
29 | Declare Sub Fsk_send(byval Fsk_byte As Byte)
|
30 | Declare Sub Rf_cmd(byval Tmp As Word) As Word
|
31 |
|
32 |
|
33 | 'config SPI
|
34 | Config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = Yes , Polarity = Low , Phase = 0 , Clockrate = 16 , Noss = 0
|
35 | 'Config Spi = Soft , Din = Pinb.4 , Dout = Portb.3 , Ss = Portb.2 , Clock = Portb.5
|
36 |
|
37 | 'init the spi
|
38 | Spiinit
|
39 |
|
40 | Waitms 100
|
41 |
|
42 | Toggle Led
|
43 |
|
44 | Print "RFM Einstellen"
|
45 |
|
46 | Call Rf_cmd(&Hcc00)
|
47 | Call Rf_cmd(&H8b62) '433MHzband, 11.5pf, fsk90kHz, 2MHz clock
|
48 | Call Rf_cmd(&Ha620) '433.92MHz
|
49 | Call Rf_cmd(&Hc811) '19,2 kbit
|
50 | Call Rf_cmd(&Hc220) 'tx bit sync
|
51 | Call Rf_cmd(&Hc001) 'TX off
|
52 | Call Rf_cmd(&Hd240) 'PLL 25%
|
53 | Call Rf_cmd(&Hb300) '-9 db
|
54 | Call Rf_cmd(&He000) 'disable wakeup timer
|
55 | Toggle Led
|
56 | Print "Alles Eingestellt"
|
57 |
|
58 | Do
|
59 | Print "Sende Daten"
|
60 |
|
61 | 'TX an
|
62 | Call Rf_cmd(&Hc039)
|
63 |
|
64 | 'Preamble 3x AA
|
65 | Call Fsk_send(&Haa)
|
66 | Call Fsk_send(&Haa)
|
67 | Call Fsk_send(&Haa)
|
68 | 'HI/LOW Frame-Erkennung
|
69 | Call Fsk_send(&H2d)
|
70 | Call Fsk_send(&Hd4)
|
71 | 'Daten
|
72 | Call Fsk_send(&H31)
|
73 | Call Fsk_send(&H32)
|
74 | Call Fsk_send(&H33)
|
75 | Call Fsk_send(&H34)
|
76 | Call Fsk_send(&H35)
|
77 | Call Fsk_send(&H36)
|
78 | Call Fsk_send(&H37)
|
79 | Call Fsk_send(&H38)
|
80 | Call Fsk_send(&H39)
|
81 | Call Fsk_send(&H3a)
|
82 | Call Fsk_send(&H3b)
|
83 | Call Fsk_send(&H3c)
|
84 | Call Fsk_send(&H3d)
|
85 | Call Fsk_send(&H3e)
|
86 | Call Fsk_send(&H3f)
|
87 | Call Fsk_send(&H40)
|
88 | Call Fsk_send(&H41)
|
89 | Call Fsk_send(&H42)
|
90 | Call Fsk_send(&H43)
|
91 | Call Fsk_send(&H44)
|
92 | Call Fsk_send(&H45)
|
93 | Call Fsk_send(&H46)
|
94 | Call Fsk_send(&H47)
|
95 | Call Fsk_send(&H48)
|
96 | Call Fsk_send(&H49)
|
97 | Call Fsk_send(&H4a)
|
98 | Call Fsk_send(&H4b)
|
99 | Call Fsk_send(&H4c)
|
100 | Call Fsk_send(&H4d)
|
101 | Call Fsk_send(&H4e)
|
102 | Call Fsk_send(&H4f)
|
103 | Call Fsk_send(&H50)
|
104 | 'Frame-Ende Kennung
|
105 | Call Fsk_send(&Haa)
|
106 | Print "Daten gesendet"
|
107 | 'TX aus
|
108 | Call Rf_cmd(&Hc001) 'TX off
|
109 |
|
110 |
|
111 | Reset Led
|
112 |
|
113 | Wait 2
|
114 |
|
115 | Loop
|
116 |
|
117 | End
|
118 |
|
119 |
|
120 | Sub Fsk_send(byval Fsk_byte As Byte)
|
121 | Toggle Led
|
122 | For Count = 1 To 8
|
123 | While Nirq = 0 'wait NIRQ goes high
|
124 | Wend
|
125 | While Nirq = 1
|
126 | Wend 'wait NIRQ goes low
|
127 | Temp = Fsk_byte And &H80
|
128 | If Temp = &H80 Then
|
129 | Set Fsk
|
130 | Else
|
131 | Reset Fsk
|
132 | End If
|
133 | Shift Fsk_byte , Left
|
134 | Next
|
135 | End Sub
|
136 |
|
137 |
|
138 | Sub Rf_cmd(byval Tmp As Word) As Word
|
139 | Cmd(2) = Tmp And 255
|
140 | Shift Tmp , Right , 8
|
141 | Cmd(1) = Tmp
|
142 |
|
143 | Spiout Cmd(1) , 2
|
144 |
|
145 |
|
146 | End Sub
|
Sieht hier jemand was Falsch läuft?
Danke schonmal für eure Hilfe.