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

📄 pmsm32.asm

📁 本程序来自TI公司网站原程序,其功能是通过传统的矢量控制算法来实现对永磁同步电机的控制,矢量控制采用双闭环结构
💻 ASM
📖 第 1 页 / 共 3 页
字号:
	.word	_F2407_EV1_QEP_Init+0
	.word	_F2407_EV1_QEP_Index_Handle+0
IS3	.set	12

	.sym	_qep,_qep,8,2,192,.fake3
	.globl	_qep
	.word	IS4,_sfoc
	.word	0
	.word	0
	.word	0
	.word	4096
	.word	0
	.word	0
	.word	8192
	.word	0
	.word	5376
	.word	0
	.word	0
	.word	0
	.word	0
	.word	0
	.word	0
	.word	0
	.word	0
	.word	0
	.word	0
	.word	0
	.word	0
	.word	0
	.word	0
	.word	0
	.word	0
	.word	0
	.word	0
	.word	0
	.word	0
	.word	0
	.word	0
	.word	0
	.word	0
	.word	0
	.word	0
	.word	_svgendq_calc+0
	.word	0
	.word	0
	.word	0
	.word	15883
	.word	0
	.word	0
	.word	0
	.word	0
	.word	0
	.word	0
	.word	32767
	.word	-32768
	.word	0
	.word	0
	.word	4194
	.word	30421
	.word	328
	.word	0
	.word	_pid_reg3_calc+0
	.word	0
	.word	0
	.word	0
	.word	15883
	.word	0
	.word	0
	.word	0
	.word	0
	.word	0
	.word	0
	.word	32767
	.word	-32768
	.word	0
	.word	0
	.word	4194
	.word	30421
	.word	328
	.word	0
	.word	_pid_reg3_calc+0
	.word	0
	.word	0
	.word	0
	.word	15883
	.word	0
	.word	0
	.word	0
	.word	0
	.word	0
	.word	0
	.word	32767
	.word	-32768
	.word	0
	.word	0
	.word	4194
	.word	30421
	.word	328
	.word	0
	.word	_pid_reg3_calc+0
	.word	0
	.word	0
	.word	0
	.word	19677
	.word	0
	.word	32097
	.word	0
	.word	0
	.word	0
	.word	0
	.word	0
	.word	0
	.word	5419
	.word	0
	.word	0
	.word	0
	.word	5147
	.word	0
	.word	0
	.word	0
	.word	0
	.word	0
	.word	_smopos_calc+0
	.word	0
	.word	64
	.word	-32768
	.word	32767
	.word	0
	.word	0
	.word	0
	.word	_rmp_cntl_calc+0
	.word	16383
	.word	1000
	.word	0
	.word	16383
	.word	0
	.word	16383
	.word	_rampgen_calc+0
	.word	0
	.word	4800
	.word	0
	.word	32361
	.word	0
	.word	407
	.word	6000
	.word	0
	.word	_speed_frq+0
	.word	0
	.word	0
	.word	0
	.word	0
	.word	0
	.word	0
	.word	0
	.word	0
	.word	0
	.word	_phase_voltage_calc+0
IS4	.set	150

	.sym	_sfoc,_sfoc,8,2,2400,.fake16
	.globl	_sfoc
	.word	IS5,_dac
	.word	768
	.word	768
	.word	768
	.word	768
	.word	2000
	.word	_F24X_EVM_DAC_Update+0
IS5	.set	6

	.sym	_dac,_dac,8,2,96,.fake0
	.globl	_dac
	.word	IS6,_wdog
	.word	_F24x_WD_Disable+0
	.word	_F24x_WD_ResetCounter+0
IS6	.set	2

	.sym	_wdog,_wdog,8,2,32,.fake2
	.globl	_wdog
	.word	IS7,_ilg2_vdc
	.word	8191
	.word	0
	.word	0
	.word	8191
	.word	0
	.word	0
	.word	8191
	.word	0
	.word	0
	.word	0
	.word	1808
	.word	_F2407_ileg2_dcbus_drv_init+0
	.word	_F2407_ileg2_dcbus_drv_read+0
