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

📄 mcs.asm

📁 DSP关于F2407的实例程序
💻 ASM
📖 第 1 页 / 共 2 页
字号:
     	LAR	AR5,#PRT_C
LOOP:	
	B	LOOP

;=====================================================================
;Name	: EVA_INIT
;Para	: 
;Func	: EVA模块初始化
;Modify : 2004.5.28  
;=====================================================================  
EVA_INIT:
	LDP	#DP_EVA
	SPLK	#0FFFFH,EVAIFRA			;清EVA所有中断标志位
	
;-----------------------SVPWM时使用---------------------------
	SPLK	#1000011001100110B,ACTRA	;空间矢量逆时针转,开关量000(位14-12),PWM1,3,5高有效,PWM2,4,6低有效
	SPLK	#0DF0H,DBTCONA			;死区时间5.2uS.使能PWM1-6。
	
	SPLK	#010H,CMPR1			;给比较寄存器赋值
	SPLK	#030H,CMPR2
	SPLK	#0FA0H,T1PR			;赋值周期寄存器,按5k开关频率,计数器频率40MHz。PWM周期=T1PR*2(因为是连续增减模式)
		
	SPLK	#1001001000000000B,COMCONA	;下溢时CMPRx重载。
	SPLK	#0,T1CNT			;计数器初值为0
	SPLK	#081H,EVAIMRA		;GPTIMER周期中断使能,每个周期重新载入T1,T2,功率驱动保护中断使能。
	 
	SPLK	#0110000010000000B,GPTCONA	;下溢启动ADC
	
	SPLK	#0000100001000010B,T1CON	;启动定时器,bit15-14=00,仿真挂起后IPM无开关动作,但上下桥臂有一个开。
;	SPLK	#0000100000000010B,T1CON	
;-----------------------------------------------------------------	
	CLRC	INTM				;开中断
	RET
;=====================================================================
;Name	: GISR2
;Para	: 
;Func	: 中断2入口程序
;Modify : 2004.5.28
;=====================================================================
GISR2:	
;	LDP	#ST0_CON1		;保存状态寄存器,不需要指定页,SST自动DP=0.
	SST	#0,ST0_CON1
	SST	#1,ST1_CON1 
	  
	LDP	#0E0H			;DP指向PIVR所在页
	LACC	PIVR,1			;读中断向量寄存器,左移1位(因为pvesc中每个跳转指令占两个字节空间)
	ADD	#PVECTORS		;加上基地址
	
	BACC

;=====================================================================
;Name	: T1GP_ISR
;Para	: 
;Func	: 定时器1周期中断程序
;Modify : 2004.5.28
;=====================================================================	
T1GP_ISR:

;计算程序用的时间。
;	LDP 	#DP_EVB
;	SPLK	#0FFFEH,T3PR
;	SPLK	#0,T3CNT
;	NOP
;	SPLK	#0001000001000000B,T3CON
;------------------给比较寄存器赋值------------------------------
	LDP	#DP_DATA	
	LACC	ACTRA_BUFF
	LDP	#DP_EVA
	SACL	ACTRA
	
	LDP	#DP_DATA
	LACC	CMPR1_BUFF
	LDP	#DP_EVA
	SACL	CMPR1
	
	LDP	#DP_DATA
	LACC	CMPR2_BUFF
	LDP	#DP_EVA
	SACL	CMPR2	
;------------------判断AD转换是否完成,并读转换结果--------------
	LDP	#DP_PF2
WAIT_ADC:
	BIT	ADCTRL2,6		;ADC完成中断标志位
	BCND	WAIT_ADC,NTC
	CALL	i_GET			;读ADC结果
;------------------		
;计算ThetaS0:
	LDP	#DP_DATA
	SPLK	#13557,TEMP
	LT	Omiga_ref
	MPY	TEMP
	SPM	1
	PAC
	SACH	TEMP
	SPM	0
	
;	LDP	#DP_DATA
	LACC	ThetaS0
	ADD	TEMP		;相加的步长=7FFF*f(输出频率)/5K(开关频率)=7FFF*50/5K/792=13557(Q15)。
	;ADD	#164
	;ADD	#328		
	AND	#7FFFH
	SACL	ThetaS0
;	SACL	PARK_Theta	;计算VR变换时用到

;计算电压(恒压频比)
	LDP	#DP_DATA 
	LT	Omiga_ref
	MPY	#27
	PAC	
	SACL	UST0
	SACL	USM0
	
