亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? hall3drv.asm

?? 無刷直流電機(jī)的無傳感器控制TI程序
?? ASM
字號(hào):
;============================================================================
; File Name:	Hall3drv.asm
;
; Module Name: 	HALL3_DRV				      
;
; Initialization Routine: HALL3_DRV_INIT
;
; Originator:	Digital Control Systems Group
;				Texas Instruments
;
; Description:	Controls switching state of Inverter driving a BLDC motor 	
;
;			|~~~~~~~~~~~~~~~|
;   hall_map_ptro------>|		|----->o  cmtn_trig_hall 
;			| HALL3_DRV	|
;			|		|
;			|_______________|
;
;
;=====================================================================================
; History:
;-------------------------------------------------------------------------------------
; 9-15-2000	Release	Rev 1.0
;===========================================================================
;(To use this Module, copy this section to main system file)
;		.ref	HALL3_DRV, HALL3_DRV_INIT			;function call
;		.ref	cmtn_trig_hall, hall_map_ptr
;===========================================================================
;Module definitions for external reference.
		.def	HALL3_DRV, HALL3_DRV_INIT			;function call
		.def	cmtn_trig_hall, hall_map_ptr
;===========================================================================
		.include	"x24x_app.h" 
		                
hall_vars   		.usect	"HALL_VAR",20,1
cmtn_trig_hall		.set	hall_vars+1   	;Output trigger for Mod6cnt input
cap_cntr			.set	hall_vars+2     ;Running count of detected edges on CAP1,2,3                                                 
debounce_CNT 		.set	hall_vars+3     ;Counter/debounce delay current value 
debounce_amount 	.set	hall_vars+4     ;Counter delay amount to validate/debounce GPIO readings
hall_GPIO			.set	hall_vars+5     ;Most recent logic level on CAP/GPIO
hall_GPIO_buf 		.set	hall_vars+6     ;Buffer of last logic level on CAP/GPIO while being debounced
hall_GPIO_accepted 	.set	hall_vars+7     ;Debounced logic level on CAP/GPIO
edge_debounced		.set	hall_vars+8     ;Trigger from Debounce function to Hall_Drv, if =1 edge is debounced 
hall_map1			.set	hall_vars+9     ;CAP/GPIO logic levels for hall_map_ptr = 0
hall_map2			.set	hall_vars+10    ;CAP/GPIO logic levels for hall_map_ptr = 1
hall_map3			.set	hall_vars+11    ;CAP/GPIO logic levels for hall_map_ptr = 2 
hall_map4			.set	hall_vars+12    ;CAP/GPIO logic levels for hall_map_ptr = 3
hall_map5			.set	hall_vars+13    ;CAP/GPIO logic levels for hall_map_ptr = 4
hall_map6			.set	hall_vars+14    ;CAP/GPIO logic levels for hall_map_ptr = 5
evifrc			    .set	hall_vars+15    ;CAP flags, indicating which CAP detected the edge
stall_cntr		    .set	hall_vars+16    ;If motor stalls, this counters overflow triggers commutation to start 
											; rotation.  Rotation is defined as an edge detection of a hall signal.
hall_GPR0		    .set	hall_vars+17    ;General purpose register
hall_map_ptr		.set	hall_vars+18    ;During hall map creation, this variable points to the current commutation
											;state.  After map creation, it points to the next commutation state.
revolutions			.set	hall_vars+19    ;Running counter, with a revolution defined as 1-cycle of the 6 hall states
 
          
		.text
