|
发表于 2015-3-11 18:31:33
|
显示全部楼层
正在看Microchip的AN1078文档,但是有几处地方不是太明白,想请你指点指点,谢谢!
1.相电流采样后需要乘以Q15(0.5),不是很明白为什么要乘以Q15(0.5)?
qIa = qKa * CorrADC1
qIb = qKb * CorrADC2
是因为这个宏定义的原因?#define REFINAMPS(Amperes_Value)(Q15((Amperes_Value)*(DQKA/32768.0)*RSHUNT*DIFFAMPGAIN/(VDD/2)))
如果#define REFINAMPS(Amperes_Value)(Q15((Amperes_Value)*RSHUNT*DIFFAMPGAIN/(VDD/2))),是不是电流采样后就不要乘以Q15(0.5).
2.在位置估算汇编代码种,如下:
_CalcZalpha:
CalcZalpha:
; s->Zalpha = (s->Kslide * s->IalphaError) / s->MaxSMCError
mov _smc1+SMC_Kslide, W4
mov _smc1+SMC_IalphaError, W5
mov _smc1+SMC_MaxSMCError, W7
mpy W4*W5, A
sac.r A, #0, W0
repeat #17
divf W0, W7
mov W0,_smc1+SMC_Zalpha
查看汇编代码 repeat #list代表将下一条指令重复执行list+1次,
那么 divf W0, W7指令岂不是 (s->Kslide * s->IalphaError)除以17次 s->MaxSMCError?
请多多指点,谢谢!
|
|