测试280049的CLA功能,将正常运行在CPU的ISR()函数由的 CLATASK1()调用。
CPU工程:EPWM1 ZERO产生周期10us的中断调用ISR()函数。ISR()内部开始和结束位置利用GPIO做测试信号,利用示波器检测GPIO信号。主CPU下运行ISR()只需要6us。
CLA工程:EPWM1 ZERO产生周期10us的中断调用CLATASK1(),CLATASK1内部调用ISR(),ISR()内部开始和结束位置利用GPIO做测试信号,利用示波器检测GPIO信号。发现10us不能完成ISR()。
测试:减少ISR()内代码至如下:只有两行读取AD采样值
#pragma FUNC_ALWAYS_INLINE(CLALoopCtrlISR)
inline void CLALoopCtrlISR()
{
TEST3_SET();//GPIO TEST
stClaToCpuPara.iVoutADSample = AdccResultRegs.ADCRESULT0;
stClaToCpuPara.iPriCurADSample = AdcbResultRegs.ADCRESULT0;
TEST3_CLR();//GPIO TEST
// Clear INT Flag
EPwm1Regs.ETCLR.bit.INT = 1;
}
示波器检测GPIO信号,CPU执行时间为72ns,CLA执行时间为122ns。
请问我的CLA是不是什么地方没有配置正确,导致执行速度慢。本人英语水平很菜,所以只能在中国平台发问,大师们海涵,我也相信中国的大师能解决我的疑惑。
盼回复,谢谢!我也会积极的做测试。如需要其他信息,请告知。