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.

EDMA interrupt

Hi,

 I have configured the EDMA on C6424 to read 256 bytes from the UART. Currently we are working on a ping pong buffer method, where in as soon as 256bytes gets filled an interrupt gets generated by the EDMA.  Then I can use the filled buffer for processing. In case there is infrequent transmission of data on UART, I would like to start processing UART data after some time even if it is less than 256 bytes. Can EDMA be configured to generate interrupt if it receives less than 256 bytes ie., if any data has been received via UART?

Regards,

Smitha Joseph

  • Smitha Joseph,

    You have two choices. You can set TCINTEN to generate an interrupt at the end of the complete transfer sequence programmed into the DMA channel's PARAM. Or you can set ITCINTEN to generate an interrupt after each event or Transfer Request, except for the last one. Of course, you can select both choices at the same time.

    But you have to decide how much data will be transferred between interrupts, and then generate an interrupt after that many bytes have been transferred.

    If this is clear enough, please mark this Answered. If not, please reply back asking again, maybe with some clarification.

    Regards,
    RandyP

  • I offer the following just as "wild ideas" that may or may not be of use in trying to solve the problem.  I am not familiar with that specific UART hardware, but in many cases one can examine a UART register to see how much data is currently in the device's buffer, and that can be done without any use of interrupts.  You might also consider using a timer interrupt to periodically poll the buffer.  With EDMA you should be able to chain between data transfer and increment of a buffer counter, or maybe just examine the current buffer pointer for the EDMA channel.  Good luck; there must be a way!