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

📄 bldc_ti.asm

📁 直流无刷电机控制程序
💻 ASM
字号:
*******************************************************
* TMS320C24xx ANSI C Codegen Version 7.04       
*******************************************************
;	dspac -i../../../../rtmon/ -i../include -i../../../../lib/dmclib/clib/include -i../../../../lib/drvlib/clib/include -v2xx -iC:/C
;	dspopt NOT RUN
;	dspcg -o -v2xx -o C:\DOCUME~1\jsg\LOCALS~1\Temp\bldc_ti.if C:\DOCUME~1\jsg\LOCALS~1\Temp\bldc_ti.asm C:\DOCUME~1\jsg\LOCALS~1\Temp\bldc_ti.tmp 
	.port
	.file	"bldc_ti.c"
	.file	"../../../../lib/dmclib/clib/include\mod6.h"

	.stag	.fake0,48
	.member	_trig_in,0,4,8,16
	.member	_cntr,16,4,8,16
	.member	_calc,32,148,8,16
	.eos
	.sym	_MOD6CNT,0,8,13,48,.fake0
	.sym	_MOD6CNT_handle,0,24,13,16,.fake0
	.globl	_mod6cnt_calc
	.file	"../../../../lib/dmclib/clib/include\pid2.h"

	.stag	.fake1,208
	.member	_fb_reg2,0,4,8,16
	.member	_ref_reg2,16,4,8,16
	.member	_k0_reg2,32,4,8,16
	.member	_k1_reg2,48,4,8,16
	.member	_kc_reg2,64,4,8,16
	.member	_un_reg2,80,4,8,16
	.member	_en0_reg2,96,4,8,16
	.member	_upi_reg2,112,4,8,16
	.member	_epi_reg2,128,4,8,16
	.member	_max_reg2,144,4,8,16
	.member	_min_reg2,160,4,8,16
	.member	_out_reg2,176,4,8,16
	.member	_calc,192,148,8,16
	.eos
	.sym	_PID2,0,8,13,208,.fake1
	.sym	_PID2_handle,0,24,13,16,.fake1
	.globl	_pid2_calc
	.file	"../../../../lib/dmclib/clib/include\impl.h"

	.stag	.fake2,64
	.member	_period,0,4,8,16
	.member	_out,16,4,8,16
	.member	_skpcnt,32,4,8,16
	.member	_calc,48,148,8,16
	.eos
	.sym	_IMPULSE,0,8,13,64,.fake2
	.sym	_IMPULSE_handle,0,24,13,16,.fake2
	.globl	_impulse_calc
	.file	"../../../../lib/dmclib/clib/include\rmp2.h"

	.stag	.fake3,112
	.member	_max,0,4,8,16
	.member	_min,16,4,8,16
	.member	_dly,32,4,8,16
	.member	_delay_cntr,48,4,8,16
	.member	_desired,64,4,8,16
	.member	_out,80,4,8,16
	.member	_calc,96,148,8,16
	.eos
	.sym	_RMP2,0,8,13,112,.fake3
	.sym	_RMP2_handle,0,24,13,16,.fake3
	.globl	_rmp2_calc
	.file	"../../../../lib/dmclib/clib/include\rmp3.h"

	.stag	.fake4,112
	.member	_desired,0,4,8,16
	.member	_dly,16,4,8,16
	.member	_dly_cntr,32,4,8,16
	.member	_min,48,4,8,16
	.member	_out,64,4,8,16
	.member	_done_flg,80,4,8,16
	.member	_calc,96,148,8,16
	.eos
	.sym	_RMP3,0,8,13,112,.fake4
	.sym	_RMP3_handle,0,24,13,16,.fake4
	.globl	_rmp3_calc
	.file	"../../../../lib/dmclib/clib/include\cmtn.h"

	.stag	.fake5,304
	.member	_trig,0,4,8,16
	.member	_va,16,4,8,16
	.member	_vb,32,4,8,16
	.member	_vc,48,4,8,16
	.member	_zc_trig,64,4,8,16
	.member	_ptr_ct,80,4,8,16
	.member	_debug_Bemf,96,4,8,16
	.member	_noise_windowCntr,112,4,8,16
	.member	_d30_doneFlg,128,4,8,16
	.member	_time_stampNew,144,4,8,16
	.member	_time_stampOld,160,4,8,16
	.member	_v_timer,176,4,8,16
	.member	_delay,192,4,8,16
	.member	_dt_taskFlg,208,4,8,16
	.member	_noise_windowMax,224,4,8,16
	.member	_delay_cntr,240,4,8,16
	.member	_cdnw_delta,256,4,8,16
	.member	_nw_dynThold,272,4,8,16
	.member	_calc,288,148,8,16
	.eos
	.sym	_CMTN,0,8,13,304,.fake5
	.sym	_CMTN_handle,0,24,13,16,.fake5
	.globl	_cmtn_trig_calc
	.file	"../include\bldc_ti.h"

	.stag	.fake6,976
	.member	_cmtn_period_target,0,4,8,16
	.member	_cmtn_period_setpt,16,4,8,16
	.member	_ramp_delay,32,4,8,16
	.member	_I_loop_flg,48,4,8,16
	.member	_D_func_desired,64,4,8,16
	.member	_sp_up_done_flg,80,4,8,16
	.member	_current_set,96,4,8,16
	.member	_align_flag,112,4,8,16
	.member	_impl,128,8,8,64,.fake2
	.member	_mod6,192,8,8,48,.fake0
	.member	_rmp3,240,8,8,112,.fake4
	.member	_cmtn,352,8,8,304,.fake5
	.member	_pid2,656,8,8,208,.fake1
	.member	_rmp2,864,8,8,112,.fake3
	.eos
	.sym	_BLDC_TI,0,8,13,976,.fake6
	.sym	_BLDC_TI_handle,0,24,13,16,.fake6
	.globl	_BLDC_TI_Init
	.globl	_BLDC_TI_Run
	.file	"bldc_ti.c"
	.text

	.sym	_BLDC_TI_Init,_BLDC_TI_Init,32,2,0
	.globl	_BLDC_TI_Init

	.func	157
;>>>> 	void BLDC_TI_Init(BLDC_TI_handle v)
******************************************************
* FUNCTION DEF : _BLDC_TI_Init
******************************************************
_BLDC_TI_Init:

LF1	.set	0

	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,1
	LAR	AR0,*0+,AR2

	.sym	_v,-3+LF1,24,9,16,.fake6
	.line	2
	.line	3
;>>>> 	     v->rmp2.out = ALIGN_DUTY;
	LARK	AR2,-3+LF1
	MAR	*0+
	LAR	AR3,* ,AR3
	ADRK	59
	SPLK	#3072,* 
	.line	4
;>>>> 	     v->rmp2.dly = 0x0050;
	LACK	80
	SBRK	3
	SACL	* 
	.line	5
;>>>> 	     v->rmp2.max = 0x7ff0;
	SBRK	2
	SPLK	#32752,*+
	.line	6
;>>>> 	     v->rmp2.min = 0x000f;
	LACK	15
	SACL	* ,AR2
	.line	8
;>>>> 	     v->rmp3.desired = v->cmtn_period_target;
	LAR	AR4,* ,AR3
	SSXM
	SBRK	55
	LAC	* ,AR4
	ADRK	15
	SACL	* ,AR3
	.line	9
;>>>> 	     v->rmp3.dly = v->ramp_delay;
	ADRK	2
	LAC	*-,AR4
	MAR	*+
	SACL	* ,AR3
	.line	10
;>>>> 	     v->rmp3.out = v->cmtn_period_setpt;
	LAC	* ,AR4
	ADRK	3
	SACL	* ,AR3
	.line	11
;>>>> 	     v->rmp3.min = 0x0050;
	LACK	80
	ADRK	17
	SACL	* 
	.line	13
;>>>> 	     v->cmtn.nw_dynThold = 0x000f;
	LACK	15
	ADRK	21
	SACL	*-
	.line	14
;>>>> 	     v->cmtn.cdnw_delta = 0x0002;
	LACK	2
	SACL	* ,AR4
	.line	15
;>>>> 	     v->cmtn.noise_windowMax =
;>>>> 	                v->cmtn.nw_dynThold - v->cmtn.cdnw_delta;
	ADRK	20
	LAC	* ,AR3
	SUB	* 
	SBRK	2
	SACL	* 
	.line	18
;>>>> 	     v->pid2.max_reg2 = 0x7000;    /* Q15                           */
	ADRK	14
	SPLK	#28672,*+
	.line	19
;>>>> 	     v->pid2.min_reg2 = 0x0000;    /* Q15                           */
	LACK	0
	SACL	* 
	.line	20
;>>>> 	     v->pid2.k0_reg2  = 0x0080;    /* Q9                            */
	LACK	128
	SBRK	8
	SACL	*+
	.line	21
;>>>> 	     v->pid2.k1_reg2  = 0x0140;    /* Q13                           */
	SPLK	#320,*+
	.line	22
;>>>> 	     v->pid2.kc_reg2  = 0x0506;    /* Q13                           */
	SPLK	#1286,* ,AR1
EPI0_1:
	.line	23
	SBRK	2
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	179,000000000H,1

	.sym	_BLDC_TI_Run,_BLDC_TI_Run,32,2,0
	.globl	_BLDC_TI_Run

	.func	271
;>>>> 	void BLDC_TI_Run(BLDC_TI_handle v)
******************************************************
* FUNCTION DEF : _BLDC_TI_Run
******************************************************
_BLDC_TI_Run:

LF2	.set	0

	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,1
	LAR	AR0,*0+,AR2

	.sym	_v,-3+LF2,24,9,16,.fake6
	.line	2
	.line	3
