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();
}

Parents Reply
  • From what I am seeing in the state diagram, the mode is switched from Standby I to TX mode upon setting PRIM_RX to 0 and CE is set for more than 10us. 
    It returns to standby I mode if CE is set to 0 and standby II if CE remains high. 

    It does mention that TX setting is 130us but i'm not sure if that refers to going back to either of the standby modes from TX mode 

Children
No Data
Related