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

📄 newscope.asm

📁 这是f240用于电机的变压变频控制
💻 ASM
📖 第 1 页 / 共 2 页
字号:
;===========================================================================
;	*******	感应电机V/F控制例程 *******	

;	清华大学电机工程与应用电子技术系

;		2000年8月
;===========================================================================
;定标:
;电流定标=实际值*2^10
;电压定标=实际值*2^5
;===========================================================================
;包含头文件

		.include f240.h
		.include NewMacro.h
		.include table.h
		.include NewISR.h
		
;===========================================================================
;常量定义
;---------------------------------------------------------------------------
;F240初始化所用常量

PWMPRD	 	.set	1000	;PWM Period=2*1000 ->
				;Tsample=2*1000*50ns=100us (50ns resolution)
DEADTIME	.set	0dFFH	;0DFFh=DEAD TIME 5US

;---------------------------------------------------------------------------
;V/F控制所用常量

ia_OFFSET_K	.set    9343-78	;U相电流零漂对应的转换结果(已包含2.5伏偏移)
ib_OFFSET_K	.set    9343-65	;W相电流零漂对应的转换结果(已包含2.5伏偏移)
;---------------------------------------------------------------------------
;坐标变换常数

SQRT3by2 	.set	0ddbh 	;SQRT(3)/2 4.12 format		
SQRT3inv 	.set	093dh	;1/sqrt(3) 4.12 format  
;---------------------------------------------------------------------------
;保护的阈值

VDCMAX_K	.set	700*32	;直流母线电压保护的门限=700*2^5
;---------------------------------------------------------------------------
;码盘速度检测所用常量

QEP_num		.set	100	;多少个PWM周期读一次码盘计数器
;---------------------------------------------------------------------------
;其它常量
		
RPT_NUM		.equ	022bH	;用于延时子程序
MSEC		.equ	022cH	;用于延时子程序

;===========================================================================
;变量定义	DP=4,(200H-27FH)128个单元
;		DP=5,(280H-2FFH)128个单元
;中断环境保护堆栈全用B2的32个单元,DP=0,(60H-7FH)	
;---------------------------------------------------------------------------
TEMP  		.equ	0200H 	;temporary variable (to use in ISR only)
TEMP1 		.equ	0201h 	;temporary variable
WSGR_tmp	.equ	0202H	;仅用于WSGR的设置

RunFlag		.equ	0203H	;运行标志,1为运行,0为停机

FailFlag	.equ	0204H	;故障标志
				;1-过流故障标志
				;2-直流母线过压标志
				;3-IPM的FO标志
RunEnable	.equ	0205H	;允许允许的标志			

ia	        .equ    0207H	;U相电流的A/D转换结果
ib	        .equ    0208H	;V相电流的A/D转换结果
ic	        .equ    0209H	;W相电流的A/D转换结果
vcap		.equ	020AH	;三电平电容电压A/D转换结果

f		.equ	020BH	;频率,18对应50Hz



t1 		.equ	020ch 	;SVPWM T1 (see SV PWM references for details)
t2 		.equ	020dh 	;SVPWM T2 (see SV PWM references for details)
Vref1 		.equ	020eh 	;扇区计算变量
Vref2 		.equ	020fh 	;扇区计算变量
Vref3 		.equ	0210h 	;扇区计算变量
vdc   		.equ	0211h 	;直流母线电压减去2个管压降
taon  		.equ	0212h 	;PWM commutation instant phase 1
tbon  		.equ	0213h 	;PWM commutation instant phase 2
tcon  		.equ	0214h 	;PWM commutation instant phase 3

fobj		.equ	0215H	;目标频率
TDEC		.equ	0216H
TINC		.equ	0217H


Vsalfa_ref 	.equ	0218h	;alfa-axis 参考电压
Vsbeta_ref 	.equ	0219h	;beta-axis 参考电压
Vsd_ref   	.equ	021ah	;d-axis 参考电压
Vsq_ref   	.equ	021bh 	;q-axis 参考电压
X        	.equ	021ch 	;SVPWM 变量
Y        	.equ	021dh 	;SVPWM 变量
Z        	.equ	021eh 	;SVPWM 变量
sector   	.equ	021fh 	;SVPWM 扇区
Angle    	.equ	0220h 	;改进型电压模型中转子磁通位置
SinAngle 	.equ	0221h 	;改进型电压模型中正弦转子磁通位置,4。12
CosAngle 	.equ	0222h 	;改进型电压模型中正弦转子磁通位置,4。12


TEMP2    	.equ	0225h	;临时变量



