
6. Interrupt controller
A96G166/A96A166/A96S166 User’s manual
52
6
Interrupt controller
A96G166/A96A166/A96S166 supports up to 21 interrupt sources. The interrupts have separate
enable register bits associated with them, allowing software control. In addition, they have four levels
of priority assigned to themselves.
A non-maskable interrupt source is always enabled with a higher priority than any other interrupt
sources, and is not controllable by software.
Interrupt controller of A96G166/A96A166/A96S166 has following features:
Request receive from the 21interrupt sources
6 groups of priority
4 levels of priority
Multi Interrupt possibility
A request of higher priority level is served first, when multiple requests of different priority
levels are received simultaneously.
Each interrupt source can be controlled by EA bit and each IEx bit
Interrupt latency of 3 to 9 machine cycles in single interrupt system
A non-maskable interrupt is always enabled, while maskable interrupts are enabled through four pairs
of interrupt enable registers (IE, IE1, IE2, and IE3). Each bit of IE, IE1, IE2, IE3 register individually
enables/disables the corresponding interrupt source. Overall control is provided by bit 7 of IE (EA).
When EA is set to ‘0’, all interrupts are disabled: when EA is set to ‘1’, interrupts are
individually
enabled or disabled through the other bits of the interrupt enable registers. The EA bit is always
cleared to ‘0’ jumping to an interrupt service vector and set to ‘1’ executing the [RETI] instruction. The
A96G166/A96A166/A96S166 supports a four-level priority scheme. Each maskable interrupt is
individually assigned to one of four priority levels according to IP and IP1.
Default interrupt mode is level-trigger mode basically, but if needed, it is possible to change to edge-
trigger mode. Figure 15 shows the Interrupt Group Priority Level that is available for sharing interrupt
priority. Priority of a group is set by two bits of interrupt priority registers (one bit from IP, another one
from IP1). Interrupt service routine serves higher priority interrupt first. If two requests of different
priority levels are received simultaneously, the request of higher priority level is served prior to the
lower one.