Dear All, I am new to DSPs, so this might seem like an elementary question to some! I am developing on a C6711 DSP, using code composer (v2.20) and making use of the CSL. I have created a simple EDMA which copies a 1D array to a single memory location (an LED bank). The EDMA is triggered by channel 2 (Timer 1) and on each tick of this clock a single element is transferred. Everything works fine ... I can see the data being DMA'd to the LED bank on my development board, but the problem is, the DMA never stops! Initially I tried to transfer 5 elements from my array in a ingle frame, i.e. Frame Count = 0, Element Count = 5. The 5 elements were transferred succesfully, however I noticed that the EDMA was still running and continually transferring the 5'th element on each Timer 1 clock tick. EDMA_Config edmaCfg1 = { 0x21110000, /* Option */ (Uint32) g_RampArray,/* Source Address - Extern Decl.Obj */ 0x00000005, /* Transfer Counter - Numeric */ 0x800D0000, /* Destination Address - Numeric */ 0x00010001, /* Index register - Numeric */ 0x000101C8 /* Element Count Reload and Link Address */ }; I then tried transferring the 5 elements as 5 single element frames, again, the EDMA ran succesfully but never stopped. My conclusion is tha the EDMA is not halted when the frame count=0. By keeping an eye on my EDMA PaRAM I can verify this. My question is ... is this normal behaviour? Do you have to manually halt the EDMA's by catching an interrupt? Regards, Colin E. |
When should an EDMA terminate?
Started by ●August 22, 2003