FORUM

SX1280 simultaneous IRQs on all DIOs

We are having a strange behaviour with the sx1280. In a mode, where it continuosly is receiving messages only (no TX), from time to time all DIOs are raising an interrupt at the same time.
If the IRQ status is requested from the sx1280, it tells no interrupts.
We are using this IRQ configuration:

uint16_t Dio1Mask = IRQ_CRC_ERROR | IRQ_RX_TX_TIMEOUT | IRQ_HEADER_ERROR;
Dio1Mask |= IRQ_HEADER_VALID | IRQ_PREAMBLE_DETECTED;

uint16_t Dio2Mask = IRQ_TX_DONE;
uint16_t Dio3Mask = IRQ_RX_DONE;
uint16_t IrqMask = Dio1Mask | Dio2Mask | Dio3Mask;

xxx->SetDioIrqParams(this, IrqMask, Dio1Mask, Dio2Mask, Dio3Mask);

After that happens, the chip lost it’s configuration. After reconfiguring, even without a reset, it works again without any issues until the problem happens the next time.

Any ideas or others, having seen the same strange behaviour?

Tx
Matthias

Not much help to you, but I’ve also been chasing mysterious IRQ behaviour where DIOs will be raised but no irqs are returned by the status command. Separately, I’m also having the chip stop responding at times, but haven’t spent much time investigating.

I tracked down my problem with raised DIO and IRQstatus 0, and (predictably) it was user error. I have code triggered both from the DIO and from a timer. If the DIO happens close enough to the timer then the code triggered from the timer clears the IRQstatus so by the time the DIO interrupt handler finally runs there are no IRQs left to be seen. It was fairly easy to see what was going on once I got enough pins hooked up to a logic analyzer.

That’s a nifty conclusion here, I do agree that in the end, digital lines are oftenly the solution to many issues with inter chip communication and weirdnesses.
Cheers

You mean when the IRQ clear command and IRQ read are too close together?