;>>>> 	   (*v->cmtn.calc)(&v->cmtn);
	LARK	AR2,-3+LF2
	MAR	*0+
	LAC	* ,AR1
	ADDK	22
	SACL	*+,AR2
	LAR	AR3,* ,AR3
	ADRK	40
	LAC	* ,AR1
	CALA
	MAR	*-,AR2
	.line	5
;>>>> 	   if(FALSE == v->sp_up_done_flg) {
	LARK	AR2,-3+LF2
	MAR	*0+
	LAR	AR3,* ,AR3
	SSXM
	ADRK	5
	LAC	* 
	BNZ	L1
	.line	6
;>>>> 	        (*v->rmp3.calc)(&v->rmp3);
	MAR	* ,AR2
	LAC	* ,AR1
	ADDK	15
	SACL	*+,AR3
	ADRK	16
	LAC	* ,AR1
	CALA
	MAR	*-,AR2
	.line	7
;>>>> 	        v->sp_up_done_flg  = v->rmp3.done_flg;
	LARK	AR2,-3+LF2
	MAR	*0+
	LAR	AR3,* 
	LAR	AR4,* ,AR3
	SSXM
	ADRK	20
	LAC	* ,AR4
	ADRK	5
	SACL	* ,AR3
	.line	8
;>>>> 	        v->cmtn_period_setpt = v->rmp3.out;
	MAR	*-
	LAC	* ,AR4
	SBRK	4
	SACL	* ,AR3
	.line	10
;>>>> 	        v->impl.period = v->rmp3.out;//脉冲周期信号
	LAC	* ,AR4
	ADRK	7
	SACL	* ,AR2
	.line	11
;>>>> 	        (*v->impl.calc)(&v->impl);
	LAC	* ,AR1
	ADDK	8
	SACL	*+,AR3
	SBRK	8
	LAC	* ,AR1
	CALA
	MAR	*-,AR2
	.line	13
;>>>> 	        v->mod6.trig_in = v->impl.out;
;>>>> 	   else
	LARK	AR2,-3+LF2
	MAR	*0+
	LAR	AR3,* 
	LAR	AR4,* ,AR3
	SSXM
	ADRK	9
	LAC	* ,AR4
	ADRK	12
	SACL	* 
	B	L2
L1:
	.line	17
;>>>> 	       v->mod6.trig_in = v->cmtn.trig; /* Closed Loop */
	MAR	* ,AR2
	LAR	AR4,* ,AR3
	ADRK	17
	LAC	* ,AR4
	ADRK	12
	SACL	* 
L2:
	.line	19
;>>>> 	   (*v->mod6.calc)(&v->mod6); /* Open Loop */
	MAR	* ,AR2
	LAC	* ,AR1
	ADDK	12
	SACL	*+,AR4
	ADRK	2
	LAC	* ,AR1
	CALA
	MAR	*-,AR2
	.line	21
;>>>> 	   v->cmtn.ptr_ct = v->mod6.cntr;    /* Input to COMMUTATION_TRIGGER */
	LARK	AR2,-3+LF2
	MAR	*0+
	LAR	AR3,* 
	LAR	AR4,* ,AR3
	SSXM
	ADRK	13
	LAC	* ,AR4
	ADRK	27
	SACL	* ,AR3
	.line	23
;>>>> 	   v->pid2.ref_reg2 = v->current_set;
	SBRK	7
	LAC	* ,AR4
	ADRK	15
	SACL	* ,AR2
	.line	24
;>>>> 	   (*v->pid2.calc)(&v->pid2);                                             /*
;>>>> 	---------------------------------------------------------------------------
;>>>> 	   Uses PID result when the flag is set, i.e., I_loop_flg=1
;>>>> 	   Implements ramp control of D_func during open current loop
;>>>> 	   control, i.e., I_loop_flg=0
;>>>> 	---------------------------------------------------------------------------*/
	LAC	* ,AR1
	ADDK	41
	SACL	*+,AR3
	ADRK	47
	LAC	* ,AR1
	CALA
	MAR	*-,AR2
	.line	30
;>>>> 	   if(FALSE == v->I_loop_flg){
	LARK	AR2,-3+LF2
	MAR	*0+
	LAR	AR3,* ,AR3
	SSXM
	ADRK	3
	LAC	* 
	BNZ	L3
	.line	31
;>>>> 	        v->rmp2.desired = v->D_func_desired;
	MAR	*+,AR2
	LAR	AR4,* ,AR3
	LAC	* ,AR4
	ADRK	58
	SACL	* ,AR2
	.line	32
;>>>> 	        (*v->rmp2.calc)(&v->rmp2);
	LAC	* ,AR1
	ADDK	54
	SACL	*+,AR3
	ADRK	56
	LAC	* ,AR1
	CALA
	MAR	*-
L3:
EPI0_2:
	.line	34
	MAR	* ,AR1
	SBRK	2
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	304,000000000H,1
	.end

⌨️ 快捷键说明

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