Apr 20, 2018
02:06 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Apr 20, 2018
02:06 AM
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?
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?
2 Replies
Apr 20, 2018
08:51 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Apr 20, 2018
08:51 AM
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...
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...
Apr 24, 2018
12:58 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Apr 24, 2018
12:58 AM
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...
process data. The PDI_Isr() resets/acknowledges the process data event by reading the process data...