Other Parts Discussed in Thread: SYSBIOS
Tool/software: TI-RTOS
code gen tools 7.4.23
SYSBIOS 6.46.2.47
EDMA3LLD 2.12.0
Custom board
so here is what is going on. we are calling hEdma[0] = edma3init(0, &result); to initialize the EDMA3 and with that comes the setup with the event combiner and interrupts. i just started getting the EDMA3 to work with our McBSP setup. i seem to have everything set up right as the EDMA3 will channel sort and properly links in the ping pong buffers so it seems. it runs nonstop and memory is always moving. my problem is that my call back routine only gets called once for each channel (rx and tx) and then never again.
my main channel requested like this:
uint32_t MemcpychId = EDMA3_DRV_HW_CHANNEL_EVENT_5;
uint32_t tcc = EDMA3_DRV_TCC_ANY;
/* TRANSMIT */
result = EDMA3_DRV_requestChannel (hEdma[0], &MemcpychId, &tcc, (EDMA3_RM_EventQueue)0, &EDMAMcBSP1Txcallback, NULL);
and the link channels are requested like so:
uint32_t MemcpychIdtemp = EDMA3_DRV_LINK_CHANNEL;
tcc = EDMA3_DRV_TCC_ANY;
result = EDMA3_DRV_requestChannel(hEdma[0], &MemcpychIdtemp, &tcc, 0, &EDMAMcBSP1Txcallback, NULL);
so they all have the same call back function. they all are initialized for TCINT
result = EDMA3_DRV_setOptField (hEdma[0], MemcpychId, EDMA3_DRV_OPT_FIELD_TCINTEN, EDMA3_DRV_TCINTEN_EN);
and
result = EDMA3_DRV_setOptField (hEdma[0], McBSP1TxParamTable[count], EDMA3_DRV_OPT_FIELD_TCINTEN, EDMA3_DRV_TCINTEN_EN); //inside a for loop for the link channels
this is a similar problem that i have had with the event combiner when i tried to use it directly for the McBSP RRDY and XRDY interrupts. it would fire the interrupt once and then never again. up until now the only way to handle interrupts for the McBSP has been to set up the interrupts directly in the HWI module.
my system IER is showing the proper interrupts are enabled, the GIE is enabled, my EER shows the events are enabled. my IFR is not showing anything.
is the event combiner not capable of handling interrupts like this? i know it works for basic memory copy without an issue with the EDMA3 and i have used it for other interrupts that don't fire so frequently like uart and LCD controller.