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

程序执行时间疑问

您好!我使用的芯片是28335,我的程序代码结构是常见的中断+for循环,中断包括一个10us定时器中断TINT0,AD采集中断(在10us定时器内触发采集,共15路),EPWM中断(每个PWM周期,即每50us触发一次)。

现在遇到了for循环内的任务时间上执行不过来的问题,例如1ms任务将近2ms执行一次(确认1ms标志产生无错误,屏蔽掉部分中断内的计算后,1ms任务可以以准确的周期执行)。于是我用示波器测试了各个任务的执行时间,其中TINT0中断任务耗时0.5us,AD中断任务耗时0.3us,EPWM1中断任务耗时35us,1ms任务耗时20us,100ms任务耗时100us。我经过计算后,总的CPU占用不到80%。请教专家为什么会出现任务延迟,请教是哪里没考虑到吗?

Chang Hou:

是不是因为进出中断函数耗费时间?

您好!我使用的芯片是28335,我的程序代码结构是常见的中断+for循环,中断包括一个10us定时器中断TINT0,AD采集中断(在10us定时器内触发采集,共15路),EPWM中断(每个PWM周期,即每50us触发一次)。

现在遇到了for循环内的任务时间上执行不过来的问题,例如1ms任务将近2ms执行一次(确认1ms标志产生无错误,屏蔽掉部分中断内的计算后,1ms任务可以以准确的周期执行)。于是我用示波器测试了各个任务的执行时间,其中TINT0中断任务耗时0.5us,AD中断任务耗时0.3us,EPWM1中断任务耗时35us,1ms任务耗时20us,100ms任务耗时100us。我经过计算后,总的CPU占用不到80%。请教专家为什么会出现任务延迟,请教是哪里没考虑到吗?

user5787625:想确认一下,你的for循环任务是放在TINT0中断内部的吗?
如果不是放在TINT0,你的任务可能被其他任务打断;
如果是的话,建议你把TINT0的进入中断的步长放的宽一点,中断配置为1ms响应一次

您好!我使用的芯片是28335,我的程序代码结构是常见的中断+for循环,中断包括一个10us定时器中断TINT0,AD采集中断(在10us定时器内触发采集,共15路),EPWM中断(每个PWM周期,即每50us触发一次)。

现在遇到了for循环内的任务时间上执行不过来的问题,例如1ms任务将近2ms执行一次(确认1ms标志产生无错误,屏蔽掉部分中断内的计算后,1ms任务可以以准确的周期执行)。于是我用示波器测试了各个任务的执行时间,其中TINT0中断任务耗时0.5us,AD中断任务耗时0.3us,EPWM1中断任务耗时35us,1ms任务耗时20us,100ms任务耗时100us。我经过计算后,总的CPU占用不到80%。请教专家为什么会出现任务延迟,请教是哪里没考虑到吗?

Chang Hou:

回复 user5787625:

for循环放在main函数内的,TINT0我设置了每10us触发一次AD采集

您好!我使用的芯片是28335,我的程序代码结构是常见的中断+for循环,中断包括一个10us定时器中断TINT0,AD采集中断(在10us定时器内触发采集,共15路),EPWM中断(每个PWM周期,即每50us触发一次)。

现在遇到了for循环内的任务时间上执行不过来的问题,例如1ms任务将近2ms执行一次(确认1ms标志产生无错误,屏蔽掉部分中断内的计算后,1ms任务可以以准确的周期执行)。于是我用示波器测试了各个任务的执行时间,其中TINT0中断任务耗时0.5us,AD中断任务耗时0.3us,EPWM1中断任务耗时35us,1ms任务耗时20us,100ms任务耗时100us。我经过计算后,总的CPU占用不到80%。请教专家为什么会出现任务延迟,请教是哪里没考虑到吗?

user5787625:

回复 Chang Hou:

放在main里面是会被其他中断打断的,如果想实时放在TINT0,然后把TINT0周期改为1ms

赞(0)
未经允许不得转载:TI中文支持网 » 程序执行时间疑问
分享到: 更多 (0)