
iiBusModuLes:inteLLigentdMa(idMa)
s1C33L17teChniCaLManuaL
ePson
ii-2-9
II
IDMA
These causes of interrupt are used in common for interrupt requests and IDMA invocation requests.
To invoke IDMA upon the occurrence of a cause of interrupt, set the corresponding bits of the IDMA request
and IDMA enable registers shown in the table by writing 1.
innone-linkmode(LnKen=0):
Then when a cause of interrupt occurs, an interrupt request to the CPU is kept pending and the corresponding
IDMA channel is invoked.
The cause-of-interrupt flag that has been set to 1 remains set until the DMA transfer invoked by it is completed.
If the following two conditions are met when one DMA transfer is completed, an interrupt request is generated
without resetting the cause-of-interrupt flag.
The transfer counter has reached 0.
DINTEN in control information is set to 1 (interrupt enabled).
In this case, the IDMA request bit is cleared to 0. Therefore, if IDMA needs to be invoked when a cause of
interrupt occurs next time, this register must be set up again. To prevent unwanted IDMA requests from being
generated, this setting must be performed before enabling interrupts and after resetting the cause-of-interrupt
flag. 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 in control information has been set to 0, 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.
If the IDMA request register bit is left reset to 0, the relevant cause of interrupt generates an interrupt request
and not an IDMA request.
The control registers (interrupt enable register and interrupt priority register) corresponding to the cause of
interrupt do not affect IDMA invocation. IDMA can be invoked even if the interrupt enable bit in ITC is set to
0 (interrupt disabled). However, these register must be set to enable the interrupt when generating the interrupt
after completing the DMA transfer.
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).
If the last linked channel’s transfer count is not 0 or the last linked channel’s DINTEN = 0, FIDMA(D4/
0x300281) is not set, and no interrupt is generated.