Hello, I have found a very weird behaviour of my edma channel. This is the configuration that I am using:
edmaRegs->PARAMSET[59].OPT=0x0C38000 ;
edmaRegs->PARAMSET[59].SRC=(Uint32)&Variable1;
edmaRegs->PARAMSET[59].A_B_CNT=0xFFFF0004 ;
edmaRegs->PARAMSET[59].DST=(Uint32)&Variable2 ;
edmaRegs->PARAMSET[59].SRC_DST_BIDX= 0;
edmaRegs->PARAMSET[59].LINK_BCNTRLD= Param70;
edmaRegs->PARAMSET[59].SRC_DST_CIDX= 0;
edmaRegs->PARAMSET[59].CCNT= 0x01;
This channel is triggered from another EDMA channel. Basically what I want to do is move the content of variable1 to variable2, as you can see. In the code I have a line like this:
while (Variable1 != Variable2) {}; //wait condition until EDMA move variable1 to variable2. And my code keep stuck in that line. You could think that the EDMA channel has not being triggered, but if I look dmaRegs->PARAMSET[59].A_B_CNT it has changed from 0xFFFF0004 to 0xFFFE0004, so it really has been triggered. Again, I look variable2 memory position, and its value has not being replaced with variable1 value.
I have declared variable1 and variable2 like int in main.c, and I configure EDMA in initEDMA.c where I declared both as extern int. So, what is wrong here???
Thank you in advance
PS: more facts that proves that EDMA channel has been really triggered: as you can see from this channel in the OPT field, I am triggering another chanel (0x38=56) and this channel have changed too its A_B_CNT from 0xFFFF to 0xFFFE, so it has been triggered after the intemediate completion of channel 59, which proves that 59 has been triggered. But no changes in memory... weird....