Communicate with IAI Robotnet linear actuators

Dependents:   IAILinearActuators

linactregdefs.h

Committer:
henryeherman
Date:
2014-02-24
Revision:
0:de88dc2515d3

File content as of revision 0:de88dc2515d3:

#ifndef LINACTREGDEF_H
#define LINACTREGDEF_H

#define IS_MBED
#ifdef IS_MBED
#include "mbed.h"
#endif

#define GWADDR       0x3f  // 63 or 0x3f fixed slave address
#define LINACT_READ_MULTI   0x03
#define LINACT_WRITE        0x06
#define LINACT_WRITE_MULTI  0x10

#define GWCTRL0      0xF600
#define GWCTRL1      0xF601

#define GWCTRL_APP_SIG      (1<<15)

#define AXIS0_BASE_WR        0xF608
#define AXIS1_BASE_WR        0xF60C
#define AXIS2_BASE_WR        0xF610
#define AXIS3_BASE_WR        0xF614
#define AXIS4_BASE_WR        0xF608
#define AXIS5_BASE_WR        0xF61C

#define POS_SET_LO_OFFSET    0x0

#define AXIS0_POS_SET_LO   (AXIS0_BASE_WR + POS_SET_LO_OFFSET)
#define AXIS1_POS_SET_LO   (AXIS1_BASE_WR + POS_SET_LO_OFFSET)
#define AXIS2_POS_SET_LO   (AXIS2_BASE_WR + POS_SET_LO_OFFSET)
#define AXIS3_POS_SET_LO   (AXIS3_BASE_WR + POS_SET_LO_OFFSET)
#define AXIS4_POS_SET_LO   (AXIS4_BASE_WR + POS_SET_LO_OFFSET)

#define POS_SET_HI_OFFSET   0x1

#define AXIS0_POS_SET_HI   (AXIS0_BASE_WR + POS_SET_HI_OFFSET)
#define AXIS1_POS_SET_HI   (AXIS1_BASE_WR + POS_SET_HI_OFFSET)
#define AXIS2_POS_SET_HI   (AXIS2_BASE_WR + POS_SET_HI_OFFSET)
#define AXIS3_POS_SET_HI   (AXIS3_BASE_WR + POS_SET_HI_OFFSET)
#define AXIS4_POS_SET_HI   (AXIS4_BASE_WR + POS_SET_HI_OFFSET)

#define CMD_POS_SET_OFFSET  0x2

#define AXIS0_CMD_POS_SET   (AXIS0_BASE_WR + CMD_POS_SET_OFFSET)
#define AXIS1_CMD_POS_SET   (AXIS1_BASE_WR + CMD_POS_SET_OFFSET)
#define AXIS2_CMD_POS_SET   (AXIS2_BASE_WR + CMD_POS_SET_OFFSET)
#define AXIS3_CMD_POS_SET   (AXIS3_BASE_WR + CMD_POS_SET_OFFSET)
#define AXIS4_CMD_POS_SET   (AXIS4_BASE_WR + CMD_POS_SET_OFFSET)

#define CNTRL_SIG_OFFSET    0x3

#define AXIS0_CTRL_SIG      (AXIS0_BASE_WR + CNTRL_SIG_OFFSET)
#define AXIS1_CTRL_SIG      (AXIS1_BASE_WR + CNTRL_SIG_OFFSET)
#define AXIS2_CTRL_SIG      (AXIS2_BASE_WR + CNTRL_SIG_OFFSET)
#define AXIS3_CTRL_SIG      (AXIS3_BASE_WR + CNTRL_SIG_OFFSET)
#define AXIS4_CTRL_SIG      (AXIS4_BASE_WR + CNTRL_SIG_OFFSET)

#define AXIS_CTRL_BKRL      (1<<15)
#define AXIS_CTRL_MODE      (1<<10)
#define AXIS_CTRL_PWRT      (1<<9)
#define AXIS_CTRL_JOGP      (1<<8)
#define AXIS_CTRL_JOGN      (1<<7)
#define AXIS_CTRL_JVEL      (1<<6)
#define AXIS_CTRL_JISL      (1<<5)
#define AXIS_CTRL_SON       (1<<4)
#define AXIS_CTRL_RES       (1<<3)
#define AXIS_CTRL_STP       (1<<2) // Pause command
#define AXIS_CTRL_HOME      (1<<1)
#define AXIS_CTRL_CSTR      (1<<0)

#define LINACT_GWSTATUS0    0xF700
#define LINACT_GWSTATUS1    0xF701

#define GWSTATUS0_RUN       (1<<15)
#define GWSTATUS0_ERRT      (1<<14)
#define GWSTATUS0_MOD       (1<<12)
#define GWSTATUS0_W8B16     (1<<9)
#define GWSTATUE0_W8B8      (1<<8)
#define GWSTATUS0_W8B4      (1<<7)
#define GWSTATUS0_W8B2      (1<<6)
#define GWSTATUS0_W8B1      (1<<5)
#define GWSTATUS0_W4B16     (1<<4)
#define GWSTATUS0_W4B8      (1<<3)
#define GWSTATUS0_W4B4      (1<<2)
#define GWSTATUS0_W4B2      (1<<1)
#define GWSTATUS0_W4B1      (1<<0)

#define GWSTATUS1_LNK15     (1<<15)
#define GWSTATUS1_LNK14     (1<<14)
#define GWSTATUS1_LNK13     (1<<13)
#define GWSTATUS1_LNK12     (1<<12)
#define GWSTATUS1_LNK11     (1<<11)
#define GWSTATUS1_LNK10     (1<<10)
#define GWSTATUS1_LNK9      (1<<9)
#define GWSTATUS1_LNK8      (1<<8)
#define GWSTATUS1_LNK7      (1<<7)
#define GWSTATUS1_LNK6      (1<<6)
#define GWSTATUS1_LNK5      (1<<5)
#define GWSTATUS1_LNK4      (1<<4)
#define GWSTATUS1_LNK3      (1<<3)
#define GWSTATUS1_LNK2      (1<<2)
#define GWSTATUS1_LNK1      (1<<1)
#define GWSTATUS1_LNK0      (1<<0)



#define AXIS0_BASE_RD       0xF708
#define AXIS1_BASE_RD       0xF70C
#define AXIS2_BASE_RD       0xF710
#define AXIS3_BASE_RD       0xF714
#define AXIS4_BASE_RD       0xF718


#define POS_GET_LO_OFFSET   0x0

#define AXIS0_POS_GET_LO    (AXIS0_BASE_RD + POS_GET_LO_OFFSET)
#define AXIS1_POS_GET_LO    (AXIS1_BASE_RD + POS_GET_LO_OFFSET)
#define AXIS2_POS_GET_LO    (AXIS2_BASE_RD + POS_GET_LO_OFFSET)
#define AXIS3_POS_GET_LO    (AXIS3_BASE_RD + POS_GET_LO_OFFSET)
#define AXIS4_POS_GET_LO    (AXIS4_BASE_RD + POS_GET_LO_OFFSET)

#define POS_GET_HI_OFFSET   0x1

#define AXIS0_POS_GET_HI    (AXIS0_BASE_RD + POS_GET_HI_OFFSET)
#define AXIS1_POS_GET_HI    (AXIS1_BASE_RD + POS_GET_HI_OFFSET)
#define AXIS2_POS_GET_HI    (AXIS2_BASE_RD + POS_GET_HI_OFFSET)
#define AXIS3_POS_GET_HI    (AXIS3_BASE_RD + POS_GET_HI_OFFSET)
#define AXIS4_POS_GET_HI    (AXIS4_BASE_RD + POS_GET_HI_OFFSET)

#define CMPLT_POS_OFFSET    0x2

#define AXIS0_CMPLT_POS     (AXIS0_BASE_RD + CMPLT_POS_OFFSET)
#define AXIS1_CMPLT_POS     (AXIS1_BASE_RD + CMPLT_POS_OFFSET)
#define AXIS2_CMPLT_POS     (AXIS2_BASE_RD + CMPLT_POS_OFFSET)
#define AXIS3_CMPLT_POS     (AXIS3_BASE_RD + CMPLT_POS_OFFSET)
#define AXIS4_CMPLT_POS     (AXIS4_BASE_RD + CMPLT_POS_OFFSET)

#define STATUS_SIG_OFFSET   0x3

#define AXIS0_STATUS_SIG    (AXIS0_BASE_RD + STATUS_SIG_OFFSET)
#define AXIS1_STATUS_SIG    (AXIS1_BASE_RD + STATUS_SIG_OFFSET)
#define AXIS2_STATUS_SIG    (AXIS2_BASE_RD + STATUS_SIG_OFFSET)
#define AXIS3_STATUS_SIG    (AXIS3_BASE_RD + STATUS_SIG_OFFSET)
#define AXIS4_STATUS_SIG    (AXIS4_BASE_RD + STATUS_SIG_OFFSET)

#define AXIS_STATUS_EMGS    (1<<15)
#define AXIS_STATUS_CRDY    (1<<14)
#define AXIS_STATUS_ZONE1   (1<<13)
#define AXIS_STATUS_ZONE2   (1<<12)
#define AXIS_STATUS_PZONE   (1<<11)
#define AXIS_STATUS_MODES   (1<<10)
#define AXIS_STATUS_WEND    (1<<9)
#define AXIS_STATUS_PSFL    (1<<5)
#define AXIS_STATUS_SV      (1<<4)
#define AXIS_STATUS_ALM     (1<<3)
#define AXIS_STATUS_MOVE    (1<<2)
#define AXIS_STATUS_HEND    (1<<1)
#define AXIS_STATUS_PEND    (1<<0)

#define LINACT_BUFLEN       (64)

#define TO_HEX(i) (i <= 9 : '0' + i ? 'A' - 10 + i)

#endif // end linactregdef