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

📄 lsvpwm.asm

📁 开发环境CCS2.0 TI公司240DSP电机VVVF控制程序 可直接使用
💻 ASM
📖 第 1 页 / 共 2 页
字号:
;================================================================
;编译开关
scope_Enable	.set 1		;如名
Tc_short	.set 1		;1-小采样周期(约120us),0-大采样周期(约700us)
SVPWM_load	.set 0		;SVPWM中是否load CMPRx
immediate	.set 0		;死区补偿是否立即载入,0-中末,1-立即
ENSCMP		.set 0		;SCMP是否发同样的脉冲
DEADCON		.set 1		;是否进行死区补偿
;*********************************************************************
;       文件名:		lsvpwm.ASM
;     目标系统:		F240主控板
;     功能描述:	 	SVPWM,死区补偿,有电压电流AD输入,与scope通信
;       版本号: 	1.1
; 最新调整时间:		2003.6.15
;*************************头文件*************************************
		.INCLUDE	F240.h 
		.INCLUDE	constdef.h
		.INCLUDE  	Macro.h
		.INCLUDE 	ScopeREF.h
		.INCLUDE	varinit.h
		.INCLUDE	vardef.h
		.INCLUDE	mathtb.h

;**********************定标及公式声明********************************

;**********************常数声明**************************************

;***********************变量定义*************************************
	variable_def

;***********************向量地址声明***************************************

		.SECT	".VECTORS"
RSVECT		B    START
INT1		B    IPM_FAIL	;IPM的FO保护	
INT2 		B    GISR2	;GISR2包括TIMER1和PDPINT
INT3		B    PHANTOM	;INTERRUPT LEVEL 3
INT4	  	B    PHANTOM	;INTERRUPT LEVEL 4
INT5	  	B    SERIAL	;INTERRUPT LEVEL 5
INT6	  	B    PHANTOM	;INTERRUPT LEVEL 6
RESERVED  	B    PHANTOM	;RESERVED
SW_INT8   	B    PHANTOM	;USER S/W INTERRUPT
SW_INT9   	B    PHANTOM	;USER S/W INTERRUPT
SW_INT10  	B    PHANTOM	;USER S/W INTERRUPT
SW_INT11  	B    PHANTOM	;USER S/W INTERRUPT
SW_INT12  	B    PHANTOM	;USER S/W INTERRUPT
SW_INT13  	B    PHANTOM	;USER S/W INTERRUPT
SW_INT14  	B    PHANTOM	;USER S/W INTERRUPT
SW_INT15  	B    PHANTOM	;USER S/W INTERRUPT
SW_INT16  	B    PHANTOM	;USER S/W INTERRUPT
TRAP	  	B    PHANTOM	;TRAP VECTOR
NMINT	  	B    PHANTOM	;NON-MASKABLE INTERRUPT
EMU_TRAP  	B    PHANTOM	;EMULATOR TRAP
SW_INT20  	B    PHANTOM	;USER S/W INTERRUPT
SW_INT21  	B    PHANTOM	;USER S/W INTERRUPT
SW_INT22  	B    PHANTOM	;USER S/W INTERRUPT
SW_INT23  	B    PHANTOM	;USER S/W INTERRUPT


;***********************************************************************
;***************************主程序开始**********************************
;***********************************************************************
		.TEXT

;************************F240初始化模块开始*****************************
;---------------------初始化ST0,ST1,IMR,IFR-----------------------------
START:		LDP 	#00H		;0000H-007FH
		SETC	INTM    	;DISABLE INTERRUPTS
		splk	#0000H,IMR	;MASK ALL CORE INTERRUPTS
		LACC	IFR		;READ INTERRUPT FLAGS
		SACL	IFR		;CLEAR ALL INTERRUPT FLAGS
		CLRC	SXM		;SUPPRESSES SIGN EXTENSION
		CLRC	OVM		;RESET OVERFLOW MODE
		CLRC	CNF		;CONFIG BLOCK B0 TO DATA MEM
		SPM     0		;SUPPRESSES SHIFT ACTION 
;------------------------设置CLOCK与PLL--------------------------------
INICLOCKPLL:	LDP 	#0E0H		;7000H-707FH		
		splk	#00BBh,CKCR1	;CLKIN(OSC)=10MHz,CPUCLK=20MHz
		splk	#00C3h,CKCR0	;CLKMD=PLL Enable,SYSCLK=CPUCLK/2
		splk  	#4000H,SYSCR	;0100 0000 0000 0000
					;CLKOUT PIN =Digital I/O mode
		LDP	#00E0h		;DP for addresses 7000h-707Fh                                                
		lacc 	SYSSR
		and 	#69FFh          ;and 0110100111111111, clear 15,12,10,9
		sacl 	SYSSR           ;可靠的初始化,清非法故障标志						
;------------------------关看门狗和设置等待周期------------------------
		LDP	#0E0H
INIRTICR	splk	#0007H,RTICR 	;DISABLE RTI
INIWDCR		splk	#006FH,WDCNTR
		splk	#05555H,WDKEY 
		splk	#0AAAAH,WDKEY
		splk	#006FH,WDCNTR
		SPLK	#006FH, WDCR		;DISABLE WD IF VCCP=5V (JP5 IN POS. 2-3)
		                                ;Overflow TIME=1s
		KICK_DOG			;RESET WATCHDOG
                LDP     #4
                SPLK  	#4H,TEMP                ;SET WAIT STATE GENERATOR FOR:
		OUT   	TEMP,WSGR         	;PROGRAM SPACE, 0 WAIT STATES
						;DATA SPACE, 0 WAIT STATES
                                                ;I/O SPACE, 1 WAIT STATES
;----------------------I/O引脚的初始化---------------------------------
;I/O引脚的初始化
;注意:用户程序务必参照此段初始化程序
;DP=0E1H
;PADATDIR.0(IOPA0)=CS(93C46)
;PADATDIR.1(IOPA1)=CLK(93C46)
;PADATDIR.2(IOPA2)=UNCLOCK
;PADATDIR.3(IOPA3)=/DISDRIVE


;PBDATDIR.5(IOPB5)=BRAKE
;PBDATDIR.6(IOPB6)=FAN
;PBDATDIR.7(IOPB7)=SHORT

;PCDATDIR.0(IOPC0)=FAI(Y2)
;PCDATDIR.1(IOPC1)=RUN(Y1)
;PCDATDIR.2(IOPC2)=DO(93C46)
;PCDATDIR.3(IOPC3)=DI(93C46)
;PCDATDIR.6(IOPC6)=ALARM
;PCDATDIR.7(IOPC7)=FDT(Y3)
		NOP
		NOP
		NOP
		NOP
		NOP
INIIOPIN:	LDP 	#0E1H			;7080H-70FFH
INIOCRA		splk    #0001111100000000B,OCRA ;    	
INIOCRB         splk    #00111100B,OCRB		;
INIPADATDIR     splk    #0000111100000000B,PADATDIR
INIPBDATDIR     splk    #1110000000000000B,PBDATDIR
INIPCDATDIR     splk    #1100101100000000B,PCDATDIR
                LDP 	#0E0H			;7000H-707FH
ININMI          splk    #0014H,NMI		;0000 0001 0000 0100B
						;NMI,上升沿触发	
INIXINT1        splk    #0005H,XINT1		;0000 0000 0000 0101B
						;XINT1上升沿触发,HIGH优先级
