📄 spmc65_con.inc
字号:
;==================================================================================
; The information contained herein is the exclusive property of
; Sunplus Technology Co. And shall not be distributed, reproduced,
; or disclosed in whole in part without prior written permission.
; (C) COPYRIGHT 2004 SUNPLUS TECHNOLOGY CO.
; ALL RIGHTS RESERVED
; The entire notice above must be reproduced on all authorized copies.
;==================================================================================
;==================================================================================
; Project Name : SPMC65P2404A for BLDC motor demo board
; Applied Body : SPMC65P2404A
; Firmware version: V1.0
; Programer :
; Date : 2006/09/15
; Description : interrupt service routine
; Hardware Connect: SPMC65 BLDC demo board
; IDE Version : v1.6.8
; BODY Version : v1.0.2A
;==================================================================================
; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
; PORTA
; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
AV_AD: EQU #7 ; (ai), analog voltage batter detect
I_AD: EQU #6 ; (ai), analog voltage current detect
HP_HALL: EQU #5 ; (di), Used for 1:1 help input
SP_AD: EQU #4 ; (ai), analog voltage help command
HP_LED: EQU #3 ; (do), display help led
ALARM_LOCK: EQU #3 ; (do), ALARM_LOCK
UN: EQU #2 ; (do), lower phase W waveform output
VN: EQU #1 ; (do), lower phase V waveform output
WN: EQU #0 ; (do), lower phase U waveform output
_PIOA_Attrib EQU %11010000
_PORTA_DIR: EQU %00000111 ; ALARM_LOCK:
;_PORTA_DIR: EQU %00001111 ; HP_LED:
_PORTA_DATA: EQU %00100111 ; pa7,pa6,pa4 AD float,
;Phase1_Wave: EQU %00001010 ; V2/V3,WP/VN;pb2,pa1;25h
;Phase2_Wave: EQU %00010100 ; V3/V6,UN/VP;pa0,pd0;15h
;Phase3_Wave: EQU %00001100 ; V6/V1,UN/WP;pB2,pa0;13h
;Phase4_Wave: EQU %00100001 ; V1/V4,WN/UP;pa2,pd1;0bh
;Phase5_Wave: EQU %00100010 ; V4/V5,UP/VN;pA1,pD1;0eh
;Phase6_Wave: EQU %00010001 ; V5/V2,VP/WN;pD0,pA2;26h
;
;
TurnOnIPM: .MACRO
lda P_IOA_Dir
ora #00000111B
sta P_IOA_Dir
lda P_IOD_Dir
ora #00000111B
sta P_IOD_Dir
.ENDM
TurnOffIPM: .MACRO
lda P_IOA_Data
ora #00000111B
sta P_IOA_Data
lda P_IOD_Data
and #11111000B
sta P_IOD_Data
.ENDM
;
;
; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
; PORTB
; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
BRAKE: EQU #7 ; (di), Hall sensor phase W input
LED: EQU #6 ; (dO), Used for diplay error or brake
ERROR_LED: EQU #6 ; (dO), Used for diplay error or brake
HTRG: EQU #5 ; (di), Hall sensor phase change trigger
INT_OC: EQU #4 ; (di), active low input, assigned to NMI
PWM: EQU #3 ; (do), PWM waveform output
XH_LED: EQU #2 ; (do), Used for display xhERROR_LEDd
Modulate: EQU #2
EBS_EN: EQU #1 ; (di),Used for electronic brake input
Alarm_EN: EQU #1
CD_LED: EQU #0 ; (do), display chongdian led
Alarm_LED: EQU #0 ; (do), Alarm output
;
;
_PORTB_DIR: EQU %01001101 ; pb6(Error display),Pb3 (pwm)output
_PORTB_DATA: EQU %10110010 ; pb7(Brake) is input with pull high
_PIOB_Attrib EQU %00000000 ;
TurnOnPWM: .MACRO
set P_IOB_Dir, PWM ; PWM pin is output
lda #07h
and P_TMR0_1_Ctrl0
ora #C_T112B_PWM
sta P_TMR0_1_Ctrl0 ; Enable Timer1 is 12-bit PWM and enable PWM output
.ENDM
TurnOffPWM: .MACRO
clr P_IOB_Dir, PWM
lda #$07h
and P_TMR0_1_Ctrl0
sta P_TMR0_1_Ctrl0
.ENDM
;
;
; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
; PORTC
; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
HALL_60_OR_120: EQU 3 ;(di),120 dgree or 60 dgree slect
HU: EQU 2 ;(di), Hall sensor phase U input
HV: EQU 1 ;(di), Hall sensor phase V input
HW: EQU 0 ;(di), Hall sensor phase W input
_PORTC_DIR: EQU %00000000 ; all set to input when initial
_PORTC_DATA: EQU %00001111 ; hu,hv,hw intial input pull high
_PIOC_Attrib EQU %00000000 ;
; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
; PORTD
; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
UP: EQU 2 ;(do), Up phase U waveform output
VP: EQU 1 ;(do), Up phase V waveform output
WP: EQU 0 ;(do), Up phase W waveform output
_PORTD_DIR: EQU %00000111 ; all set to input when initial
_PORTD_DATA: EQU %00000000 ; pd2,pd1,pd0 is output low(HLP)
_PIOD_Attrib EQU %00000000 ;
;
;
; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
; Hall senor position definition
; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
SEG1: EQU 1
SEG2: EQU 2
SEG3: EQU 3
SEG4: EQU 4
SEG5: EQU 5
SEG6: EQU 6
SEG7: EQU 7
;
HALL_MASK1: EQU %00000111 ;pc2,pc1,pc0
;
; when CW(U,V,W:PC2,PC1,PC0)
HALL_001_CW: EQU 00000001B ; position 1
HALL_010_CW: EQU 00000010B ; position 2
HALL_011_CW: EQU 00000011B ; position 3
HALL_100_CW: EQU 00000100B ; position 4
HALL_101_CW: EQU 00000101B ; position 5
HALL_110_CW: EQU 00000110B ; position 6
;
;
;===========================================
; RAM data bit definition
; 'G_Monitor'
;===========================================
CB_MotorRun_Flag: EQU 0 ; motor is run
CB_ModeChange_Flag: EQU 1 ; speed mode change occured
CB_MotorBrake_Flag: EQU 2 ; brake occured
CB_HallInvalid_Flag: EQU 3 ; invalid hall sensor
CB_IOverAlarm_Flag: EQU 4 ; OC status occured
CB_Alarm_Flag EQU 7
;
ALARM_MASK: EQU 18h
;
;===========================================
; RAM data bit definition
; 'G_BrakeError_Buf'
;===========================================
CB_IOver_Flag: EQU 0 ; i over flag
CB_BatterLow_Flag: EQU 1 ; batter is low flag
CB_MotorStopUp_Flag: EQU 2 ; motor is stop flag
CB_INegtive_Flag: EQU 3 ; Negtive current flag
CB_EbsEnable_Flag: EQU 4 ; EBS enable brake flag
CB_EbsPwmLevel_Flag: EQU 5 ; EBS pwm level flag
CB_MotorStop_Flag: EQU 6 ; moto stop flag
CB_SpeedErrorFlag: EQU 7 ; speed ad Error
;
;
TurnOnMotor: .MACRO
clr G_DISP_FLAG,CB_DispNoPWM_Flag
set G_Monitor, CB_MotorRun_Flag
.ENDM
TurnOffMotor: .MACRO
set G_DISP_FLAG,CB_DispNoPWM_Flag
clr G_Monitor, CB_MotorRun_Flag
.ENDM
;
;
;===========================================
; RAM data definition
; 'G_RunState'
;===========================================
C_Phase_Halt: EQU 0 ; motor stop state, initial parms.
C_Phase_Setup: EQU 1 ; motor run accepted, setup PWM registers
C_Phase_Run: EQU 2 ; motor run state
;
;
;===========================================
; RAM data bit definition
; 'G_SYS_Control_Flag'
;===========================================
CB_ChargeMode_Flag: EQU 0 ; Battery charge flag
CB_EbsFirstInput_Flag: EQU 1 ; Ebs fisrst input flag
CB_EbsFirstPWM0_Flag: EQU 2 ; Ebs fisrst load pwm0
CB_BatterOver_Flag: EQU 3 ; Battery charge Over flag
;
;
;===========================================
; RAM data bit definition
; 'G_DISP_FLAG'
;===========================================
CB_DispBrake_Flag: EQU 0 ; display motor brake or eoor led flag
CB_DispIOver_Flag: EQU 1 ; display i over led flag
CB_DispBatterLow_Flag: EQU 2 ; display batter low led flag
CB_DispCharge_Flag: EQU 3 ; display battery charge led flag
CB_DispConstant_Flag: EQU 4 ; display constant speed led flag
CB_DispHelp_Flag: EQU 5 ; display help led flag
CB_DispNoPWM_Flag: EQU 6 ; display nopwn led flag
;
;
;===========================================
; RAM data bit definition
; 'G_Time_Flag'
;===========================================
CB_20Ms_Flag: EQU 0 ; 20ms PWM0 duty delay
CB_250Ms_Flag: EQU 1 ; 250ms flag
CB_500Ms_Flag: EQU 2 ; 500ms flag
CB_1250Ms_Flag: EQU 3 ; 1250ms flag
CB_1S_Flag: EQU 4 ; 1s flag
CB_Help1S_Flag: EQU 5 ; help 1s flag
CB_2S_Flag: EQU 6 ; 2s flag
CB_3S_Flag: EQU 7 ; 3s flag
;
;
;===========================================
; RAM data bit definition
; 'G_Hall_Flag'
;===========================================
CB_HallSame_Flag: EQU 0 ;
CB_Hall120Or60_Flag: EQU 1 ; Hall mode 120(1),60(0)
CB_HelpComand_Flag: EQU 2 ;
CB_HelpHall1_Flag: EQU 3 ; read help hall 1 flag
CB_HelpMode_Flag: EQU 4 ;
CB_120_60_Checked: equ 5
CB_RollBack: equ 6
;===========================================
; time delay definition
;
;===========================================
C_ConstantSpeed_AD EQU 5 ;
C_ConstantSpeed_Time EQU 8 ;
C_PwmUp_Step EQU 3 ;
;C_PwmUp_Step EQU 2 ;
C_PwmLow_Step EQU 6 ;
;C_PwmUp_Step EQU 4 ;
C_PwmRenew_Time EQU 2 ;
C_SpeedPwmRenew_Time EQU 40 ;
C_SpeedRenew_Time EQU 160 ;
;
C_IOver_Time EQU 1
C_BatterLow_Time EQU 4
C_BatterLowStart_Time EQU 2
;
C_Reverse_Times EQU 15
C_MotorStopUp_Time EQU 2
C_MotorStop_Time EQU 1
;
C_SpeedLmit_AD EQU 38H ;
;
C_LoosenHandGrip_AD EQU 46H ;
;
C_SpeedMax_AD EQU b5H ;
;
C_SpeedError_AD EQU E8H ;
;
C_HelpHallStart_Count EQU 5
;
C_Iovre_Data EQU 163
C_BatterLow_Data EQU 161
C_BatterLowStart_Data EQU 174
C_BatterMin_Data EQU 144
C_BatterOver_Data EQU F8H
;
C_Help_LowSpeedL EQU 60H ; help low speed comand low
C_Help_LowSpeedH EQU 0FH ; help low speed comand high
C_Help_HighSpeedL EQU 30H ; help high speed comand low
C_Help_HighSpeedH EQU 0eH ; help high speed comand high
;
;C_Help_LowSpeedL EQU 90H ; help low speed comand low
;C_Help_LowSpeedH EQU 00H ; help low speed comand high
;C_Help_HighSpeedL EQU 30H ; help high speed comand low
;C_Help_HighSpeedH EQU 0eH ; help high speed comand high澳玛
C_Charge_SpeedHigh EQU 0AH ;18K/hout
;
;
C_PWM_60DgreeCOMPRESS_LIMIT EQU 34
C_PWM_120DgreeCOMPRESS_LIMIT EQU 78
C_PWM_COMPRESS_IMax EQU 161
C_PWM_COMPRESS_IOver EQU 3
C_PWM_COMPRESS_MAX EQU 64h ;74h
;
;
C_250MS EQU 256-62 ; base time= 4msSec
C_20MS EQU 256-4 ; base time= 20msSec
C_1250MS EQU 256-5 ; base time= 20msSec
C_HFSEC EQU 256-125 ; base time= 4mSec
C_1SEC EQU 256-2 ; base time= 0.499712Sec
C_2SEC EQU 256-2 ; base time= 1Sec
C_3SEC EQU 256-3 ; base time= 1Sec
C_ONEMIN EQU 256-60 ; base time=1Sec
;
C_INegtive_Data EQU 20h ; Negtive current value
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -