📄 aci_fe.asm
字号:
ADDH *- ; ACC = ui_qs + Kp_fe*Ki_fe*error_qs (Q30)
; ARP=AR2, AR0->FR3, AR2->ui_lo_qs
;----------------------------------------------------------------------------------
SACL *+ ; ui_qs = ui_qs + Kp_fe*Ki_fe*error_qs (Q30)
; ARP=AR2, AR0->FR3, AR2->ui_hi_qs
;----------------------------------------------------------------------------------
SACH * ; ui_qs = ui_qs + Kp_fe*Ki_fe*error_qs (Q30)
; ARP=AR2, AR0->FR3, AR2->ui_hi_qs
;----------------------------------------------------------------------------------
; (6) Compute the estimated stator flux based on the integral of back emf
;----------------------------------------------------------------------------------
; ***** stationary d-axis *****
SPM 1 ; Set left shifted 1 bit
; ARP=AR2, AR0->FR3, AR2->ui_hi_qs
;----------------------------------------------------------------------------------
ADRK #2 ; ARP=AR2, AR0->FR3, AR2->emf_ds
;----------------------------------------------------------------------------------
LACC *+,AR0 ; ACC = emf_ds (Q15)
; ARP=AR2, AR0->FR3, AR2->u_ds_fe, ARP=AR0
;----------------------------------------------------------------------------------
SACL *,AR2 ; FR3 = tmp1_fe = emf_ds (Q15)
; ARP=AR0, AR0->FR3, AR2->u_ds_fe, ARP=AR2
;----------------------------------------------------------------------------------
LACC *+,16 ; ACC = u_ds_fe (Q31)
; ARP=AR2, AR0->FR3, AR2->K5_fe
;----------------------------------------------------------------------------------
LT *- ; TREG = K5_fe (Q15)
; ARP=AR2, AR0->FR3, AR2->u_ds_fe
;----------------------------------------------------------------------------------
SBRK #7 ; ARP=AR2, AR0->FR3, AR2->ucomp_ds
;----------------------------------------------------------------------------------
SUB *,16 ; ACC = u_ds_fe - ucomp_ds (Q31)
; ARP=AR2, AR0->FR3, AR2->ucomp_ds
;----------------------------------------------------------------------------------
SBRK #14 ; ARP=AR2, AR0->FR3, AR2->i_ds_fe
;----------------------------------------------------------------------------------
MPY * ; PREG = K5_fe*i_ds_fe (Q30)
; ARP=AR2, AR0->FR3, AR2->i_ds_fe
;----------------------------------------------------------------------------------
SPAC ; ACC = u_ds_fe-ucomp_ds-K5_fe*i_ds_fe (Q31)
; ARP=AR2, AR0->FR3, AR2->i_ds_fe
;----------------------------------------------------------------------------------
ADRK #20 ; ARP=AR2, AR0->FR3, AR2->emf_ds
;----------------------------------------------------------------------------------
SACH * ; emf_ds = u_ds_fe-ucomp_ds-K5_fe*i_ds_fe (Q15)
; ARP=AR2, AR0->FR3, AR2->emf_ds
;----------------------------------------------------------------------------------
LACC *,15,AR0 ; ACC = emf_ds/2 (Q15)
; ARP=AR2, AR0->FR3, AR2->emf_ds, ARP=AR0
;----------------------------------------------------------------------------------
ADD *,15 ; ACC = emf_ds/2 + emf_ds/2 (Q15)
; ARP=AR0, AR0->FR3, AR2->emf_ds
;----------------------------------------------------------------------------------
SACH *,AR2 ; FR3 = tmp1_fe = emf_ds/2 + emf_ds/2 (Q15)
; ARP=AR0, AR0->FR3, AR2->emf_ds, ARP=AR2
;----------------------------------------------------------------------------------
ADRK #3 ; ARP=AR2, AR0->FR3, AR2->K6_fe
;----------------------------------------------------------------------------------
LT *+,AR0 ; TREG = K6_fe (Q15)
; ARP=AR2, AR0->FR3, AR2->psi_ds_lo, ARP=AR0
;----------------------------------------------------------------------------------
MPY *,AR2 ; PREG = K6_fe*(emf_ds/2 + emf_ds/2) (Q30)
; ARP=AR0, AR0->FR3, AR2->psi_ds_lo, ARP=AR2
;----------------------------------------------------------------------------------
PAC ; ACC = K6_fe*(emf_ds/2 + emf_ds/2) (Q31)
; ARP=AR2, AR0->FR3, AR2->psi_ds_lo
;----------------------------------------------------------------------------------
ADDS * ; ACC = psi_ds + K6_fe*(emf_ds/2 + emf_ds/2) (Q31)
; ARP=AR2, AR0->FR3, AR2->psi_ds_lo
;----------------------------------------------------------------------------------
SBRK #14 ; ARP=AR2, AR0->FR3, AR2->psi_ds_fe
;----------------------------------------------------------------------------------
ADDH * ; ACC = psi_ds + K6_fe*(emf_ds/2 + emf_ds/2) (Q31)
; ARP=AR2, AR0->FR3, AR2->psi_ds_fe
;----------------------------------------------------------------------------------
SACH * ; psi_ds = psi_ds + K6_fe*(emf_ds/2 + emf_ds/2) (Q31)
; ARP=AR2, AR0->FR3, AR2->psi_ds_fe
;----------------------------------------------------------------------------------
ADRK #14 ; ARP=AR2, AR0->FR3, AR2->psi_ds_lo
;----------------------------------------------------------------------------------
SACL *+ ; psi_ds = psi_ds + K6_fe*(emf_ds/2 + emf_ds/2) (Q31)
; ARP=AR2, AR0->FR3, AR2->emf_qs
;----------------------------------------------------------------------------------
; ***** stationary q-axis *****
LACC *+,AR0 ; ACC = emf_qs (Q15)
; ARP=AR2, AR0->FR3, AR2->u_qs_fe, ARP=AR0
;----------------------------------------------------------------------------------
SACL *,AR2 ; FR3 = tmp1_fe = emf_qs (Q15)
; ARP=AR0, AR0->FR3, AR2->u_qs_fe, ARP=AR2
;----------------------------------------------------------------------------------
LACC *,16 ; ACC = u_qs_fe (Q31)
; ARP=AR2, AR0->FR3, AR2->u_qs_fe
;----------------------------------------------------------------------------------
SBRK #7 ; ARP=AR2, AR0->FR3, AR2->ucomp_qs
;----------------------------------------------------------------------------------
SUB *,16 ; ACC = u_qs_fe - ucomp_qs (Q31)
; ARP=AR2, AR0->FR3, AR2->ucomp_qs
;----------------------------------------------------------------------------------
ADRK #3 ; ARP=AR2, AR0->FR3, AR2->K5_fe
;----------------------------------------------------------------------------------
LT * ; TREG = K5_fe (Q15)
; ARP=AR2, AR0->FR3, AR2->K5_fe
;----------------------------------------------------------------------------------
SBRK #23 ; ARP=AR2, AR0->FR3, AR2->i_qs_fe
;----------------------------------------------------------------------------------
MPY * ; PREG = K5_fe*i_qs_fe (Q30)
; ARP=AR2, AR0->FR3, AR2->i_qs_fe
;----------------------------------------------------------------------------------
SPAC ; ACC = u_qs_fe-ucomp_qs-K5_fe*i_qs_fe (Q31)
; ARP=AR2, AR0->FR3, AR2->i_qs_fe
;----------------------------------------------------------------------------------
ADRK #26 ; ARP=AR2, AR0->FR3, AR2->emf_qs
;----------------------------------------------------------------------------------
SACH * ; emf_qs = u_qs_fe-ucomp_qs-K5_fe*i_qs_fe (Q15)
; ARP=AR2, AR0->FR3, AR2->emf_qs
;----------------------------------------------------------------------------------
LACC *,15,AR0 ; ACC = emf_qs/2 (Q15)
; ARP=AR2, AR0->FR3, AR2->emf_qs, ARP=AR0
;----------------------------------------------------------------------------------
ADD *,15 ; ACC = emf_qs/2 + emf_qs/2 (Q15)
; ARP=AR0, AR0->FR3, AR2->emf_qs
;----------------------------------------------------------------------------------
SACH *,AR2 ; FR3 = tmp1_fe = emf_qs/2 + emf_qs/2 (Q15)
; ARP=AR0, AR0->FR3, AR2->emf_qs, ARP=AR2
;----------------------------------------------------------------------------------
SBRK #2 ; ARP=AR2, AR0->FR3, AR2->K6_fe
;----------------------------------------------------------------------------------
LT *,AR0 ; TREG = K6_fe (Q15)
; ARP=AR2, AR0->FR3, AR2->K6_fe, ARP=AR0
;----------------------------------------------------------------------------------
MPY *,AR2 ; PREG = K6_fe*(emf_qs/2 + emf_qs/2) (Q30)
; ARP=AR0, AR0->FR3, AR2->K6_fe, ARP=AR2
;----------------------------------------------------------------------------------
PAC ; ACC = K6_fe*(emf_qs/2 + emf_qs/2) (Q31)
; ARP=AR2, AR0->FR3, AR2->K6_fe
;----------------------------------------------------------------------------------
ADRK #4 ; ARP=AR2, AR0->FR3, AR2->psi_qs_lo
;----------------------------------------------------------------------------------
ADDS * ; ACC = psi_qs + K6_fe*(emf_qs/2 + emf_qs/2) (Q31)
; ARP=AR2, AR0->FR3, AR2->psi_qs_lo
;----------------------------------------------------------------------------------
SBRK #11 ; ARP=AR2, AR0->FR3, AR2->psi_qs_fe
;----------------------------------------------------------------------------------
ADDH * ; ACC = psi_qs + K6_fe*(emf_qs/2 + emf_qs/2) (Q31)
; ARP=AR2, AR0->FR3, AR2->psi_qs_fe
;----------------------------------------------------------------------------------
SACH * ; psi_qs = psi_qs + K6_fe*(emf_qs/2 + emf_qs/2) (Q31)
; ARP=AR2, AR0->FR3, AR2->psi_qs_fe
;----------------------------------------------------------------------------------
ADRK #11 ; ARP=AR2, AR0->FR3, AR2->psi_qs_lo
;----------------------------------------------------------------------------------
SACL *+ ; psi_qs = psi_qs + K6_fe*(emf_qs/2 + emf_qs/2) (Q31)
; ARP=AR2, AR0->FR3, AR2->K8_fe
;----------------------------------------------------------------------------------
; (7) Compute the estimated rotor flux based on the stator from the integral of back emf
;----------------------------------------------------------------------------------
; ***** stationary d-axis *****
SPM 0 ; Reset product mode
; ARP=AR2, AR0->FR3, AR2->K8_fe
;----------------------------------------------------------------------------------
LT * ; TREG = K8_fe (Q15)
; ARP=AR2, AR0->FR3, AR2->K8_fe
;----------------------------------------------------------------------------------
SBRK #28 ; ARP=AR2, AR0->FR3, AR2->i_ds_fe
;----------------------------------------------------------------------------------
MPY * ; PREG = K8_fe*i_ds_fe (Q30)
; ARP=AR2, AR0->FR3, AR2->i_ds_fe
;----------------------------------------------------------------------------------
PAC ; ACC = K8_fe*i_ds_fe (Q30)
; ARP=AR2, AR0->FR3, AR2->i_ds_fe
;----------------------------------------------------------------------------------
NEG ; ACC = -K8_fe*i_ds_fe (Q30)
; ARP=AR2, AR0->FR3, AR2->i_ds_fe
;----------------------------------------------------------------------------------
SFR ; ACC = -K8_fe*i_ds_fe (Q29)
; ARP=AR2, AR0->FR3, AR2->i_ds_fe
;----------------------------------------------------------------------------------
ADRK #29 ; ARP=AR2, AR0->FR3, AR2->K7_fe
;----------------------------------------------------------------------------------
LT * ; ACC = K7_fe (Q14)
; ARP=AR2, AR0->FR3, AR2->K7_fe
;----------------------------------------------------------------------------------
SBRK #19 ; ARP=AR2, AR0->FR3, AR2->psi_ds_fe
;----------------------------------------------------------------------------------
MPY * ; PREG = K7_fe*psi_ds_fe (Q29)
; ARP=AR2, AR0->FR3, AR2->psi_ds_fe
;----------------------------------------------------------------------------------
APAC ; ACC = K7_fe*psi_ds_fe-K8_fe*i_ds_fe (Q29)
; ARP=AR2, AR0->FR3, AR2->psi_ds_fe
;----------------------------------------------------------------------------------
ADRK #20 ; ARP=AR2, AR0->FR3, AR2->psi_dr_fe
;----------------------------------------------------------------------------------
SACH *,2 ; psi_dr_fe = K7_fe*psi_ds_fe-K8_fe*i_ds_fe (Q15)
; ARP=AR2, AR0->FR3, AR2->psi_dr_fe
;----------------------------------------------------------------------------------
; ***** stationary q-axis *****
SBRK #2 ; ARP=AR2, AR0->FR3, AR2->K8_fe
;----------------------------------------------------------------------------------
LT * ; TREG = K8_fe (Q15)
; ARP=AR2, AR0->FR3, AR2->K8_fe
;----------------------------------------------------------------------------------
SBRK #29 ; ARP=AR2, AR0->FR3, AR2->i_qs_fe
;----------------------------------------------------------------------------------
MPY * ; PREG = K8_fe*i_qs_fe (Q30)
; ARP=AR2, AR0->FR3, AR2->i_qs_fe
;----------------------------------------------------------------------------------
PAC ; ACC = K8_fe*i_qs_fe (Q30)
; ARP=AR2, AR0->FR3, AR2->i_qs_fe
;----------------------------------------------------------------------------------
NEG ; ACC = -K8_fe*i_qs_fe (Q30)
; ARP=AR2, AR0->FR3, AR2->i_qs_fe
;----------------------------------------------------------------------------------
SFR ; ACC = -K8_fe*i_qs_fe (Q29)
; ARP=AR2, AR0->FR3, AR2->i_qs_fe
;----------------------------------------------------------------------------------
ADRK #30 ; ARP=AR2, AR0->FR3, AR2->K7_fe
;----------------------------------------------------------------------------------
LT * ; TREG = K7_fe (Q14)
; ARP=AR2, AR0->FR3, AR2->K7_fe
;----------------------------------------------------------------------------------
SBRK #13 ; ARP=AR2, AR0->FR3, AR2->psi_qs_fe
;----------------------------------------------------------------------------------
MPY * ; PREG = K7_fe*psi_qs_fe (Q29)
; ARP=AR2, AR0->FR3, AR2->psi_qs_fe
;----------------------------------------------------------------------------------
APAC ; ACC = K7_fe*psi_qs_fe-K8_fe*i_qs_fe (Q29)
; ARP=AR2, AR0->FR3, AR2->psi_qs_fe
;----------------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -