mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2024-12-29 04:50:03 +01:00
96 lines
4.7 KiB
C
96 lines
4.7 KiB
C
/*
|
|
* Copyright (C) 2017 Inria
|
|
*
|
|
* This file is subject to the terms and conditions of the GNU Lesser General
|
|
* Public License v2.1. See the file LICENSE in the top level directory for more
|
|
* details.
|
|
*/
|
|
|
|
/**
|
|
* @ingroup drivers_dynamixel
|
|
*
|
|
* @{
|
|
*
|
|
* @file
|
|
* @brief Dynamixel protocol definitions
|
|
*
|
|
* @author Loïc Dauphin <loic.dauphin@inria.fr>
|
|
*/
|
|
|
|
#ifndef DYNAMIXEL_PROTOCOL_H
|
|
#define DYNAMIXEL_PROTOCOL_H
|
|
|
|
#include <stdint.h>
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#define DXL_HEADER ((uint8_t[]){0xFF,0xFF,0xFD})
|
|
|
|
typedef enum {
|
|
XL320_B_9600 = 0, /**< XL320 available baudrate : 9600 */
|
|
XL320_B_57600 = 1, /**< XL320 available baudrate : 57600 */
|
|
XL320_B_115200 = 2, /**< XL320 available baudrate : 115200 */
|
|
XL320_B_1000000 = 3, /**< XL320 available baudrate : 1000000 */
|
|
} xl320_baudrate_t;
|
|
|
|
typedef enum {
|
|
XL320_VERSION = 2, /**< Information on the version of firmware [R] */
|
|
XL320_ID = 3, /**< ID of Dynamixel [RW] (default=1 ; min=0 ; max=252) */
|
|
XL320_BAUD_RATE = 4, /**< Baud Rate of Dynamixel [RW] (default=3 ; min=0 ; max=3) */
|
|
XL320_RETURN_DELAY_TIME = 5, /**< Return Delay Time [RW] (default=250 ; min=0 ; max=254) */
|
|
XL320_CONTROL_MODE = 11, /**< Control Mode [RW] (default=2 ; min=1 ; max=2) */
|
|
XL320_LIMIT_TEMPERATURE = 12, /**< Internal Limit Temperature [RW] (default=65 ; min=0 ; max=150) */
|
|
XL320_LOWER_LIMIT_VOLTAGE = 13, /**< Lowest Limit Voltage [RW] (default=60 ; min=50 ; max=250) */
|
|
XL320_UPPER_LIMIT_VOLTAGE = 14, /**< Upper Limit Voltage [RW] (default=90 ; min=50 ; max=250) */
|
|
XL320_RETURN_LEVEL = 17, /**< Return Level [RW] (default=2 ; min=0 ; max=2) */
|
|
XL320_ALARM_SHUTDOWN = 18, /**< Shutdown for Alarm [RW] (default=3 ; min=0 ; max=7) */
|
|
XL320_TORQUE_ENABLE = 24, /**< Torque On/Off [RW] (default=0 ; min=0 ; max=1) */
|
|
XL320_LED = 25, /**< LED On/Off [RW] (default=0 ; min=0 ; max=7) */
|
|
XL320_D_GAIN = 27, /**< D Gain [RW] (default=0 ; min=0 ; max=254) */
|
|
XL320_I_GAIN = 28, /**< I Gain [RW] (default=0 ; min=0 ; max=254) */
|
|
XL320_P_GAIN = 29, /**< P Gain [RW] (default=32 ; min=0 ; max=254) */
|
|
XL320_PRESENT_VOLTAGE = 45, /**< Current Voltage [R] */
|
|
XL320_PRESENT_TEMPERATURE = 46, /**< Present temperature [R] */
|
|
XL320_REGISTERED_INST = 47, /**< Registered Instruction [R] (default=0) */
|
|
XL320_MOVING = 49, /**< Moving [R] (default=0) */
|
|
XL320_ERROR = 50, /**< Hardware error status [R] (default=0) */
|
|
} xl320_register8_t;
|
|
|
|
typedef enum {
|
|
XL320_MODEL_NUMBER = 0, /**< Model number [R] (default=350) */
|
|
XL320_CW_ANGLE_LIMIT = 6, /**< clockwise Angle Limit [RW] (default=0 ; min=0 ; max=1023) */
|
|
XL320_CCW_ANGLE_LIMIT = 8, /**< counterclockwise Angle Limit [RW] (default=1023 ; min=0 ; max=1023) */
|
|
XL320_MAX_TORQUE = 15, /**< Lowest byte of Max. Torque [RW] (default=1023 ; min=0 ; max=1023) */
|
|
XL320_GOAL_POSITION = 30, /**< Goal Position [RW] (min=0 ; max=1023) */
|
|
XL320_GOAL_VELOCITY = 32, /**< Goal Speed [RW] (min=0 ; max=2047) */
|
|
XL320_GOAL_TORQUE = 35, /**< Goal Torque [RW] (min=0 ; max=1023) */
|
|
XL320_PRESENT_POSITION = 37, /**< Current Position [R] */
|
|
XL320_PRESENT_SPEED = 39, /**< Current Speed [R] */
|
|
XL320_PRESENT_LOAD = 41, /**< Current Load [R] */
|
|
XL320_PUNCH = 51, /**< Punch [RW] (default=32 ; min=0 ; max=1023) */
|
|
} xl320_register16_t;
|
|
|
|
typedef enum {
|
|
DXL_INST_PING = 0x01, /**< checks if ID is associated to a Device */
|
|
DXL_INST_READ = 0x02, /**< read data from the Device */
|
|
DXL_INST_WRITE = 0x03, /**< write data on the Device */
|
|
DXL_INST_REG_WRITE = 0x04, /**< registers the write instruction to a standby status */
|
|
DXL_INST_ACTION = 0x05, /**< executes the write instruction previously registered */
|
|
DXL_INST_FACTORY_RESET = 0x06, /**< resets the Control Table to its initial factory default settings */
|
|
DXL_INST_REBOOT = 0x08, /**< reboot the Device */
|
|
DXL_INST_STATUS = 0x55, /**< Return Instruction for the Instruction Packet */
|
|
DXL_INST_SYNC_READ = 0x82, /**< (Multiple devices) read data with same Address and length at once */
|
|
DXL_INST_SYNC_WRITE = 0x83, /**< (Multiple devices) write data on the same Address and length at once */
|
|
DXL_INST_BULK_READ = 0x92, /**< (Multiple devices) read data from different Addresses and lengths at once */
|
|
DXL_INST_BULK_WRITE = 0x93, /**< (Multiple devices) write data on different Addresses and lengths at once */
|
|
} dynamixel_intruction_t;
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* DYNAMIXEL_PROTOCOL_H */
|
|
/** @} */
|