VDCinvT     	.equ	0227h 	;VDCinv*(T/2) (used in SVPWM)

IncDecCounter	.equ	022eH	;加减速处理计数器

temp3		.equ	0239H	;用于CLARK变换中的临时变量
isalfa		.equ	023aH	
isbeta		.equ	023bH	



kia		.equ	0248h
kib		.equ	0249h
kvdc	.equ	024ah
n       .equ    024fh

;直极变换所用的变量



;码盘程序所用的变量
QEPCNT		.equ	0258h
spdQEP		.equ	0259h

lia		.equ	025ah
lib		.equ	025bh
lvdc	.equ	025ch



;===========================================================================
        .def  _c_int0
    	.SECT ".VECTORS"
		
RSVECT		B    _c_int0
INT1		B    XINT1FO	;IPM的FO保护	
INT2 		B    GISR2	;GISR2包括TIMER1和PDPINT
INT3        B    PHANTOM    ;INTERRUPT LEVEL 3
INT4	  	B    PHANTOM	;INTERRUPT LEVEL 4
INT5	  	B    PHANTOM	;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
;--------------------------------------------------------------------
_c_int0:		
						
		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 
;---------------------------------------------------------------------
; SET UP CLOCK AND 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                   ;可靠的初始化,清非法故障标志	
							
;---------------------------------------------------------------------
; DISABLE WATCHDOG AND SET WAIT STATE GENERATOR 
;---------------------------------------------------------------------
	    	LDP  	#00E0h			;DP for addresses 7000h-707Fh
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
		 				;Overflow TIME=1s
		    KICK_DOG			;Reset Watchdog
		    LDP	    #4			;200H-027FH
		    splk  	#4H,WSGR_tmp		;地址信号不可见状态
						;SET WAIT STATE GENERATOR FOR:
INIWSGR		OUT   	WSGR_tmp,WSGR         	;PROGRAM SPACE, 0 WAIT STATES
						;DATA SPACE, 0 WAIT STATES
                                                ;I/O SPACE, 1 WAIT STATES
;---------------------------------------------------------------------------
;定时器的初始化
;---------------------------------------------------------------------------
		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
		

INIDBTCON       splk    #DEADTIME, DBTCON					
					
		splk 	#999H,ACTR 	;PWM compare actionsn,no space vector
		splk 	#0,CMPR1
		splk 	#0,CMPR2
		splk 	#0,CMPR3
		splk 	#0207h,COMCON 	;FIRST enable PWM operation					
		splk 	#8207h,COMCON	;THEN enable Compare operation
		splk 	#PWMPRD,T1PR 	;Set T1 period(#pwmprd)
		splk 	#0,T1CNT
		splk 	#02802h,T1CON
		splk 	#02802h,T1CON 	;Enable Timer 1
		splk	#1010100011000011B,T2CON
		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
;---------------------------------------------------------------------------
;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)

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            ;作为输入
		
;--------------------------------------------------------------------------
;SCI的初始化


;--------------------------------------------------------------------------
;充电继电器操作
;---------------------------------------------------------------------------	

		STOP

        LDP     #4		;延时500毫秒
		LACC	#5000
		SACL	MSEC
		CALL	MS_DELAY
		
		
SHT		SHORT			;短接软启动电阻		
		RUN			;允许PWM输出
		
;-------------------------------------------------------------------------------
; A/D INITIALIZATION
;-------------------------------------------------------------------------------
INIAD:		LDP	#0E0H
INIADCTRL2      splk    #0004H, ADCTRL2		;CONVERSION TIME 7.2US 
ADCINIFIFO1	LACL	ADCFIFO1
		LACL	ADCFIFO1
INIADCFIFO2	LACL	ADCFIFO2
		LACL	ADCFIFO2
;---------------------------------------------------------------------
; EV INITIALIZATION STARTS HERE.  
;---------------------------------------------------------------------
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	
;================================================================================
;控制变量的初始化
;--------------------------------------------------------------------------------

		
;V/F控制所用变量初始化		
	
        	LDP	#4
		ZAC		
		SACL    Angle

		
		splk	#1,f			;起动频率=50/18Hz
		splk	#10,fobj
		splk	#0,IncDecCounter	;加减速处理计数器
		splk	#10000,TDEC		;加速时间,意义:1对应从0到50赫兹的时间是0.32秒
		splk	#10000,TINC		;减速时间,意义:1对应从0到50赫兹的时间是0.32秒
		
		
		
		splk	#0,FailFlag
		SPLK	#1,RunFlag
		splk	#1,RunEnable
				
		

⌨️ 快捷键说明

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