Hi,
I asked the same question but it was a long time ago and still I don't know how to solve this issue. I got a reply but It wasn't help so now I'm writing again with more details.
Well, I have some problem with NRF24L01+. I'm trying to make bidirectional connection between two devices with this chip. When I'm sending payload with ACK, TX_DS interrupt on PRX fire but RX_DR on PTX doesn't. I know that i have got this data because FIFO RX isn't empty. What condition should be fulfilled to RX_DR interrupt fire on ongoing data with ACK?
My routine on PTX side looks like:
- Go to PTX mode.
- Send payload.
- While TX_DS or MAX_RT doesn't fire, do nothing.
- If MAX_RT fire, set (clear ;)) this interrupt and send packet again. Else if TX_DS fire, wait ~100ms then check RX_DR - in this moment, I know i get acknowledge packet because FIFO isn't empty and i'm printing it to console without problem. But RX_DR doesn't fire.
As I know, I don't have to enable this interrupt in CONFIG register because it just set reflect on physical pin, and I don't need this. Of course I enabled it but it doesn't help. Also I was trying to set PRX mode after sending the packet, but it doesn't help too.
My NRF is configured like this:
PRX side: STATUS: 0x0E CONFIG: 0x7F EN_AA: 0x3F EN_RXADDR: 0x03 SETUP_AW: 0x03 RF_CH: 0x6E RF_SETUP: 0x06 RX_PW_P0: 0x00 DYNPD: 0x03 FEATURE: 0x06 RX_ADDR_P0: 0xE7|0xE7|0xE7|0xE7|0xE7| TX_ADDR: 0x0F|0x0F|0x0F|0x0F|0x0F|
PTX side: STATUS: 0x0E CONFIG: 0x0E EN_AA: 0x3F EN_RXADDR: 0x03 SETUP_AW: 0x03 RF_CH: 0x6E RF_SETUP: 0x07 RX_PW_P0: 0x20 FEATURE: 0x06 DYNPD: 0x03