SPRUJ79A November 2024 – December 2025 F29H850TU , F29H859TU-Q1
PIPE allows arbitrated interrupts to be grouped into smaller sets to effectively create multiple execution contexts. This feature can be used when executing interrupts across multiple stacks, and interrupts on different stacks are operating at different time slots (that is, interrupts in one context at a time). For example, these contexts can be used by a software task manager system or operating system.
The Interrupt Controller is configured to only arbitrate interrupts whose context matches the "active context". Active context is selected by setting the ACTIVE_CONTEXT_ID (TASK_CTRL.ACTIVE_CONTEXT_ID) field. The stacks, links, and so on, associated with each interrupt need to be configured accordingly depending on the application.
Each interrupt is then configured with a CONTEXT_ID (INT_CONFIG.CONTEXT_ID) that determines which context the interrupt is in. The ACTIVE_CONTEXT_ID is compared against the individual interrupt CONTEXT_ID. Only interrupt lines with these matching IDs, participate in arbitration and execute the corresponding ISRs.
| ACTIVE_CONTEXT_ID | Context Type |
|---|---|
| 00 | Context-0 - Default context. |
| 01 | Context-1 |
| 10 | Context-2 |
| 11 | Interrupts which are context-agnostic and/or participate in arbitration regardless of ACTIVE_CONTEXT_ID. |
Any updates to ACTIVE_CONTEXT_ID and CONTEXT_ID take place on the next arbitration cycle. Changing the active context or context ID does not stop accumulation of interrupt events that are out of context. This only disables interrupt participation in arbitration. Any interrupts that are already in service or nested have no effect on this setting.
After ACTIVE_CONTEXT_ID is modified, software must wait at least 6 system clock cycles for arbitration to be completed before re-enabling GLOBAL_EN.ENABLE.