IS7	.set	13

	.sym	_ilg2_vdc,_ilg2_vdc,8,2,208,.fake5
	.globl	_ilg2_vdc
	.word	IS8,_drive
	.word	0
	.word	_F24xx_drive_drv_init+0
	.word	_F24xx_drive_drv_calc+0
IS8	.set	3

	.sym	_drive,_drive,8,2,48,.fake17
	.globl	_drive
	.globl	_isr_ticker
	.text

	.sym	_main,_main,32,2,0
	.globl	_main

	.func	103
;>>>> 	void main()   
******************************************************
* FUNCTION DEF : _main
******************************************************
_main:
	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,1
	LAR	AR0,*0+

	.line	6
;>>>> 	        RstSystem();
;>>>> 	#if (BUILDLEVEL==LEVEL1)
;>>>> 	#if     TARGET==F243                      
;>>>> 	        pwm.period_max=667;          /* This is based on 15kHz PWM frequency (20MHz) */
;>>>> 	#elif   TARGET==F2407                                                          
	CALL	_RstSystem
	.line	31
;>>>> 	        pwm.period_max=1333;       /* This is based on 15kHz PWM frequency (40MHz)*/
;>>>> 	#endif  /* TARGET */            
	LDPK	_pwm
	SPLK	#1333,_pwm
	.line	38
;>>>> 	        SFOC_TI_Init(&sfoc);
	LALK	_sfoc+0
	SACL	*+
	CALL	_SFOC_TI_Init
	MAR	*-
	.line	43
;>>>> 	        rtmon_init();           /* Call the monitor init function           */
	CALL	_rtmon_init
	.line	44
;>>>> 	       	enable_ints();          /* Set off the system running.              */
	CALL	_enable_ints
	.line	49
;>>>> 	        while(drive.enable_flg==0)
	LDPK	_drive
	LAC	_drive
	BNZ	L2
L1:
	.line	51
;>>>> 	        drive.init(&drive);
	LALK	_drive+0
	SACL	*+
	LDPK	_drive+1
	LAC	_drive+1
	CALA
	MAR	*-
	.line	49
	LDPK	_drive
	LAC	_drive
	BZ	L1
L2:
	.line	57
;>>>> 	        pwm.init(&pwm);
;>>>> 	#if     TARGET==F243                      
;>>>> 	        EVIFRA=0xffff;          
;>>>> 	#elif   TARGET==F2407                                                          
	LALK	_pwm+0
	SACL	*+
	LAC	_pwm+5
	CALA
	MAR	*-,AR3
	.line	65
;>>>> 		    EVAIFRA=0xffff;        
;>>>> 	#endif  /* TARGET */
	LARK	AR3,29743
	SPLK	#-1,* 
	.line	71
;>>>> 	        dac.qptr0=&sfoc.svgen.va;
	LALK	_sfoc+32
	LDPK	_dac
	SACL	_dac
	.line	72
;>>>> 	        dac.qptr1=&sfoc.svgen.vb;
	LALK	_sfoc+33
	SACL	_dac+1
	.line	73
;>>>> 	        dac.qptr2=&sfoc.svgen.vc;
	LALK	_sfoc+34
	SACL	_dac+2
	.line	74
