I'd like to use a DMA channel to update TIMA0 LOAD and CC_01 registers on each ZERO event to generate a specific PWM waveform.
I have the timer configured, and the DMA set up to perform 3 word-sized transfers each event, and the source address points to an array that has [ LOAD_val0, 0, CC_01_val0, LOAD_val1, 0, CC_01_val1, ... LOAD_valn, 0, CC_01_valn ]. (The dummy 0's are to fill the gap between registers). The destination address points to LOAD and increments word-wise. I can see that the first set of values get transferred by DMA after the first ZERO event.
However, I'm not sure if there's a way to configure the DMA source address to move onto the next block of settings for the next ZERO event. I'd like the next transfer to start at LOAD_val1, when I think it's actually being set back to LOAD_val0 each time causing every subsequent pulse to have the same timings.
Is there a setting to allow a block transfer to step through an array of blocks rather than repeating the same one each time? Or do I need to use a second DMA channel to reconfigure the first each time? Or have I missed some other way of updating TIMA?
