Forum: Mikrocontroller und Digitale Elektronik RFM02 hängt beim senden (Bascom)


von Schraube (Gast)


Lesenswert?

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.

von A&E (Gast)


Lesenswert?

Funktioniert die SPI Übertragung zum Modul und zurück?

von Schraube (Gast)


Lesenswert?

Bisher konnte ich nur feststellen das mein Programm dort nicht weiter 
macht. Wie kann ich das überprüfen ob SPI überträgt?

von holger (Gast)


Lesenswert?

Die Ansteuerung von nSEL fehlt komplett.
Dafür nimmst du einfach den SS Pin vom ATMega.
Damit löst sich dann vermutlich auch dein SPI Problem.

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.