Hi All,
I've just started out with the nRF24L01+ boards and have several of them linked to Arduino ProMini's and Arduino Uno's. After trying out the basic examples in the "Simple nRF24L01+ 2.4GHz transceiver demo" thread (thankyou Robin), i've started to put together my own setup.
I've come up with some human readable node addresses for my pipes such that:
Device#1: Pipe0="N001a", Pipe1="N001b", ... Pipe5="N001f"
Device#2: Pipe0="N002a", Pipe1="N002b", ... Pipe5="N002f"
I thought that this would then comply with the node addressing requirements of Figure 13, Page 40 of the nRF24L01+ datasheet, such that pipes 2->5 would have the unique LSByte of either 'c','d','e' or 'f'.
However, I started running into problems and decided to try out the CheckConnection code posted by Robin from forum.arduino.cc/index.php?topic=421081.0 post #29.
So the basic code from post #29 works fine and produces the detailed information.
I then modified that code to replace the single slave address with 6 different addresses:
const byte thisSlaveAddress[][5] ={ {'R','x','A','A','1'},
{'R','x','A','A','2'},
{'R','x','A','A','3'},
{'R','x','A','A','4'},
{'R','x','A','A','5'},
{'R','x','A','A','6'} };
And replaced the one line openReadingPipe() call with code to open 6 reading pipes:
radio.openReadingPipe(0, thisSlaveAddress[0]);
radio.openReadingPipe(1, thisSlaveAddress[1]);
radio.openReadingPipe(2, thisSlaveAddress[2]);
radio.openReadingPipe(3, thisSlaveAddress[3]);
radio.openReadingPipe(4, thisSlaveAddress[4]);
radio.openReadingPipe(5, thisSlaveAddress[5]);
The code runs and produces the following output:
STATUS = 0x0e RX_DR=0 TX_DS=0 MAX_RT=0 RX_P_NO=7 TX_FULL=0
RX_ADDR_P0-1 = 0x3141417852 0x3241417852
RX_ADDR_P2-5 = 0x52 0x52 0x52 0x52
TX_ADDR = 0xe7e7e7e7e7
RX_PW_P0-6 = 0x20 0x20 0x20 0x20 0x20 0x20
EN_AA = 0x3f
EN_RXADDR = 0x3f
RF_CH = 0x4c
RF_SETUP = 0x23
CONFIG = 0x0e
DYNPD/FEATURE = 0x00 0x00
Data Rate = 250KBPS
Model = nRF24L01+
CRC Length = 16 bits
PA Power = PA_LOW
What's confusing is the pipe names. Rx Pipe 0 address is 0x3141417852='1AAxR' and Rx pipe 1 address is 0x3241417852='2AAxR'. Rx Pipes 2->5 all have the address 'R'.
I'm currently looking through the source code of the RF24 library (TMRh20 v1.3.4) to see if there's an error in the way the addresses are written to the registers or maybe simply an error in the way printDetails() is presenting the results.
Has anybody else seen this behaviour?
Thanks.