;>>>> 	        dac.qptr3=&sfoc.rg.rmp_out;
;>>>> 	#endif /* (BUILDLEVEL==LEVEL1) */  
;>>>> 	#if (BUILDLEVEL==LEVEL2)
;>>>> 	#if     TARGET==F243                      
;>>>> 	        pwm.period_max=667;          /* This is based on 15kHz PWM frequency (20MHz) */
;>>>> 	#elif   TARGET==F2407                                                          
;>>>> 	        pwm.period_max=1333;       /* This is based on 15kHz PWM frequency (40MHz)*/
;>>>> 	#endif  /* TARGET */            
;>>>> 	        SFOC_TI_Init(&sfoc);
;>>>> 	        rtmon_init();            /* Call the monitor init function           */
;>>>> 	        enable_ints();           /* Set off the system running.              */
;>>>> 	        while(drive.enable_flg==0)
;>>>> 	        drive.init(&drive);
;>>>> 	        pwm.init(&pwm);
;>>>> 	       	ilg2_vdc.init(&ilg2_vdc);
;>>>> 	        dac.qptr0=&ilg2_vdc.Imeas_a;
;>>>> 	        dac.qptr1=&ilg2_vdc.Imeas_b;
;>>>> 	        dac.qptr2=&sfoc.rg.rmp_out;
;>>>> 	        dac.qptr3=&sfoc.voltage_dq.q;
;>>>> 	#endif /* (BUILDLEVEL==LEVEL2) */   
;>>>> 	#if (BUILDLEVEL==LEVEL3)
;>>>> 	#if     TARGET==F243                      
;>>>> 	        pwm.period_max=667;          /* This is based on 15kHz PWM frequency (20MHz) */
;>>>> 	#elif   TARGET==F2407                                                          
;>>>> 	        pwm.period_max=1333;       /* This is based on 15kHz PWM frequency (40MHz)*/
;>>>> 	#endif  /* TARGET */            
;>>>> 	        SFOC_TI_Init(&sfoc);
;>>>> 	        rtmon_init();            /* Call the monitor init function           */
;>>>> 	        enable_ints();           /* Set off the system running.              */
;>>>> 	        while(drive.enable_flg==0)
;>>>> 	        drive.init(&drive);
;>>>> 	        pwm.init(&pwm);          
;>>>> 	       	ilg2_vdc.init(&ilg2_vdc);
;>>>> 	        dac.qptr0=&ilg2_vdc.Imeas_a;
;>>>> 	        dac.qptr1=&sfoc.svgen.vb;
;>>>> 	        dac.qptr2=&sfoc.svgen.vc;
;>>>> 	        dac.qptr3=&sfoc.rg.rmp_out;
;>>>> 	#endif /* (BUILDLEVEL==LEVEL3) */   
;>>>> 	#if (BUILDLEVEL==LEVEL4)
;>>>> 	#if     TARGET==F243                      
;>>>> 	        pwm.period_max=667;          /* This is based on 15kHz PWM frequency (20MHz) */
;>>>> 	#elif   TARGET==F2407                                                          
;>>>> 	        pwm.period_max=1333;       /* This is based on 15kHz PWM frequency (40MHz)*/
;>>>> 	#endif  /* TARGET */            
;>>>> 	        SFOC_TI_Init(&sfoc);
;>>>> 	        rtmon_init();            /* Call the monitor init function           */
;>>>> 	        enable_ints();           /* Set off the system running.              */
;>>>> 	        while(drive.enable_flg==0)
;>>>> 	        drive.init(&drive);
;>>>> 	        pwm.init(&pwm);          
;>>>> 	        qep.init(&qep);     
;>>>> 	        speed.K1_fr = 4800;  
;>>>> 	        speed.K2_fr = 32361;
;>>>> 	        speed.K3_fr = 407;
;>>>> 	        speed.rpm_max = 6000;
;>>>> 	       	ilg2_vdc.init(&ilg2_vdc);
;>>>> 	        dac.qptr0=&sfoc.rg.rmp_out;
;>>>> 	        dac.qptr1=&sfoc.svgen.va;
;>>>> 	        dac.qptr2=&qep.theta_elec;
;>>>> 	        dac.qptr3=&sfoc.svgen.vb;
;>>>> 	#endif /* (BUILDLEVEL==LEVEL4) */  
;>>>> 	#if (BUILDLEVEL==LEVEL5)
;>>>> 	#if     TARGET==F243                      
;>>>> 	        pwm.period_max=667;          /* This is based on 15kHz PWM frequency (20MHz) */
;>>>> 	#elif   TARGET==F2407                                                          
;>>>> 	        pwm.period_max=1333;       /* This is based on 15kHz PWM frequency (40MHz)*/
;>>>> 	#endif  /* TARGET */            
;>>>> 	        SFOC_TI_Init(&sfoc);
;>>>> 	        rtmon_init();            /* Call the monitor init function           */
;>>>> 	        enable_ints();           /* Set off the system running.              */
;>>>> 	        while(drive.enable_flg==0)
;>>>> 	        drive.init(&drive);
;>>>> 	        pwm.init(&pwm);          
;>>>> 	        qep.init(&qep);     
;>>>> 	        speed.K1_fr = 4800;  
;>>>> 	        speed.K2_fr = 32361;
;>>>> 	        speed.K3_fr = 407;
;>>>> 	        speed.rpm_max = 6000;
;>>>> 	       	ilg2_vdc.init(&ilg2_vdc);
;>>>> 	        dac.qptr0=&qep.theta_elec; 
;>>>> 	        dac.qptr1=&sfoc.svgen.va;
;>>>> 	        dac.qptr2=&sfoc.smo.thetae;  
;>>>> 	        dac.qptr3=&sfoc.svgen.vb;
;>>>> 	#endif /* (BUILDLEVEL==LEVEL5) */  
;>>>> 	#if (BUILDLEVEL==LEVEL6)
;>>>> 	#if     TARGET==F243                      
;>>>> 	        pwm.period_max=667;          /* This is based on 15kHz PWM frequency (20MHz) */
;>>>> 	#elif   TARGET==F2407                                                          
;>>>> 	        pwm.period_max=1333;       /* This is based on 15kHz PWM frequency (40MHz)*/
;>>>> 	#endif  /* TARGET */            
;>>>> 	        SFOC_TI_Init(&sfoc);
;>>>> 	        rtmon_init();            /* Call the monitor init function           */
;>>>> 	        enable_ints();           /* Set off the system running.              */
;>>>> 	        while(drive.enable_flg==0)
;>>>> 	        drive.init(&drive);
;>>>> 	        pwm.init(&pwm);          
;>>>> 	        qep.init(&qep);     
;>>>> 	        speed.K1_fr = 4800;  
;>>>> 	        speed.K2_fr = 32361;
;>>>> 	        speed.K3_fr = 407;
;>>>> 	        speed.rpm_max = 6000;
;>>>> 	       	ilg2_vdc.init(&ilg2_vdc);
;>>>> 	        dac.qptr0=&ilg2_vdc.Imeas_a;
;>>>> 	        dac.qptr1=&sfoc.svgen.va;
;>>>> 	        dac.qptr2=&sfoc.smo.thetae;
;>>>> 	        dac.qptr3=&sfoc.svgen.vb;
;>>>> 	#endif /* (BUILDLEVEL==LEVEL6) */  
;>>>> 	#if (BUILDLEVEL==LEVEL7)
;>>>> 	#if     TARGET==F243                      
;>>>> 	        pwm.period_max=667;          /* This is based on 15kHz PWM frequency (20MHz) */
;>>>> 	#elif   TARGET==F2407                                                          
;>>>> 	        pwm.period_max=1333;       /* This is based on 15kHz PWM frequency (40MHz)*/
;>>>> 	#endif  /* TARGET */            
;>>>> 	        SFOC_TI_Init(&sfoc);
;>>>> 	        rtmon_init();            /* Call the monitor init function           */
;>>>> 	        enable_ints();           /* Set off the system running.              */
;>>>> 	        while(drive.enable_flg==0)
;>>>> 	        drive.init(&drive);
;>>>> 	        pwm.init(&pwm);          
;>>>> 	        qep.init(&qep);     
;>>>> 	        speed.K1_fr = 4800;  

⌨️ 快捷键说明

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