INIXINT2	splk    #0000H,XINT2            ;作为输入
INIXINT3        splk    #0000H,XINT3            ;作为输入
;-----------------------EV中断初始化-------------------------------------------
INIEV:		LDP	#0E8H 			;DP =>EV REGISTERS,7400H-747FH
INIEVIMRA       splk    #00000H,EVIMRA          ;MASK ALL GROUP A INTERRUPT FLAGS
INIEVIMRB	splk 	#00000H,EVIMRB 		;MASK ALL GROUP B INTERRUPT FLAGS
INIEVIMRC	splk 	#00000H,EVIMRC 		;MASK ALL GROUP C INTERRUPT FLAGS
INIEVIFRA	splk 	#0FFFFH,EVIFRA		;CLEAR ALL GROUP A INTERRUPT FLAGS
INIEVIFRB	splk 	#0FFFFH,EVIFRB		;CLEAR ALL GROUP B INTERRUPT FLAGS
INIEVIFRC	splk 	#0FFFFH,EVIFRC		;CLEAR ALL GROUP C INTERRUPT FLAGS
INIEVIVRA	LACC	EVIVRA			
INIEVIVRB	LACC	EVIVRB
INIEVIVRC	LACC	EVIVRC	
;------------------------A/D 初始化------------------------------------------
INIAD:		LDP	#0E0H
INIADCTRL2      splk    #0004H, ADCTRL2		;CONVERSION TIME 7.2US 
ADCINIFIFO1	LACL	ADCFIFO1
		LACL	ADCFIFO1
INIADCFIFO2	LACL	ADCFIFO2
		LACL	ADCFIFO2
;-----------------------------------SCI的初始化-------------------------------
;注意:用户程序务必参照此段初始化程序

SCI_INIT:	LDP	#00E0h
		splk	#0017h, SCICCR 	;1 stop bit,disable parity,8 char bits,
					;async mode, idle–line protocol
		splk	#0013h, SCICTL1	;Enable TX, RX, internal SCICLK,
					;Disable RX ERR, SLEEP, TXWAKE
		splk	#0003, SCICTL2	;disable RX INT,enable TX INT
		splk	#0000h, SCIHBAUD
		splk	#000ah, SCILBAUD	;Baud Rate=115200 b/s (10 MHz SYSCLK)
		;splk	#0040h, SCILBAUD	;Baud Rate=19200 b/s (10 MHz SYSCLK)
		splk	#0022h, SCIPC2	;Enable TXD & RXD pins
		splk	#0033h, SCICTL1	;Relinquish SCI from Reset.
		splk	#0060H,SCIPRI	;RX,TX皆为LOW 优先级
		                        
;=========================PWM中断初始化===============================================
;--------------------------清零-------------------------------------------------------
		zac
		ldp 	#0E8H
		sacl 	GPTCON                  ;gptcon=0
		sacl 	T1CNT
		sacl 	T1CMPR
		sacl 	T1PR
		sacl 	T1CON
		sacl 	T2CNT
		sacl 	T2CMPR
		sacl 	T2PR
		sacl 	T2CON
		sacl 	T3CNT
		sacl 	T3CMPR
		sacl 	T3PR
		sacl 	T3CON
		sacl 	COMCON
		sacl 	ACTR
		sacl 	SACTR
		sacl 	DBTCON
		sacl 	CMPR1
		sacl 	CMPR2
		sacl 	CMPR3
		sacl	SCMPR1
		sacl 	SCMPR2
		sacl 	SCMPR3
		sacl 	CAPCON
		sacl 	CAPFIFO
		sacl 	CAP1FIFO
		sacl 	CAP2FIFO
		sacl 	CAP3FIFO
		sacl 	CAP4FIFO
;-------------------------系统寄存器初始化---------------------------------------------	
		splk	#1010101B,GPTCON;允许三个定时器比较输出,ACTIVE LOW
		LACC	#Sample_PRD
                SACL	T1PR             	;微秒,采样周期
		SPLK	#0, T1CNT
                SPLK    #0, T2CNT
		SPLK 	#1, T1CMPR
                SPLK    #1, T2CMPR
                ;SPLK    #0666H, ACTR            ;禁止 SPACE VECTOR PWM,高有效
                	;0000 0110 0110 0110
                ;SPLK    #0666H, ACTR            ;ACTR IS DOUBLE BUFFERED
                splk 	#0999H,ACTR 		;PWM compare actionsn,no space vector
		        ;0000 1001 1001 1001
		                        	;6,4,2,high  5,3,1,low 
                ;SPLK	#002AH,SACTR            ;简单比较单元高有效 
                	;0000 0000 0010 1010   
                splk	#002Ah,SACTR		;X,Y,Z,active high

⌨️ 快捷键说明

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