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

📄 spmc65_con.inc

📁 sunplus e_bike demo
💻 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 + -