Guest User

Untitled

a guest
Jul 9th, 2019
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. '****************************************************************
  2. '*  Name    : UNTITLED.BAS                                      *
  3. '*  Author  : [select VIEW...EDITOR OPTIONS]                    *
  4. '*  Notice  : Copyright (c) 2019 [select VIEW...EDITOR OPTIONS] *
  5. '*          : All Rights Reserved                               *
  6. '*  Date    : 08/07/2019                                        *
  7. '*  Version : 1.0                                               *
  8. '*  Notes   :                                                   *
  9. '*          :                                                   *
  10. '****************************************************************
  11. '****************************************************************
  12. '*  Name    : UNTITLED.BAS                                      *
  13. '*  Author  : [select VIEW...EDITOR OPTIONS]                    *
  14. '*  Notice  : Copyright (c) 2019 [select VIEW...EDITOR OPTIONS] *
  15. '*          : All Rights Reserved                               *
  16. '*  Date    : 08/07/2019                                        *
  17. '*  Version : 1.0                                               *
  18. '*  Notes   :                                                   *
  19. '*          :                                                   *
  20. '****************************************************************
  21.  
  22. Device = 16F1826
  23. $define test
  24.  
  25. Config1 FOSC_INTOSC, WDTE_OFF, PWRTE_ON, MCLRE_ON, CP_ON, CPD_ON, BOREN_ON, CLKOUTEN_OFF, IESO_OFF, FCMEN_OFF
  26. Config2 WRT_OFF, PLLEN_ON, STVREN_OFF,LVP_OFF 'BORV_LO
  27.  
  28. Xtal 16
  29. OSCCON = %01111000  
  30. OPTION_REG = %00000111  
  31.  
  32. '---------------------------------------
  33.  
  34. $define CC1101_IOCFG2       $00        ' GDO2 Output pin configuration
  35. $define CC1101_IOCFG1       $01        ' GDO1 Output pin configuration
  36. $define CC1101_IOCFG0       $02        ' GDO0 Output pin configuration
  37. $define CC1101_FIFOTHR      $03        ' RX FIFO And TX FIFO thresholds
  38. $define CC1101_SYNC1        $04        ' 8 bit msb  word  SYNC
  39. $define CC1101_SYNC0        $05        ' 8 bit lsb  word  SYNC
  40. $define CC1101_PKTLEN       $06        
  41.  
  42. $define CC1101_PKTCTRL1     $07        ' Packet automation control  
  43. $define CC1101_PKTCTRL0     $08        ' Packet automation control
  44. $define CC1101_ADDR         $09        ' Device address
  45. $define CC1101_CHANNR       $0A        ' Channel number  10
  46. $define CC1101_FSCTRL1      $0B        ' Frequency synthesizer control
  47. $define CC1101_FSCTRL0      $0C        ' Frequency synthesizer control
  48. $define CC1101_FREQ2        $0D        ' Frequency control Word, High INT8U
  49. $define CC1101_FREQ1        $0E        ' Frequency control Word, middle INT8U
  50. $define CC1101_FREQ0        $0F        ' Frequency control Word, Low INT8U
  51. $define CC1101_MDMCFG4      $10        ' Modem configuration  
  52. $define CC1101_MDMCFG3      $11        ' Modem configuration
  53. $define CC1101_MDMCFG2      $12        ' Modem configuration
  54. $define CC1101_MDMCFG1      $13        ' Modem configuration  
  55. $define CC1101_MDMCFG0      $14        ' Modem configuration
  56. $define CC1101_DEVIATN      $15        ' Modem deviation setting
  57. $define CC1101_MCSM2        $16        ' Main Radio Control State Machine configuration
  58. $define CC1101_MCSM1        $17        ' Main Radio Control State Machine configuration
  59. $define CC1101_MCSM0        $18        ' Main Radio Control State Machine configuration
  60. $define CC1101_FOCCFG       $19        ' Frequency Offset Compensation configuration
  61. $define CC1101_BSCFG        $1A        ' Bit Synchronization configuration
  62. $define CC1101_AGCCTRL2     $1B        ' AGC control
  63. $define CC1101_AGCCTRL1     $1C        ' AGC control
  64. $define CC1101_AGCCTRL0     $1D        ' AGC control
  65. $define CC1101_WOREVT1      $1E        ' High INT8U Event 0 timeout
  66. $define CC1101_WOREVT0      $1F        ' Low INT8U Event 0 timeout
  67. $define CC1101_WORCTRL      $20        ' Wake On Radio control
  68. $define CC1101_FREND1       $21        ' Front End RX configuration
  69. $define CC1101_FREND0       $22        ' Front End TX configuration
  70. $define CC1101_FSCAL3       $23        ' Frequency synthesizer calibration
  71. $define CC1101_FSCAL2       $24        ' Frequency synthesizer calibration
  72. $define CC1101_FSCAL1       $25        ' Frequency synthesizer calibration
  73. $define CC1101_FSCAL0       $26        ' Frequency synthesizer calibration
  74. $define CC1101_RCCTRL1      $27        ' RC oscillator configuration
  75. $define CC1101_RCCTRL0      $28        ' RC oscillator configuration
  76. $define CC1101_FSTEST       $29        ' Frequency synthesizer calibration control
  77. $define CC1101_PTEST        $2A        ' Production test
  78. $define CC1101_AGCTEST      $2B        ' AGC test
  79. $define CC1101_TEST2        $2C        ' Various test settings
  80. $define CC1101_TEST1        $2D        ' Various test settings
  81. $define CC1101_TEST0        $2E        ' Various test settings
  82.  
  83. 'CC1101 Strobe commands
  84. $define CC1101_SRES         $30        ' Reset chip.
  85. $define CC1101_SFSTXON      $31        ' Enable And calibrate frequency synthesizer (If MCSM0.FS_AUTOCAL=1).
  86.                                        ' If in RX/TX: Go To a Wait state where only the synthesizer is
  87.                                        ' running (For quick RX / TX turnaround).
  88. $define CC1101_SXOFF        $32        ' Turn off crystal oscillator.
  89. $define CC1101_SCAL         $33        ' Calibrate frequency synthesizer And turn it off
  90.                                        ' (enables quick start).
  91. $define CC1101_SRX          $34        ' Enable RX. Perform calibration first If coming from IDLE And
  92.                                         ' MCSM0.FS_AUTOCAL=1.
  93. $define CC1101_STX          $35        ' In IDLE state: Enable TX. Perform calibration first If
  94.                                         ' MCSM0.FS_AUTOCAL=1. If in RX state And CCA is enabled:
  95.                                         ' Only go To TX If channel is Clear.
  96. $define CC1101_SIDLE        $36        ' Exit RX / TX, turn off frequency synthesizer And exit
  97.                                         ' Wake-On-Radio mode If applicable.
  98. $define CC1101_SAFC         $37        ' Perform AFC adjustment of the frequency synthesizer
  99. $define CC1101_SWOR         $38        ' Start automatic RX polling sequence (Wake-on-Radio)
  100. $define CC1101_SPWD         $39        ' Enter power down mode when CSn goes High.
  101. $define CC1101_SFRX         $3A        ' Flush the RX FIFO buffer.
  102. $define CC1101_SFTX         $3B        ' Flush the TX FIFO buffer.
  103. $define CC1101_SWORRST      $3C        ' Reset real time clock.
  104. $define CC1101_SNOP         $3D        ' No operation. May be used To pad strobe commands To two
  105.                                         ' INT8Us For simpler software.
  106. 'CC1101 STATUS REGSITER  
  107. $define CC1101_PARTNUM      $30
  108. $define CC1101_VERSION      $31
  109. $define CC1101_FREQEST      $32
  110. $define CC1101_LQI          $33
  111. $define CC1101_RSSI         $34
  112. $define CC1101_MARCSTATE    $35
  113. $define CC1101_WORTIME1     $36
  114. $define CC1101_WORTIME0     $37
  115. $define CC1101_PKTSTATUS    $38
  116. $define CC1101_VCO_VC_DAC   $39
  117. $define CC1101_TXBYTES      $3A
  118. $define CC1101_RXBYTES      $3B
  119.  
  120. $define WRITE_BURST     $40     ;
  121. $define READ_SINGLE     $80     ;
  122. $define READ_BURST      $C0     ;
  123. $define BYTES_IN_RXFIFO $7F     'Byte number in RXfifo
  124.  
  125.  
  126. 'CC1101 PATABLE,TXFIFO,RXFIFO
  127.  
  128. $define CC1101_PATABLE      $3E
  129. $define CC1101_TXFIFO       $3F
  130. $define CC1101_RXFIFO       $3F
  131.  
  132. '-------Set symbol -------------------------------------------
  133.  
  134. Symbol GIE = INTCON.7  ' Global Interrupt Enable
  135. Symbol PEIE = INTCON.6 ' Peripheral Interrupt Enable
  136. Symbol RCIE = PIE1.5   ' USART Receive Interrupt Enable
  137. Symbol RCIF = PIR1.5   ' USART Receive Interrupt flag
  138. Symbol SCK_PIN = PORTB.4  'SCK1
  139. Symbol MOSI_PIN = PORTA.1 'SDO1
  140. Symbol MISO_PIN = PORTA.0 'SDI1
  141. Symbol SS_PIN = PORTB.5   'SS1
  142. Symbol GDO0 = PORTB.0
  143. Symbol GDO2 = PORTB.3
  144. Symbol Tx_serial = PORTB.7
  145. Symbol Led = PORTA.4      
  146. Symbol pul = PORTB.6      
  147.  
  148. '---Set Port----------------------------------------------------
  149.  
  150. LATA  = %00000000    
  151. LATB  = %00000000
  152. TRISA = %00100001
  153. TRISB = %01001011 'bit0 GDO0 - bit1 miso input - mosi bit2 out - bit3 GDO2 - clk bit4 out - SS bit5 out
  154.  
  155. WPUA = %00100000
  156. WPUB = %01000000
  157. CM1CON0.7 = 0    
  158. CM2CON0.7 = 0    
  159. SRCON0.7 = 0    
  160. Clear ANSELA    
  161. Clear ANSELB
  162. APFCON0 = 0      
  163. APFCON1 = 0
  164.  
  165. INTCON = %00000000
  166.  
  167. '-----------------Set input  output---------------------------------
  168.  
  169. Output MOSI_PIN '
  170. Output SS_PIN   '
  171. Input MISO_PIN  '
  172. Input GDO0      '
  173. Input GDO2
  174.  
  175. '------------------------------------
  176. Dim rxBuffer[64] As Byte
  177. Dim x As Byte
  178. Dim PaTable[8] As Byte '
  179. Dim addr_SWR As Byte
  180. Dim Add_PTR As Word
  181. Dim value_SWR As Byte
  182. Dim txBuffer[64] As Byte Heap
  183. Dim add_BurstReg As Byte
  184. Dim i As Byte
  185. Dim temp As Byte
  186. Dim num As  Byte
  187. Dim strobe As Byte
  188. Dim value_SRR As Byte
  189. Dim size As Byte
  190. Dim Ret_Val As Bit
  191. Dim CC1101_STATUS[2] As Byte
  192.  
  193. Str PaTable = $60,$60,$60,$60,$60,$60,$60,$60
  194. DelayMS 200        
  195.  
  196. main:
  197.  
  198. GoSub CC1101_init        '
  199. GoSub CC1101_SetReceive  '
  200.  
  201.  
  202. '-------- Rx Routine -------------------------------------
  203.  
  204. rx_routine:
  205.  
  206. Toggle Led
  207.  
  208. GoSub CC1101_CheckReceiveFlag
  209.  
  210. If Ret_Val = 1 Then
  211.  GoSub CC1101_ReceiveData
  212.  For i = 0 To size -1
  213.   SerOut Tx_serial,84,[rxBuffer[i]]
  214.  Next i
  215.  GoSub CC1101_SetReceive
  216. End If
  217. GoTo rx_routine
  218.  
  219. '----------------------------------------------------------
  220. CC1101_reset:
  221.   Low SS_PIN   '
  222.   DelayMS 1
  223.   High SS_PIN
  224.   DelayMS 1
  225.   Low SS_PIN
  226.   While MISO_PIN = 1 : Wend    
  227.   SHOut MOSI_PIN,SCK_PIN,MsbFirst_H,[CC1101_SRES]
  228.   While MISO_PIN = 1 : Wend
  229.   High SS_PIN
  230.   $ifdef test
  231.   SerOut Tx_serial,84,["reset ok"]
  232.   DelayMS 50
  233.   SerOut Tx_serial,84,[CC1101_SRES]
  234.   $endif
  235. Return
  236. '--------------------------------------------------------------
  237. CC1101_init:
  238.   High SS_PIN    
  239.   High SCK_PIN
  240.   Low MOSI_PIN
  241.   GoSub CC1101_reset
  242.   GoSub CC1101_RegConfigSettings
  243.   add_BurstReg = CC1101_PATABLE  
  244.   Add_PTR = AddressOf(PaTable)    
  245.   num = 8
  246.   GoSub CC1101_SpiWriteBurstReg  
  247.   $ifdef test
  248.   SerOut Tx_serial,84,["PATABLE OK"]
  249.   $endif
  250. Return
  251. '---------------------------------------------------
  252. CC1101_SpiWriteReg:      
  253.   Low SS_PIN
  254.   While MISO_PIN = 1 : Wend
  255.   SHOut MOSI_PIN,SCK_PIN,MsbFirst_H,[addr_SWR]
  256.   SHOut MOSI_PIN,SCK_PIN,MsbFirst_H,[value_SWR]
  257.   High SS_PIN
  258. Return
  259.  
  260. '---------------------------------------------------------------------
  261. CC1101_SpiWriteBurstReg:  
  262. Low SS_PIN
  263.   While MISO_PIN = 1 : Wend            
  264.   'SHOut MOSI_PIN,SCK_PIN,MsbFirst_H,[add_BurstReg | WRITE_BURST] 'add_BurstReg(3E) | WRITE_BURST($40) = $7E
  265.   SHOut MOSI_PIN,SCK_PIN,MsbFirst_H,[add_BurstReg <PIPE>WRITE_BURST ]
  266.   For i = 0 To num - 1
  267.     value_SRR = Ptr8(Add_PTR++)
  268.     SHOut MOSI_PIN,SCK_PIN,MsbFirst_H,[value_SRR]
  269.   Next i
  270.   High SS_PIN
  271. Return
  272. '---------------------------------------------------------
  273. CC1101_SpiStrobe:  
  274.   Low SS_PIN
  275.   While MISO_PIN = 1 : Wend
  276.   SHOut MOSI_PIN,SCK_PIN,MsbFirst_H,[strobe]
  277.   High SS_PIN
  278. Return
  279. '----------------------------------------------------------
  280. CC1101_SpiReadReg:              
  281.   Low SS_PIN
  282.   While MISO_PIN = 1 : Wend
  283.   SHOut MOSI_PIN,SCK_PIN,MsbFirst_H,[addr_SWR<PIPE>READ_SINGLE]
  284.   SHIn MISO_PIN,SCK_PIN,MsbPost_H,[value_SRR]
  285.   High SS_PIN
  286. Return
  287. '---------------------------------------------------------------
  288. CC1101_SpiReadStatus:          
  289.   Low SS_PIN
  290.   While MISO_PIN = 1 : Wend
  291.   SHOut MOSI_PIN,SCK_PIN,MsbFirst_H,[addr_SWR<PIPE>READ_BURST]'READ_BURST $C0
  292.   SHIn MISO_PIN,SCK_PIN,MsbPost_H,[value_SRR]
  293.   High SS_PIN
  294. Return
  295. '----------------------------------------------------------------
  296. CC1101_SpiReadBurstReg:
  297.   Low SS_PIN
  298.   While MISO_PIN = 1 : Wend
  299.   SHOut MOSI_PIN,SCK_PIN,MsbFirst_H,[add_BurstReg <PIPE>READ_BURST ]
  300.   For i = 0 To num - 1
  301.     SHIn MISO_PIN,SCK_PIN,MsbPost_H,[x]
  302.     Ptr8(Add_PTR++) = x
  303.   Next i
  304.   High SS_PIN
  305. Return
  306. '----------------------------------------------------------------
  307. CC1101_RegConfigSettings:
  308.  
  309.   addr_SWR = CC1101_FSCTRL1  ' SpiWriteReg(CC1101_FSCTRL1 =%0B, 0x08)
  310.   value_SWR = 0x08
  311.   GoSub CC1101_SpiWriteReg
  312.  
  313.   addr_SWR = CC1101_FSCTRL0
  314.   value_SWR = 0x00
  315.   GoSub CC1101_SpiWriteReg   ' SpiWriteReg(CC1101_FSCTRL0 =$0C, 0x00)
  316.  
  317.   addr_SWR = CC1101_FREQ2
  318.   value_SWR = 0x10
  319.   GoSub CC1101_SpiWriteReg   ' SpiWriteReg(CC1101_FREQ2 =$0D ,0x10)
  320.  
  321.   addr_SWR = CC1101_FREQ1
  322.   value_SWR = 0xA7
  323.   GoSub CC1101_SpiWriteReg   ' SpiWriteReg(CC1101_FREQ1 =$0E,0xA7)
  324.  
  325.   addr_SWR = CC1101_FREQ0
  326.   value_SWR = 0x62
  327.   GoSub CC1101_SpiWriteReg    ' SpiWriteReg(CC1101_FREQ0=$0F,0x62)
  328.  
  329.   addr_SWR = CC1101_MDMCFG4
  330.   value_SWR = 0x5B
  331.   GoSub CC1101_SpiWriteReg    ' SpiWriteReg(CC1101_MDMCFG4=$10,0x5B)
  332.  
  333.   addr_SWR = CC1101_MDMCFG3
  334.   value_SWR = 0xF8
  335.   GoSub CC1101_SpiWriteReg    ' SpiWriteReg(CC1101_MDMCFG3=$11,0xF8)
  336.  
  337.   addr_SWR = CC1101_MDMCFG2  
  338.   value_SWR = 0x03            
  339.   GoSub CC1101_SpiWriteReg    ' SpiWriteReg(CC1101_MDMCFG2=$12,0x03)
  340.  
  341.   addr_SWR = CC1101_MDMCFG1
  342.   value_SWR = 0x22
  343.   GoSub CC1101_SpiWriteReg    ' SpiWriteReg(CC1101_MDMCFG1=$13,0x22)
  344.  
  345.   addr_SWR = CC1101_MDMCFG0
  346.   value_SWR = 0xF8
  347.   GoSub CC1101_SpiWriteReg    ' SpiWriteReg(CC1101_MDMCFG0=$14,0xF8)
  348.  
  349.   addr_SWR = CC1101_CHANNR
  350.   value_SWR = 0x00
  351.   GoSub CC1101_SpiWriteReg    ' SpiWriteReg(CC1101_CHANNR=$0A,0x00)
  352.  
  353.   addr_SWR = CC1101_DEVIATN
  354.   value_SWR = 0x47
  355.   GoSub CC1101_SpiWriteReg    ' SpiWriteReg(CC1101_DEVIATN=$15,0x47)
  356.  
  357.   addr_SWR = CC1101_FREND1
  358.   value_SWR = 0xB6
  359.   GoSub CC1101_SpiWriteReg    ' SpiWriteReg(CC1101_FREND1=$21,0xB6)
  360.  
  361.   addr_SWR = CC1101_FREND0
  362.   value_SWR = 0x10
  363.   GoSub CC1101_SpiWriteReg    ' SpiWriteReg(CC1101_FREND0=$22,0x10)
  364.  
  365.   addr_SWR = CC1101_MCSM0
  366.   value_SWR = 0x18
  367.   GoSub CC1101_SpiWriteReg    ' SpiWriteReg(CC1101_MCSM0=$18 ,0x18)
  368.  
  369.   addr_SWR = CC1101_FOCCFG
  370.   value_SWR = 0x1D
  371.   GoSub CC1101_SpiWriteReg    ' SpiWriteReg(CC1101_FOCCFG=$19,0x1D)
  372.  
  373.   addr_SWR = CC1101_BSCFG
  374.   value_SWR = 0x1C
  375.   GoSub CC1101_SpiWriteReg    ' SpiWriteReg(CC1101_BSCFG=$1A,0x1C)
  376.  
  377.   addr_SWR = CC1101_AGCCTRL2
  378.   value_SWR = 0xC7
  379.   GoSub CC1101_SpiWriteReg    ' SpiWriteReg(CC1101_AGCCTRL2=$1B,0xC7)
  380.  
  381.   addr_SWR = CC1101_AGCCTRL1
  382.   value_SWR = 0x00
  383.   GoSub CC1101_SpiWriteReg     ' SpiWriteReg(CC1101_AGCCTRL1=$1C,0x00)
  384.  
  385.   addr_SWR = CC1101_AGCCTRL0
  386.   value_SWR = 0xB2
  387.   GoSub CC1101_SpiWriteReg     ' SpiWriteReg(CC1101_AGCCTRL0=$1D,0xB2)
  388.  
  389.   addr_SWR = CC1101_FSCAL3
  390.   value_SWR = 0xEA
  391.   GoSub CC1101_SpiWriteReg     ' SpiWriteReg(CC1101_FSCAL3=$23,0xEA)
  392.  
  393.   addr_SWR = CC1101_FSCAL2
  394.   value_SWR = 0x2A
  395.   GoSub CC1101_SpiWriteReg     ' SpiWriteReg(CC1101_FSCAL2=$24,0x2A)
  396.  
  397.   addr_SWR = CC1101_FSCAL1
  398.   value_SWR = 0x00
  399.   GoSub CC1101_SpiWriteReg    ' SpiWriteReg(CC1101_FSCAL1=$25,0x00)
  400.  
  401.   addr_SWR = CC1101_FSCAL0
  402.   value_SWR = 0x11
  403.   GoSub CC1101_SpiWriteReg    ' SpiWriteReg(CC1101_FSCAL0=$26,0x11)
  404.  
  405.   addr_SWR = CC1101_FSTEST
  406.   value_SWR = 0x59
  407.   GoSub CC1101_SpiWriteReg   ' SpiWriteReg(CC1101_FSTEST=$29,0x59)
  408.  
  409.   addr_SWR = CC1101_TEST2
  410.   value_SWR = 0x81
  411.   GoSub CC1101_SpiWriteReg   ' SpiWriteReg(CC1101_TEST2=$2C,0x81)
  412.  
  413.   addr_SWR = CC1101_TEST1
  414.   value_SWR = 0x35
  415.   GoSub CC1101_SpiWriteReg   ' SpiWriteReg(CC1101_TEST1=2D,0x35)
  416.  
  417.   addr_SWR = CC1101_TEST0
  418.   value_SWR = 0x09
  419.   GoSub CC1101_SpiWriteReg   ' SpiWriteReg(CC1101_TEST0=2E,0x09)
  420.  
  421.  
  422.   addr_SWR = CC1101_IOCFG2
  423.   value_SWR = 0x0B
  424.   GoSub CC1101_SpiWriteReg  ' SpiWriteReg(CC1101_IOCFG2=$00,0x0B)
  425.  
  426.  
  427.   addr_SWR = CC1101_IOCFG0
  428.   value_SWR = 0x06
  429.   GoSub CC1101_SpiWriteReg   ' SpiWriteReg(CC1101_IOCFG0=$02,0x06)
  430.  
  431. 'two status bytes will be appended to the payload of the packet,
  432. 'including RSSI LQI and CRC OK
  433. 'No address check
  434.  
  435.   addr_SWR = CC1101_PKTCTRL1   '
  436.                                '
  437.   value_SWR = 0x04
  438.   GoSub CC1101_SpiWriteReg     ' SpiWriteReg(CC1101_PKTCTRL1=$07, 0x04)
  439.  
  440. 'whitening offCRC Enable£»variable length packets, packet length configured
  441. 'by the first byte after sync word
  442.  
  443.   addr_SWR = CC1101_PKTCTRL0
  444.   value_SWR = 0x05             '
  445.   GoSub CC1101_SpiWriteReg     ' SpiWriteReg(CC1101_PKTCTRL0=$08,0x05)
  446.  
  447.  
  448.   addr_SWR = CC1101_ADDR      'address used for packet filtration.
  449.   value_SWR = 0x00
  450.   GoSub CC1101_SpiWriteReg    ' SpiWriteReg(CC1101_ADDR=$09,0x00)
  451.  
  452.   addr_SWR = CC1101_PKTLEN
  453.   value_SWR = 0x3D            '
  454.   GoSub CC1101_SpiWriteReg    '
  455.                               '
  456.   SerOut Tx_serial,84,["config ok"] 'For Test
  457.  
  458.  Return
  459. '--------------------------------------------------------------------------------
  460.  CC1101_SendData:
  461.   addr_SWR = CC1101_TXFIFO             '
  462.   value_SWR = size                     '
  463.   GoSub CC1101_SpiWriteReg             '
  464.   add_BurstReg = CC1101_TXFIFO
  465.   Add_PTR = AddressOf(txBuffer)        '
  466.   num = size                           '
  467.   GoSub CC1101_SpiWriteBurstReg;       '
  468.   strobe = CC1101_STX                  '
  469.   GoSub CC1101_SpiStrobe               '
  470.   While GDO0 = 0: Wend          '
  471.   While GDO0 = 1: Wend          '
  472.   strobe = CC1101_SFTX          '
  473.   GoSub CC1101_SpiStrobe        ' flush TXfifo
  474. Return
  475. '----------------------------------------------------------------------------------
  476. CC1101_SetReceive:
  477.   strobe = CC1101_SRX     '
  478.   GoSub CC1101_SpiStrobe
  479. Return
  480. '-------------------------------------------------------------
  481. CC1101_CheckReceiveFlag:   '
  482.   Ret_Val = 0              '
  483.   If GDO0 = 1 Then         '
  484.     While GDO0  = 1 : Wend
  485.     Ret_Val = 1
  486.     Return
  487.   End If
  488. Return
  489. '---------------------------------------------------------
  490. CC1101_ReceiveData:
  491.   Ret_Val = 0
  492.   addr_SWR = CC1101_RXBYTES   '
  493.   GoSub CC1101_SpiReadStatus  '
  494.   value_SRR = value_SRR & BYTES_IN_RXFIFO  
  495.   If value_SRR <> 0 Then
  496.     addr_SWR = CC1101_RXFIFO  
  497.     GoSub CC1101_SpiReadReg   '
  498.     size = value_SRR          '
  499.     add_BurstReg = CC1101_RXFIFO
  500.     num = size
  501.     Add_PTR = AddressOf(rxBuffer)
  502.     GoSub CC1101_SpiReadBurstReg  '
  503.     Add_PTR = AddressOf(CC1101_STATUS)
  504.     num = 2
  505.     GoSub CC1101_SpiReadBurstReg  '
  506.     strobe = CC1101_SFRX          '
  507.     GoSub CC1101_SpiStrobe
  508.     Ret_Val = size                '
  509.   Else
  510.     strobe = CC1101_SFRX
  511.     GoSub CC1101_SpiStrobe
  512.     Ret_Val = 0
  513.   End If
  514. Return
Add Comment
Please, Sign In to add comment