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

📄 lsvpwm.asm

📁 开发环境CCS2.0 TI公司240DSP电机VVVF控制程序 可直接使用
💻 ASM
📖 第 1 页 / 共 2 页
字号:
                	;0000 0000 0010 1010
		SPLK	#002AH,SACTR		;
                ;SPLK    #0000H, DBTCON          ;no DEAD TIME 
                ;SPLK 50EFH,DBTCON		;8us	
		;SPLK 46EFH,DBTCON		;7us	
		;SPLK 3CEFH,DBTCON		;6us	
		;SPLK 32EFH,DBTCON		;5us		
		;SPLK 28EFH,DBTCON		;4us
		SPLK 1EEFH,DBTCON		;3us
		;SPLK 1CEFH,DBTCON		;2.8us;
                SPLK    #0, CMPR1               ;
                SPLK    #0, CMPR2               ;
                SPLK    #0, CMPR3               ;
                SPLK    #0, SCMPR1              ;
                SPLK    #0, SCMPR2              ;
                SPLK    #0, SCMPR3              ;再一次清零
		splk 	#0,T1CNT		;T1计数器初值
		SPLK	#0307H, COMCON		;COMCON NEED TO BE WRITTEN TWICE
		;splk 	#0272fh,COMCON 	;FIRST enable PWM operation(EN SCMP)
		SPLK	#8307H, COMCON		;FOR PROPER OPERATION	
		;splk 	#0a72fh,COMCON	;THEN enable Compare operation(EN SCMP)
                SPLK    #2802H,T1CON            ;CONTINUOUS UP/DOWN COUNT MODE
                	;0010 1000 0000 0010
                SPLK    #2802H,T1CON		;CONTINUOUS UP COUNT MODE
                splk	#0010100011000011B,T2CON;使用T1,忽略本身
		lacc 	T1CON
		or 	#40h
		sacl 	T1CON		;(T1CON)=02842H
		sacl 	T1CON		;(T1CON)=02842H
                splk	#1110001011110000b,CAPCON	;用timer3定时
		splk	#0,T3CNT
		splk	#0ffffh,T3PR
		splk	0001100001110000B,T3CON
		SPLK	#0201H, EVIMRA
		LACC	EVIVRA
                SPLK	#0H, EVIMRB
		LACC	EVIVRB
;=================================================================
;变量的初始化
		variable_init		
;=================================================================		
;-----------------------------------------------------------------
;充电继电器操作
;-----------------------------------------------------------------	

		STOP

		ms_delay 500,TEMP	;延时500毫秒		
SHT		SHORT			;短接软启动电阻		
		RUN			;允许PWM输出
;=================================================================

;---------------------------scope 初始化--------------------------
                LDP     #0
                splk	#0,FailFlag
		SPLK	#1,RunFlag
		splk	#1,RunEnable
		LAR	AR1,#60H		;栈底
		setc 	OVM		
		setc 	sxm 			;sign extension mode
;=================================================================
;示波器初始化
		.if (scope_Enable==1)
		call	ScopeInitNoLoop
		.endif
;---------------------------------
; ENABLE USED INTERRUPT
;-------------------------------------------------------------------
                LDP	#0E8H
                splk	#1H, EVIMRB
                splk    #0201H, EVIMRA	;ENABAL T1 UNDERFLAW 和PDPINT
                LDP 	#00H
                splk    #13H, IMR	;ENABLE TIMER1 INTERRUPT(INT2)
					;和XINT1(INT1),SCITX(INT5)
		CLRC 	INTM		;开中断
                LAR     AR7,#8000H
;==================================================================		
MENU		NOP
;---------------------------------------------------------------------

		.if (scope_Enable==1)		
		call	ModifyOnline
		call	MultiSingle_online
		.endif		
;---------------------------------------------------------------------
		B	MENU
;**************************************************************************		
;**********TIMER1中断服务程序,计算下一TIMER1周期发的矢量及其时间****************		                                  *
;**************************************************************************
TIMER1:		

		LDP	#0
		SETC	SXM 

;***************************************************************************
;main strategy and AD input                                                *
;***************************************************************************

