用28377D,我们在DSP运行程序的死循环中会配置到某路epwm,此路EPWM也同样是CPU2一个中断的源;我们排查到在死循环中操作TBCTR的时候,CPU2中断会有长时间的暂停,而这个时间又是不确定的。
我们的中断配置频率是32k也就是31.25us,触发源是EPWM,方式是0.在清零对应EPWM的TBCTR之后,我们测量到的中断暂停时间分为两个量级,一类是56-60us,大概是不到两个中断周期,这种情况可以画个时基原理图理解;还有一类情况是600us以上的暂停时间,最后还原可能是被相关的故障处理程序还原。
我想问一下这个时间较长的还原是什么原因,手册里有没有描述。有没有具体的寄存器配置的配置时间一说。
另外我们在这个位置对多个EPWM的控制寄存器进行了配置,我们也是逐条测试发现只有对TBCTR写位会有这个情况。
Green Deng:
寄存器的资料只能参考芯片TRM的寄存器说明,但是说明中似乎没有提到会发生这种情况的原因。
另外,有没有检测过中断不触发的原因是没有产生中断还是中断不响应?针对这两种情况应该可能的原因也不同。
,
Xiangcheng Guan:
OK,我们发现原因了。在up-down计数模式下,CTR被强制清零之后,TB计数方向没有改变。如果这个时候方向是向上计数,那么就观察到56-60us的中断暂停。如果这个时候方向是向下减数,就会发生向下溢出。由于我们的计数时钟是100MHz,后者的情况下,中断触发会间隔约600us。我想问下,强制拉TBCTR到0是否触发TBCTR等于0的事件,到period值触发的事件如果是第二种情况下减到period,是否触发?