Thanks, here is the update:
Did add a var that was left out (mcparam0_read var byte) and corrected a misspell (gosub MRFInint changed to gosub MRFInit).
Register constants (some were not changed per my interpretation of DS - BUT, I will try them later):
Added your subroutines:Code:'Constants here RF_Init_Values[0] = $28 'Standby mode, 915-928 MHz, VTune by inductors, ENABLE R1/P1/S1 ' RF_Init_Values[0] = $68 'RECEIVE mode, 915-928 MHz, VTune by inductors, ENABLE R1/P1/S1 RF_Init_Values[1] = $8C 'FSK, max IF gain, Packet Mode RF_Init_Values[2] = $0B '33KHz Freq Dev RF_Init_Values[3] = $63 '2KBps RF_Init_Values[4] = $0C 'for OOK mode, not apliable RF_Init_Values[5] = $03 '16Bytes FIFO, 3 bytes threshold FIFO interrupt RF_Init_Values[6] = $77 '915MHz R1 Reg RF_Init_Values[7] = $64 '915MHz P1 Reg RF_Init_Values[8] = $32 '915MHz S1 Reg RF_Init_Values[9] = $74 '920MHz R2 Reg RF_Init_Values[10] = $62 '920MHz P2 Reg RF_Init_Values[11] = $32 '920MHz S2 Reg RF_Init_Values[12] = $38 'config mode for OOK, not apliable RF_Init_Values[13] = $08 'RCV:IRQ0=payload ready + IRQ1=CRC OK 'TX: IRQ1=TXdone RF_Init_Values[14] = $35 'FIFO starts filling when SYNC detected,TXDONE goes hi when done, 'RSSI IRQ when is above level set, enable PLL lock RF_Init_Values[14] = $0B ' ' RF_Init_Values[15] = $00 'RSSI interupt level zero - minimum RF_Init_Values[16] = $A3 'default filters config RF_Init_Values[17] = $38 'default filters config RF_Init_Values[18] = $30 'sync word ON, 24bits, 0 errors tolerance RF_Init_Values[19] = $07 'reserved reg RF_Init_Values[20] = $00 'RSII status read register, 0.5dB / bit RF_Init_Values[21] = $00 'OOK config reg RF_Init_Values[22] = $53 '"S" 1st byte of sync word RF_Init_Values[23] = $43 '"C" 2nd byte of sync word RF_Init_Values[24] = $53 '"S" 3rd byte of sync word - my initials! RF_Init_Values[25] = $00 ' RF_Init_Values[26] = $70 'Cutoff fcy = 200KHz, output power = 13dBm 0b000 RF_Init_Values[27] = $BC 'clk out by default 427KHz RF_Init_Values[28] = $03 '3 bytes payload RF_Init_Values[29] = $01 'initial MAC ADDRESS, only for test RF_Init_Values[30] = $5E 'Fix Packet Lenght, 3 bytes preamble, whitening ON, CRC ON, Node ADDR|0x00|0xFF filtering RF_Init_Values[31] = $80 'FIFO autocreal enable if CRC fails, Write to FIFO in stby mode 'Push all the registers to the MRF and check that each one is written correctly RF_STANDBY con $20 'Standby RF Mode RF_SYNTHESIZER con $40 'Synthesizer Mode (Test if RF Module is on and PLL Locked and working) RF_RECEIVER con $60 'Receive Mode RF_TRANSMITTER con $80 'Transmit Mode
And added test code:Code:'New Subs - thanks to TABSoft MRFInit:'Initialize the MRF Module 'Intial setup for i = 0 to 31 bReg_Address = i bReg_Value = RF_Init_Values(i) gosub RegisterSet next i 'Test the module setup 'Clear the PLL Lock flag by setting LSTLPLL to 1 bReg_Address = $0E 'FTPRIREG gosub RegisterRead bReg_Value = bReg_Value | $02 'Set LSTLPLL to 1 gosub RegisterSet 'Clear the flag 'Enable Synthesizer mode and test LSTSPLL stays at 1 (PLL Locked) bRF_Mode = RF_SYNTHESIZER gosub SetRFMode 'Verify PLL Lock Flag bReg_Address = $0E 'FTPRIREG gosub RegisterRead PLL_LOCK = 0 PLL_LOCK = bReg_Value.1 'You can test this bit to see if PLL Is Locked 'Change to Standby bRF_Mode = RF_STANDBY gosub SetRFMode return Send_Packet: 'Set Standby mode bRF_Mode = RF_STANDBY gosub SetRFMode 'Enable FIFO access in Standby mode bReg_Address = $1F 'Register 31 bReg_Value = (RF_Init_Values(bReg_Address) & $BF) | $00 gosub RegisterSet 'Clear FIFO Overrun bReg_Address = $0D 'Register 13 bReg_Value = (RF_Init_Values(bReg_Address) | $01) gosub RegisterSet 'Set PLL Locked bReg_Address = $0E 'Register 13 bReg_Value = (RF_Init_Values(bReg_Address) | $02) gosub RegisterSet For i = 0 to (TxPacketLen-1) 'Wite the Packets to the FIFO wr_FIFO_Val = TxPacket[i] gosub WriteFIFO Next i 'Set RFMode to Transmit bRF_Mode = RF_TRANSMITTER gosub SetRFMode pause 5 'Pause 5ms return WriteFIFO: 'Inputs: wr_FIFO_Val MRFDataSel=0 SHIFTOUT SDO, SCLK, 1,[wr_FIFO_Val] MRFDataSel=1 return SetRFMode: ' Inputs bRF_Mode 'SetRFMode(RF_STANDBY); (mcparam0_read & 0x1F) | RF_STANDBY) = (6E & 1F) | 20 = 2E bReg_Address = $00 'MCPARAM0 gosub RegisterRead mcparam0_read = bReg_Value bReg_Value = (bReg_Value & $1F) | bRF_Mode bReg_Address = $00 gosub RegisterSet RF_Mode = bRF_Mode return RegisterSet:'Inputs: bReg_Address, bReg_Value MRFaddr=(bReg_Address<<1) 'Gets register address format MRFConfigSel=0 'Select the chip SHIFTOUT SDO, SCLK, 1,[MRFaddr,bReg_Value] 'Set the register MRFConfigSel=1 'Deselect the chip return RegisterRead:'Inputs: bReg_Address - Outputs: bReg_Value MRFaddr = ((bReg_Address << 1) | $40) 'Shifts left 1 bit, sets $40 bit, automatically gets start, READ, and stop bits MRFConfigSel = 0 'Select the chip SHIFTOUT SDO, SCLK, 1,[MRFaddr] 'Address to read SHIFTIN SDI, SCLK, 0,[bReg_Value] 'Get data from reg MRFConfigSel = 1 'DeSelect the chip return
But the receiver (with goto XMIT rem'd) doesn't print anything to the screen.Code:'MRF initialization here debug "@ MRF init", 10 TestMRF: gosub MRFInit 'Try to read back 1st 8 registers as a test to see if they were written correctly - remove when done debugging MRFConfigSel=0 'Select the chip for i = 0 to 7 'Sets up address to read MRFaddr=((i << 1) | $40) 'Shifts left 1 bit, sets $40 bit, automatically gets start, READ, and stop bits SHIFTOUT SDO, SCLK, 1,[MRFaddr] 'Address to read SHIFTIN SDI, SCLK, 0,[MRFSPIdata] 'Get data from reg debug "MRF Config data: i=", dec1 i, " Register ", bin8 MRFaddr, " Data=", hex2 MRFSPIdata,13 next i 'Try sending something debug "Try sending 3 bytes",13 XMIT: TxPacket[0] = $A1 TxPacket[1] = $B1 TxPacket[2] = $C1 TxPacketLen = 3 gosub Send_Packet bRF_Mode = RF_STANDBY gosub SetRFMode goto XMIT 'Remark this line to be receive all the time, othewrwise its xmitting all the time RCV: bRF_Mode = RF_RECEIVER gosub SetRFMode 'Set to receive Wait4Pkt: If MRFIrq0=1 and MRFIrq1=1 then MRFDataSel=0 'Select chip cuz we have a packet ready and CRC is good SHIFTIN SDI, SCLK, 0,[data3] 'Get data from reg MRFDataSel=1 'De-Select chip MRFDataSel=0 'Select chip cuz we have a packet ready and CRC is good SHIFTIN SDI, SCLK, 0,[data2] 'Get data from reg MRFDataSel=1 'De-Select chip MRFDataSel=0 'Select chip cuz we have a packet ready and CRC is good SHIFTIN SDI, SCLK, 0,[data1] 'Get data from reg MRFDataSel=1 'De-Select chip debug "MRF payload: Data3=",hex2 data3," Data2=",hex2 data2," Data1=",hex2 data1,13 endif goto Wait4Pkt
Its like solving for simultaneous equations........ making an assumption (huge) that the transmitter is actually transmitting, then the problem is in the receiver.
The SYNC is the same front and back 'SCS' so that shouldn't make a difference.
The payload is 3 bytes......
However, my trigger to debug the MRF is if both IRQ lines go high, my scope is telling me neither is going high so either the interrupt register is improperly configured or its not recognizing the payload.
IF the transmitter is working.......
See if you agree with my register values?
Regards.




Bookmarks