nrf24l01 payload in ack packet problem

Howdy

I couldn’t find any other postes related to this issue so i hope i’m not doubling up by creating this topic

I’ve got a pair of nrf24l01’s which communicate and behave as expected with and without auto ack enabled. however i want to create a bi-directional link and send data from the PRX to the PTX in the ack packet;

with dynamic payload lengths enabled on pipe0 on both PTX and PRX and the FEATURE register options enabled i clock the payload into PRX with W_ACK_PAYLOAD. the FIFO shows it’s not empty. i’ll send a packet from PTX to PRX, the PRX will lift the DR IRQ flag, PTX will lift DS flag. the next packet i send from PTX to PRX will lift both DS and DR on the PRX (and the TX FIFO shows empty) however the PTX doesn’t receive the payload (only raises the DS flag), and manually checking the FIFO’s show the’re empty…

anybody got any thoughts?? if i’ve omitted some information don’t hesitate to ask for it… thanks in advance

This is my code once used successfully,may be of some help.

//use ack payload

SPI_Write_Reg(ACTIVATE,0x73);//activate the specific command

SPI_Write_Reg(WRITE_REG+DYNPD,0x01);//enble dyn. payload length in pipe 0,require EN_DPL and ENAA_P0

SPI_Write_Reg(WRITE_REG+FEATURE,0x06);//0000 0110, EN_DPL=1,EN_ACK_PAY=1

//write the payload to the ack frame

CSN_0;

SPI_Write_Buf(W_ACK_PLOAD+0,ackpayloadbuf,15);

CSN_1;

SPI_Write_Reg(ACTIVATE,0x73);//deactivate the specific command*/

In addtion,you should enable EN_AA in pipe 0 to receive the ack payload.

Hope this can help you.