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

📄 lsvpwm.asm

📁 本程序为TI-DSP-240中正弦PWM波形生成程序。
💻 ASM
📖 第 1 页 / 共 3 页
字号:
;================================================================
;编译开关
scope_Enable	.set 1		;如名   

S01_K		.SET	400		;S01计数的最大值=0.1s/250us

		.INCLUDE	F240.H 
		.INCLUDE  	Macro.h
		.INCLUDE 	ScopeREF.h    
	
;***********************向量地址声明***************************************
		.SECT	".VECTORS"
RSVECT		B    START
INT1		B    PHANTOM	;	
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

;--------------------定义变量---------------------------
;----------------------------------------------------------------
; B0	(DP=4,0200H-027fH)
; 	(DP=5,027FH-02FFH)
;----------------------------------------------------------------         
CMPR1		.EQU	7417h
;******SCOPE专用变量******
TEMP  		.EQU 0200H	;临时变量(从不保护)
RunFlag		.EQU 0201H	;运行标志,1为运行,0为停机
FailFlag	.EQU 0202H	;故障标志,1-过流,2-VDC过压,3-IPM的FO
RunEnable 	.EQU 0203H	
MFT	        .EQU 0204H	;端子排输入值
S01		    .EQU 0205H	;用于软件计时的变量
;********临时变量*********
;TEMP1		.EQU 0206H
;TEMP2		.EQU 0207H
;TEMP3		.EQU 0208H
;TEMP4		.EQU 0209H

;DP=5(0280H-02FFH)
;*************************
STEP		.EQU 0280H    ;增量
PERIOD		.EQU 0281H    ;GPT1周期
MAG_A		.EQU 0282H    ;幅值
TETA		.EQU 0283H    ;角度
SINTETA		.EQU 0284H	  ;SIN值		;出错,结果不对
RESULT		.EQU 0285H    ;A*SIN值
;TEMP		.EQU 0286H    ;
;			.EQU 0287H     ;
GPR0			.EQU 0288H
;DAC0VAL			.EQU 0289H
;DAC1VAL			.EQU 028AH
;DAC2VAL			.EQU 028BH
;DAC3VAL			.EQU 028CH
;			.EQU 028DH
;			.EQU 028EH
;			.EQU 028FH
;---------------------------------------------------------------------
; I/O Mapped EVM Registers
;---------------------------------------------------------------------
DAC0     	.set    0000h		;DAC Channel 0 Register
DAC1     	.set    0001h		;DAC Channel 1 Register
DAC2     	.set    0002h		;DAC Channel 2 Register
DAC3     	.set    0003h		;DAC Channel 3 Register
DAC_UPDATE  .set    0004h		;DAC Update Register
SWITCHES	.set    0008h		;DIP Switch Register
LEDS      	.set    000Ch		;LEDs Register

;***********************主程序开始****************************
 		.TEXT
;************************F240初始化模块开始*****************************
START:	LDP		#TETA/128
		SPLK	#0,TETA		;角度偏移量
		SPLK	#15,STEP 
		SPLK	#200,MAG_A	;250/540*32767=15170,540为最大线电压
					;A:0--540,对应0--32767
		SPLK	#1000,PERIOD                                             
		
;---------------------初始化ST0,ST1,IMR,IFR-----------------------------
		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     #GPR0/128
        SPLK  	#4H,GPR0                ;SET WAIT STATE GENERATOR FOR:
		OUT   	GPR0,WSGR         	;PROGRAM SPACE, 0 WAIT STATES
						;DATA SPACE, 0 WAIT STATES
                                                ;I/O SPACE, 1 WAIT STATES
;-----------------------------------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 优先级                                                
                                                
;-----------------------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	

;=========================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
		
;-------------------------系统寄存器初始化---------------------------------------------	
		LDP		#PERIOD/128
		LACC	PERIOD		    ;PWM 20KHZ	;PERIOD=500
        LDP		#0E8H        
        SACL	T1PR             	;微秒,采样周期
        ;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     
		;splk	#0AAAh,ACTR		;1--6高有效
		                        	;6,4,2,high  5,3,1,low 
                
        ;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

⌨️ 快捷键说明

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