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

📄 motenc.h

📁 Source code for an Numeric Cmputer
💻 H
字号:
/****************************************************************************** * * Copyright (C) 2005 Peter G. Vavaroutsos <pete AT vavaroutsos DOT com> * * $RCSfile: motenc.h,v $ * $Author: alex_joni $ * $Locker:  $ * $Revision: 1.6 $ * $State: Exp $ * $Date: 2005/10/30 22:00:41 $ * * Hardware register defines for Vital Systems MOTENC-100 board. * The board includes an 8 channel quadrature decoder, 8 analog inputs, * 8 analog outputs, 68 digital inputs, 32 digital outputs, programable * timer interrupts, a watch dog timer, and a hardware E-STOP circuit. * * 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. * ******************************************************************************/#ifndef _MOTENC_H_#define _MOTENC_H_#include "hal.h"// Vendor and device ID.#define MOTENC_VENDOR_ID		0x10B5	// PLX.#define MOTENC_DEVICE_ID		0x3001	// MOTENC-100.#define MOTENC_SUB_SYS_VENDOR_ID	0x10B5	// PLX.#define MOTENC_SUB_SYS_DEVICE_ID	0x9030	// 9030 SMARTarget I/O Accelerator.#define MOTENC_PCI_MEM_LEN		512#define MOTENC_NUM_ADC_CHANNELS		8#define MOTENC_NUM_DAC_CHANNELS		8#define MOTENC_FPGA_NUM_ENCODER_CHANNELS 4#define MOTENC_FPGA_NUM_DIGITAL_INPUTS	36#define MOTENC_FPGA_NUM_DIGITAL_OUTPUTS	16#define MOTENC_NUM_FPGA		2#define MOTENC_NUM_ENCODER_CHANNELS	(MOTENC_NUM_FPGA * MOTENC_FPGA_NUM_ENCODER_CHANNELS)#define MOTENC_NUM_DIGITAL_INPUTS	(MOTENC_NUM_FPGA * MOTENC_FPGA_NUM_DIGITAL_INPUTS - 4)#define MOTENC_NUM_DIGITAL_OUTPUTS	(MOTENC_NUM_FPGA * MOTENC_FPGA_NUM_DIGITAL_OUTPUTS)typedef struct {    hal_s32_t				encoderCount[MOTENC_FPGA_NUM_ENCODER_CHANNELS];    hal_u32_t				digitalIo;    hal_u32_t				statusControl;    hal_u32_t				reserved;    hal_u32_t				boardVersion;} volatile MotencFpgaRegMap;// For use with digitalIo reg.#define MOTENC_DIGITAL_OUT		0x0000FFFF#define MOTENC_DIGITAL_OUT_SHFT		0#define MOTENC_DIGITAL_IN		0xFFFF0000#define MOTENC_DIGITAL_IN_SHFT		16// For use with statusControl reg.#define MOTENC_CONTROL_ENCODER_RESET    0x0000000F#define MOTENC_CONTROL_ENCODER_RESET_SHFT 0#define MOTENC_STATUS_DIGITAL_IN	0x0000FFFF#define MOTENC_STATUS_DIGITAL_IN_SHFT	0#define MOTENC_STATUS_BOARD_ID		0x00030000	// FPGA 0.#define MOTENC_STATUS_BOARD_ID_SHFT	16#define MOTENC_STATUS_ADC_DONE		0x00040000#define MOTENC_STATUS_ESTOP		0x00080000#define MOTENC_STATUS_DIGITAL_IN2	0x000F0000	// FPGA 1.#define MOTENC_STATUS_DIGITAL_IN2_SHFT	16#define MOTENC_STATUS_INDEX		0x00F00000#define MOTENC_STATUS_INDEX_SHFT	20#define MOTENC_STATUS_INDEX_LATCH	0x0F000000#define MOTENC_STATUS_INDEX_LATCH_SHFT	24typedef struct {    MotencFpgaRegMap			fpga[MOTENC_NUM_FPGA];    hal_u32_t				timerCompare;    hal_u32_t				timerIrqDisable;    hal_u32_t				timerIrqEnable;    hal_u32_t				watchdogControl;    hal_u32_t				watchdogReset;    hal_u32_t				reserved1[3];    hal_u32_t				dac[MOTENC_NUM_DAC_CHANNELS];    hal_u32_t				adcDataCommand;    hal_u32_t				reserved2[7];    hal_u32_t				adcStartConversion;} volatile MotencRegMap;// For use with watchdogControl reg.#define MOTENC_WATCHDOG_CTL_TIMEBASE    0x00000001#define MOTENC_WATCHDOG_CTL_8MS		0x00000000#define MOTENC_WATCHDOG_CTL_16MS	0x00000001#define MOTENC_WATCHDOG_CTL_ENABLE	0x00000004#define MOTENC_WATCHDOG_CTL_AUTO_RESET	0x00000010	// Reset by DAC writes.// For use with watchdogReset reg.#define MOTENC_WATCHDOG_RESET_VALUE	0x0000005A// For use with dac reg.#define MOTENC_DAC_COUNT_ZERO		0x00001000	// 0 volts.#define MOTENC_DAC_VOLTS_MIN		-10.0		// For converting volts to counts.#define MOTENC_DAC_VOLTS_MAX		10.0#define MOTENC_DAC_SCALE_MULTIPLY	-8191.0		// Higher counts are lower voltage.#define MOTENC_DAC_SCALE_DIVIDE		(MOTENC_DAC_VOLTS_MAX - MOTENC_DAC_VOLTS_MIN)// For use with adcDataCommand reg.#define MOTENC_ADC_COMMAND_CHN_0	0#define MOTENC_ADC_COMMAND_CHN_0_1	1#define MOTENC_ADC_COMMAND_CHN_0_1_2    2#define MOTENC_ADC_COMMAND_CHN_0_1_2_3	3#define MOTENC_ADC_COMMAND_CHN_4	4#define MOTENC_ADC_COMMAND_CHN_4_5	5#define MOTENC_ADC_COMMAND_CHN_4_5_6    6#define MOTENC_ADC_COMMAND_CHN_4_5_6_7	7#define MOTENC_ADC_COMMAND_POWER_DOWN	8#define MOTENC_ADC_SIGN_BIT		0x00002000#define MOTENC_ADC_SIGN_EXTEND		0xFFFFC000#define MOTENC_ADC_VOLTS_MIN		-5.0		// For converting counts to volts.#define MOTENC_ADC_VOLTS_MAX		5.0#define MOTENC_ADC_SCALE_MULTIPLY	(MOTENC_ADC_VOLTS_MAX - MOTENC_ADC_VOLTS_MIN)#define MOTENC_ADC_SCALE_DIVIDE		16384.0#endif

⌨️ 快捷键说明

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