?? test5.asm
字號:
;==============================================================================
; 程序文件名: test5.ASM
;
; 功能描述: 電壓空間矢量計算模塊測試實驗
;
; 公司: 達盛科技
;
; 目標板:x2407
;=====================================================================================
; 修改記錄:
;-------------------------------------------------------------------------------------
; 最后修改日期:2005.07.20 版本號: Ver.1.0
;==============================================================================
;******************************************************************************
; 系統選項
;******************************************************************************
real_time .set 1 ; '1' 代表實時模式, '0'代表非實時模式
* 選擇編譯選項
PWM_PERIOD .set 100 ; PWM 周期設置,單位是微秒 (10KHz)
;T1PER_ .set PWM_PERIOD*10 ; *1000nS/(2*50nS)
T1PER_ .set PWM_PERIOD*20 ; *1000nS/(2*25nS)
;******************************************************************************
;-----------------------------------------------------------------------------
; 外部參量聲明
;-----------------------------------------------------------------------------
.include "x24x_app.h"
.global MON_RT_CNFG
.ref SYS_INIT
.ref RAMP_GEN, RAMP_GEN_INIT ;磁鏈給定子程序
.ref rmp_gain, rmp_offset, rmp_freq ;輸入參量
.ref step_angle_max ;輸入參量
.ref rmp_out ;輸出參量
.ref FC_PWM_DRV,FC_PWM_DRV_INIT ;PWM波形產生子程序
.ref Mfunc_c1,Mfunc_c2,Mfunc_c3,Mfunc_p ;輸入參量
.ref n_period ;輸出參量
.ref I_PARK, I_PARK_INIT ;PARK逆變換子程序
.ref ipark_D, ipark_Q, theta_ip ;輸入參量
.ref ipark_d, ipark_q ;輸出參量
.ref SVGEN_DQ,SVGEN_DQ_INIT ;矢量計算子程序
.ref Ualfa,Ubeta ;輸入參量
.ref Ta,Tb,Tc ;輸出參量
.ref DATA_LOG_INIT,DATA_LOG ;圖形顯示數據獲取子程序
.ref dlog_iptr1,dlog_iptr2 ;輸出參量
;-----------------------------------------------------------------------------
; 輸入參量聲明
;-----------------------------------------------------------------------------
.def GPR0 ;通用寄存器
.bss GPR0,1 ;通用寄存器
.bss isr_ticker,1
;==============================================================================
;向量表( 包括實時模式監控程序 )
;==============================================================================
.include "c200mnrt.i" ; 條件編譯選項
.sect "vectors"
.def _c_int0
RESET B _c_int0 ; 00
INT1 B PHANTOM ; 02
INT2 B T1_PERIOD_ISR ; 04
INT3 B PHANTOM ; 06
INT4 B PHANTOM ; 08
INT5 B PHANTOM ; 0A
INT6 B PHANTOM ; 0C
.include "rtvecs.h"
; Note : The above include line must be AFTER the user configurable
; vectors. Do not change the place where this line is included.
;==============================================================================
; 主程序代碼
;==============================================================================
.text
_c_int0:
CALL SYS_INIT
CALL FC_PWM_DRV_INIT ;初始化定時器
CALL DATA_LOG_INIT ;
CALL RAMP_GEN_INIT
CALL I_PARK_INIT
CALL SVGEN_DQ_INIT
;---實時模式選項---------------
.if (real_time)
CALL MON_RT_CNFG
.endif
;----------------------------------
;-----------------------------------
; 用戶初始化參量輸入
;----------------------------------
LDP #n_period
SPLK #T1PER_,n_period ;初始化 PWM 頻率10kHz
LDP #rmp_freq
SPLK #2a00h,rmp_freq ;磁場頻率設定
;----------------------------------------------------------
; 系統中斷初始化
;----------------------------------------------------------
;事件管理器
POINT_EV
SPLK #0000001000000000b,IMRA ;使能 T1 定時器下溢中斷
SPLK #0000000000000100b,IMRC ;使能 CAP3 中斷 (編碼器z信號)
;||||!!!!||||!!!!
;5432109876543210
SPLK #0FFFFh,IFRA ; Clear all Group A interrupt flags
SPLK #0FFFFh,IFRB ; Clear all Group B interrupt flags
SPLK #0FFFFh,IFRC ; Clear all Group C interrupt flags
;C2xx Core
POINT_PG0
;---實時模式選項 --------------------------------------------------
.if (real_time)
SPLK #0000000001001010b,IMR ;En Int lvl 3,7 (T2 ISR)
;5432109876543210
.endif
.if (real_time != 1)
SPLK #0000000000001010b,IMR ;En Int lvl 4 (CAP3/QEP ISR)
;||||!!!!||||!!!!
;5432109876543210
.endif
SPLK #0FFFFh, IFR ;Clear any pending Ints
EINT ;Enable global Ints
POINT_B0
;-----------------------------------------------------------------------
;使能 PWM 信號
;-----------------------------------------------------------------------
.if (x243|x2407) ;目標板設定
POINT_PF2
LACC OCRA
AND #0BFFFh
SACL OCRA ;選擇 IOPB6 第二功能
LACC PBDATDIR
OR #04000h
SACL PBDATDIR ;Set IOPB6 as output
LACC PBDATDIR
AND #0FFBFh ;IOPB6 為低使能 PWM
; OR #00040h ;IOPB6 為高禁止 PWM
SACL PBDATDIR
.endif
;======================================================
MAIN: ;系統主程序循環
;======================================================
M_1 NOP
NOP
NOP
CLRC XF
B MAIN
;======================================================
;===========================================================================
; 程序名: T1_PERIOD_ISR 程序類型: ISR
;
; 功能描述:斷點保護
;
; 公司: 達盛科技
; 修改記錄:
; 最后修改日期: 2005.7.10
;===========================================================================
T1_PERIOD_ISR:
;Context save regs
MAR *,AR1 ;AR1 is stack pointer
MAR *+ ;skip one position
SST #1, *+ ;save ST1
SST #0, *+ ;save ST0
SACH *+ ;save acc high
SACL * ;save acc low
POINT_EV
SPLK #0FFFFh,IFRA ; Clear all Group A interrupt flags (T1 ISR)
SETC XF
SETC SXM ; 允許符號擴展
CLRC OVM ; 清除溢出標志
POINT_B0
; 校驗 ISR
LACC isr_ticker
ADD #1
SACL isr_ticker
;=========================================================
;主循環中斷服務程序開始
;=========================================================
; Ramp 產生模塊
CALL RAMP_GEN
; I_Park 模塊
LDP #theta_ip
BLDD #rmp_out,theta_ip
CALL I_PARK
; 電壓空間矢量計算模塊
LDP #Ualfa
BLDD #ipark_d,Ualfa
BLDD #ipark_q,Ubeta
CALL SVGEN_DQ
; PWM 模塊
CALL FC_PWM_DRV ;設置 PWM 頻率為10kHz
;DATA_LOG
; ldp #dlog_iptr1 ;
; SPLK #rmp_out,dlog_iptr1 ;
; SPLK #Ib_out,dlog_iptr2 ;
CALL DATA_LOG ;
;=========================================================
;主循環中斷服務程序結束
;=========================================================
;斷點恢復
END_ISR:
POINT_PG0
MAR *, AR1 ;make stack pointer active
LACL *- ;Restore Acc low
ADDH *- ;Restore Acc high
LST #0, *- ;load ST0
LST #1, *- ;load ST1
EINT
RET
;==============================================================================
; I S R - PHANTOM
;
; 功能描述: 啞中斷服務程序
;
; 修改記錄:
; 最后更新日期: 2005.6.23
;==============================================================================
PHANTOM B PHANTOM
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -