clarke.asm

来自「此源码为用于电力电子变换器的DSP汇编源程序」· 汇编 代码 · 共 78 行

ASM
78
字号
;=======================================================================
; File Name:	clarke.asm			      
;
; Module Name: 	CLARKE	
;
; Initialization Routine: CLARKE_INIT
;
; Description:	Converts balanced three phase quantities into balanced 
;		two phase quadrature quantities.
;				(a,b,c) -> (d,q) Transformation
;				clark_d = clark_a
;				clark_q = (2 * clark_b + clark_a) / sqrt(3)
;
;			 |~~~~~~~~~~~~~~~~~|
;	clark_a	 o------>|		   |----->o  clark_d
;	clark_b	 o------>|     CLARKE      |
;	clark_c* o------>|		   |----->o  clark_q
;			 |_________________|
;
;	*Note: Not needed (for completeness only)
;	
;
; Target dependency:	C2xx core only
;
;
;=====================================================================================
;		.ref	CLARKE, CLARKE_INIT				;function call
;		.ref	clark_a, clark_b				;Inputs
;		.ref	clark_d, clark_q				;Outputs
;=======================================================================
;Module definitions for external reference.
		.def	CLARKE, CLARKE_INIT				;function call
		.def	clark_a, clark_b				;Inputs
		.def	clark_d, clark_q				;Outputs
;=======================================================================
		.include "x24x_app.h"

; Variables     
clark_a		.usect "clarke",1
clark_b		.usect "clarke",1
clark_d		.usect "clarke",1
clark_q		.usect "clarke",1
sqrt3inv	.usect "clarke",1    			; 1/sqrt(3)
clk_temp	.usect "clarke",1

;=========================
CLARKE_INIT:	  
;=========================
; sqrt3inv = (1/sqrt(3))=0.577350269
		ldp		#clark_a	
		SPLK 	#18919,sqrt3inv  	; 1/sqrt(3) (Q15)
		RET
   
;=========================
CLARKE:	  
;=========================
		SPM	1			; Set SPM for Q15 math
		SETC	SXM             ; Sign extension mode on

;clark_d = clark_a
		ldp		#clark_a	
		LACC	clark_a		     	; ACC = clark_a
		SACL	clark_d					; clark_d = clark_a
                                    
;clark_q = (2 * clark_b + clark_a) / sqrt(3)
	LT		sqrt3inv
	MPY		clark_a
	PAC
	MPY		clark_b
	APAC
	MPY		clark_b
	APAC
	SACH	clark_q
	SPM		0
		RET
	

⌨️ 快捷键说明

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