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
;-----------------------------------------------------
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.