Architecture
611
SPRUH82C – April 2013 – Revised September 2016
Copyright © 2013–2016, Texas Instruments Incorporated
Enhanced Direct Memory Access (EDMA3) Controller
is less rigorous, with less burden on the software in polling for set interrupt bits, but can
occasionally cause a race condition, as mentioned above.
Example 17-3. Interrupt Servicing
If it is desired to leave any enabled and pending (possibly lower priority) interrupts, it is required to force the
interrupt logic to reassert the interrupt pulse by setting the EVAL bit in the interrupt evaluation register
(IEVAL).
The pseudo code:
1. Enter ISR.
2. Read IPR.
3. For the condition set in IPR that you desire to service:
(a) Service interrupt as required by application.
(b) Clear bit for serviced conditions (others may still be set, and other transfers may have resulted in
returning the TCC to EDMA3CC after step 2).
4. Read IPR prior to exiting ISR:
(a) If IPR is equal to 0, then exit ISR.
(b) If IPR is not equal to 0, then set IEVAL so that upon exit of ISR, a new interrupt is triggered if any
enabled interrupts are still pending.
The EVAL bit must not be set when IPR is read to be 0, to avoid generation of extra interrupt pulses.
NOTE:
Since the DMA region access registers (DRAE) are required to enable the transfer
completion region interrupts, it is assumed that there will be a unique and nonoverlapping (in
most cases) assignment of the channels and interrupts among the different shadow regions.
This allows the interrupt registers (IER, IESR, IECR, IPR, and ICR) in the different shadow
regions to functionally operate in an independent manner and nonoverlapping. The above
examples for the interrupt service routine is based on this assumption.
17.2.9.3 Interrupt Evaluation Operations
The EDMA3CC has interrupt evaluate registers (IEVAL) in each shadow region. These registers are the
only registers in the DMA channel shadow region memory map that are not affected by the settings for the
DMA region access enable registers (DRAE). A write of 1 to the EVAL bit in these registers associated
with a particular shadow region results in pulsing the associated region interrupt, if any enabled interrupt
(via IER) is still pending (IPR). This register can be used in order to assure that the interrupts are not
missed by the CPU (or the EDMA3 master associated with the shadow region) if the software architecture
chooses not to use all interrupts. See
for the use of IEVAL in the EDMA3 interrupt service
routine (ISR).
Similarly an error evaluate register (EEVAL) exists in the global region. A write of 1 to the EVAL bit in
EEVAL causes the pulsing of the error interrupt if any pending errors are in EMR, QEMR, or CCERR. See
for additional details on error interrupts.
NOTE:
While using IEVAL for shadow region completion interrupts, you should make sure that the
IEVAL operated upon is from that particular shadow region memory map.