INT_CHAN0
INT_CHAN2
INT_CHAN1
INT_CHAN127
CHAN0
INTREQ.0
INT FLAG
FIQ_CHAN[0]
CHAN2
INTREQ.2
INT FLAG
1
0
FIQ_CHAN[2]
IRQ_CHAN[2]
FIRQPR.2
REQENA.2
Controlled by:
REQENASET.2
REQENACLR.2
CHAN1
INTREQ.1
INT FLAG
FIQ_CHAN[1]
CHAN127
INTREQ.127
INT FLAG
1
0
FIQ_CHAN[127]
IRQ_CHAN[127]
FIRQPR.127
REQENA.127
Controlled by:
REQENASET.127
REQENACLR.127
Interrupt Handling Inside VIM
671
SPNU563A – March 2018
Copyright © 2018, Texas Instruments Incorporated
Vectored Interrupt Manager (VIM) Module
19.4.2 VIM Input Channel Management
As shown in
, the VIM enables channels on a channel-by-channel basis (in the REQENASET
and REQENACLR registers); unused channels may be masked to prevent spurious interrupts.
NOTE:
The interrupt ENABLE register does not affect the value of INTREQ.
Figure 19-7. Interrupt Channel Management
By default, interrupt CHAN0 is mapped to ESM (Error Signal Module) high level interrupt and CHAN1 is
reserved for other NMI. For safety reasons, these two channels are mapped to FIQ only and can
NOT
be
disabled through ENABLE registers.
NOTE:
NMI Channel
Channel 0 and channel 1 are not maskable by the REQENASET / REQENACLR bit and both
channel are routed exclusively to FIQ/NMI request line (FIRQPR0 and FIRQPR1 have no
effect).
The VIM prioritizes the received interrupts based upon a programmed prioritization scheme. The VIM can
send two interrupt requests to the CPU simultaneously—one IRQ and one FIQ. If both interrupt types are
enabled at the CPU level, then the FIQ has greater priority and is handled first. Each interrupt channel,
except channel 0 and 1, can be assigned to send either an FIQ or IRQ request to the CPU (in the
FIRQPR register).
The VIM provides a default prioritization scheme, which sends the lowest numbered active channel (in
each FIQ and IRQ classes) to the CPU. Within the FIQ and IRQ classes of interrupts, the lowest channel
has the highest priority interrupt. The channel number is programmable through register CHANMAPx.