Hi,
I'm using an interrupt from the EMDA controller to know when a buffer is transferred.
The interrupt is only called when I perform a 'system reset', 'restart' and 'resume' from the debugger.
When I just do a 'suspend', 'restart' and 'resume', the interrupt is no longer called.
I assume this has something to do with some stale interrupt state being left over or the McASP continuing to do DMA requests.
I've tried to re-initialize everything each time the code runs, but if my assumption is correct, than my code is not very successful.
I perform the following operations:
McASPTxReset(SOC_MCASP_0_CTRL_REGS); McASPRxReset(SOC_MCASP_0_CTRL_REGS); SetupPinMux(); PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_MCASP0, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE); EDMA3Init(SOC_EDMA30CC_0_REGS, 0); EDMA3Init(SOC_EDMA30CC_0_REGS, 1); IntDSPINTCInit(); EDMA3FreeChannel(SOC_EDMA30CC_0_REGS, EDMA3_CHANNEL_TYPE_DMA, EDMA3_CHA_MCASP0_RX, EDMA3_TRIG_MODE_EVENT, EDMA3_CHA_MCASP0_RX, 0); EDMA3FreeChannel(SOC_EDMA30CC_0_REGS, EDMA3_CHANNEL_TYPE_DMA, EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT, EDMA3_CHA_MCASP0_TX, 0); EDMA3ClrIntr(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX); EDMA3RequestChannel(SOC_EDMA30CC_0_REGS, EDMA3_CHANNEL_TYPE_DMA, EDMA3_CHA_MCASP0_TX, EDMA3_CHA_MCASP0_TX, 0); EDMA3RequestChannel(SOC_EDMA30CC_0_REGS, EDMA3_CHANNEL_TYPE_DMA, EDMA3_CHA_MCASP0_RX, EDMA3_CHA_MCASP0_RX, 0); EDMA3DisableEvtIntr(SOC_EDMA30CC_0_REGS,EDMA3_CHA_MCASP0_TX); SetupPaRAMSets(); IntRegister(C674X_MASK_INT8, userISR); IntEventMap(C674X_MASK_INT8, SYS_INT_EDMA3_0_CC0_INT1); IntEnable(C674X_MASK_INT8); SetupMcASP(); IntGlobalEnable(); EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX, EDMA3_TRIG_MODE_EVENT); EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT); StartMcASP();
I'm I missing some part? The mcASP runs fine, no matter how I restart the code, which also means that the DMA is working. (The mcASP and DMA form a loopback). It's just that the completion interrupt is only called when I perform a 'system reset'.
Any insights will be highly appreciated.
Kind regards,
Remco Poelstra