📄 phantomregisters.h
字号:
/* Basic idea is to do a burst read, then a burst write */
/********************************************/
/* INPUT REGISTER MAP */
/********************************************/
/* Register 0,1 -- Quadrature Axis 0: low byte, high byte */
/* Register 2,3 -- Quadrature Axis 1: low byte, high byte */
/* Register 4,5 -- Quadrature Axis 2: low byte, high byte */
/* Register 6,7 -- Potentiometer A/D 0: low byte, high byte */
/* Register 8,9 -- Potentiometer A/D 1: low byte, high byte */
/* Register 10,11 -- Potentiometer A/D 2: low byte, high byte */
/* Register 12 -- Timer free running counter */
/* Register 13 -- Digital Inputs + error flags */
/* Bit 7 -- Watchdog disable jumper */
/* Bit 6 -- Watchdog OK (1 = OK / 0 = timed out */
/* Bit 5 -- Current Limit Error (1 = over current) */
/* Bit 4 -- Home input 2 (0 = in home position) */
/* Bit 3 -- Home input 1 (0 = in home position) */
/* Bit 2 -- Home input 0 (0 = in home position) */
/* Bit 1 -- Stylus switch input (0 = pressed) */
/* Bit 0 -- Stylus presence input (0 = presence detected) */
/* Register 14 -- watchdog data/test reg */
/* Register 15 -- Speed error flags + hardware revision */
/* Bit 7 -- GND unused */
/* Bit 6 -- Channel 2 overspeed error */
/* Bit 5 -- Channel 1 overspeed error */
/* Bit 4 -- Channel 0 overspeed error */
/* Bit 3 to 0 -- Hardware revision */
#define INPUT_LENGTH (16) /* Bytes */
#define OFFSET_QUAD0_LOW (0)
#define OFFSET_QUAD0_HIGH (1)
#define OFFSET_QUAD1_LOW (2)
#define OFFSET_QUAD1_HIGH (3)
#define OFFSET_QUAD2_LOW (4)
#define OFFSET_QUAD2_HIGH (5)
#define OFFSET_POT0_LOW (6)
#define OFFSET_POT0_HIGH (7)
#define OFFSET_POT1_LOW (8)
#define OFFSET_POT1_HIGH (9)
#define OFFSET_POT2_LOW (10)
#define OFFSET_POT2_HIGH (11)
#define OFFSET_TIMER_CNT (12)
#define OFFSET_MISC_IN (13)
#define OFFSET_WDOG_CNTR_IN (14)
#define OFFSET_SPEED_ERRS (15)
#define WDOG_DISABLE_STATUS (0x80)
#define WDOG_IS_OK (0x40)
#define OVER_CURRENT_ERR (0x20)
#define HOME_SENSOR2 (0x10)
#define HOME_SENSOR1 (0x08)
#define HOME_SENSOR0 (0x04)
#define STYLUS_SWITCH (0x02)
#define STYLUS_PRESENCE (0x01)
#define OVER_SPEED_ERR2 (0x40)
#define OVER_SPEED_ERR1 (0x20)
#define OVER_SPEED_ERR0 (0x10)
#define HARDWARE_REV_MASK (0x0f)
/********************************************/
/* OUTPUT REGISTER MAP */
/********************************************/
/* Register 0x10,1 -- D/A 0 register low byte, high byte */
/* Register 0x12,3 -- D/A 1 register low byte, high byte */
/* Register 0x14,5 -- D/A 2 register low byte, high byte */
/* Register 0x16 -- Bit outputs: */
/* Bit 7 -- int_enable -- strobes timer interrupt */
/* Bit 6 -- timer_enable -- enables timer operation */
/* Bit 5 -- timer_high/low -- 1 = timer 0.5mS // 0 = timer 1.0mS */
/* Bit 4 -- quad_reset -- Set hi, then low to rst quad cntrs */
/* Bit 3 -- error_reset -- Set hi, then low to rst latchd errs */
/* Bits 2 to 0 -- status_led[2..0] Status LED control lines */
/* H"0" => GREEN/YELLOW, FLASH_FAST */
/* H"1" => GREEN, FLASH_SLOW */
/* H"2" => YELLOW, FLASH_SLOW */
/* H"3" => YELLOW, FLASH_FAST */
/* H"4" => GREEN/YELLOW, SOLID */
/* H"5" => GREEN, SOLID */
/* H"6" => YELLOW, SOLID */
/* H"7" => GREEN, FLASH_FAST */
/* Register 0x17 -- Watchdog Counter; must be continuously incremented */
#define OUTPUT_LENGTH (8) /* Bytes */
#define OFFSET_DTOA0_LOW (16)
#define OFFSET_DTOA0_HIGH (17)
#define OFFSET_DTOA1_LOW (18)
#define OFFSET_DTOA1_HIGH (19)
#define OFFSET_DTOA2_LOW (20)
#define OFFSET_DTOA2_HIGH (21)
#define OFFSET_MISC_OUT (22)
#define OFFSET_WDOG_CNTR_OUT (23)
#define INTER_ENABLE 0x80
#define TIMER_ENABLE 0x40
#define TIMER_HIGHSPD 0x20
#define QUAD_RESET 0x10
#define ERROR_RESET 0x08
#define LED_MASK 0x07
#define FAST_GRNYEL 0x00
#define SLOW_GRN 0x01
#define SLOW_YEL 0x02
#define FAST_YEL 0x03
#define SOLID_GRNYEL 0x04
#define SOLID_GRN 0x05
#define SOLID_YEL 0x06
#define FAST_GRN 0x07
typedef unsigned char byte; /* 8-bit */
typedef unsigned short word; /* 16-bit */
typedef unsigned long dword; /* 32-bit */
typedef struct _PORT_INPUT {
USHORT usQuad1;
USHORT usQuad2;
USHORT usQuad0;
USHORT usPot0;
USHORT usPot1;
USHORT usPot2;
UCHAR ucTimerCnt;
UCHAR ucMiscIn;
UCHAR ucWatchdogCntrIn;
UCHAR ucSpeedErrs;
} PORT_INPUT, *PPORT_INPUT;
typedef struct _PORT_OUTPUT {
USHORT usDToA0;
USHORT usDToA1;
USHORT usDToA2;
UCHAR ucMiscOut;
UCHAR ucWatchdogCntrOut;
} PORT_OUTPUT, *PPORT_OUTPUT;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -