Peripheral Interrupt Expansion (PIE)
www.ti.com
148
SPRUI07–March 2020
Submit Documentation Feedback
Copyright © 2020, Texas Instruments Incorporated
System Control and Interrupts
PIEIERx register, and flagged as pending in the PIEIFRx is fetched and used as the
branch address. In this manner if an even higher priority enabled interrupt was flagged
after Step 7, it will be serviced first.
b. If no flagged interrupts within the group are enabled, then the PIE will respond with the
vector for the highest priority interrupt within that group. That is the branch address used
for INTx.1. This behavior corresponds to the 28x TRAP or INT instructions.
NOTE: Because the PIEIERx register is used to determine which vector will be used for the branch,
you must take care when clearing bits within the PIEIERx register. The proper procedure for
clearing bits within a PIEIERx register is described in Section 1.6.3.2. Failure to follow these
steps can result in changes occurring to the PIEIERx register after an interrupt has been
passed to the CPU at Step 5 in Figure 6-5. In this case, the PIE will respond as if a TRAP or
INT instruction was executed unless there are other interrupts both pending and enabled.
At this point, the PIEIFRx.y bit is cleared and the CPU branches to the vector of the interrupt fetched
from the PIE.
1.6.3.4 The PIE Vector Table
The PIE vector table (see Table 1-112) consists of a 256 x 16 SARAM block that can also be used as
RAM (in data space only) if the PIE block is not in use. The PIE vector table contents are undefined on
reset. The CPU fixes interrupt priority for INT1 to INT12. The PIE controls priority for each group of eight
interrupts. For example, if INT1.1 should occur simultaneously with INT8.1, both interrupts are presented
to the CPU simultaneously by the PIE block, and the CPU services INT1.1 first. If INT1.1 should occur
simultaneously with INT1.8, then INT1.1 is sent to the CPU first and then INT1.8 follows. Interrupt
prioritization is performed during the vector fetch portion of the interrupt processing.
When the PIE is enabled, a TRAP #1 through TRAP #12 or an INTR INT1 to INTR INT12 instruction
transfers program control to the interrupt service routine corresponding to the first vector within the PIE
group. For example: TRAP #1 fetches the vector from INT1.1, TRAP #2 fetches the vector from INT2.1
and so forth. Similarly an OR IFR, #16-bit operation causes the vector to be fetched from INTR1.1 to
INTR12.1 locations, if the respective interrupt flag is set. All other TRAP, INTR, OR IFR,#16-bit operations
fetch the vector from the respective table location. The vector table is EALLOW protected.
Out of the 96 possible MUXed interrupts in Table 1-111, 43 interrupts are currently used. The remaining
interrupts are reserved for future devices. These reserved interrupts can be used as software interrupts if
they are enabled at the PIEIFRx level, provided none of the interrupts within the group is being used by a
peripheral. Otherwise, interrupts coming from peripherals may be lost by accidentally clearing their flags
when modifying the PIEIFR.
To summarize, there are two safe cases when the reserved interrupts can be used as software interrupts:
1. No peripheral within the group is asserting interrupts.
2. No peripheral interrupts are assigned to the group. For example, PIE group 11 and 12 do not have any
peripherals attached to them.
The interrupt grouping for peripherals and external interrupts connected to the PIE module is shown in
Table 1-111. Each row in the table shows the 8 interrupts multiplexed into a particular CPU interrupt. The
entire PIE vector table, including both MUXed and non-MUXed interrupts, is shown in Table 1-112.