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

📄 hal_vti.h

📁 Source code for an Numeric Cmputer
💻 H
字号:
#ifndef VTI_H#define VTI_H/** This is the driver for a Vigilant technologies ENCDAC board.	The board includes 4 channels of quadrature encoder input,	4 channels of analog output, 8 on board digital I/O, and up	to 128 digital I/O on the expanded I/O module, 3 timers	with interrupt.		A further 4 quadrature encoder inputs, 4 channels of DAC	output and 8 additional channels of digital I/O are	available through the Industry Pack interface. While some	of the hooks are in place, the IP interface is not	currently supported, nor is the ISA version of the board.	 To Do:	Add full support for the Industray pack 	Add support for the ISA version of the board.	Add support for timers	**//** Copyright (C) 2006 Eric H. Johnson					   <ejohnson AT AAAINC DOT com>**//** This program is free software; you can redistribute it and/or	modify it under the terms of version 2.1 of the GNU General	Public License as published by the Free Software Foundation.	This library is distributed in the hope that it will be useful,	but WITHOUT ANY WARRANTY; without even the implied warranty of	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the	GNU General Public License for more details.	You should have received a copy of the GNU General Public	License along with this library; if not, write to the Free Software	Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111 USA	THE AUTHORS OF THIS LIBRARY ACCEPT ABSOLUTELY NO LIABILITY FOR	ANY HARM OR LOSS RESULTING FROM ITS USE.  IT IS _EXTREMELY_ UNWISE	TO RELY ON SOFTWARE ALONE FOR SAFETY.  Any machinery capable of	harming persons must have provisions for completely removing power	from all motors, etc, before persons enter any danger area.  All	machinery must be designed to comply with local and national safety	codes, and the authors of this software can not, and do not, take	any responsibility for such compliance.	This code was written as part of the EMC HAL project.  For more	information, go to www.linuxcnc.org.**//*	Vigilant Technologies' board decls*/#define VENDOR 0x10b5#define DEVICE 0x9050#define MAX_CHANS  4#define MAX_IO_PORTS 17#define PINS_PER_PORT 8#define DAC_DISABLE 0x00a5#define DAC_IND_MODE 0x005a#define DAC_WATCHDOG_MODE 0x000f#define DAC_ZERO_VOLTS 0x8000#define EPSILON 1e-20/* Structures used by the PCI card */struct encoder {    u16 Counter[4];    u8 Status;		// 0x08    u8 dummy;		// dummy space    u16 Reset;		// 0x0a    u8 reserved[3];	// dummy space 0x0c - 0x0f    u16 Interrupt;	// 0x10    u16 DAC;		// 0x12    u16 DIO;		// 0x14    };struct timer {    u8 reserved[0x2c];    u8 ctc0;		// 8254 Counter 0    u8 ctc1;		// 8254 Counter 1    u8 ctc2;		// 8254 Counter 2    u8 control;		// 8254 command register    };struct dac {    u8 reserved1[0x13f]; // dummy space    u16 dac[4];    u16 dac_adj[4];    u16 mode;    u16 update;    u16 reset;    u8 dummy[0x2a];	// dummy space    u8 DIO[0x10];	// Digital IO channels    u16 config0;	// Direction configs for channels 00-63    u16 config1;	// Direction configs for channels 64-127    u16 status;    };/* IndustryPack mappings - Need to check IF u8 or u16, also check boundary address*/struct ip {    u8 ID[0x40];	// IndustryPack ID - The first (12*2) addresses used for ID info			// consult P20 of vip-4encdac.pdf for more info.    u16 IP_int;		// Interrupt status    u8 reserved[0x3e];	// dummy space    u16 IO[0x30];	// IndustryPack IO - Only need the first 0x30 address.			// Again, consult manual - Might it be better to use another struct here ??			// and also for the ID stuff....    };typedef union{  signed long int	Long;  signed short int	Word[2];} Longword;    #endif

⌨️ 快捷键说明

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