NRF52 - ESB - Receiving duplicate packets

We are having some issues with ESB, it seems the automatic ACKs are not working properly and we get spammed with a lot of duplicates.

We believe the issue is because we start some function immediately when NRF_ESB_EVENT_RX_RECEIVED is triggered and because of this it doesn't have time to send an ACK.

How can we delay without blocking the CPU before starting our function?

This seems to work but is it the best way?

//event triggered

for(int i=0; i<50; i++){
nrf_delay_us(10);
}

//start function

Parents
  • Hello,

    Typically the ESB run on relative high priority, so even if the application may be executing code with lower priority it should not affect the ESB libray handle the transmisson of acknowledgements. 

    If you have enabled ack you should allow sufficient time (e.g 500us) on reception of packet to ensure ack can be sent out. If you don't care about ack, it is possible to disable ack when transmitting the packet.

    Kenneth

Reply
  • Hello,

    Typically the ESB run on relative high priority, so even if the application may be executing code with lower priority it should not affect the ESB libray handle the transmisson of acknowledgements. 

    If you have enabled ack you should allow sufficient time (e.g 500us) on reception of packet to ensure ack can be sent out. If you don't care about ack, it is possible to disable ack when transmitting the packet.

    Kenneth

Children
Related