123

Dependencies:   4WOK_8dir_1m_PI_p2pcontrol mbed

Fork of DXL_SDK_For_F446RE by hsu han-lin

dynamixel.h

Committer:
stanley1228
Date:
2017-02-08
Revision:
3:e2e9064c668d
Parent:
0:bf4774b25188
Child:
4:44560391db99

File content as of revision 3:e2e9064c668d:

// Dynamixel SDK platform independent header
#ifndef _DYNAMIXEL_HEADER
#define _DYNAMIXEL_HEADER


#ifdef __cplusplus
extern "C" {
#endif


///////////// device control methods ////////////////////////
int dxl_initialize( int devIndex, int baudnum );
void dxl_terminate(void);


///////////// set/get packet methods //////////////////////////
void dxl_set_txpacket_id( int id );
#define BROADCAST_ID        (254)

void dxl_set_txpacket_instruction( int instruction );
#define INST_PING           (1)
#define INST_READ           (2)
#define INST_WRITE          (3)
#define INST_REG_WRITE      (4)
#define INST_ACTION         (5)
#define INST_RESET          (6)
#define INST_SYNC_WRITE     (131)

#define MAXNUM_TXPARAM      (150)
void dxl_set_txpacket_parameter( int index, int value );
void dxl_set_txpacket_length( int length );

int dxl_get_rxpacket_error( int errbit );
#define ERRBIT_VOLTAGE      (1)
#define ERRBIT_ANGLE        (2)
#define ERRBIT_OVERHEAT     (4)
#define ERRBIT_RANGE        (8)
#define ERRBIT_CHECKSUM     (16)
#define ERRBIT_OVERLOAD     (32)
#define ERRBIT_INSTRUCTION  (64)

#define MAXNUM_RXPARAM      (60)
int dxl_get_rxpacket_parameter( int index );
int dxl_get_rxpacket_length(void);

// utility for value
int dxl_makeword( int lowbyte, int highbyte );
int dxl_get_lowbyte( int word );
int dxl_get_highbyte( int word );


////////// packet communication methods ///////////////////////
void dxl_tx_packet(void);
void dxl_rx_packet(void);
void dxl_txrx_packet(void);

int dxl_get_result(void);
#define COMM_TXSUCCESS      (0)
#define COMM_RXSUCCESS      (1)
#define COMM_TXFAIL         (2)
#define COMM_RXFAIL         (3)
#define COMM_TXERROR        (4)
#define COMM_RXWAITING      (5)
#define COMM_RXTIMEOUT      (6)
#define COMM_RXCORRUPT      (7)


//MX64 Register stanley///
#define GOAL_POSITION     30
#define PRESENT_POS       36
#define ID_ADDRESS        3
#define CW_ANGLE_LIMIT_L  6
#define CW_ANGLE_LIMIT_H  7
#define CCW_ANGLE_LIMIT_L 8
#define CCW_ANGLE_LIMIT_H 9
#define MOVING			46
#define XL_MOVING		49
#define GOAL_POSITION	30
#define PRESENT_POS		36
#define ID_ADDRESS		3
#define MOVING			46
#define XL_MOVING		49
#define CW_ANGLE_LIMIT_L  6
#define CW_ANGLE_LIMIT_H  7
#define CCW_ANGLE_LIMIT_L 8
#define CCW_ANGLE_LIMIT_H 9
#define ADDRESS_LED 0x19


//////////// high communication methods ///////////////////////
void dxl_ping( int id );
int dxl_read_byte( int id, int address );
void dxl_write_byte( int id, int address, int value );
int dxl_read_word( int id, int address );
void dxl_write_word( int id, int address, int value );
int syncWrite_u16base(short int start_addr, short int data_length, short int *param, short int param_length); // WORD(16bit) syncwrite() for DXL
void setPosition(int ServoID, int Position, int Speed);//stanley





#ifdef __cplusplus
}
#endif

#endif