
III PERIPHERAL MODULES 1 (SYSTEM): INTERRUPT CONTROLLER (ITC)
S1C33E07 TECHNICAL MANUAL
EPSON
III-2-11
III
ITC
III.2.5 IDMA Invocation
The causes of interrupt for which IDMA channel numbers are written in Table III.2.1.1.1 have the function to
invoke the intelligent DMA (IDMA).
IDMA request register
The IDMA request register is used to specify the cause of interrupt that invoke an IDMA transfer. If an IDMA
request bit is set to 1, the IDMA request will be generated when the corresponding cause of interrupt occurs.
When the IDMA request bit is set to 0, the corresponding cause of interrupt does not invoke IDMA and a
normal interrupt processing will be performed. The IDMA request register is set to 0 by an initial reset.
The method by which this register is set can be selected from the software application using either of the two
methods described below. This selection is accomplished using IDMAONLY (D1/0x30029F).
IDMAONLY: IDMA Request Register Set Method Select Bit in the Flag Set/Reset Method Select Register
(D1/0x30029F)
Set-only method (default)
This method is selected (IDMAONLY (D1/0x30029F) = 1) when initially reset.
With this method, an IDMA request bit is set by writing 1. Although multiple IDMA request bits are located
in the IDMA request register, the IDMA request bits for which 0 has been written can be neither set nor reset.
Therefore, this method ensures that only a specific IDMA request bit is set.
However, when using read-modify-write instructions (e.g., bset, bclr, or bnot), note that an IDMA request bit
that has been set to 1 is not reset by writing.
Read/write method
This method is selected by writing 0 to IDMAONLY (D1/0x30029F).
When this method is used, IDMA request bits can be read and written as for other registers. Therefore, the
IDMA request bit is reset by writing 0 and set by writing 1. In this case, all IDMA request bits for which 0
has been written are reset. Even in a read-modify-write operation, an IDMA request bit can be reset by the
hardware between the read and the write, so be careful when using this method.
IDMA enable register
To perform IDMA transfer using a cause of interrupt, the corresponding bit of the IDMA enable register must
be set to 1. If this bit is set to 0, the cause of interrupt cannot invoke the IDMA channel. The IDMA enable
register is set to 0 by an initial reset.
The IDMA enable register allows selection of a set method (set-only method or read/write method) similar to
the IDMA request register. This selection is accomplished using DENONLY (D2/0x30029F). See the above
explanation for the set method.
DENONLY: IDMA Enable Register Set Method Select Bit in the Flag Set/Reset Method Select Register
(D2/0x30029F)
Invoking IDMA
Before IDMA can be invoked by the occurrence of a cause of interrupt, the corresponding bits of the IDMA
request and IDMA enable registers must be set to 1. Then when a cause of interrupt occurs, the interrupt
request to the CPU is made pending and the corresponding IDMA channel is invoked. The DMA transfer is
performed according to the control information of that IDMA channel. The interrupt level set by the interrupt
priority register of the ITC does not affect the IDMA invocation. The IDMA request can be accepted even
if the interrupt level of the CPU is higher than the set value of the interrupt priority register. However, when
generating the interrupt request to the CPU after the IDMA transfer is completed, the interrupt is controlled
using the interrupt level set by the interrupt priority register.
An IDMA invocation request is accepted even when the interrupt enable register and PSR of the CPU is set to
disable interrupts. It is also necessary that the control information for the IDMA channel has been set.