HALL3_DRV_INIT:   
	CALL	Determine_State               	;Read CAP/GPIO logic levels
	LDP		#hall_vars
	BLDD	#hall_GPIO, hall_GPIO_buf       ;Init with current CAP/GPIO logic levels
	BLDD	#hall_GPIO, hall_GPIO_accepted  ;Init with current CAP/GPIO logic levels
	SPLK	#0, 	cmtn_trig_hall         	;No commutation trigger
	SPLK	#0, 	debounce_CNT            ;Reset CAP/GPIO debounce counter and amount, used on all detected edges
   	SPLK	#10, 	debounce_amount    
   	SPLK	#0, 	edge_debounced          ;Reset debounced edge trigger
	SPLK	#0FFFFh,stall_cntr              ;Set stall counter to starting amount, it will count down by 1 on every system 
	                                        ;ISR that a hall signal has not been detected.
	SPLK	#0, 	cap_cntr                ;Reset running counter that totals edges detected on all 3 CAP inputs
	SPLK	#-10, 	revolutions             ;While <=0 hall map is created.  Once it's >0, the hall map is used to 
											;obtain the correct commutation pointer.
		
   	       
	
	; Initialise Event Manager        
	;--------------------------

	;Configure GPT2
		POINT_EV				
	;Configure CAPCON
		SPLK	#0, CAPCON
		SPLK	#0, CAPCON			;Clear CAP Regs
		SPLK	#1011000011111100b, CAPCON
				;5432109876543210         
				; 15:	1	- don't clear capture registers
				; 13:	01	- enable Capture 1,2 disable QEP
				; 12:	1 	- enable Capture 3
				; 11:	0 	- reserved
				; 10:	0 	- Use GPTimer 2 for CAP3
				; 9:	0 	- Use GPTimer 2 for CAP1,2
				; 8:	0 	- No ADC start on CAP3 interrupt
				; 6:	11 	- CAP1, detect both edges
				; 4:	11 	- CAP2, detect both edges
				; 2:	11 	- CAP3, detect both edges
				; 0:	00 	- reserved 
		SPLK	#1500h, CAPFIFO
 
	.if (x240)	;target dependancy
	;Configure CAP1-3 as CAPTURE inputs 
		LDP		#OCRB>>7			
		LACC	OCRB
		OR	#0000000001110000b
			;||||!!!!||||!!!!
			;5432109876543210
		SACL	OCRB 				;OCRB.4-6 = CAP1-3
		
	;Configure CAP1-3 as GPIO-inputs (IOPC4-6)
		LACC	PCDATDIR			
		AND	#1000111111111111b		
			;||||!!!!||||!!!!
			;5432109876543210
		SACL	PCDATDIR			;PCDATDIR.12-14 (IOPC4-6 Data Direction as input)
	.endif

	.if (x243|x2407)	;target dependancy

	;Configure CAP1-3 as CAPTURE inputs 
		LDP		#OCRA>>7			
		LACC	OCRA
		OR	#0000000000111000b
			;||||!!!!||||!!!!
			;5432109876543210
		SACL	OCRA 				;OCRA.3-5 = CAP1-3
		
	;Configure CAP1-3 as GPIO-inputs (IOPA3-5)
		LACC	PADATDIR			
		AND	#1100011111111111b
			;||||!!!!||||!!!!
			;5432109876543210
		SACL	PADATDIR			;PADATDIR.11-13 (IOPC3-5 Data Direction as input)
	.endif                                                                                                                                    		
				
		RET
 		

;**** Function:  HALL3_DRV  ****

HALL3_DRV:	
		LDP		#EVIFRC>>7          
		LACC	EVIFRC
		BCND	EDGE_DETECTED,NEQ	;Any hall signal edges detected?
		
NO_EDGE_DETECTED:
		LDP		#hall_vars         	                         
		SPLK	#0, cmtn_trig_hall	;Reset trigger, it only handshakes with calling program.			                             
		LACC	edge_debounced    	;If motor has not moved then debounce current position. 
		CC		HALL_DEBOUNCE, EQ
		BLDD	#edge_debounced,cmtn_trig_hall	;If current position is debounced, then trigger
		 										;move to next position.
		LACC	edge_debounced
		CC		Next_State_Ptr, NEQ	;If current position is debounced, find match in table 
									;and return pointer to current state.  Ptr to be incremented
									;by MOD6CNT after RET.		 										
		SPLK	#0, edge_debounced	;Reset trigger	 										
		B		HALL_RET

EDGE_DETECTED:
		LDP		#hall_vars         
		SACL	evifrc             	;Save capture flag register, convenient for Watch Window
		SPLK	#0FFFFh, stall_cntr ;On new edge, reset stall counter
		LDP		#EVIFRC>>7
		SPLK	#07h, EVIFRC		;Clear all CAP Int-flags 					
		CALL	Determine_State     ;Since motor has moved, determine state (read hall_GPIO).				
		LDP 	#hall_vars
		LACC	cap_cntr			;Increment running edge detection counter
		ADD		#1          
		SACL	cap_cntr    	

