I have a working setup with a transmitter and two receivers running my code, each board is a Nucleo and has an attached NRF24L01+ device.
This is working, the mode is basic no fancy acks or "shockburst" stuff, the transmitter and receivers each get an interrupt as one would expect after sending or receiving data packets. I have a test xmit app and a test rx app on the other two boards, the transmitter loops sending a message on channel 100, wait 250 ms send one on channel 110, wait 250 ms and repeat.
Each receiver is identical but one listens on channel 100 and the other on channel 110 so each receiver sees a message every 500 ms, the board briefly flashes the onboard green led every time it receives a message.
I want to now explore auto acks and began by simply enabling the auto ack feature in the receiver for the data pipe it is listening on.
I figured that this should have no effect, the transmitter isn't expecting any ack and the receiver will simply automatically send one, a waste but the working boards should continue to work.
They don't, changing the receiver by just enabling auto ack for the pipe it is using, seems to break it and no messages are received and no interrupts are generated any more.
Disabling the auto ack again, makes it work again.
So why would enabling auto ack on a receiver cause the working code to stop working? how can simply enabling the transmission of an ack message, stop the receiver from working?
I enable the auto ack by setting the bit ENAA_P1 in this NRF register:

This is the complete manual.
This is working, the mode is basic no fancy acks or "shockburst" stuff, the transmitter and receivers each get an interrupt as one would expect after sending or receiving data packets. I have a test xmit app and a test rx app on the other two boards, the transmitter loops sending a message on channel 100, wait 250 ms send one on channel 110, wait 250 ms and repeat.
Each receiver is identical but one listens on channel 100 and the other on channel 110 so each receiver sees a message every 500 ms, the board briefly flashes the onboard green led every time it receives a message.
I want to now explore auto acks and began by simply enabling the auto ack feature in the receiver for the data pipe it is listening on.
I figured that this should have no effect, the transmitter isn't expecting any ack and the receiver will simply automatically send one, a waste but the working boards should continue to work.
They don't, changing the receiver by just enabling auto ack for the pipe it is using, seems to break it and no messages are received and no interrupts are generated any more.
Disabling the auto ack again, makes it work again.
So why would enabling auto ack on a receiver cause the working code to stop working? how can simply enabling the transmission of an ack message, stop the receiver from working?
I enable the auto ack by setting the bit ENAA_P1 in this NRF register:

This is the complete manual.
Last edited:




