nrf24 Receiver (ter)

kfjl

Member
Code:
'RECEIVER          (nrf24_Receiver.bas)

'Power supply: 3.3V from computer USB or phone charger via FTDI =
'no 5V, phantom or otherwise, to fry nrf
'Inverter levels RX /  TX : 74HCT04

'1 GND    Black     GND
'2 VCC    Red        VCC     THREE point THREE volts !!!.!!!
'3 CE      Brown     B.1
'4 CSN    White     B.6
'5 SCK    Yellow    B.7
'6 MOSI   Green    SDO C.1
'7 MISO   Orange  SDI B.5
'8 INT      Grey      C.5  10k PullUP

#picaxe 20x2
#no_table
#no_data
       
symbol CE =   B.1      'Chip Enable 
symbol CSN =  B.6    'Chip Select Active low
symbol IRQ = pinC.5    'IRQ 
                       
init:
input  c.5          
output b.1
output b.6          
setfreq m16
hspisetup spimode00,spifast

high CSN     'active low
low CE
pause 100

'CONFIG_RX_MODE:

low csn
hspiout (%00100000,%00001011)   'REG0 CONFIG EN PRX + Power ON + EN CRC 1 byte
high csn

'REG1 EN_AA                              default: auto ack on all data pipes enabled
'REG2 EN_RXADDR                    default: data pipes 0 and 1 enabled
'REG3 SETUP_AW                       default: 5 byte addresses
'REG4                                           default                                                                             
'REG5 RF_CH                              default %00000010

low csn
hspiout (%00100110,%00001000) 'REG6 RF_SETUP 2Mbps -18dBm
high csn

'REGs 8+9                                               default
'REGs 10 to 15 pipe addresses           default
'REG  16 TX_ADDR                                default

low csn
hspiout (%00110001,1)    ' reg 17 (hex 11) RX payload width = 1 byte for data pipe 0
high csn

gosub clear_interrupts

MAIN:

pause 5000     ' Time to open the terminal ready to "readregs", if  needed
gosub readregs

setint %00000000,%00100000,c  '(20x2 Pin5 LOW)
sertxd("Waiting for data.1..",CR,LF)
high CE               ' Start listening
pause 10
do
   pause 100  'waiting for interrupt on data received
loop

interrupt:

pause 3
low ce  ' Stop listening 
low csn
hspiout (%01100001) ' Read Data in RX FIFO
hspiin (b10)
high csn

SERTXD ("Received ",#B10,CR,LF)

low csn
hspiout (%11100010)  'FLUSH RX FIFO
high csn

gosub clear_interrupts

setint %00000000,%00100000,c  'reset Picaxe interrupt
sertxd("Waiting for data...",CR,LF)
high CE       ' Start listening
return

Clear_interrupts:

low csn
hspiout (%00100111,%01110000)  
high csn
return

readregs: 

for b1 = 0 to 09  'registers 0 - 9 (decimal)    
low CSN
hspiout (b1)
hspiin (b0)
high CSN
sertxd(#b0,CR,LF) 
next b1

for b1 = 10 to 16    'Addresses with 5 byte registers
low csn
hspiout(b1)
hspiin (b4,b5,b6,b7,b8)
high csn
sertxd (#b4,#b5,#b6,#b7,#b8,CR,LF) 
next b1

for b1 = 17 to 23
low CSN
hspiout (b1)
hspiin (b0)
high CSN
sertxd (#b0,CR,LF)
next b1 
return
Maintenant, on écoute.

A suivre...
 
Top