Hello,
I am trying to configure a IDMA1 channel to generate the interrupt on transfer complition, on C6747.
The IDMA1 event is number 14, so I configured INT#4 to have interrupt selection number 14 (tcf: HWI->HWI_INT4->Properties->General), and selected IDMA_intHandler() function to be activated.
Also I enabled the use of interrupt dispatcher with "self" mask. In addition I've included init interrupt function, that configures an interrupt and enables the event:
void InitInterrupts()
{
C64_clearIFR(0xFFF0); // Clear all Interrupt flags
intcRegs->INTMUX1 = 0x0E; // 14 - event number
intcRegs->EVTFLAG[0] = (1<<CSL_DSPINTC_EVTFLAG_EF14_SHIFT)&CSL_DSPINTC_EVTFLAG_EF14_MASK;
intcRegs->MEVTFLAG[0] = (1<<CSL_DSPINTC_MEVTFLAG_MEF14_SHIFT)&CSL_DSPINTC_MEVTFLAG_MEF14_MASK;
C64_enableIER(C64_EINT4); // IDMA1
HWI_enable();
}
The IDMA transfer is configured to generate an interrupt at the completion:
idmaRegs->IDMA1_SOURCE = (Uint32)src;
idmaRegs->IDMA1_DEST = (Uint32)dst; // Set destination
idmaRegs->IDMA1_COUNT = CSL_FMKT(IDMA_IDMA1_COUNT_PRI,PRI7) | CSL_FMKT(IDMA_IDMA1_COUNT_INT, INT) | CSL_FMK(IDMA_IDMA1_COUNT_COUNT,length);
I put a break point in IDMA_intHandler() to catch an interrupt, but no result there.
The IDMA transfer works correctly, but no interrupt arrives. I suspect that there is somthing wrong with the macros, can anyone explain me the correct sintaxis for the macros?
Regards
Arye