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

📄 park.asm

📁 此源码为用于电力电子变换器的DSP汇编源程序
💻 ASM
字号:
;===========================================================================
; File Name:	park.asm
;
; Module Name: 	PARK					      
;
; Initialization Routine: PARK_INIT
;
;
; Description:	This transformation converts vectors in balanced 2-phase 
;		orthogonal stationary system into orthogonal rotating 
;		reference frame.
;
;			id = ialfa * cos_teta + ibeta * sin_teta
;			iq = -ialfa *sin_teta + ibeta * cos_teta
;
;			|~~~~~~~~~~~~~~~~~|
;	park_d	o------>|		  |----->o  park_D
;	park_q	o------>|      PARK	  |
;	theta_p	o------>|		  |----->o  park_Q
;			|_________________|
;
;	Note:	0 < theta_p < 7FFFh   (i.e. equivalent to   0 < theta_p < 360 deg  )
;
;
;
; Target dependency:	C2xx core only
;
;===========================================================================
;Module definitions for external reference.
		.def	PARK, PARK_INIT					;function call
		.def	park_d, park_q,sin_theta,cos_theta,theta_p			;Inputs
		.def	park_D, park_Q					;Outputs 
		.ref	SINTAB_360
;===========================================================================
		
	


park_d			.usect "park",1
park_q			.usect "park",1
theta_p			.usect	"park",1
park_D			.usect "park",1
park_Q			.usect "park",1
t_ptr			.usect "park",1
ip_val			.usect "park",1
cos_theta		.usect "park",1
sin_theta		.usect "park",1
nxt_entry		.usect "park",1
delta_angle		.usect "park",1
GPR0_park		.usect "park",1

;=====================================================================
PARK_INIT: 
;=====================================================================
		RET


;=====================================================================
PARK: 
;=====================================================================
;Calculate Cos(theta_p)
  	;Normal precision with simple 1024 word look-up

		ldp		#park_d   
		LACC	theta_p 
		ADD		#255
		SACL    t_ptr  
		SUB		#1023
		BCND	DYL2,LEQ 
		NOP
		NOP
		SACL	t_ptr    
DYL2	NOP		
		LACC	#SINTAB_360
		ADD		t_ptr
		TBLR	cos_theta
		LACC	#SINTAB_360
		ADD		theta_p
		TBLR	sin_theta
	    SPM	     1						; SPM set for Q15 multiplication        
		lacc	#0						; Reset accumulator
		LT	park_d     	; TREG = ibeta
		MPY	sin_theta   ; PREG = ibeta * sin_teta
		LTA	park_q     	; ACC = ibeta * sin_teta and TREG = ialfa 
		MPY	cos_theta   ; PREG = ialfa * cos_teta
		MPYS	sin_theta ; ACC = ibeta*sin_teta + ialfa*cos_teta and PREG=ialfa*sin_teta
		SACH	park_D		; id = ialfa * cos_teta + ibeta * sin_teta        
	
		LACC	#0        ; Clear ACC
		LT	park_d     	; TREG = ibeta
		MPYS	cos_theta ; ACC = -ialfa*sin_teta and PREG = ibeta*cos_teta
		SPAC            ; ACC = -ialfa *sin_teta + ibeta * cos_teta
		SACH	park_Q    ; iq = -ialfa *sin_teta + ibeta * cos_teta
		SPM	0           ; SPM reset
		RET    




⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -