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

📄 servo.h

📁 一个两碟控制的VCD的代码,两碟之间的转动及连续播放,已大量生产的CODE.
💻 H
字号:
/* SCCSID @(#)servo.h	1.17 11/30/98 *//* * $Log$ */#ifndef __SERVO_H__#define __SERVO_H__#if (SERVO || TCSERVO)#ifndef _COMMON_H_#include "common.h"#endif#ifndef _CONFIG_H_#include "config.h"#endif/************************************************************************ * Defines for SERVO.							* ************************************************************************/#define job_sledin 	0x00#define job_focus  	0x01#define job_clvon  	0x02#define job_stop   	0x03/* * Q code information */#define SUBQ_LEN	10#define SERVO_QCTRADD	0#define SERVO_QTRACK	1#define SERVO_QPOINT	2#define SERVO_QRMIN	3#define SERVO_QRSEC	4#define SERVO_QRFRAME	5#define SERVO_QZERO	6#define SERVO_QPMIN	7#define SERVO_QPSEC	8#define SERVO_QPFRAME	9/* * SERVO mode information */#define SERVO_IDLE		0#define SERVO_STOP		1#define SERVO_OPEN		2#define SERVO_CLOSE		3#define SERVO_PLAY		4#define SERVO_PAUSE		5#define SERVO_RELEASEPAUSE	6#define SERVO_RECOVER		7#define SERVO_SEARCH		8#ifdef SERVO2545#define FASTER			1#define OPEN_M		0x00#define STOP_M		0x01#define CUE_M		0x02(FF/REV)#define PLAY_M 		0x03#define OPEN_00		0x00#define OPEN_10		1#define UNLD_10		2#define LOAD_10		3#define SLED_10		4#define STOP_10		5#define STOP_20		6#define STOP_30		7#define STOP_40		8#define STOP_100	9#define STOP_110	10 #define STOP_120	11 #define STOP_200	12 #define STOP_210	13 #define STOP_220	14 #define STOP_230	15 #define FOCUS_10	16 #define FOCUS_20	17#define FOCUS_30	18#define FOCUS_40	19#define FOCUS_50	20#define FOCUS_60	21#define EFV_10		22#define FBIAS_10	23  #define FBIAS_20	24#define AGC_10		25#define AGC_20		26  #define TOC_10		27#define ACES_10		28 #define ACES_20		29#define ACES_30		30#define ACES_40		31#define CUE_10		32#define CUE_20		33 #define CUE_30		34#define CUE_40		35#define PLAY_10		36#define RUN_10		37#define EMR_10		38#define EMR_20		39#define FB_SPL		60#define FB_STP		0x20#define FB_R_LIMIT	0x60#define FB_L_LIMIT	(-0x60)#define FB_ABT		03#define F_OFF		0x00#define FCSDWN		0x02#define AS_OFF		0x11#define TG_NOR		0x19#define TG_UP		0x17#define TOFF_SOFF	0x20#define TOFF_SFWD	0x22#define TOFF_SREV	0x23#define TON_SOFF	0x24#define TON_SON		0x25#define A_CANCEL	0x4000#define AGC_CANCEL	x38148e#define A_FOCUS		0x4700#define A_1TJF		0x48#define A_1TJR		0x49#define A_10TJF		0x4A#define A_10TJR		0x4B#define A_2NTJF		0x4C#define A_2NTJR		0x4D#define A_NTMF		0x4E#define A_NTMR		0x4F#define SET_B1		0x59#define B_1TJF		0x53#define B_1TJR		0x53#define B_10TJF		0x58#define B_10TJR		0x58#define B_30TJF		0x5B#define B_30TJR		0x5B#define B_100TJF	0x5B#define B_100TJR	0x5B#define B_NTMF		0x5B#define B_NTMR		0x5B#define D_30TJF		0x62#define D_30TJR		0x62#define D_100TJF	0x62#define D_100TJR	0x62#define CLV_STOP	0xE0#define CLV_KICK	0xE8#define CLV_BRK		0xEA#define CLV_A		0xE6#define T2WMAX		0x01#define TIMER1_INTERVAL	10	/* 10ms */#define T4SECOND	(4000/TIMER1_INTERVAL)#define T3SECOND	(3000/TIMER1_INTERVAL)#define T2SECOND	(2000/TIMER1_INTERVAL)#define T1SECOND	(1000/TIMER1_INTERVAL)#define T500MS		(500/TIMER1_INTERVAL)#define T300MS		(300/TIMER1_INTERVAL)#define T250MS		(250/TIMER1_INTERVAL)#define T200MS		(200/TIMER1_INTERVAL)#define T150MS		(150/TIMER1_INTERVAL)#define T100MS		(100/TIMER1_INTERVAL)#define T80MS		(80/TIMER1_INTERVAL)#define T30MS		(30/TIMER1_INTERVAL)#define FOK_TIMEOUT	T80MS#define GFSMUTE_TIMEOUT T30MS#define GFS_TIMEOUT	T4SECOND#define SUBQ_TIMEOUT	T4SECOND#define SERVO_TRK_SLD_OFF	SERVO_send_command(2, TOFF_SOFF)#define SERVO_TRK_SLD_ON	SERVO_send_command(2, TON_SON)#define SERVO_FOCUS_OFF		SERVO_send_command(2, F_OFF)#define SERVO_FOCUS_DOWN	SERVO_send_command(2, FCSDWN)#define SERVO_AGC_CANCEL	SERVO_send_command(6, AGC_CANCEL)#define SERVO_AUTOSEQ_CANCEL	{ SERVO_send_command(4, A_CANCEL); \				  risc_sleep_a_bit(CYCLES_IN_ONE_MS/10); }#define SERVO_ANTISHOCK_OFF	SERVO_send_command(2, AS_OFF)#define SERVO_AUTO_FOCUS	SERVO_send_command(4, A_FOCUS)#define SERVO_CLV_KICK	{ SERVO_send_command(6, xe80000); }#define SERVO_CLV_STOP	{ SERVO_send_command(6, xe00000); }#define SERVO_CLV_BRK	{ SERVO_send_command(6, xea0000); }#define SERVO_CLV_A	{ SERVO_send_command(6, xe60000); kickfg = 1; }#endif#ifdef TCSERVO#define SET_rough_search 	servo_flags |= 0x0001#define CLR_rough_search 	servo_flags &= ~0x0001#define rough_search_TRUE 	(servo_flags & 0x0001)#define rough_search_FALSE 	!(servo_flags & 0x0001)#define SET_search_flag 	servo_flags |= 0x0002#define CLR_search_flag 	servo_flags &= ~0x0002#define search_flag_TRUE 	(servo_flags & 0x0002)#define search_flag_FALSE 	!(servo_flags & 0x0002)#define SET_servo_abort 	servo_flags |= 0x0004#define CLR_servo_abort 	servo_flags &= ~0x0004#define servo_abort_TRUE 	(servo_flags & 0x0004)#define servo_abort_FALSE 	!(servo_flags & 0x0004)#define SET_servo_adj 		servo_flags |= 0x0008#define CLR_servo_adj 		servo_flags &= ~0x0008#define servo_adj_TRUE 		(servo_flags & 0x0008)#define servo_adj_FALSE		!(servo_flags & 0x0008)#define SET_close_mode 		mode_flags |= 0x0001#define CLR_close_mode 		mode_flags &= ~0x0001#define TOG_close_mode 		mode_flags ^= 0x0001#define close_mode_TRUE 	(mode_flags & 0x0001)#define close_mode_FALSE 	!(mode_flags & 0x0001)#define SET_access_mode 	mode_flags |= 0x0002#define CLR_access_mode 	mode_flags &= ~0x0002#define access_mode_TRUE 	(mode_flags & 0x0002)#define access_mode_FALSE 	!(mode_flags & 0x0002)#define SET_pause_mode 		mode_flags |= 0x0004#define CLR_pause_mode 		mode_flags &= ~0x0004#define pause_mode_TRUE	 	(mode_flags & 0x0004)#define pause_mode_FALSE 	!(mode_flags & 0x0004)#define SET_tray_blocked 	mode_flags |= 0x0008#define CLR_tray_blocked 	mode_flags &= ~0x0008#define tray_blocked_TRUE 	(mode_flags & 0x0008)#define tray_blocked_FALSE 	!(mode_flags & 0x0008)#define SET_in_initCD 		mode_flags |= 0x0010#define CLR_in_initCD 		mode_flags &= ~0x0010#define in_initCD_TRUE 		(mode_flags & 0x0010)#define in_initCD_FALSE 	!(mode_flags & 0x0010)/* Constants of Tray Process */#define TRAY_MOVE_TIME_LIMIT	0x100/* State of Tray Process */#define TRAY_START_OPEN		0#define TRAY_MONITOR_OPEN	1#define TRAY_START_CLOSE	2#define TRAY_MONITOR_CLOSE	3#define TRAY_FULL_OPEN		4#define TRAY_IDLE_CLOSE		5#define TRAY_IDLE		6/* Return value of Tray Process */#define TRAY_RET_wait		0#define TRAY_RET_closed		1#define TRAY_RET_opened		2#define TRAY_RET_blocked	3#define TRAY_RET_push		4/* Servo Mode */#define Mode_Focusing		0#define Mode_Tracking		1#define Mode_Monitor		2#define Mode_Stopping		3/* Return value of Servo Process */#define SERVO_RET_wait		0#define SERVO_RET_fok		1#define SERVO_RET_fng		2#define SERVO_RET_clvok		3#define SERVO_RET_clvng		4#define SERVO_RET_stopok	5#define SERVO_RET_loss		6#define SERVO_RET_Qcode		7#define SERVO_RET_int		8/* Focusing State */#define Focus_Para			0#define Focus_PickUpOut		1#define Focus_PickUpIn		2#define Focus_LDon		3#define Focus_LenDown		4#define Focus_DnDelay		5#define Focus_AccDisc		6#define Focus_Init		7#define Focus_Wait_Init		8#define Focus_Init_2		9#define Focus_Init_3		10#define Focus_Init_4		11#define Focus_Init_5		12#define Focus_Init_6		13#define Focus_Wait_FOK		14#define Focus_Wait_FOK_2	15#define Focus_recover		16/* Tracking State */#define CLV_Kick		0#define CLV_KickWait		1#define CLV_Kick_2		2#define CLV_Kick_3		3#define CLV_Kick_31		4#define CLV_Kick_32		5#define CLV_Kick_33		6#define CLV_Kick_4		7/* Monitor State */#define MON_slide		0#define MON_jump		1/* Stopping State */#define STOP_start		0#define STOP_brake_wait		1#define STOP_off		2#define STOP_idle		3/* * Q code information */#define SUBQ_LEN		10#define SERVO_QCTRADD		0#define SERVO_QTRACK		1#define SERVO_QPOINT		2#define SERVO_QRMIN		3#define SERVO_QRSEC		4#define SERVO_QRFRAME		5#define SERVO_QZERO		6#define SERVO_QPMIN		7#define SERVO_QPSEC		8#define SERVO_QPFRAME		9/* Track jump */#define J_FORWARD		1#define J_BACKWARD		0#ifdef DAYTONA#define TRISTATE_CLOSE_SW	TRISTATE_EAUX10#define CLOSE_SW_HIGH		EAUX10_HIGH#define CLOSE_SW_LOW		EAUX10_LOW#define TRISTATE_OPEN_SW	TRISTATE_EAUX9#define OPEN_SW_HIGH		EAUX9_HIGH#define OPEN_SW_LOW		EAUX9_LOW#define SET_MOTOR_REV		SET_EAUX13#define CLEAR_MOTOR_REV		CLEAR_EAUX13#define SET_MOTOR_FWD		SET_EAUX7#define CLEAR_MOTOR_FWD		CLEAR_EAUX7#else /* DAYTONA */#define TRISTATE_CLOSE_SW	TRISTATE_EAUX1#define CLOSE_SW_HIGH		EAUX1_HIGH#define CLOSE_SW_LOW		EAUX1_LOW#define TRISTATE_OPEN_SW	TRISTATE_EAUX2#define OPEN_SW_HIGH		EAUX2_HIGH#define OPEN_SW_LOW		EAUX2_LOW#define SET_MOTOR_REV		SET_EAUX7#define CLEAR_MOTOR_REV		CLEAR_EAUX7#define SET_MOTOR_FWD		SET_EAUX8#define CLEAR_MOTOR_FWD		CLEAR_EAUX8#endif /* DAYTONA *//* Debug Pins */#define SET_DEBUG_PIN0		SET_AUX0#define CLEAR_DEBUG_PIN0	CLEAR_AUX0#define SET_DEBUG_PIN1		SET_AUX1#define CLEAR_DEBUG_PIN1	CLEAR_AUX1#define SET_DEBUG_PIN2		SET_AUX3#define CLEAR_DEBUG_PIN2	CLEAR_AUX3/* Function Pins */#ifdef DAYTONA#define TRISTATE_LIMIT_SW	TRISTATE_EAUX14#define LIMIT_SW_HIGH		EAUX14_HIGH#define LIMIT_SW_LOW		EAUX14_LOW#define SET_RESET_TC		SET_AUX0#define CLEAR_RESET_TC		CLEAR_AUX0#define SET_BCK			SET_EAUX8#define CLEAR_BCK		CLEAR_EAUX8#define SET_CCE			SET_EAUX4#define CLEAR_CCE		CLEAR_EAUX4#define EAUX_R_ADDRESS		dsc_aux0_datam#define NIBBLE_MASK		0x0f#define EAUX_LH			0#define NIBBLE_SHIFT		0#else /* DAYTONA */#define TRISTATE_LIMIT_SW	TRISTATE_EAUX0#define LIMIT_SW_HIGH		EAUX0_HIGH#define LIMIT_SW_LOW		EAUX0_LOW#define SET_RESET_TC		SET_EAUX9#define CLEAR_RESET_TC		CLEAR_EAUX9#define SET_BCK			SET_EAUX10#define CLEAR_BCK		CLEAR_EAUX10#define SET_CCE			SET_EAUX11#define CLEAR_CCE		CLEAR_EAUX11#define EAUX_R_ADDRESS		dsc_aux1_datam#define NIBBLE_MASK		0xf0#define EAUX_LH			1#define NIBBLE_SHIFT		4#endif /* DAYTONA */#endif TCSERVO/*===========================================================*//**************************************** * Global variables			* ****************************************/GBLDEF0(char	servo_fb_ok);GBLDEF0(char	servo_EF_balance_ok);GBLDEF0(char	servo_AGF_ok);GBLDEF0(char	servo_AGT_ok);GBLDEF0(char	servo_focus_drop);GBLDEF0(char	servo_gfs_drop);GBLDEF0(uchar	servo_pres_m);GBLDEF0(short 	servo_fbias);GBLDEF0(volatile short	servo_sys_timer);GBLDEF0(ushort	servo_ef_mem);GBLDEF0(ushort	servo_fg_mem);GBLDEF0(ushort	servo_tg_mem);GBLDEF0(uint  	servo_per_ave);/**************************************** * Global Functions			* ****************************************/EXPORT	void	SERVO_init(void);EXPORT	void	SERVO_interrupt_service(void);EXPORT	void	SERVO_service(void);#ifdef SERVO2545EXPORT	void	SERVO_fbias(void);EXPORT	void	SERVO_EF_balance(void);EXPORT	void	SERVO_efv_10(void);EXPORT	void	SERVO_agc(void);EXPORT	void	SERVO_agc_10(void);EXPORT	void	SERVO_agc_20(void);EXPORT	void	SERVO_ag_trk(void);EXPORT	void	SERVO_fb_dtr(void);EXPORT	void	SERVO_rfjsmp(void);EXPORT	void	SERVO_emrchk(void);EXPORT	void	SERVO_fcson(void);EXPORT	ushort	SERVO_read_data(unsigned char, int);EXPORT	void	SERVO_send_command_no_latch(int, unsigned int);EXPORT	void	SERVO_sledin(void);EXPORT	void	SERVO_focus(void);EXPORT	void	SERVO_schedule(void);EXPORT	int	SERVO_search(void);EXPORT  PFV	servo_task;#endif	/* SERVO2545 */#endif SERVO#endif /* __SERVO_H__ */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -