This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Interrupt reception on the TX side seems inconsistent for nRF2401+

So the interrupt on the nRF2401+ seems to be working inconsistently. I get interrupts sometimes and sometimes I don't. 

For a context: I'm transmitting a sensor data only when the user types in something in the command line. And sometimes I have also seen IRQ triggering even though none of the interrupt bits are set `(RX_DR, TX_DS, MAX_RT)`.

Following is what I'm printing after sending a payload. You can see dynamic payload length, PWR_UP are enabled and PRIM_RX is disabled (TXing), but interrupt never gets fired.

Her'es a function for transmitting payload:

NRF_STATUS nRF24_TransmitPayload(nrfl2401 *nrf, uint8_t *data, uint8_t size)
{
	printf ("\n ********** Sending payload data %s ************\n", data);

	nrf->state = NRF_TX_BUSY;

	char txt[20] = "\nTX payload_";

	nRF24_WriteRegister(nrf, nRF24_CMD_W_PAYLOAD, data, size, txt);

	nRF24_PrintDetails(&nrfRadio);
	
	SET_CE();

	while(nrf->state == NRF_TX_BUSY); // waiting till ISR is fully serviced

	RESET_CE();
}

Related