Hi,
in current projects we use the DMA subsystem on a MSP430F2618. We have assigned one DMA channel for the ADC12 and two channels for external communication with USCI.
I have a question to the DMA4 issue reported in the device erratasheet http://www.ti.com/litv/pdf/slaz033j :
"When a 20-bit wide write to a DMA address register (DMAxSA or DMAxDA) is interrupted by a DMA transfer, the register contents may be unpredictable."
One workaround proposed is to temporarily disable all active DMA channels (DMAEN = 0). Our software specification provides different drivers and encapsulates the different subsystems. According to our specification the ADC module is not allowed to enable/disable the USCI DMA and vice versa. So this approach is not useful.
Another workaround proposed is to use a Read Modify Write disable bit (DMARMWDIS = 1), but this one doesn't exist on the MSP430F2618 DMA register set.
The DMA Control Register 1 (DMACTL1) provides a DMAONFETCH bit. If this one is set, the DMA transfer occurs on next instruction fetch after the trigger. Does this one ensure that the error does not occur and a 20-bit wide write to a DMA address register isn't interrupted?
Regards
Christian