Dwt_isr and multiple events

I am student having fun with the DW1000 equipped EVB boards.
I am actually doing some crazy stuff, so please bear with me :slight_smile:

I wrote an application in which several transceivers send sensor data towards a single collector node.
Senders’ transmissions actually do occur almost at the same time, the actual time difference can shift from 10 up to 40 us among transmitters.

The collector node does use the frame timeout feature to stop listening in case no frame is received within the expected interval. Note that the collector node can actually receive from 6-10 transmitters.

I am using the Decawave software API (the reported version is 05.01.00) with interrupts enabled and using the provided dwt_isr API function.

I am writing here because sometime the application fails as apparently multiple ISR callbacks are issued in a single dwt_isr call.
Indeed I make the application print the SYS_STATUS register when errors occur, which is reported with the callback parameter (cbData->status) and tracked down the following status codes :

  1. 0x826b03 in which RXFCG and RXRFTO are both set but not the LDEDONE;
  2. 0x826f03 -> LDEDONE, RXFCG and RXRFTO;
  3. 0x826f03 -> RXRFSL, RXRFTO

From the user manual I note that multiple bits that trigger ISR callbacks are flagged, e.g.: RX_CFG which is associated to a successful frame reception and RXRFTO that, on the other hand, is associated to a timeout event.

With the current dwt_isr function, all callbacks corresponding to these events are issued, which is exactly what is causing the errors in my application (in which scheduling operations are placed inside the callbacks in response to a particular radio event).

I wonder if this situation can actually occur, and to some extent it can be an issue of the Radio/API, or it is due to some error of mine.
Would it be ok to simply adapt the dwt_isr function to my needs?

Thank you for the attention.

Best regards,

1 Like