1.1.3 EC Interrupt Aggregator
The EC Interrupt Aggregator works in conjunction with the processor’s interrupt interface to handle hardware interrupts and exceptions.
All interrupts are routed to the ARM processor through the ARM Nested Vectored Interrupt Controller (NVIC). All interrupt sources are aggregated into the GIRQx Source registers. If the interrupt source is active and the interrupt is enabled, the corresponding Result bit is set. In many cases, the Result bit for an individual interrupt source is tied directly to the NVIC. These interrupts are knows as Direct Interrupts. In addition, all GIRQx can also generate an interrupt to the NVIC when any of the enabled interrupts in its group is asserted. The NVIC vectors for the aggregated GIRQ interrupts are known as Aggregate Interrupts. Firmware should not enable the group GIRQ NVIC interrupt at the same time individual direct interrupts for members of the group are enabled. If both are enabled, the processor will receive two interrupts for an event, one from the GIRQ and one from the direct interrupt.
Library Interface
ECIA library provides the following interfaces:
Functions
Name | Description |
---|---|
void ECIA_Initialize(void) | Initializes the ECIA module based on the MCC configuration |
void ECIA_GIRQBlockDisable(ECIA_GIRQ_BLOCK_NUM block) | Disables the given GIRQ block |
void ECIA_GIRQBlockDisableAll(void) | Disables the interrupt generation from all the GIRQ blocks |
void ECIA_GIRQBlockEnable(ECIA_GIRQ_BLOCK_NUM block) | Enables the given GIRQ block |
uint32_t ECIA_GIRQBlockStatusGet(ECIA_GIRQ_BLOCK_NUM block) | Reports the status of the group GIRQ interrupt assertion to the NVIC |
bool ECIA_GIRQIsInterruptEnabled(ECIA_INT_SOURCE int_src) | Returns the status of the given interrupt source |
uint8_t ECIA_GIRQResultGet(ECIA_INT_SOURCE int_src) | Returns the status of the given interrupt source |
void ECIA_GIRQSourceClear(ECIA_INT_SOURCE int_src) | Clears the given interrupt source |
void ECIA_GIRQSourceClearAll(void) | Clears all interrupt sources in all the ECIA blocks |
void ECIA_GIRQSourceDisable(ECIA_INT_SOURCE int_src) | Disables the given interrupt source |
void ECIA_GIRQSourceDisableAll(void) | Disables all interrupt sources in all the ECIA blocks |
void ECIA_GIRQSourceEnable(ECIA_INT_SOURCE int_src) | Enables the given interrupt source |
void ECIA_InterruptDisable(ECIA_INT_SOURCE int_src) | Disables the given interrupt source |
void ECIA_InterruptEnable(ECIA_INT_SOURCE int_src) | Enables interrupt at both ECIA and NVIC level for the given interrupt source |
Data types and constants
Name | Type | Description |
---|---|---|
ECIA_GIRQ_BLOCK_NUM | Enum | This enum is used to to specify the GIRQ block unmber in various ECIA block control APIs |
ECIA_INT_SOURCE | Enum | This enum is used to to specify the interrupt source in various ECIA APIs |
GIRQ_AGG_INT_NUM_GET | Macro | This macro returns the aggregate NVIC interrupt number from the given interrupt source |
GIRQ_DIR_INT_NUM_GET | Macro | This macro returns the direct NVIC interrupt number from the given interrupt source |
IS_INT_SRC_AGG_OR_DIR | Macro | This macro returns the 0 if the given interrupt source is of aggregate type and returns 1 if th interrupt source is of direct type |