LACC Uniinv_H_0 ;Q11 SUB Upi_i_o ;Q11 sacl epi_i_o ;Q11 ltepi_i_o ;Q11 mpy Kcorr_iinv ;Q13 pac ;Q24 lt En0_iinv ;Q15 mpy K1_iinv ;P <- K1*En1, Q9*Q15 apac ;Q24 ADD Un_iinv,13 ;Q24 rpt #2 norm * ;q27 sach Un_iinv ;Q11 这里算出的Q27,他只取高11为,低15位都不要了?why 这是个逆变器程序,频率在20MHz,载波为20kHz(50uS), updown计数,所以周期寄存器定时25uS,那么周期寄存器T=25000nS/50nS=500,
;Convert Q11 value to an absolute Q0 for use in Compare reg. spm 3 LT Uniinv_H_0 ; (Q11) MPY #1000 ;P = 1000*U = 2T*U PAC ; ACC = 2T*U/64 = (T/2)*(U/16), max U=16, T=500,就是这个公式不明白是啥意思? rpt #4 norm * SACH GPR0 最后从ACC = 2T*U/64 = (T/2)*(U/16), max U=16,这个公式可以看出,pwm寄存器的最大为250,这个逆变器是双极性的,如果是开环双极性SPWM推动逆变器,可以发现开环双极性SPWM公式,最大的pwm寄存器也是250,那么我想,无论最后的PI补偿结果算出来是什么,最后都要小于250, 即U × 待定系数<=250 因为U是Q11有符号,即U的绝对值最大为16, 但是前面的P = 1000*U = 2T*U不知道是如何得来的?特别是2T,其中的T是否是我估计的周期寄存器值。 |