This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
在例程“cla_ex4_pwm_control”的基础上修改的程序:
CPUTimer0运行在50KHz:1.CPUTimer0中端处理程序生成一个50Hz交流信号,传递给CLA。之后再使能CLA task3。
2.CPUTimer0触发CLA background任务,接收从CPU传来的交流信号,执行锁相环(中途会被task3打断)。
CLA 背景任务不被中断的话执行结果正常:
CLA背景任务被task3中断之后运行结果异常:
CCS10.1
C2000Ware_3_02_00_00
C2000Ware_DigitalPower_SDK_3_00_01_00
我把引用的库全部打包放到文件里面发给您,试一下。
shu hai feng 说:在CPU的timer0中断处理程序里面用软件使能的, CLA_forceTasks(CLA1_BASE, CLA_TASKFLAG_3);
上一次我测试的时候注释掉这一行结果正常,不注释掉结果就不对
我直接使用您给出的程序测试,结果是正常的
shu hai feng 说:如果把循环条件改到100变成
for(i=0,i<100,i++)
{
}
CLA那边结果也会不正常。
根据您的描述,这更像是在中断服务中处理的时间太长了,增加了中断处理时间。如果有其它低级中断了,就会延误响应中断或者造成其他意外结果。
一般在中断子程序中不要写调用循环或者延时子程序,中断子程序也不要写得过长,处理过多的任务,要尽快处理后及时返回
感谢您的回复,我试了一下上次提供的工程,结果确实和你一样。应该是不小心把哪里改掉之后正常了。
至于中断的问题,CPU中断只打开了INT1,PIEIER1里面只打开了INTX.7 。看门狗关闭。NMIFLG显示没有发生NMI中断。应该没有别的中断了吧?
这个问题后续又断断续续的出现,让人头大。如果方便的话我重新提供一下工程,cla_ex4_pwm_control.c这个文件里面:245行到263行,注释掉结果正常,执行的话CLA那边又出问题。
另外调试的时候初始化完成之后(未开始执行main()),寄存器就已经显示
CPUWRITE 1 Master CPU Write Access Violation Flag
地址 0x00001480
MCPUWRAVADDR 00000000000000000001010010000000 Master CPU write access violation address register.
这个会是什么原因?