📄 aci31_x1.asm
字号:
;=========================================================================================
; System Name: ACI3_1
;
; File Name: ACI31_x1.ASM
;
; Description: ACI 3-phase Volts / Hertz (VHz) control with speed
; sensor
;
; Originator: Digital Control Systems Group
; Texas Instruments
;
; Target Device:F2407
; To Select the target device see x24x_app.h file.
;
;
;=====================================================================================
; History:
;-------------------------------------------------------------------------------------
; 9-15-2000 Release Rev 1.0
;==============================================================================
;******************************************************************************
; SYSTEM OPTIONS
;******************************************************************************
;-----------------------------------------------------------------------------
; External references
;-----------------------------------------------------------------------------
.include "x24x_app.h"
;SPEED_REF .set 750 ;sheding sudu
.ref SYS_INIT
.ref RAMP_CNTL, RAMP_CNTL_INIT ;function call
.ref target_value, rmp_dly_max ;Inputs
.ref setpt_value, s_eq_t_flg ;Outputs
.ref V_Hz_PROFILE, V_Hz_PROFILE_INIT ;function call
.ref vhz_freq ;Inputs
.ref v_out ;Outputs
.ref SVGEN_MF, SVGEN_MF_INIT ;function call
.ref sv_gain, sv_offset, sv_freq ;Inputs
.ref Ta, Tb, Tc ;Outputs
.ref QEP_THETA_DRV,QEP_THETA_DRV_INIT ; function call
.ref polepairs,cal_angle,mech_scale ; Inputs
.ref theta_elec,theta_mech,dir_QEP ; Outputs
.ref QEP_INDEX_ISR_DRV ; function call
.ref index_sync_flg,QEP_cnt_idx ; Output
.ref SPEED_FRQ, SPEED_FRQ_INIT ;function call
.ref shaft_angle, direction ;Inputs
.ref speed_frq, speed_frq_rpm ;Outputs
.ref FC_PWM_O_DRV
.ref FC_PWM_O_DRV_INIT ;function call
.ref Mfunc_c1, Mfunc_c2, Mfunc_c3, Mfunc_p ;Inputs
.ref limit ;Input
.ref KEYSCAN
.ref KEYSCAN_INIT ;function call
.ref startflag,onflag,stopflag ;output
.ref DAC_VIEW_DRV,DAC_VIEW_DRV_INIT ; function call
.ref DAC_IPTR0,DAC_IPTR1,DAC_IPTR2,DAC_IPTR3 ; Inputs
.ref ADC, ADC_INIT ; function call
.ref c0_out,c1_out, c2_out,c3_out ; Outputs
.ref DATA_LOG, DATA_LOG_INIT ;function call
.ref dlog_iptr1, dlog_iptr2 ;Inputs
.ref pid_reg_spd,pid_reg_spd_init ; function call
.ref spd_fdb,spd_ref ; Inputs
.ref spd_out ; Outputs
;-----------------------------------------------------------------------------
; Local Variable Declarations
;-----------------------------------------------------------------------------
.def GPR0 ;General purpose registers.
.def GPR1
.def GPR2
.def GPR3
.def GPR4
.def rpm_scaler1
.def speed_rpm_old
.def COMCON
.bss GPR0,1 ;General purpose registers.
.bss GPR1,1
.bss GPR2,1
.bss GPR3,1
.bss GPR4,1
.bss closed_loop_flag,1
.bss freq_in,1
.bss speed_setpt,1
.bss rpm_scaler1,1
.bss speed_rpm_old,1
.bss direction1,1
.bss Van,1
.bss Vbn,1
.bss Vcn,1
.bss Vab,1
.bss Vbc,1
.bss Vca,1
.bss HALF,1
.bss MINUS_ONE,1
.bss isr_ticker,1
;==============================================================================
; V E C T O R T A B L E
;==============================================================================
.sect "vectors"
.def _c_int0
RESET B _c_int0 ; 00
INT1 B PHANTOM1 ; 02
INT2 B T1UF_ISR ; 04
INT3 B T4UF_ISR ; 06
INT4 B PHANTOM ; 08
INT5 B PHANTOM ; 0A
INT6 B PHANTOM ; 0C
; Note : The above include line must be AFTER the user configurable
; vectors. Do not change the place where this line is included.
;==============================================================================
; M A I N C O D E - starts here
;==============================================================================
.text
_c_int0:
CALL SYS_INIT
CALL RAMP_CNTL_INIT
CALL V_Hz_PROFILE_INIT
CALL SVGEN_MF_INIT
CALL QEP_THETA_DRV_INIT
CALL SPEED_FRQ_INIT
CALL FC_PWM_O_DRV_INIT
CALL KEYSCAN_INIT
CALL ADC_INIT
CALL DAC_VIEW_DRV_INIT
CALL DATA_LOG_INIT
CALL pid_reg_spd_init
;------------------------------------------------------
;System time-base init - Timer2
;------------------------------------------------------
SYSTEM_INT_PERIOD .set 1000 ;set for 100uS period @50nS CPU clock
;----------------------------------------------------------
; System Interrupt Init.
;----------------------------------------------------------
;Event Manager
POINT_EV
SPLK #0000000000000001b,IMRA ;Enable T1 Underflow Int (i.e. Period)
; SPLK #0000001000000001b,IMRA ;Enable T1 Underflow Int (i.e. Period)
; SPLK #0000000000000100b,IMRC ;Enable CAP3 int (i.e. QEP index pulse)
;||||!!!!||||!!!!
;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
LDP #IFRAB>>7h
SPLK #0000000000000100b,IMRBB ;Enable T4 Underflow Int (i.e. Period)
SPLK #0FFFFh,IFRAB ; Clear all Group A interrupt flags
SPLK #0FFFFh,IFRBB ; Clear all Group B interrupt flags
SPLK #0FFFFh,IFRCB ; Clear all Group C interrupt flags
;C2xx Core
POINT_PG0
SPLK #0000000000000111b,IMR ;En Int lvl 2 (T1 ISR)
; SPLK #0000000000000100b,IMR ;En Int lvl 3 (T2 ISR)
;||||!!!!||||!!!!
;5432109876543210
SPLK #0FFFFh, IFR ;Clear any pending Ints
EINT ;Enable global Ints
POINT_B0
;-----------------------------------------------------------------------
;---------------------------------------------------------
;SYSTEM COMMISSIONING OPTIONS - Initialisation
;--------------------------------------------------------
RPM_SCALER .set 5510h
SPLK #7FFFh, Mfunc_p
SPLK #500h, freq_in
SPLK #RPM_SCALER, rpm_scaler1
SPLK #1, direction1
; SPLK #0,stcount
;---------------------------------------------------------
;======================================================
MAIN: ;Main system background loop
;======================================================
M_1 B MAIN
;======================================================
;===========================================================================
; Routine Name: T1UF_ISR Routine Type: ISR
;
; Description:
;
;
; Originator: Digital control systems Group - Texas Instruments
;
; History:
;
;
; Last Update: 08-25-2000
;===========================================================================
T1UF_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 #0FFFEh,IFRA ; Clear all Group A interrupt flags (T1 ISR),except PDPINTA
;=========================================================
;Start main section of ISR
;=========================================================
POINT_B0
; verifying the ISR
LACC isr_ticker
ADD #1
SACL isr_ticker
;---------------------------------------------------------
;SYSTEM COMMISSIONING OPTIONS - Main code
;--------------------------------------------------------
LDP #startflag
LACC startflag
BCND BEGIN1, NEQ
LDP #speed_setpt
SPLK #0h,speed_setpt
B BEGIN
BEGIN1:
CALL ADC
LDP #speed_setpt
BLDD #c0_out, speed_setpt ;0-1024 means 0-3.3V=0-70hz
BEGIN: LDP #target_value
BLDD #speed_setpt, target_value
CALL RAMP_CNTL
LDP #target_value
LACC setpt_value
SUB #30h
BCND BEGIN2,NEQ
LDP #startflag
LACC startflag
BCND BEGIN2,NEQ
POINT_EV
SPLK #0,ACTR
B END_ISR
BEGIN2:
LDP #target_value
LT setpt_value
POINT_B0
MPY rpm_scaler1
PAC
SACH freq_in,5
LDP #vhz_freq
BLDD #freq_in, vhz_freq
CALL V_Hz_PROFILE
LDP #sv_gain
BLDD #vhz_freq, sv_freq
BLDD #v_out, sv_gain
CALL SVGEN_MF
POINT_B0
LACC direction1
SUB #1
BCND CW, EQ
CCW LDP #Mfunc_c1
BLDD #Ta, Mfunc_c1
BLDD #Tb, Mfunc_c2
BLDD #Tc, Mfunc_c3
B PWMDRV
CW LDP #Mfunc_c1
BLDD #Ta, Mfunc_c1
BLDD #Tb, Mfunc_c3
BLDD #Tc, Mfunc_c2
PWMDRV CALL FC_PWM_O_DRV
CALL Line2line
; QEP Module
CALL QEP_THETA_DRV
; SPEED_FR Module
LDP #shaft_angle
BLDD #theta_mech,shaft_angle
BLDD #dir_QEP,direction
CALL SPEED_FRQ
;PID OF SPEED
LDP #spd_fdb
BLDD #speed_frq,spd_fdb
BLDD #speed_ref,spd_ref
CALL pid_reg_spd
CALL DATA_LOG
;=========================================================
;End main section of ISR
;=========================================================
;Context restore regs
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
;*********************************************
;T3 period interrupt
;*********************************************
T4UF_ISR:
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
LDP #0eah
SPLK #0FFFFh,IFRBB ; Clear all Group B interrupt flags (T2 ISR),except PDPINTA
;=========================================================
;Start main section of ISR
;=========================================================
POINT_B0
; verifying the ISR
LACC isr_ticker
ADD #1
SACL isr_ticker
;---------------------------------------------------------
;SYSTEM COMMISSIONING OPTIONS - Main code
;---------------------------------------------------------
CALL KEYSCAN
END_T4ISR:
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
;==============================================================================
; Subroutine - Line2Line
; Description: This subroutine calculates line to line voltages
; from line to neutral voltage
; Van - Phase A line to neutral voltage
; Vbn - Phase B line to neutral voltage
; Vcn - Phase C line to neutral voltage
; Vab = Van-Vbn Line to line voltage between phases A & B
; Vbc = Vbn-Vcn Line to line voltage between phases B & C
; Vca = Vcn-Van Line to line voltage between phases C & A
;===============================================================================
Line2line
POINT_B0
BLDD #Ta, Van
BLDD #Tb, Vbn
BLDD #Tc, Vcn
SPLK #3FFFh, HALF
SPLK #8001h, MINUS_ONE
LT HALF
MPY Van
PAC
SACH Van,1
MPY Vbn
PAC
SACH Vbn,1
MPY Vcn
PAC
SACH Vcn,1
LT MINUS_ONE
LACC Van
SUB Vbn
SACL Vab
LACC Vbn
SUB Vcn
SACL Vbc
LACC Vcn
SUB Van
SACL Vca
RET
;==============================================================================
; I S R - PHANTOM
;
; Description: Dummy ISR, used to trap spurious interrupts.
;
; Modifies:
;
; Last Update: 16-06-95
;==============================================================================
PHANTOM B PHANTOM
PHANTOM1
NOP
RET
PHANTOM2 B PHANTOM2
PHANTOM3 B PHANTOM3
PHANTOM4 B PHANTOM4
PHANTOM5 B PHANTOM5
PHANTOM6 B PHANTOM6
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -