This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Using DMA controller continuously

Hi All,

I'm using the C5509A and I'd like to use the DMA continuously, i.e. after one transfer finishes, possibly reconfigure the DMA controller, and then start another transfer.
I thought that I could re-start the DMA inside of an interrupt that is generated after the last frame is transmitted.

If I have

interrupt void dmaXmtIsr(void) {
// reconfigure dma here
// ...
// restart here
    DMA_start(hDmaXmt);
}

this seems to work as long as I don't have any other interrupt. But when I compile in some USB code, restarting the DMA doesn't work anymore.
I don't have very much experience with interrupts. I played around a little bit with it using the IRQ CSL functions, but I don't get it working. I suppose the USB interrupt has higher priority and then the DMA interrupt gets "lost" as soon as there is a USB interrupt. How can I make that both work correctly toghether?

Btw, the USB interrupt routine is simply:
interrupt void USB_ISR(void)
{
   USB_evDispatch();   // call USB event dispather to handle all USB events
}

 

Thank you very much for your help.
Best regards,

Andreas