I am bringing up my first xmega project. Looking at the long list of
errata, I expected problems and I have certainly found them. I will make
some informative posts, in case there is useful discussion to be had, but
right now I am up against a show-stopper.
Using an ATxmega32A4, I am trying to generate a waveform using the DAC at
Port B in single-channel mode. I need to run it at 1 MHz, the maximum
conversion rate. It turns out that if I set the conversion interval for 32
clocks (I'm running at 32 MHz), and then simply watch the Data Register
Empty bit in the Status register and load the next sample value when I set
it go high, I get exactly the output I'm looking for. So, the DAC seems
happy.
Of course, I can't dedicate the firmware to watching the DAC, so I expect to
get the DMA controller to take over the update. What I expected was that by
selecting DACB Channel 0 as the trigger for the DMA channel, every time the
Data Register Empty bit goes active, the DMA controller would perform a
burst (set to one byte) and the next value would appear after the programmed
conversion interval. This does not work. Nothing happens.
If, using the debugger, I manually set the Transfer Request bit in the DMA
channel, then run, then stop and repeat this, I can cycle through the sample
values and all the register settings make sense. So, I seem to have the DMA
set up correctly. The problem seems only to be that the trigger source is
not having any effect.
I have switched the Trigger Source to a Timer / Counter just to see what
happens. Now I can see my sample values and they change at 1 us intervals,
but the values are all jumbled up. It does not seem to matter what the
Timer / Counter is doing, I get the same results. Even with the Timer /
Counter running with a long period, the samples come out of the DAC every
1us, but in some bizarre order.
Does anyone have any insight into exactly how DMA triggers work? Has anyone
got anything like this running? The Application Notes, of course, only deal
with the simple stuff and refer you to the data sheet for "advanced
features" like this.
Graham.
_______________________________________________
AVR-chat mailing list
[email protected]
http://lists.nongnu.org/mailman/listinfo/avr-chat