
Section 10 Interrupt Controller (INTC)
Rev.1.00 Dec. 13, 2005 Page 299 of 1286
REJ09B0158-0100
Note:
There is no interrupt source register for IRL interrupt requests. When the holding function
is in use, however, operation is as follows. If, after detection of an IRL interrupt, the levels
on the IRL pins are changed or withdraw the interrupt before it has been accepted by the
CPU, the detection circuit retains the highest detected priority level for IRL interrupts until
the CPU accepts any interrupt request (IRL or not) or the corresponding mask bit has been
set to 1. The interrupt exception handling routine must then clear the IRL interrupt request
held in the detection circuit. For details, see section 10.7 Usage Notes.
When the INTMU bit in CPUOPM is set to 1, the interrupt mask level (IMASK) in SR is
automatically modified to the level of the accepted interrupt. When the INTMU bit is cleared to 0,
the IMASK value in SR is not affected by the acceptance of an interrupt.
10.4.4
On-chip Module Interrupts
On-chip module interrupts are interrupts generated by on-chip modules. The interrupt sources are
not assigned unique interrupt vectors; however, the sources are reflected in the interrupt event
register (INTEVT), so using the INTEVT value as a branch offset in the exception handling
routine provides a convenient and useful way to identify the sources and handle the individual
interrupts.
A priority level from 31 to 0 can be set for each module by means of INT2PRI0 to INT2PRI7. The
INTC rounds off the lowest order bit and sends a 4-bit code to the CPU. For details, see section
10.4.5, Interrupt Priority Levels of On-chip Module Interrupts.
The interrupt mask level bits (IMASK) in SR are not affected by the processing of an on-chip
module interrupt.
Interrupt source flags and interrupt enable flags for on-chip modules should only be updated when
the BL bit in SR is set to 1 or while the corresponding interrupt will not occur because its mask bit
has been set. To prevent the erroneous acceptance of interrupts from sources that should have been
updated, start by reading the on-chip module register that contains the corresponding flag, wait for
the priority determination time shown in table 10.13 (i.e. the period required to read a register in
INTC; this operation is driven by the peripheral clock), and then clear the BL bit to 0 or clear the
corresponding interrupt mask. This will secure the necessary time internally. When a number of
flags have to be updated, reading only the register containing the last flag to have been updated
causes no problems.
If flag updating is performed while the BL bit is cleared to 0, the program may jump to the
interrupt handling routine when the INTEVT value is 0. In this case, interrupt processing is
initiated due to the timing relationship between the updating of the flag and recognition of the