www.mikrocontroller.net

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


Autor: Benjamin Firl (hama87)
Datum:

Bewertung
0 lesenswert
nicht 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(=-

Autor: Martin S. (lurch)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Benjamin Firl (hama87)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
die 100ms sollten kein Problem sein, ich hab etliche Pausen eingebaut
der Code sieht mittlerweile ziemlich schrecklich aus:
;==========================================================================
;
;       Configuration Bits
;
;==========================================================================

_BODEN_ON                    EQU     H'3FFF'
_BODEN_OFF                   EQU     H'3FBF'
_CP_ALL                      EQU     H'03FF'
_CP_75                       EQU     H'17FF'
_CP_50                       EQU     H'2BFF'
_CP_OFF                      EQU     H'3FFF'
_DATA_CP_ON                  EQU     H'3EFF'
_DATA_CP_OFF                 EQU     H'3FFF'
_PWRTE_OFF                   EQU     H'3FFF'
_PWRTE_ON                    EQU     H'3FF7'
_WDT_ON                      EQU     H'3FFF'
_WDT_OFF                     EQU     H'3FFB'
_LVP_ON                      EQU     H'3FFF'
_LVP_OFF                     EQU     H'3F7F'
_MCLRE_ON                    EQU     H'3FFF'
_MCLRE_OFF                   EQU     H'3FDF'
_ER_OSC_CLKOUT               EQU     H'3FFF'
_ER_OSC_NOCLKOUT             EQU     H'3FFE'
_INTRC_OSC_CLKOUT            EQU     H'3FFD'
_INTRC_OSC_NOCLKOUT          EQU     H'3FFC'
_EXTCLK_OSC                  EQU     H'3FEF'
_LP_OSC                      EQU     H'3FEC'
_XT_OSC                      EQU     H'3FED'
_HS_OSC                      EQU     H'3FEE'

        __CONFIG        _BODEN_ON & _CP_OFF & _DATA_CP_OFF & _PWRTE_ON & _WDT_OFF & _LVP_OFF & _MCLRE_OFF & _HS_OSC 

STATUS  EQU  0x03

RFM12  EQU  0x06
SDI  EQU  0x01
SCK  EQU  0x00

RS232   EQU  0x05
LED  EQU  0x01

COUNT1   EQU  0x70
COUNT2   EQU  0x71
COUNT3   EQU  0x72
SEND_H  EQU  0x73
SEND_L  EQU  0x74
SEND_C  EQU  0x75

  ORG  0x00 
  GOTO  start


  
start
  BSF  STATUS, 0x05  ;bank1
  BCF  RS232, LED  ;led is output
  BCF  RFM12, SDI  ;sdi output
  BCF  RFM12, SCK  ;sck output
  BCF  STATUS, 0x05  ;bank 0


    
  MOVLW  0xC0
  MOVWF  SEND_H
  MOVLW  0xE0
  MOVWF  SEND_L
  CALL  send
  CALL  send
  CALL  send
  CALL  send
  CALL  send
  
loop1  
  


    
  BSF  RS232, LED
  CALL  pause
  GOTO  loop2

loop2  
  BCF  RS232, LED
  CALL  pause
  GOTO  loop1
  
pause
  MOVLW  0x01
  MOVWF  COUNT1
pauseloop1  
  MOVLW  0x50
  MOVWF  COUNT2  
pauseloop2
  MOVLW  0xFF
  MOVWF  COUNT3
pauseloop3  
  DECFSZ  COUNT3,1
  GOTO  pauseloop3
  
  DECFSZ  COUNT2,1
  GOTO  pauseloop2
  
  DECFSZ  COUNT1,1
  GOTO  pauseloop1
  RETURN

send  
  MOVLW  0x07
  MOVWF  SEND_C
sendloop_h
  
  RLF  SEND_H, 0x1  
  BTFSC  SEND_H, 0x0
  BSF  RFM12, SDI
  
  BTFSS  SEND_H, 0x0
  BCF  RFM12, SDI
  
  call  send_pause
  BSF  RFM12, SCK
  call  send_pause
  BCF  RFM12, SCK  
  call  send_pause
  
  DECFSZ  SEND_C,0x1
  GOTO  sendloop_h
  
  MOVLW  0x07
  MOVWF  SEND_C

  call  pause

sendloop_l
  
  RLF  SEND_L, 0x1  
  BTFSC  SEND_L, 0x0
  BSF  RFM12, SDI
  
  BTFSS  SEND_L, 0x0
  BCF  RFM12, SDI
  
  call  send_pause
  BSF  RFM12, SCK
  call  send_pause
  BCF  RFM12, SCK  
  call  send_pause
  
  DECFSZ  SEND_C,0x1
  GOTO  sendloop_l  
  
  RETURN

send_pause
  NOP
  NOP
  NOP
  NOP
  NOP
  NOP
  NOP
  NOP
  NOP
  NOP
  NOP
  NOP
  NOP
  NOP
  NOP
  NOP
  NOP
  NOP
  NOP
  NOP
  NOP
  NOP
  NOP
  NOP
  NOP
  NOP
  NOP
  NOP
  NOP
  NOP
  NOP
  NOP
  NOP
  NOP
  NOP
  NOP
  NOP
  NOP
  NOP
  NOP
  NOP
  NOP
  NOP
  NOP
  NOP
  NOP
  NOP
  NOP
  NOP
  NOP
  
  RETURN
  
  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?

Autor: Benjamin Firl (hama87)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Fasti (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.