;---------------------  	转速检测	-----------------
;	CALL	QEP
;---------------------  	转速滤波	-----------------	
;	CALL	OMIGA_FILTER
;	LDP	#DP_DATA
;	LACC	OMIGA_FILTER_RESULT
;	SACL	OmigaR0
;---------------------  	转速PID调节	-----------------
;	CALL	Omiga_PID
;------------------判断AD转换是否完成,并读转换结果--------------
;	LDP	#DP_PF2
;WAIT_ADC:
;	BIT	ADCTRL2,6		;ADC完成中断标志位
;	BCND	WAIT_ADC,NTC
;	CALL	i_GET			;读ADC结果
;------------------把AD转换结果进行CLARK变换(3/2) --------------
;	CALL	CLARK	
;------------------	进行PARK变换        ----------------------
;	CALL	PARK
;------------------	IST0滤波        ----------------------	
;	CALL	FILTER
;	LDP	#DP_DATA
;	LACC	FILTER_RESULT
;	SACL	IST0
;-----------------------转子磁链观测器----------------------------
;	CALL	FLUX
		
				
	MAR	*,AR0
;	LAR	AR0,#PRT_A
	LAR	AR0,#PRT_G
	ADRK	#7FH
	MAR	*,AR7
	CMPR	2
;	BCND	END_DRAWA,TC
	BCND	END_LOOP,TC
	LDP	#DP_DATA
	LACC	IB0
	
	LDP	#PRT_A
	SACL	*+
	
	LDP	#DP_DATA
	LACC	IA0
	LDP	#PRT_H
	MAR	*,AR6
	SACL	*+
	B	END_DRAW
	
END_LOOP:
	LAR	AR7,#PRT_A		
    LAR	AR6,#PRT_H		


END_DRAW:	
;-----------------------转子磁链PID调节器-------------------------
;	CALL	KesaiR_PID
;-----------------------  转矩电流调节器  -------------------------
;	CALL	IST_PID
;-----------------------  进行IPARK变换   -------------------------
	CALL	IPARK	
;-----------------------  SVPWM计算   -------------------------
	CALL	SVPWM
	
	
	

	LDP	#0			;恢复状态寄存器,这句不能省,与SST指令不一样!!!!
   	LST	#1,ST1_CON1 
	LST	#0,ST0_CON1   		;恢复的时候要先ST1再ST0,反过来的话会进入NMI中断。
;计算程序用的时间。         
;        LDP 	#DP_EVB
;	SPLK	#0001000000000000B,T3CON
;	NOP
         
	LDP	#DP_EVA 	
	SPLK	#0080H,EVAIFRA		;清EVA相应中断标志位
	CLRC	INTM			;开总中断,因为一进入中断,系统自动关闭总中断。
    
	RET
;=====================================================================
;Name	: GISR1
;Func	: 中断1入口程序
;Modify : 2004.6.18
;=====================================================================
GISR1:	
	SST	#0,ST0_CON1
	SST	#1,ST1_CON1
		
	LDP	#0E0H			;DP指向PIVR所在页
	LACC	PIVR,1			;读中断向量寄存器,左移1位(因为pvesc中每个跳转指令占两个字节空间)
	ADD	#PVECTORS		;加上基地址
	BACC

;=====================================================================
;Name	: PDPINTA_INIT
;Func	: 功率模块驱动保护中断
;Modify : 2004.6.18
;=====================================================================	
PDPINTA_INIT:
	LDP	#DP_EVA
	SPLK	#1001000000000000B,COMCONA
	SPLK	#0000000000000000B,ACTRA
	B	PDPINTA_INIT
	RET
;-----------------------------------------------------------------	


PHANTOM:
	LDP	#DP_EVA
	SPLK	#1001000000000000B,COMCONA
	SPLK	#0000000000000000B,ACTRA 
	B	PHANTOM
	RET
NMIINT:
	LDP	#DP_EVA
	SPLK	#1001000000000000B,COMCONA
	SPLK	#0000000000000000B,ACTRA
	B	NMIINT
	RET
TESTINT:
	LDP	#DP_EVA
	SPLK	#1001000000000000B,COMCONA
	SPLK	#0000000000000000B,ACTRA
	B	TESTINT
	RET

;=====================================================================
;Name	: GISR6
;Func	: 中断6入口程序
;Modify : 2004.8.18
;=====================================================================
GISR6:	
	SST	#0,ST0_CON1
	SST	#1,ST1_CON1
		
	LDP	#0E0H			;DP指向PIVR所在页
	LACC	PIVR,1			;读中断向量寄存器,左移1位(因为pvesc中每个跳转指令占两个字节空间)
	ADD	#PVECTORS		;加上基地址
	BACC	
;=====================================================================
;Name	: EXT_INIT
;Func	: 外部中断,做测试计算的中间结果用。
;Modify : 2004.8.18
;=====================================================================	
EXT_INIT:

	CALL	PROTECT


;	LAR	AR7,#PRT_A
	
;	LDP 	#DP_PF1
;	SPLK	#8007H,XINT1CR			;清中断标志位。
;	
;	LDP	#0
;  	LST	#1,ST1_CON1 
;	LST	#0,ST0_CON1
;
;	CLRC	INTM
;
	RET
;-----------------------------------------------------------------	

⌨️ 快捷键说明

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