;========================线电压采样模块=====================================
		LDP	#ADCTRL1/128
		splk    #1011100100110111B, ADCTRL1	;启动VDC,VCAP的采样
		ReadVdcVcap
;========================立即触发电流采样模块=============================
		LDP     #ADCTRL1/128
		splk    #1011100100100101B, ADCTRL1	;启动电流采样
		ReadCurrent

;========================VVVF及SVPWM模块====================================
		wincdec	w_opn,w_opn_l,w_opn_obj,5,tinc,tdec,TC,TC_sh,TEMP1
		iwdt	w_opn,5,agl_opn,agl_opn_l,TC,TC_sh,TEMP
		sincos	agl_opn,agl_opn_l,sin_opn,cos_opn,TEMP,TEMP1,TEMP2,TEMP3,TEMP4
		vvvf	w_opn,wn,vsd,vsq,vn,TEMP1
		dq_ab	vsd,vsq,sin_opn,cos_opn,VSAL_REF,VSBE_REF
		SVPWM
		.if	(DEADCON==1)
		indb	IA,IB,IC
		.endif
;===========================================================================
		.if (scope_Enable==1)
		call	SaveToBuffer	;数据存入缓存
		.endif
		
		Clock_S01	S01,S01_K,Clock
;环境恢复返回主程序		
		LDP 	#232
		LACC	EVIFRA
		SACL	EVIFRA		
		Restore1				
		CLRC	INTM
		RET
;==================TIMER1 OVER===================================================
; I S R  -  PHANTOM
; DESCRIPTION:	DUMMY ISR, USED TO TRAP SPURIOUS INTERRUPTS.
; MODIFIES:	NOTHING
; LAST UPDATE:	16 JUNE 95
;=====================================================================
PHANTOM 	KICK_DOG			;RESETS WD COUNTER
		B	PHANTOM

;=====================================================================
;IPM故障中断服务程序
;=======================================================================
IPM_FAIL:	MAR	*,AR1
		MAR	*+
		SST	#1,*+
		SST	#0, *+
		SACH	*+
		SACL	*

		STOP
		ALARM
                LDP	#4
       		SPLK	#5,FailFlag
;------------------------------------------------------------------
		MAR	*,AR1
		LACL	*-
		ADDH	*-
		LST	#0, *-
		LST	#1, *-
 		CLRC	INTM
		RET
;======================================================================
;INT2中断服务程序,包括TIMER1和过流(PDPINT)两个中断
;======================================================================
GISR2:		Store1
;----------------------------------------------------------------------
		LDP	#EVIVRA/128    	;
		LACC	EVIVRA		;读中断向量寄存器
		SUB	#29H		;29H代表T1UFINT
		BCND	TIM,EQ		;EVIMRA=0201H:只有T1UFINT和PDPINT被允许,所以非彼即此
		B       IFPDP		
TIM             
		B	TIMER1		;如果是TIMER1中断,转入TIMER1中断服务程序
IFPDP
		ADD	#29H
		SUB	#20H
		BCND	PDP,EQ
		B	GISR2_OUT
;如果是过流则封锁IPM驱动信号		
PDP     
		STOP			;
		ALARM
                LDP 	#FailFlag/128    
		SPLK	#1,FailFlag
GISR2_OUT	
		LDP	#EVIFRA/128	
	        LACC	EVIFRA		;
		SACL	EVIFRA		;清中断标志位
		
		Restore1
		
 		CLRC	INTM
		RET

;===============================================================================
SERIAL:		Store3

		ldp	#IMR/128
		SBIT0	IMR,B4_MSK		;在ScopeTX使SCI中断禁止
		CLRC	INTM			;开中断	
				
		LDP	#SYSIVR/128	      	
		LACl	SYSIVR
		SUB	#6
		BCND	RXINT,EQ
		B       TXINT
;---------------------------------------------------------------------
RXINT		call	ScopeRX
		b	SERIAL_end		
;---------------------------------------------------------------------
TXINT		call	ScopeTX
;---------------------------------------------------------------------
		
SERIAL_end	SETC	INTM
		ldp	#IMR/128
		SBIT1	IMR,B4_MSK		;SCI中断使能
		Restore3
		CLRC	INTM			;开中断	
		RET	
;---------------------------------------------------------------------

⌨️ 快捷键说明

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