目录:C:\ti\controlSUITE\development_kits\HVMotorCtrl+PfcKit_v2.1\HVPM_Sensorless_2833x
OffsetISR函数下有这两句:
#ifdef DSP2833x_DEVICE_H
offsetA= K1*offsetA + K2*(AdcMirror.ADCRESULT1)*0.00024414; //Phase A offset
offsetB= K1*offsetB + K2*(AdcMirror.ADCRESULT2)*0.00024414; //Phase B offset
offsetC= K1*offsetC + K2*(AdcMirror.ADCRESULT3)*0.00024414; ; //Phase C offset
#endif
这两句只执行一次,没有问题的,K1是IQ格式,K1*offsetA 也是IQ格式的,但问题是这句会执行10000多次,就是会乘2^24 的10000多次…早溢出了
再看MainISR函数的
#ifdef DSP2833x_DEVICE_H
clarke1.As=((AdcMirror.ADCRESULT1)*0.00024414-offsetA)*2*0.909; // Phase A curr.
clarke1.Bs=((AdcMirror.ADCRESULT2)*0.00024414-offsetB)*2*0.909; // Phase B curr.
#endif
AdcMirror.ADCRESULT1*0.00024414,AD采样结果除4096,那样这个肯定是个小数,但offSetA是IQ格式的.你让一个小数减去offset是无意义的。
这里要么把AdcMirror.ADCRESULT1*0.00024414转成IQ格式,要么把offsetA还原成真实值
如果开启宏DSP2803x_DEVICE_H,而不打开DSP2833x_DEVICE_H宏,工程可能是对的
开启宏DSP2833x_DEVICE_H,好多编译错误,比如在AD初始化那里就错误,因为2833X的AD寄存器和2803X的不一样,2803X有的寄存器,2833X未必有。
调试中有个问题,调电机需要PWM控制,发现重新下载电机程序时,在下载程序的过程中,还有PWM输出,我也调用了HVDMC_Protection函数,但无效果。
哪个寄存器控制这些:
1重新下载程序过程中,PWM引脚电平可控变成低电平,而不是继续上次下载的程序的PWM输出,这样会短路的
2调试程序下断点时,PWM引脚电平自动都变成低电平,
我也调用了HVDMC_Protection函数,但无效果
Eric Ma:
这个例程中的IQ格式是浮点的方式,你看一下IQMATH的头文件吧,IQ24其实就是float类型,和定点不一样。
PWM保护关断的,要启动TZ6信号保护,就是当下载或是暂停的时候,产生保护信号关断PWM。
ERIC
TI中文支持网