HALL_RET:                 
        RET



;**** Function:  HALL_DEBOUNCE  ****       

HALL_DEBOUNCE:
		LDP		#hall_vars                                   
		LACC	hall_GPIO        	;Current GPIO reading == debounced GPIO reading?
		SUB		hall_GPIO_accepted  ;If no, then the motor has moved to a new position.
		BCND	GPIO_CHANGED, NEQ 
		
GPIO_UNCHANGED:		
		LACC	revolutions,16      ;Only create hall map during initial revolutions
		CC		CREATE_MAP, LEQ				
		LACC	stall_cntr          ;Decrement stall counter.
		SUB		#1
		SACL	stall_cntr
		BCND	END, NEQ		
		SPLK	#1, edge_debounced	;If motor has stalled, then user trigger to commutate
		SPLK	#0FFFFh, stall_cntr ;Reset counter to starting value			 		
		B		END
				
GPIO_CHANGED:
		LACC	hall_GPIO     		;Current GPIO reading == previous GPIO reading? 		
		SUB		hall_GPIO_buf
		BCND	NEW_READING, NEQ 		
		LACC	debounce_CNT,16		;If equal, is current GPIO reading debounced?
		SUB		debounce_amount,16
		BCND	DEBOUNCE_MORE, LT   
		BLDD	#hall_GPIO_buf, hall_GPIO_accepted	;Current GPIO reading is now debounced
		SPLK	#1, edge_debounced	;Edge/position debounced, trigger commutation
		SPLK	#0, debounce_CNT    ;Reset debounce counter
		LACC	hall_map_ptr    	
		BCND	END, NEQ		
		LACC	revolutions			;Increment on every rev (hall_map_ptr = 0)
		ADD		#1
		SACL	revolutions 		
		B		END
		 		
DEBOUNCE_MORE:
		LACC	debounce_CNT		;Increment debounce counter
		ADD		#1
		SACL	debounce_CNT
		B		END  
		
NEW_READING:
		BLDD	#hall_GPIO, hall_GPIO_buf 	;Save new reading and reset debounce counter
		SPLK	#0, debounce_CNT
		B		END
		
END:	RET			
       
       
;**** Function:  CREATE_MAP  ****
  
CREATE_MAP:
		LDP		#hall_vars
		LACC	hall_map_ptr	
		ADD		#hall_map1      ;Add base address of table to pointer offset.    	
		SACL	hall_GPR0
		LAR		AR2, hall_GPR0
		MAR		*, AR2
		BLDD	#hall_GPIO_accepted, *	;Save debounced GPIO to table.
		
		RET  
       
       
;**** Function:  Next_State_Ptr  ****

Next_State_Ptr:      
        LACC	revolutions,16	;Only run function after map has been created.
        RETC	LEQ		
		LAR		AR3, #5   	
		LAR		AR2, #hall_map1
		MAR		*, AR2
Next_State:		             	;Search for a match of current debounced GPIO position
		LACC	*+, AR3         ;and the table entries.
		SUB		hall_GPIO_accepted
		BCND	Match_Found, EQ
		BANZ    Next_State, AR2
		
Match_Found:
		LACC	#5            	;On match, save pointer position.  Pointer will be incremented	
		SAR		AR3, hall_GPR0  ;by 1 since MOD6CNT will receive a positive trigger
		SUB		hall_GPR0       ;and pointer as inputs.
		SACL	hall_map_ptr	
							
		RET



;**** Function:  Determine_State  ****       

