You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

78 lines
4.6 KiB

#pragma once
#include <stdint.h>
namespace iflytop {
using namespace std;
#define REG_INDEX(type, offset, subconfigindex) (type * 100 + offset + subconfigindex)
typedef enum {
/*******************************************************************************
* 模块通用配置和状态 *
*******************************************************************************/
kreg_module_version = REG_INDEX(0, 0, 0), // 模块版本
kreg_module_type = REG_INDEX(0, 0, 1), // 模块类型
kreg_module_status = REG_INDEX(0, 0, 2), // 0idle,1busy,2error
kreg_module_errorcode = REG_INDEX(0, 0, 3), // inited_flag
/***********************************************************************************************************************
* 光学模组私有方法 *
***********************************************************************************************************************/
kreg_opt_module_do_action0 = REG_INDEX(0, 0, 40), // 方法0
kreg_opt_module_action_param1 = REG_INDEX(0, 0, 41), // 方法1
kreg_opt_module_action_param2 = REG_INDEX(0, 0, 42), // 方法2
kreg_opt_module_action_param3 = REG_INDEX(0, 0, 43), // 方法3
kreg_opt_module_action_ack1 = REG_INDEX(0, 0, 51), // ACK1
kreg_opt_module_action_ack2 = REG_INDEX(0, 0, 52), // ACK2
/***********************************************************************************************************************
* step_motor *
***********************************************************************************************************************/
kreg_step_motor_pos = REG_INDEX(101, 0, 1), // 机器人x坐标
kreg_step_motor_dpos = REG_INDEX(101, 0, 3), // 执行完上一条指令后的相对位移
kreg_step_motor_shift = REG_INDEX(101, 50, 0), // x偏移
kreg_step_motor_shaft = REG_INDEX(101, 50, 1), // x轴是否反转
kreg_step_motor_one_circle_pulse = REG_INDEX(101, 50, 2), // x轴一圈脉冲数
kreg_step_motor_one_circle_pulse_denominator = REG_INDEX(101, 50, 3), // 设置一圈脉冲数的分母
kreg_step_motor_default_velocity = REG_INDEX(101, 50, 4), // 默认速度
kreg_step_motor_ihold = REG_INDEX(101, 50, 8), // 步进电机电流配置
kreg_step_motor_irun = REG_INDEX(101, 50, 9), // 步进电机电流配置
kreg_step_motor_iholddelay = REG_INDEX(101, 50, 10), // 步进电机电流配置
kreg_step_motor_iglobalscaler = REG_INDEX(101, 50, 11), // 步进电机电流配置
kreg_step_motor_run_to_zero_speed = REG_INDEX(101, 50, 23), // 回零速度
kreg_step_motor_look_zero_edge_speed = REG_INDEX(101, 50, 25), // 找零边缘速度
kreg_step_motor_max_d = REG_INDEX(101, 50, 28), // 最大限制距离
kreg_step_motor_min_d = REG_INDEX(101, 50, 29), // 最小限制距离
kreg_step_motor_in_debug_mode = REG_INDEX(101, 50, 30), // 驱动器处于调试模式
kreg_step_motor_vstart = REG_INDEX(101, 50, 31), // a1起作用的速度
kreg_step_motor_a1 = REG_INDEX(101, 50, 32), //
kreg_step_motor_amax = REG_INDEX(101, 50, 33),
kreg_step_motor_v1 = REG_INDEX(101, 50, 34),
kreg_step_motor_dmax = REG_INDEX(101, 50, 35),
kreg_step_motor_d1 = REG_INDEX(101, 50, 36),
kreg_step_motor_vstop = REG_INDEX(101, 50, 37),
kreg_step_motor_tzerowait = REG_INDEX(101, 50, 38),
/***********************************************************************************************************************
* MINI_STEP_MOTOR *
***********************************************************************************************************************/
kreg_mini_servo_pos = REG_INDEX(102, 0, 1), // 位置
kreg_mini_servo_limit_velocity = REG_INDEX(102, 50, 1), // 限制速度
kreg_mini_servo_limit_torque = REG_INDEX(102, 50, 2), // 限制扭矩
kreg_mini_servo_protective_torque = REG_INDEX(102, 50, 3), // 保护扭矩
} reg_index_t;
typedef struct {
int index;
const char* regname;
} reginfo_t;
const char* regindex2str(int32_t code);
reginfo_t* reg_get_table();
int reg_get_table_size();
} // namespace iflytop