Hi everyone,
I would like to trigger an ISR at the end of a DMA completion (I'm working on C6678).
Using the debugger, I've seen that the correct IFR bit is set when I trigger the transfert by CPU.
But my problem is that the program doesn't go into the ISR.
I registered my ISR as is:
EventRecord.handler = &test_isr_handler; |
For the DMA transfert, my param are as follow:
param_setup.option = CSL_EDMA3_OPT_MAKE(CSL_EDMA3_ITCCH_DIS, CSL_EDMA3_TCCH_DIS, CSL_EDMA3_ITCINT_DIS, CSL_EDMA3_TCINT_EN, 0, CSL_EDMA3_TCC_NORMAL, CSL_EDMA3_FIFOWIDTH_NONE, CSL_EDMA3_STATIC_EN, CSL_EDMA3_SYNC_A, CSL_EDMA3_ADDRMODE_INCR, CSL_EDMA3_ADDRMODE_INCR); param_setup.srcAddr = (Uint32)&buffer; param_setup.dstAddr = (Uint32)0x40000000; param_setup.aCntbCnt = CSL_EDMA3_CNT_MAKE(TAILLE_BUFFER, 1) ; param_setup.cCnt = 1; param_setup.srcDstBidx = CSL_EDMA3_BIDX_MAKE(1, 1) ; param_setup.linkBcntrld = CSL_EDMA3_LINKBCNTRLD_MAKE(CSL_EDMA3_LINK_NULL, 0); param_setup.srcDstCidx = CSL_EDMA3_CIDX_MAKE(0,0); |
I activated interrupts for the global region:
regionIntr.region = CSL_EDMA3_REGION_GLOBAL; regionIntr.intr = 1; regionIntr.intrh = 0; status = CSL_edma3HwControl(EDMA_handle,CSL_EDMA3_CMD_INTR_ENABLE,®ionIntr); |
Just after triggering the transfert :
status = CSL_edma3HwChannelControl(canal_handle,CSL_EDMA3_CMD_CHANNEL_SET,NULL); |
the correct IFR bit is set, but I my program doesn't run my ISR function.
Does someone have an idea on my problem ? Maybe something I miss during the EDMA configuration ?