XMC4800: Manually trigger low prio ISR from inside high prio ISR

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
User9906
Level 2
Level 2
Hello,
I need to trigger a low priority ISR (L_ISR) from inside an active high priority ISR (H_ISR).
This is done by manually setting the pending bit of L_ISR in the running H_ISR: NVIC_SetPendingIRQ(L_ISR)

H_ISR takes place every 4ms and contains only 5 simple assignments.
Device: XMC4800

What I do not understand is:
H_ISR > L_ISR: H_ISR is triggered continuously again instantaneously when H_ISR is finished.
L_ISR is not entered at all.

H_ISR < L_ISR (for testing):
H_ISR is triggered every 4ms and is interrupted by L_ISR as expected.

Any ideas why L_ISR > H_ISR works but H_ISR > L_ISR fails?
0 Likes
2 Replies
User9906
Level 2
Level 2
This behaviour seems to be only related to the ECAT0_0_IRQHandler which in my case is the H_ISR.

The PDI_Isr() ECAT-function is placed in the L_ISR, which is triggered by the H_ISR.

But as soon as the H_ISR is finished, H_ISR is immediately triggered again, when H_ISR > L_ISR...
0 Likes
User9906
Level 2
Level 2
The reason for this behaviour is the fact that the pending bit of the ECAT0_0_IRQHandler is depending on the
process data. The PDI_Isr() resets/acknowledges the process data event by reading the process data...
0 Likes