Forum: HF, Funk und Felder nur sporadische Kommunikation mit RFM12


von Benjamin F. (hama87)


Lesenswert?

Hallo,
ich hab bei Pollin 2 RFM12 gekauft, und versuche diese dazu zu überreden 
mit einem PIC zu kommunizieren.
Zum Test bekommt der PIC seinen Takt vom RFM12 und lässt eine LED 
blinken. Dann wird der CLK-Ausgang des RFM12 auf 10MHz umgeschaltet, und 
die LED sollte deutlich schneller blinken.
Das ganze funktioniert auch, allerdings nur sehr sporadisch. Ich muss 
den Befehl ca. 6mal schicken um eine gute Chance zu haben, das er 
korrekt ausgeführt wird.
Meine Frage: Welche Ursachen kann das haben?
Hab es bereits mit Abblockkondensatoren versucht(100nF Keramik), auch 
"nFFS" hab ich testweise über 11kOhm(statt 10) auf +5V gezogen, jeweils 
keinerlei Veränderung.

thanks in advance,
-=)Hama(=-

von Martin S. (lurch)


Lesenswert?

Lässt Du dem RFM12 denn auch seine 100ms Power-On - Zeit, bevor Du den 
Befehl sendest?
Code und Schaltplan könnten eine weitere Fehlersuche erleichtern...

von Benjamin F. (hama87)


Lesenswert?

die 100ms sollten kein Problem sein, ich hab etliche Pausen eingebaut
der Code sieht mittlerweile ziemlich schrecklich aus:
1
;==========================================================================
2
;
3
;       Configuration Bits
4
;
5
;==========================================================================
6
7
_BODEN_ON                    EQU     H'3FFF'
8
_BODEN_OFF                   EQU     H'3FBF'
9
_CP_ALL                      EQU     H'03FF'
10
_CP_75                       EQU     H'17FF'
11
_CP_50                       EQU     H'2BFF'
12
_CP_OFF                      EQU     H'3FFF'
13
_DATA_CP_ON                  EQU     H'3EFF'
14
_DATA_CP_OFF                 EQU     H'3FFF'
15
_PWRTE_OFF                   EQU     H'3FFF'
16
_PWRTE_ON                    EQU     H'3FF7'
17
_WDT_ON                      EQU     H'3FFF'
18
_WDT_OFF                     EQU     H'3FFB'
19
_LVP_ON                      EQU     H'3FFF'
20
_LVP_OFF                     EQU     H'3F7F'
21
_MCLRE_ON                    EQU     H'3FFF'
22
_MCLRE_OFF                   EQU     H'3FDF'
23
_ER_OSC_CLKOUT               EQU     H'3FFF'
24
_ER_OSC_NOCLKOUT             EQU     H'3FFE'
25
_INTRC_OSC_CLKOUT            EQU     H'3FFD'
26
_INTRC_OSC_NOCLKOUT          EQU     H'3FFC'
27
_EXTCLK_OSC                  EQU     H'3FEF'
28
_LP_OSC                      EQU     H'3FEC'
29
_XT_OSC                      EQU     H'3FED'
30
_HS_OSC                      EQU     H'3FEE'
31
32
        __CONFIG        _BODEN_ON & _CP_OFF & _DATA_CP_OFF & _PWRTE_ON & _WDT_OFF & _LVP_OFF & _MCLRE_OFF & _HS_OSC 
33
34
STATUS  EQU  0x03
35
36
RFM12  EQU  0x06
37
SDI  EQU  0x01
38
SCK  EQU  0x00
39
40
RS232   EQU  0x05
41
LED  EQU  0x01
42
43
COUNT1   EQU  0x70
44
COUNT2   EQU  0x71
45
COUNT3   EQU  0x72
46
SEND_H  EQU  0x73
47
SEND_L  EQU  0x74
48
SEND_C  EQU  0x75
49
50
  ORG  0x00 
51
  GOTO  start
52
53
54
  
55
start
56
  BSF  STATUS, 0x05  ;bank1
57
  BCF  RS232, LED  ;led is output
58
  BCF  RFM12, SDI  ;sdi output
59
  BCF  RFM12, SCK  ;sck output
60
  BCF  STATUS, 0x05  ;bank 0
61
62
63
    
64
  MOVLW  0xC0
65
  MOVWF  SEND_H
66
  MOVLW  0xE0
67
  MOVWF  SEND_L
68
  CALL  send
69
  CALL  send
70
  CALL  send
71
  CALL  send
72
  CALL  send
73
  
74
loop1  
75
  
76
77
78
    
79
  BSF  RS232, LED
80
  CALL  pause
81
  GOTO  loop2
82
83
loop2  
84
  BCF  RS232, LED
85
  CALL  pause
86
  GOTO  loop1
87
  
88
pause
89
  MOVLW  0x01
90
  MOVWF  COUNT1
91
pauseloop1  
92
  MOVLW  0x50
93
  MOVWF  COUNT2  
94
pauseloop2
95
  MOVLW  0xFF
96
  MOVWF  COUNT3
97
pauseloop3  
98
  DECFSZ  COUNT3,1
99
  GOTO  pauseloop3
100
  
101
  DECFSZ  COUNT2,1
102
  GOTO  pauseloop2
103
  
104
  DECFSZ  COUNT1,1
105
  GOTO  pauseloop1
106
  RETURN
107
108
send  
109
  MOVLW  0x07
110
  MOVWF  SEND_C
111
sendloop_h
112
  
113
  RLF  SEND_H, 0x1  
114
  BTFSC  SEND_H, 0x0
115
  BSF  RFM12, SDI
116
  
117
  BTFSS  SEND_H, 0x0
118
  BCF  RFM12, SDI
119
  
120
  call  send_pause
121
  BSF  RFM12, SCK
122
  call  send_pause
123
  BCF  RFM12, SCK  
124
  call  send_pause
125
  
126
  DECFSZ  SEND_C,0x1
127
  GOTO  sendloop_h
128
  
129
  MOVLW  0x07
130
  MOVWF  SEND_C
131
132
  call  pause
133
134
sendloop_l
135
  
136
  RLF  SEND_L, 0x1  
137
  BTFSC  SEND_L, 0x0
138
  BSF  RFM12, SDI
139
  
140
  BTFSS  SEND_L, 0x0
141
  BCF  RFM12, SDI
142
  
143
  call  send_pause
144
  BSF  RFM12, SCK
145
  call  send_pause
146
  BCF  RFM12, SCK  
147
  call  send_pause
148
  
149
  DECFSZ  SEND_C,0x1
150
  GOTO  sendloop_l  
151
  
152
  RETURN
153
154
send_pause
155
  NOP
156
  NOP
157
  NOP
158
  NOP
159
  NOP
160
  NOP
161
  NOP
162
  NOP
163
  NOP
164
  NOP
165
  NOP
166
  NOP
167
  NOP
168
  NOP
169
  NOP
170
  NOP
171
  NOP
172
  NOP
173
  NOP
174
  NOP
175
  NOP
176
  NOP
177
  NOP
178
  NOP
179
  NOP
180
  NOP
181
  NOP
182
  NOP
183
  NOP
184
  NOP
185
  NOP
186
  NOP
187
  NOP
188
  NOP
189
  NOP
190
  NOP
191
  NOP
192
  NOP
193
  NOP
194
  NOP
195
  NOP
196
  NOP
197
  NOP
198
  NOP
199
  NOP
200
  NOP
201
  NOP
202
  NOP
203
  NOP
204
  NOP
205
  
206
  RETURN
207
  
208
  END

durch das 6malige senden wird mit großer Sicherheit wirkl der 
Ausgabe-Takt verändert, nur manchmal nicht auf den gewünschten Wert.

Schaltplan hab ich nicht in schriftlicher Form vorliegen, ganz falsch 
kann er aber nicht sein, da die Kommunikation ja manchmal funktioniert, 
oder welche Infos fehlen da konkret?

von Benjamin F. (hama87)


Lesenswert?

hochschieb
hat keiner mehr eine idee? Bräucht nur ein paar Stichworte woran es noch 
liege könnte, weil mir fällt nix mehr ein.
Hab das ganze mit 2 verschiedenen Modulen in 2 Schaltungen ausprobiert, 
beide mal der gleiche Fehler.

von Fasti (Gast)


Lesenswert?

Ich glaube du wartest einfach nicht lange genug, gib dem Modul einfach 
etwas mehr Zeit.
Hast du dir auch mal die Signale am SPI angeschaut? Wie siehts mit den 
Timings für die Schnittstelle aus?

Grüße

Fasti

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.