⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 aci_fe.asm

📁 TI公司24X系列DSP控制无刷直流电机
💻 ASM
📖 第 1 页 / 共 4 页
字号:
		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 + -