|
|
@ -21,6 +21,7 @@ void StepMotorCtrlModule::initialize(int moduleid, TMC51X0* stepM, ZGPIO iotable |
|
|
|
|
|
|
|
m_state.enable = false; |
|
|
|
m_state.dpos = 0; |
|
|
|
m_state.has_move_to_zero = 0; |
|
|
|
|
|
|
|
step_motor_active_cfg(); |
|
|
|
step_motor_enable(true); |
|
|
@ -86,6 +87,7 @@ int32_t StepMotorCtrlModule::pri_module_xxx_reg(int32_t param_id, bool read, int |
|
|
|
MODULE_COMMON_PROCESS_REG_CB(); |
|
|
|
PROCESS_REG(kreg_step_motor_pos, getnowpos(val), ACTION_NONE); |
|
|
|
PROCESS_REG(kreg_step_motor_is_enable, REG_GET(m_state.enable), ACTION_NONE); |
|
|
|
PROCESS_REG(kreg_step_motor_has_move_zero, REG_GET(m_state.has_move_to_zero), ACTION_NONE); |
|
|
|
|
|
|
|
PROCESS_REG(kreg_step_motor_dpos, REG_GET(m_state.dpos), ACTION_NONE); |
|
|
|
PROCESS_REG(kreg_step_motor_shaft, REG_GET(m_cfg.motor_shaft), REG_SET(m_cfg.motor_shaft)); |
|
|
@ -129,6 +131,10 @@ int32_t StepMotorCtrlModule::step_motor_enable(int32_t enable) { |
|
|
|
m_thread.stop(); |
|
|
|
m_stepM1->enable(enable); |
|
|
|
m_state.enable = enable; |
|
|
|
if (enable == 0 && m_cfg.motor_enable_enc == 0) { |
|
|
|
m_state.has_move_to_zero = 0; |
|
|
|
} |
|
|
|
|
|
|
|
return 0; |
|
|
|
} |
|
|
|
int32_t StepMotorCtrlModule::step_motor_read_pos(int32_t* pos) { return getnowpos(*pos); } |
|
|
@ -474,6 +480,10 @@ int32_t StepMotorCtrlModule::step_motor_easy_move_to(int32_t tox) { |
|
|
|
int32_t ecode = check_befor_run(); |
|
|
|
if (ecode != 0) return ecode; |
|
|
|
|
|
|
|
if (m_state.has_move_to_zero == 0) { |
|
|
|
return err::kstep_motor_not_move_to_zero; |
|
|
|
} |
|
|
|
|
|
|
|
return do_step_motor_easy_move_to(tox); |
|
|
|
} |
|
|
|
int32_t StepMotorCtrlModule::step_motor_easy_move_to_zero() { |
|
|
@ -641,6 +651,7 @@ int32_t StepMotorCtrlModule::do_step_motor_easy_move_to_zero() { |
|
|
|
} while (false); |
|
|
|
after_motor_move(); |
|
|
|
if (moveToZeroSuc) { |
|
|
|
m_state.has_move_to_zero = 1; |
|
|
|
setnowpos(0 + m_cfg.motor_dzero - m_cfg.io_trigger_append_distance); |
|
|
|
} |
|
|
|
}, |
|
|
@ -684,6 +695,9 @@ void StepMotorCtrlModule::checkdpos(int32_t expect_dpos) { |
|
|
|
int32_t StepMotorCtrlModule::step_motor_easy_move_to_zero_point_quick() { |
|
|
|
//
|
|
|
|
ZLOGI(TAG, "m%d motor_move_to_zero_point_quick", m_id); |
|
|
|
if (m_state.has_move_to_zero == 0) { |
|
|
|
return err::kstep_motor_not_move_to_zero; |
|
|
|
} |
|
|
|
m_thread.stop(); |
|
|
|
creg.module_status = 1; |
|
|
|
m_thread.start( |
|
|
|