Hi all,
I'm reading the NRF24L01+ datasheet, and I have a doubt.
1.-When the PRX send the PayLoad, it only set TX_DS when PTX sends a new packet, right? (page 48 NRFL2401+ Product Specification V1.0).
Then, if the PTX dont send more packets, the PRX never will knows if the PayLoad sent was received correctly, right?
2.-When PTX sends something, the MCU code must wait:
a/ for TX_DS flag
b/ if not TX_DS flag, then wait for MAX_RT (in case ARC>0)
c/ if not TX_DS flag, and ARC=0, wait for 130us (150us to ensure)
If any (a,b,c) is ok, then we must assume the transmission failed.
In a master and slave situation when the master sends a message it expects to get an acknowledgement from the slave but there is no automatic system to enable the slave to know that its acknowledgement has been received.
If the acknowledgement includes a payload with valuable data then you must write your own code to make the master tell the slave if the payload has not been received correctly.
One useful technique is to include serial numbers in messages. The recipient will know that a message has been missed if the serial numbers are not consecutive.
Another approach is to send messages at regular intervals even if the data has not changed. I use that for radio control. If the slave fails to get a message within X millisecs then it shuts down the motor.