TI中文支持网
TI专业的中文技术问题搜集分享网站

6670上的多个EDMA同时运行的问题

我使用KI的例程改编了EDMA的拷贝,实现了EDMA的中断。但是当我同时发起多个EDMA(代码中是32个EDMA1)的时候,如果中断(EDMA0_ISR,EDMA1_ISR,EDMA2_ISR)中不加入打印语句printf("%x in ISR1\n", *TPCC_IPR);那么我的测试函数shadow_edma_test()中的统计进入中断次数的变量cnt_18[18]里面是{2,1,1,1,1,。。。。。。},说明只有EDMA1_0进入了一次,其他的EDMA都无法进入,但是当我把打印语句printf("%x in ISR1\n", *TPCC_IPR);这一行取消注释,可以看到cnt_18[18]里面都是相同的进入中断的次数,而且也可以不停打印该语句。

请帮我看看代码里面有什么问题,导致出现这样的现象。谢谢了

Allen35065:

中断退出的时候应该先检查是不是有别的置位需要处理,否则可能会丢中断。

Jianyong Wei:

回复 Allen35065:

for (i=0; i<32; i++) { if ((*TPCC_IPR)&(1<<(i))){ edma0_mask = edma0_mask |(1<<(i)); tccFuncTableLow[0][i](i); (*TPCC_ICR)= 1<<(i); (*TPCC_ECR)= 1<<(i); } }这段代码在中断里面应该算是完成了所有置位的处理吧

赞(0)
未经允许不得转载:TI中文支持网 » 6670上的多个EDMA同时运行的问题
分享到: 更多 (0)