NRF24L01+ not receiving on pipes 2-5 [SOLVED]

Hello all,

after a long period of trial and error I come for advice. I use the NRF24L01+ module with a slightly modified NRF24-library based on the work of MikeM (NRF24: NRF24 library for Arduino). I am aware of the upgrade to the RadioHead library, I just wanted to go through the code myself. And: I want to use multiple pipes.

Now: I do have a working setup.

Module 1 sends to address “recv1”

Module 2 receives as address “recv1” on pipe1, with auto ACK enabled

As soon as I change the pipe on Module 2 - the receiving end - to pipe 2 all communication stops :frowning: It just doesn’t want to receive anything on pipe 2 - 5.

A registry dump where everything is working from the receiving end:

00: 0C: 0000 1100
01: 3F: 0011 1111            <--- Auto ACK enabled on pipe 0-5
02: 3F: 0011 1111            <--- Pipe 0-5 enabled
03: 03: 0000 0011
04: 73: 0111 0011
05: 02: 0000 0010
06: 26: 0010 0110
07: 0E: 0000 1110
08: 00: 0000 0000
09: 00: 0000 0000
0A: E7 E7 E7 E7 E7 ççççç     <--- pipe 0 address (not used)
0B: 72 65 63 76 31 recv1     <--- receiving address on pipe 1
0C: 32 32 32 32 32 22222     <--- pipe 2-5 only have LSB different from pipe 1
0D: 33 33 33 33 33 33333
0E: 34 34 34 34 34 44444
0F: 35 35 35 35 35 55555
10: E7 E7 E7 E7 E7 ççççç     <--- no transmit address necessary
11: 00: 0000 0000
12: 00: 0000 0000
13: 00: 0000 0000
14: 00: 0000 0000
15: 00: 0000 0000
16: 00: 0000 0000
17: 11: 0001 0001
1C: 2F: 0010 1111
1D: 05: 0000 0101

A registry dump where it doesnt work anymore from the receiving end:

00: 0C: 0000 1100
01: 3F: 0011 1111
02: 3F: 0011 1111
03: 03: 0000 0011
04: 73: 0111 0011
05: 02: 0000 0010
06: 26: 0010 0110
07: 0E: 0000 1110
08: 00: 0000 0000
09: 00: 0000 0000
0A: E7 E7 E7 E7 E7 ççççç
0B: 72 65 63 76 32 recv2    <--- changed this so pipe 1 hasnt the same address anymore
0C: 31 31 31 31 31 11111    <--- now this is "1", combined with "recv" makes "recv1"
0D: 33 33 33 33 33 33333
0E: 34 34 34 34 34 44444
0F: 35 35 35 35 35 55555
10: E7 E7 E7 E7 E7 ççççç    <--- no transmit address necessary
11: 00: 0000 0000
12: 00: 0000 0000
13: 00: 0000 0000
14: 00: 0000 0000
15: 00: 0000 0000
16: 00: 0000 0000
17: 11: 0001 0001
1C: 2F: 0010 1111
1D: 05: 0000 0101

I have no clue why I don’t receive anything on pipe 2-5, and have no idea what to test for next. Has anyone got pipes 2-5 working?

Kind regards,

Jack

Right, found it, how silly.

The address for the pipes is shifted in LSB first. Pipe 2-5 share the 4 MSB's with pipe 1. In my code something happens like:

address = "recv1"

shift this into the address for pipe 1.

And this is where things go wrong: "recv1" sort of implies the "1" is the LSB, but the code shifts this out to the NRF24 as the last byte, so the NRF treats it like the MSB. To the NRF the LSB is "r" !

Now in order to set pipe 2 to "recv2" I did:

address = "recv2"

and shift this into pipe 2.

The code does pick the "2" as the LSB to shift out to the NRF (thinking address[4] is the LSB), but instead of setting the address to "recv2" we get "2ecv1".

My solution was to adapt the code so address runs from LSB to MSB, and for pipe 2-5 it uses address[0] to write for the LSB for one of the pipes 2-5.

Cheers,

Jack

how did u do that? cz i am facing the same problem

mestek123: how did u do that? cz i am facing the same problem

See my response in your own Thread

...R

hi robin2 thank u very much for ur reply

ANY HELP

can any one explains to me wt did captainjack do

CaptainJack: My solution was to adapt the code so address runs from LSB to MSB, and for pipe 2-5 it uses address[0] to write for the LSB for one of the pipes 2-5.

Jack, there are a number of people debating the address issue in another thread who would love you to tell us what you did.

Congratulations on solving the problem, but be the regular-Arduino-guy and let the rest of us in on the secret.

I'd hate to see it go down with the Black Pearl ;}

vagulus: Jack, there are a number of people debating the address issue in another thread who would love you to tell us what you did.

Nope.

It is only vagulus how who does not understand.

Whandall: It is only vagulus how does not understand.

Hey Whandall. I just spotted this! I am sure that on the other thread mestek123 wanted CaptainJack's answer. Also, there were more than us following the chat. I think plenty of people want to know the answer to this.