背景:本人要采用DSP28035产生20KHZ的PWM驱动信号,即每个三角载波周期为50us,由于在每个PWM中断中要进行AD采样、Compare值计算,这样便造成中断有一定的执行时间。
问题是:我目前中断内部的C代码不是很多,但是用IO口实测的PWM中断执行时间很长,有40us左右,若继续增加中断内部的相关代码会造成中断执行时间进一步增大,甚至大于50us,这便会PWM中断等待执行,最终导致控制输出量频率下降。我用的CCS为V3.3.83.2,请问是否是我用的CCS版本过低,造成代码编译执行效率较低,除了改用汇编直接编程外,是否有其他解决办法?(相关程序见附件123)
急!!恳求各位大侠专家指导!!
Haopeng Wang:
回复 Victor Zheng:
你好:
程序是烧到Flash中运行的,且没有进行InitFlash()初始化,这可能正是问题所在,暂时还没来得及验证;
我想请教,为什么没有Flash初始化,会造成中断执行时间过长呢?还有如果进行初始化,是调用初始化函数么?
求指教!!
背景:本人要采用DSP28035产生20KHZ的PWM驱动信号,即每个三角载波周期为50us,由于在每个PWM中断中要进行AD采样、Compare值计算,这样便造成中断有一定的执行时间。
问题是:我目前中断内部的C代码不是很多,但是用IO口实测的PWM中断执行时间很长,有40us左右,若继续增加中断内部的相关代码会造成中断执行时间进一步增大,甚至大于50us,这便会PWM中断等待执行,最终导致控制输出量频率下降。我用的CCS为V3.3.83.2,请问是否是我用的CCS版本过低,造成代码编译执行效率较低,除了改用汇编直接编程外,是否有其他解决办法?(相关程序见附件123)
急!!恳求各位大侠专家指导!!
Young Hu:
回复 Haopeng Wang:
Flash有预取指的功能,如果InitFlash()的话,就会把这个功能打开
背景:本人要采用DSP28035产生20KHZ的PWM驱动信号,即每个三角载波周期为50us,由于在每个PWM中断中要进行AD采样、Compare值计算,这样便造成中断有一定的执行时间。
问题是:我目前中断内部的C代码不是很多,但是用IO口实测的PWM中断执行时间很长,有40us左右,若继续增加中断内部的相关代码会造成中断执行时间进一步增大,甚至大于50us,这便会PWM中断等待执行,最终导致控制输出量频率下降。我用的CCS为V3.3.83.2,请问是否是我用的CCS版本过低,造成代码编译执行效率较低,除了改用汇编直接编程外,是否有其他解决办法?(相关程序见附件123)
急!!恳求各位大侠专家指导!!
Haopeng Wang:
回复 Young Hu:
没太明白,能说得详细点么?
TI中文支持网



