
iiBusModuLes:inteLLigentdMa(idMa)
ii-2-16
ePson
s1C33L17teChniCaLManuaL
ii.2.6interruptFunctionofintelligentdMa
IDMA can generate an interrupt that causes invocation of IDMA and an interrupt for the completion of IDMA
transfer itself.
interruptwheninvokedbyacauseofinterrupt
innone-linkmode(LnKen=0):
If the corresponding bits of the IDMA request and interrupt enable registers are left set (= 1), assertion of an
interrupt request is kept pending even when the enabled cause of interrupt has occurred and the IDMA channel
assigned to that cause of interrupt is invoked.
If the transfer counter is decremented to 0 and DINTEN = 1 (interrupt enabled) when one DMA transfer is
completed, the cause of interrupt that has invoked IDMA is not reset and an interrupt request is generated. At
the same time, the IDMA request bit is cleared to 0. The IDMA enable bit is not cleared and remains set to 1.
If the transfer counter is not 0, the cause-of-interrupt flag is reset when the DMA transfer is completed, so that
no interrupt is generated. In this case, the IDMA request bit and IDMA enable bit are not cleared and remain
set to 1.
When DINTEN has been set to 0 (interrupt disabled), the cause-of-interrupt flag is reset even if the transfer
counter reaches 0, so that no interrupt is generated. In this case, the IDMA request bit is not cleared but the
IDMA enable bit is cleared.
When IDMA is invoked by a cause of interrupt, the IDMA cause-of-interrupt flag FIDMA (D4/0x300281) will
not be set.
For details about the causes of interrupt that can be used to invoke IDMA and the interrupt control registers,
refer to the descriptions of the peripheral circuits in this manual.
Note that the priority levels of causes of interrupt are set by the interrupt priority register. Refer to Section III.2,
“Interrupt Controller (ITC).” However, when compared between IDMA and interrupt requests, IDMA is given
higher priority over the other. Consequently, even when a cause of interrupt occurring during an IDMA transfer
has higher priority than the cause of interrupt that invoked the IDMA transfer, an interrupt request for it or a
new IDMA invocation request is not accepted until after the current IDMA transfer is completed.
inlinkmode(LnKen=1):
1. When a cause of interrupt occurs, the IDMA will be invoked on each linked chain in succession. In this mode,
the cause-of-interrupt flag is cleared to 0, regardless of the value of each channel’s transfer counter or DINTEN
setting. This means that a corresponding interrupt request is never issued to the CPU.
2. The IDMA request bit for the first channel is not cleared and remains set to 1, regardless of the value of each
channel’s transfer counter or DINTEN setting.
3. The IDMA Enable bit for each linked channel is cleared to 0 whenever the value of a channel’s transfer counter
becomes 0.
This means that when the IDMA Enable bit for the first channel is cleared, if the IDMA must be invoked when
a cause of interrupt next occurs, this bit must be set up again.
4. If the following two conditions are met, IDMA cause-of-interrupt flag FIDMA (D4/0x300281) will be set.
The transfer counter for the last linked channel becomes 0.
The DINTEN in the last linked channel’s control information is set to 1 (interrupt enabled).