I am having a problem when I enable the transfer completion interrupt in my ping-pong DMA code. I find that when the interrupt is enabled that the code works but that other threads are starved for time. I started with the code from edma3_lld_01_10_00_01\examples\edma3_driver\evm6747. Then I modified dma_ping_pong_test so that it is event triggered instead of manual (see attached zip). I'm using GPIO4_3 to trigger the events. This works, but I find that if I feed in a GPIO signal that is faster than about 15kHz for the EDMA trigger that everything bogs right down. For example I don't see any Heartbeat text or update of my CPU Load Graph in CC3. If I disable the TC interrupt then I can run the GPIO signal much faster ex >100kHz. My ultimate goal is to use the EDMA to transfer ADC data from a FIFO on the EMIF into ping-pong buffers. I'm expecting the FIFO's to half-fill at a rate of about 40kHz. I will then alternate processing between ping and pong. I am running on the SpectrumDigital C6747 EVM.
Does anyone have any idea why the TC interrupt would slow things down so much? Is this normal? Is there a reliable way to test for completion of the transfers without using the interrupt?
Thanks,
Lopi