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

📄 ivac.h

📁 vxworks 6.x 的全部头文件
💻 H
📖 第 1 页 / 共 2 页
字号:
/* device present flags  */#define H_VAC_DEVICE_LOC  P_VA_TYPE (VAC_ADR +0x1700 )#define IOSEL5_PRESENT VA_TYPE 0x0020#define IOSEL4_PRESENT VA_TYPE 0x0010#define IOSEL3_PRESENT VA_TYPE 0x0008#define IOSEL2_PRESENT VA_TYPE 0x0004#define IOSEL1_PRESENT VA_TYPE 0x0002#define IOSEL0_PRESENT VA_TYPE 0x0001/* this reg used to init pio data out values   */#define H_VAC_PIO_DATA  P_VA_TYPE (VAC_ADR +0x1800 )/* read only - contains login levels of pio pins  */#define H_VAC_PIO_PIN  P_VA_TYPE (VAC_ADR +0x1900 )/* set up the direction of pio */#define H_VAC_PIO_DIR  P_VA_TYPE (VAC_ADR + 0x1a00)/* assign functions to the pio  */#define H_VAC_PIO_FUNC  P_VA_TYPE (VAC_ADR + 0x1b00)/* pio bit mask defines */#define PIO0   VA_TYPE 0x0001#define PIO1   VA_TYPE 0x0002#define PIO2   VA_TYPE 0x0004#define PIO3   VA_TYPE 0x0008#define PIO4   VA_TYPE 0x0010#define PIO5   VA_TYPE 0x0020#define PIO6   VA_TYPE 0x0040#define PIO7   VA_TYPE 0x0080#define PIO8   VA_TYPE 0x0100#define PIO9   VA_TYPE 0x0200#define PIO10  VA_TYPE 0x0400#define PIO11  VA_TYPE 0x0800#define PIO12  VA_TYPE 0x1000#define PIO13  VA_TYPE 0x2000#define PIO9_DEBOUNCE_ENABLE   VA_TYPE 0x4000#define CPU_SPACE_EMULATE VA_TYPE 0x8000#define TXDA_TO_PIO0  			VA_TYPE 0x0001#define RXTA_TO_PIO1  			VA_TYPE 0x0002#define TXDB_TO_PIO2     		VA_TYPE 0x0004#define TXDB_TO_PIO3     		VA_TYPE 0x0008#define IORD_TO_PIO4     		VA_TYPE 0x0010#define IOWR_TO_PIO5     		VA_TYPE 0x0020#define IOSEL3_TO_PIO6   		VA_TYPE 0x0040#define PIO7IRQ_TO_PIO7  		VA_TYPE 0x0080#define IOSEL4_TO_PIO8   		VA_TYPE 0x0100#define IOSEL5_TO_PIO9   		VA_TYPE 0x0200#define PIO10IRQ_TO_PIO10 		VA_TYPE 0x0400#define PIO11IRQ_TO_PIO10 		VA_TYPE 0x0800#define SHRCS_TO_PIO12    		VA_TYPE 0x1000#define IOSEL2_TO_PIO13   		VA_TYPE 0x2000#define PIO9_DEBOUNCE_DISABLE        	VA_TYPE 0x4000#define CPU_SPACE_EMULATE_VIA_IOSEL5	VA_TYPE 0x8000/* SIO STUFF *//*Get table for BAUD_PRESCALE_INIT VALS:NOTEThe SIO baud rate divisor is dependent on CPU_CLOCKand is derived from the following formula                      /          CPU clock rate              \	 divisor = truncate |  ---------------------------- + 0.5  |			    		\  16 * (MAX baud rate desired)        /where divisor > 8.This value is loaded into the top byte of the VAC CPUclock divisor.The baud rate selection table will allow selection of8 different baud rates. Each lower than the MAX baud rateby a power of 2. If 9600 baud is the MAX baud rate, thenthe following powers are available:baud select value           baud rate				7          76800   don't use				6	       19200				5			9600				4			4800				3			2400				2			1200				1			600				0			300*//*      max rate      cpu clk   divisor   *//* check these values for roundup */#define	BAUD_9600_CLK_20MHz	0x2000#define	BAUD_9600_CLK_25MHz	0x2800#define	BAUD_9600_CLK_32MHz	0x3400#define	BAUD_9600_CLK_33MHz	0x3500#define BAUD_19200_CLK_20MHz    0x0fff /*subtract one from above formula*/#define	BAUD_19200_CLK_25MHz	0x1400#define	BAUD_19200_CLK_32MHz	0x1a00#define	BAUD_19200_CLK_33MHz	0x1a00#define	BAUD_19200_CLK_40MHz	0x2000/*Baud Rate Prescaler  used on CPU Clk. */#define H_VAC_BAUD_PRESCALE  P_VA_TYPE (VAC_ADR + 0x1c00)/* control register  */#define H_VAC_SIOA_MODE  P_VA_TYPE (VAC_ADR + 0x1d00)/* control bits for both sioa and siob */#define SIO_CTL_ENABLE 		VA_TYPE	0xfcff#define SIO_CTL_DISABLE 	VA_TYPE	0x0300/* the following are masks */#define PARITY_ENABLE 	VA_TYPE 0x8000#define EVEN_PARITY 	VA_TYPE 0x4000#define EIGHT_BITS 	VA_TYPE 0x2000#define BAUD_RATE_MASK  VA_TYPE 0x1c00#define RESET_RECV 	VA_TYPE 0x0200#define RESET_XMIT 	VA_TYPE 0x0100#define XMITER	 	VA_TYPE 0x0080#define RECVER	 	VA_TYPE 0x0040#define SEND_BREAK  	VA_TYPE 0x0020#define TXDA_TO_RXDA 	VA_TYPE 0x0010/* NOTE: vac sio data bytes are taken from high 8 bits !! *//* xmit data  */#define H_VAC_SIOA_XMIT  P_VA_TYPE (VAC_ADR + 0x1e00)/* control register  */#define H_VAC_SIOB_MODE  P_VA_TYPE (VAC_ADR + 0x1f00)/* rec data */#define H_VAC_SIOA_RECV  P_VA_TYPE (VAC_ADR + 0x2000)#define H_VAC_SIOB_RECV  P_VA_TYPE (VAC_ADR + 0x2100)/* xmit data  */#define H_VAC_SIOB_XMIT  P_VA_TYPE (VAC_ADR + 0x2200)/* sio interrupt mask regs    */#define H_VAC_SIOA_IRQ_MASK  P_VA_TYPE (VAC_ADR + 0x2300)#define H_VAC_SIOB_IRQ_MASK  P_VA_TYPE (VAC_ADR + 0x2400)#define	SINGLE_CHAR_RECV_MASK   VA_TYPE 0x8000#define	FIFO_FULL_MASK	        VA_TYPE 0x4000#define	BREAK_CHANGE_MASK       VA_TYPE 0x2000#define	ERROR_MASK  	        VA_TYPE 0x1000#define	XMIT_READY_MASK         VA_TYPE 0x0800#define	XMIT_EMPTY_MASK         VA_TYPE 0x0400#define SIO_MASK_ENABLE     VA_TYPE	0xffff#define SIO_MASK_DISABLE    VA_TYPE	0x0000/* sio status regs   */#define H_VAC_SIOA_STAT  P_VA_TYPE (VAC_ADR + 0x2500)#define H_VAC_SIOB_STAT  P_VA_TYPE (VAC_ADR + 0x2600)#define	CHAR_READY    	VA_TYPE 0x8000#define	FIFO_FULL	VA_TYPE 0x4000#define	BREAK_CHANGE    VA_TYPE 0x2000#define	PARITY_ERROR    VA_TYPE 0x1000#define	FRAMING_ERROR   VA_TYPE 0x0800#define	OVERRUN_ERROR   VA_TYPE 0x0400#define	XMIT_READY 	VA_TYPE 0x0200#define	XMIT_EMPTY	VA_TYPE 0x0100/* VAC TIMER STUFF */#define H_VAC_TMR_DATA  P_VA_TYPE (VAC_ADR + 0x2700)#define H_VAC_TMR_CTL  P_VA_TYPE (VAC_ADR + 0x2800)#define PRESCALER_IN_MASK    	VA_TYPE 0x3f00#define PRESCALER_IN_SHIFT 	8/* use this to read the instantaneous count value of prescaler */#define PRESCALER_OUT_MASK    	VA_TYPE 0x003f#define  VAC_20MHZ_CPU_1MHZ_PRESCALER   (19 << PRESCALER_IN_SHIFT)#define  VAC_25MHZ_CPU_1MHZ_PRESCALER	(24 << PRESCALER_IN_SHIFT)#define  VAC_33MHZ_CPU_1MHZ_PRESCALER	(32 << PRESCALER_IN_SHIFT)#define  VAC_40MHZ_CPU_1MHZ_PRESCALER	(39 << PRESCALER_IN_SHIFT)/* Load command disables timer and then loads the interal timer registers    *//* with the values in the prescaler control bits and the timer data register */#define RUN_LOAD_MASK		VA_TYPE 0x4000#define RUN_CMD			VA_TYPE 0x4000#define STOP_N_LOAD_CMD		VA_TYPE 0x0000/* You can set the timer to only produce a single irq after the time  *//* has elapsed or reset the counter for continuous irqs               */#define SINGLE_CONT_MASK	VA_TYPE 0x8000#define SINGLE_IRQ_CMD		VA_TYPE 0x8000#define CONT_IRQ_CMD		VA_TYPE 0x0000/************************************************************************** The vac timer rate is calculated as follows:***	          /      CPU_CLOCK      \*                 |  -------------------  |*	          \ prescaler value + 1 /*timer rate =  ------------------------------*	      (65536 - time data reg. value)***	where prescaler is set to an arbitrary value.***this gives us a time data register value of***	       		       /      CPU_CLOCK      \*			      |  -------------------  |*	                       \ prescaler value + 1 /*timer data val =   65536 -  ----------------------------*				reqested timer rate*****PROGRAMING EXAMPLE:***to get a 100Hz time rate with a 25MHz cpu clock**  - arbitrarily set prescaler value to 24 which will produce a*    1MHz time period for each count in the time data register***			       		 /  25000000 \*				        |  ---------  |*		                 \   24 + 1  /* time data val = 65536 - ------------- = 55536 = 0xd8f0*			    		      100*** - set prescaler* *H_VAC_TMR_CTL =  (*H_VAC_TMR_CTL & ~PRSCALER_IN_MASK) |*				VAC_25MHZ_CPU_1MHZ_PRESCALER ;* - set timer data register* *H_VAC_TMR_DATA = 0x8df0 ;** - disable timer and load above values into internal registers* *H_VAC_TMR_CTL =  (*H_VAC_TMR_CTL & ~RUN_LOAD_MASK) | STOP_N_LOAD_CMD ;** - set control for continuous operation* *H_VAC_TMR_CTL =  (*H_VAC_TMR_CTL & ~SINGLE_CONT_MASK) | CONT_CMD ;** - start timer* *H_VAC_TMR_CTL =  (*H_VAC_TMR_CTL & ~RUN_LOAD_MASK) | RUN_CMD ;****************************************************************************//* Vac ID Reg. Read to Startup  */#define H_VAC_ID_GO  P_VA_TYPE (VAC_ADR + 0x2900)/* now for some generic io Macros 									 	  *//* These macros are designed so that they can be dropped into a generic   *//* serial handler, They are intended to be the basic building blocks used *//* to port any serial handler to use the VAC. 							  */#ifndef _ASMLANGUAGE#define SIOA	0#define SIOB	1/*the following macros expect SIOA or SIOB for u arg-there's no error checking*/#define XMITER_EMPTY(u) ( XMIT_EMPTY & vaRegGet( H_VAC_SIOA_STAT + \			   ((u)* ( H_VAC_SIOB_STAT - H_VAC_SIOA_STAT ) ) ) )#define XMITER_READY(u) ( XMIT_READY & vaRegGet( H_VAC_SIOA_STAT + \			   ((u)* ( H_VAC_SIOB_STAT - H_VAC_SIOA_STAT ) ) ) )#define RECVER_READY(u) ( CHAR_READY & vaRegGet( H_VAC_SIOA_STAT + \			   ((u)* ( H_VAC_SIOB_STAT - H_VAC_SIOA_STAT ) ) ) )#define XMIT_CHAR(u,ch)   vaRegSet( H_VAC_SIOA_XMIT + \			   ((u)* ( H_VAC_SIOB_XMIT - H_VAC_SIOA_XMIT ) ) , \				(unsigned short)( ((unsigned short)(ch))<<8 ) )#define RECV_CHAR(u,pc)    *(pc) = (unsigned char)(0x00ff & \				vaRegGet( H_VAC_SIOA_RECV + \			   ((u)* ( H_VAC_SIOB_RECV - H_VAC_SIOA_RECV ) ) ) )#define POLLING/* The following P_GETC and P_PUTC macros are designed for POLLING only!!!  *//* NOTE: The delay loops may need to be altered depending on the board rev. */#ifdef POLLING/* P_PUTC(u,ch) - output char "ch" to "u" where "u" is SIOA or SIOB *//* add delay, NOTE: no fifo stuff allowed */#define	P_PUTC(u,ch)  \    while (  ! XMITER_READY( (u) )  ) ;  \    XMIT_CHAR( (u),(ch) );  \    while (   XMITER_READY( (u) )  )/* P_GETC(u,pc) - input char into char pointer "pc" from *//*                "u" where "u" is SIOA or SIOB */#define	P_GETC(u,pc) \    { \    int x; \    while ( ! RECVER_READY( (u) ) ) \    for(x=0;x<100;x++) ; \    RECV_CHAR( (u), (pc) )  ; \    }#endif	/* POLLING */#endif	/* _ASMLANGUAGE */#ifdef __cplusplus}#endif#endif /* __INCivach */

⌨️ 快捷键说明

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