Determine_State: 
 
	.if (x240)	;target dependancy

	;Configure CAP1-3 as GPIO-inputs (IOPC4-6)
		LDP		#OCRB>>7			
		LACC	OCRB
		AND		#1111111110001111b 		
				;5432109876543210
		SACL	OCRB					;OCRB.4-6 = IOPC4-6
                                                                                          
	;Read input levels on CAP1-3/IOPC4-6
		LACC	PCDATDIR,11				;ACC.15-17 = PCDATDIR.4-6 (IOPC4-6)
		AND		#0000000000000111b,15 
				;5432109876543210
		LDP		#hall_vars                                   
		SACH	hall_GPIO,1  			;hall_GPIO.0-2 = IOPC4-6  
                                                                                          
	;Configure CAP1-3 as CAPTURE inputs 
		LDP		#OCRB>>7			
		LACC	OCRB
		OR		#0000000001110000b		
				;5432109876543210
		SACL	OCRB
	.endif								;OCRB.4-6 = CAP1-3



	.if (x243|x2407)	;target dependancy


	;Configure CAP1-3 as GPIO-inputs (IOPA3-5)
		LDP		#OCRA>>7			
		LACC	OCRA
		AND		#1111111111000111b		
				;5432109876543210
		SACL	OCRA					;OCRA.3-5 = IOPA3-5
                                                                                          
	;Read input levels on CAP1-3 (IOPA3-5)
		LACC	PADATDIR,12				;ACC.15-17 = PADATDIR.3-5 (IOPA3-5)
		AND		#0000000000000111b,15 
				;5432109876543210
		LDP		#hall_vars                                   
		SACH	hall_GPIO,1  			;hall_GPIO.0-2 = IOPA3-5   
                                                                                          
	;Configure CAP1-3 as CAPTURE inputs 
		LDP		#OCRA>>7			
		LACC	OCRA
		OR		#0000000000111000b		
				;5432109876543210
		SACL	OCRA					;OCRA.3-5 = CAP1-3
	.endif

		RET           

	

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧洲精品一区二区三区| 亚洲影视在线观看| 亚洲品质自拍视频| 久久99精品久久只有精品| 成人动漫av在线| 欧美日韩一区小说| 国产精品天干天干在线综合| 亚洲影院理伦片| 高清不卡一区二区在线| 7777精品伊人久久久大香线蕉| 久久色.com| 天天射综合影视| 色av综合在线| 亚洲欧洲成人自拍| 国产九九视频一区二区三区| 91精品国产色综合久久不卡电影 | 成人免费在线视频| 麻豆视频一区二区| 欧美日韩一区在线| 亚洲午夜久久久久| 色哟哟精品一区| 国产精品国产自产拍高清av| 国产精品综合视频| 精品国产伦一区二区三区观看体验| 亚洲一区二区偷拍精品| 91看片淫黄大片一级在线观看| 精品美女被调教视频大全网站| 亚洲图片欧美一区| 欧美日韩你懂得| 亚洲亚洲人成综合网络| 色哟哟一区二区三区| 亚洲免费在线播放| 色噜噜狠狠成人网p站| 中文字幕在线播放不卡一区| 不卡的av网站| 最新中文字幕一区二区三区| 99v久久综合狠狠综合久久| 亚洲国产成人午夜在线一区| 国产制服丝袜一区| 久久久五月婷婷| 丁香一区二区三区| 国产精品免费视频一区| 成人av在线观| 亚洲国产日韩精品| 欧美一级二级三级乱码| 美国毛片一区二区| 久久久不卡网国产精品二区| 国产白丝精品91爽爽久久| 中文字幕精品综合| 91亚洲国产成人精品一区二区三| 日韩美女啊v在线免费观看| 91久久精品网| 日韩精品午夜视频| 久久免费看少妇高潮| 99视频超级精品| 一区二区三区精品在线| 欧美日韩一区二区欧美激情| 日本欧美一区二区三区乱码| 精品久久久三级丝袜| 不卡的av电影在线观看| 亚洲国产精品尤物yw在线观看| 欧美日韩精品欧美日韩精品一综合 | 国产欧美一区二区精品忘忧草| 激情欧美一区二区三区在线观看| 久久久久久久一区| 91亚洲精品久久久蜜桃网站| 丝袜美腿亚洲色图| 久久久91精品国产一区二区三区| 99精品视频在线播放观看| 午夜精品久久久久| 久久精品人人做人人综合| 色狠狠综合天天综合综合| 日韩一区精品字幕| 国产亚洲一区二区三区四区| 色狠狠色噜噜噜综合网| 国产精品主播直播| 亚洲高清视频中文字幕| 国产欧美日本一区二区三区| 欧美在线观看一区二区| 国产成人精品一区二区三区网站观看| 亚洲激情图片一区| 久久精品在这里| 欧美乱妇20p| 色综合久久综合| 国产美女精品一区二区三区| 亚洲成av人片一区二区| 国产精品乱码一区二区三区软件 | 欧美日韩国产中文| 成人免费高清视频在线观看| 午夜精品免费在线| 伊人一区二区三区| 国产精品素人一区二区| 精品人在线二区三区| 欧美三日本三级三级在线播放| 成人理论电影网| 国产一区二区视频在线| 婷婷成人综合网| 亚洲一区二区三区在线看| 精品国产乱子伦一区| 制服丝袜亚洲播放| 91官网在线观看| 色综合一区二区三区| 成人看片黄a免费看在线| 国产精品一级片| 国内精品免费在线观看| 美女精品自拍一二三四| 视频一区欧美精品| 亚洲国产成人高清精品| 一区二区三区丝袜| 中文字幕亚洲在| 欧美激情自拍偷拍| 国产清纯白嫩初高生在线观看91 | 亚洲人成伊人成综合网小说| 国产精品天天看| 中文字幕不卡在线播放| 久久久久国产精品人| 日韩一区二区在线观看视频 | 激情久久久久久久久久久久久久久久| 一区二区三区欧美| 亚洲黄色在线视频| 夜夜嗨av一区二区三区网页| 一区二区在线观看免费| 亚洲一区二区三区视频在线 | 中文字幕一区日韩精品欧美| 欧美高清在线精品一区| 中文乱码免费一区二区| 亚洲人成网站色在线观看| 亚洲免费高清视频在线| 亚洲二区视频在线| 蜜桃视频一区二区三区在线观看| 蜜臀久久99精品久久久久宅男| 久久精品72免费观看| 国产成人在线免费| 97久久人人超碰| 欧美日韩午夜精品| 精品久久久久久综合日本欧美| 国产喂奶挤奶一区二区三区| 久久久不卡网国产精品二区| 亚洲国产高清在线观看视频| 亚洲人成亚洲人成在线观看图片 | 国产精品女上位| 一区二区三区不卡在线观看| 婷婷夜色潮精品综合在线| 国模娜娜一区二区三区| 成人福利视频网站| 欧美电影在哪看比较好| 久久久亚洲高清| 一区二区三区在线播| 免费一级片91| jizzjizzjizz欧美| 欧美美女激情18p| 国产亚洲午夜高清国产拍精品| 一区二区三区中文字幕在线观看| 天堂va蜜桃一区二区三区 | 日本在线观看不卡视频| 国产伦理精品不卡| 在线观看一区日韩| 精品国产成人系列| 一区二区三区加勒比av| 久久成人羞羞网站| 粉嫩av亚洲一区二区图片| 欧美日本免费一区二区三区| 久久久亚洲综合| 日日夜夜精品视频免费| 成人av免费在线观看| 日韩一区二区在线免费观看| 亚洲色图.com| 国产美女精品人人做人人爽| 精品污污网站免费看| 国产视频一区在线观看 | 久久99久国产精品黄毛片色诱| 成人av在线观| 久久久久国产成人精品亚洲午夜| 亚洲激情成人在线| 成人美女视频在线观看| 精品日韩在线观看| 日精品一区二区三区| 91福利国产成人精品照片| 国产亚洲一区字幕| 极品尤物av久久免费看| 欧美精品aⅴ在线视频| 亚洲三级小视频| 成人久久18免费网站麻豆| 日韩欧美亚洲一区二区| 亚洲777理论| 91国偷自产一区二区三区观看| 国产视频一区在线播放| 激情国产一区二区| 欧美丰满美乳xxx高潮www| 伊人开心综合网| av网站免费线看精品| 久久久欧美精品sm网站| 麻豆精品一区二区三区| 欧美一区二区三区免费大片| 亚洲午夜电影在线| 欧美日韩一二三区| 国产在线视视频有精品| 欧美一区二区在线观看| 日韩中文字幕1| 在线综合+亚洲+欧美中文字幕|