Forum: Mikrocontroller und Digitale Elektronik RFM69 kein empfang im buffered Mod


von Jogi (Gast)


Lesenswert?

Hallo kann da mal einer drauf schauen ?

Das senden Funktioniert bis auf 2 Eigenheiten
1. Die länge des Sync-wortes gebe ich mit 1 an aber es sendet beide
2. Es scheint als ob der crc code immer mitgesendet wird.

Aber mein Hauptproblem ist der empfang.
Es kommt nicht zum FifoNotEmpty signal am Dio 0 Beim RFM
Das Programm bleibt beim label Empfan_1 hängen.

************************************************************************ 
*****
;
; Teilcode ATmega88
;
;-----------------------------------------------------
;-----------------------------------------------------
.MACRO RFM_command      ;adr. ,wert
  ldi  RxTx_Hi, @0
  ldi  RxTx_Lo, @1
  rcall SPI_W_16
.ENDMACRO


;-----------------------------------------------------
;
;   RFM69 initialisierung
;
;

  RFM_command  RegDataModul,0                     ; FSK Packet

        RFM_command  RegFdevMsb , $2                    ; FM Hub 40KHz 
(40000Hz / 61Hz = 655 = 28F)
        RFM_command  RegFdevLsb , $8F                   ;

        RFM_command  RegRxBW , 0b01010011               ; bandbreite 41 
KHz (DccFreq 7-5, RxBwMant 4-3, RxBwExp 2-0)

        rcall  Frequenz

        RFM_command  RegRxTimeout1 , 0
        RFM_command  RegRxTimeout2 , 0

        RFM_command  RegBitRateMsb ,$29                 ;Datenrate 
(32000000Hz / 3000bit = 10666,7) =10666=$29ab = 2999,91 bit
        RFM_command  RegBitRateLsb ,$AB

        RFM_command  RegPreambleMsb , $0
        RFM_command  RegPreambleLsb , $4                ;4 byte preamble

        RFM_command  RegSyncConfig  ,0b10001000         ;SyncOn 7 , 
FifoFillCondition 6 , SyncSize 5-3 ,SyncTolleranz 2-0
        RFM_command  RegSyncValue_1 , $2D               ; setze 
sync-wort pattern auf &H2DD4
        RFM_command  RegSyncValue_2 , $D4               ;

        RFM_command  RegDIOMap1 , 0b00000000            ;
        RFM_command  RegDIOMap2 , 0b00000111

        RFM_command  RegPacketConfig1 ,0b00001000       ;PacketFormat 7, 
DcFree 6-5, CrcOn 4,  CrcAutoClearOff 3  AddressFiltering 2-1 , bit 0 
unused
        RFM_command  RegPacketConfig2 ,0b00000100
        RFM_command  RegPayloadLength ,0

        RFM_command  RegFifoThresh,0b10000000 
;TxStartCondition =1

  RFM_command  RegPaLevel, 0b10000000
        RFM_command  RegTestPa1, $55
        RFM_command  RegTestPa2, $70

  RFM_command  RegOpMode ,  0b00001000           ;Frequency Synthesizer 
mode


  rjmp Empfang


;-----------------------------------------------------
Senden:
  LED_an
  Warte_001_sec 200      ;warte 2 sec
  LED_aus
  RFM_command  RegPaLevel, 0b01110000     ;+5dB
  RFM_command  RegTestPa1, $5D
        RFM_command  RegTestPa2, $7c
        cbi   Port_SPI,SPI_CS                 ;setze burstwrite
        ldi   RxTx_Lo,Fifo_access + 128
        rcall SPI_R_W_Ohne_CS
        ldi   RxTx_Lo, 'H'      ;fülle Fifo mit "Hallo"
        rcall SPI_R_W_Ohne_CS
  ldi   RxTx_Lo, 'a'
        rcall SPI_R_W_Ohne_CS
  ldi   RxTx_Lo, 'l'
        rcall SPI_R_W_Ohne_CS
  ldi   RxTx_Lo, 'l'
        rcall SPI_R_W_Ohne_CS
  ldi   RxTx_Lo, '0'
        rcall SPI_R_W_Ohne_CS
  sbi   Port_SPI,SPI_CS                   ;setze burstwrite zurück
  RFM_command  RegOpMode , 0b00001100   ;Rfm_Tx_Start

Senden_1:
        sbis  PIND,2                           ;warte bis packetsend 
(RFM69 DIO 0)
        rjmp  Senden_1

        RFM_command  RegOpMode , 0b00001000     ;Frequency Synthesizer 
mode
        RFM_command  RegPaLevel, 0b10000000
        RFM_command  RegTestPa1, $55
        RFM_command  RegTestPa2, $70

  rjmp Senden


;-----------------------------------------------------
;-----------------------------------------------------
Empfang:
  LED_an

  RFM_command  RegIRQFlag2 ,0b00010000            ;clear Fifo

  RFM_command  RegOpMode , 0b00010000    ;Rfm_Rx_On

Empfang_1:
  sbis    PIND,3          ;warte bis FifoNotEmpty (RFM69 DIO 2)
  rjmp    Empfang_1
  rcall  Lese_Fifo        ;"H"

  LED_aus

Empfang_2:
  sbis    PIND,3
  rjmp    Empfang_2
  rcall  Lese_Fifo        ;"a"

Empfang_3:
  sbis    PIND,3
  rjmp    Empfang_3
  rcall  Lese_Fifo        ;"l"

Empfang_4:
  sbis    PIND,3
  rjmp    Empfang_4
  rcall  Lese_Fifo        ;"l"

Empfang_5:
  sbis    PIND,3
  rjmp    Empfang_5
  rcall  Lese_Fifo        ;"o"


  RFM_command  RegOpMode ,  0b00001000            ;Frequency Synthesizer 
mode
  Warte_001_sec 100        ;warte 1 sec
  rjmp  Empfang
;-----------------------------------------------------

von jogi (Gast)


Lesenswert?

hallo,
keiner da oder habe ich mich blöd ausgedrückt ?

von Stefan (Gast)


Lesenswert?

Hallo,

vielleicht etwasa spät aber vielleicht hilft es ja noch jemandem:

1. Länge des gesendeten Synchronwortes = Registerinhalt + 1; soll kein 
Synchronwort gesendet werden, muss das Bit "SyncOn" auf 0 gesetzt werden

2. Einfach das Bit "CrcOn" auf 0 setzen

Stefan

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.