在
ti 给的28335的例程里,SVGENDQ_MACRO 中
if (v.VecSector==1 || v.VecSector==4)
[ v.Ta= v.tmp2;
v.Tb= v.tmp1-v.tmp3;
v.Tc=-v.tmp2; ]
else if (v.VecSector==2 || v.VecSector==5)
[ v.Ta= v.tmp3+v.tmp2;
v.Tb= v.tmp1;
v.Tc=-v.tmp1; ]
else
[ v.Ta= v.tmp3;
v.Tb=-v.tmp3;
v.Tc=-(v.tmp1+v.tmp2); ]
我没看明白这段程序,按照原理的话,扇区1的 T1=-Z,T2=X,扇区4就应该是T1=-X,T2=Z 而这里扇区1和4都是同样的Ta、Tb、Tc 值我就不太懂了,而且上文给出的tmp1、tmp2、tmp3 在原理中旧事X,Y,Z的值, 而Ta、Tb、Tc 在下面的程序中直接赋给比较寄存器当作PWM占空比了, 中间的关系应该是
v.Tb = _IQmpy(_IQ(0.5),(_IQ(1)-t1-t2)); // tbon = (1-t1-t2)/2
v.Ta = v.Tb+t1; // taon = tbon+t1
v.Tc = v.Ta+t2; // tcon = taon+t2
(上面3行是2812程序里给的此步骤的例程,为什28335中没有这一步了呢?)
刚刚接触dsp和svpwm 没有人带,自己资质也低,问题要是问的太蠢请各位前辈见谅。感谢之前的前辈们热心的帮助!