Hello Community,
i have problems to use the EPI in GP Mode... I use high clock rates and so I need the DMA interaction... my problem is the "feature" of the extra DMA Counter in the EPI registers...
I have no idea how i can call the interrupt and keep the DMA running... because every time I want call the "DMA ready interrupt", I have to set the EPIDMATxCount correctly... and without calling the interrupt I can't set the new pingpong transaction...
Did I miss a thing?
void ExternalBusInterface(void)
{
uint32_t mode = uDMAChannelModeGet(UDMA_CH21_EPI0TX | UDMA_PRI_SELECT);
if(mode == UDMA_MODE_STOP)
{
uDMAChannelTransferSet(UDMA_CH21_EPI0TX | UDMA_PRI_SELECT,
UDMA_MODE_PINGPONG, &actuell_outgoing_image[dma_counter],
(void *)(matrix_epi_buf),
send_dma_one);
//DMA is stoping until i reset this!!!
EPIDMATxCount(EPI0_BASE,send_dma_one);
dma_counter += send_dma_one;
if(dma_counter >= ((256*256)-send_dma_one)) {
dma_counter = 0;
GPIO_PORTN_DATA_R ^= 0x01;
}
}
mode = uDMAChannelModeGet(UDMA_CH21_EPI0TX | UDMA_ALT_SELECT);
if(mode == UDMA_MODE_STOP)
{
uDMAChannelTransferSet(UDMA_CH21_EPI0TX | UDMA_ALT_SELECT,
UDMA_MODE_PINGPONG, &actuell_outgoing_image[dma_counter],
(void *)(matrix_epi_buf),
send_dma_one);
//DMA is stoping until i reset this!!!
EPIDMATxCount(EPI0_BASE,send_dma_one);
dma_counter += send_dma_one;
if(dma_counter >= ((256*256)-send_dma_one)) {
dma_counter = 0;
GPIO_PORTN_DATA_R ^= 0x01;
}
}
// Clear the requested interrupt sources.
//
//EPI0_EISC_R = 0x00000010;
EPI0_EISC_R = 0xFFFFFFFF;
}
Bye Basti