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

📄 clarke.asm

📁 无刷直流电机的无传感器控制TI程序
💻 ASM
字号:
;=======================================================================
; File Name:	clarke.asm			      
;
; Module Name: 	CLARKE	
;
; Initialization Routine: CLARKE_INIT
;
; Originator:	Digital Control Systems Group
;			Texas Instruments
;
; 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
;
;
;=====================================================================================
; History:
;-------------------------------------------------------------------------------------
; 9-15-2000	Release	Rev 1.0	
;=======================================================================
;(To use this Module, copy this section to main system file)
;		.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		#sqrt3inv
		SPLK 	#018830,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)
		SFR	                        ; ACC = clark_a/2
		ADD	clark_b         	; ACC = clark_a/2 + clark_b
		SACL	clk_temp            	; clk_temp = clark_a/2 + clark_b
		LT	clk_temp        	; TREG = clark_a/2 + clark_b
		MPY	sqrt3inv		; PREG = (clark_a/2 + clark_b)*(1/sqrt(3))
		PAC               		; ACC =  (clark_a/2 + clark_b)*(1/sqrt(3))
    		SFL               		; ACC =  (clark_a + clark_b*2)*(1/sqrt(3))
		SACH	clark_q  		; clark_q = (clark_a + clark_b*2)*(1/sqrt(3))
    		SPM	0                 	; SPM reset
		
		RET
	

⌨️ 快捷键说明

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