|
@ -37,6 +37,11 @@ void StepMotorCtrlModule::initialize(int moduleid, IStepperMotor* stepM, ZGPIO i |
|
|
auto tmc4361status = tmc4361motor->getTMC4361AMotorStatus(); |
|
|
auto tmc4361status = tmc4361motor->getTMC4361AMotorStatus(); |
|
|
auto tmc2160Status = tmc4361motor->getTMC2160MotorDriverStatus(); |
|
|
auto tmc2160Status = tmc4361motor->getTMC2160MotorDriverStatus(); |
|
|
auto tmc2160State = tmc4361motor->getTMC2160MotorGstate(); |
|
|
auto tmc2160State = tmc4361motor->getTMC2160MotorGstate(); |
|
|
|
|
|
|
|
|
|
|
|
dump(tmc4361state); |
|
|
|
|
|
dump(tmc4361status); |
|
|
|
|
|
dump(tmc2160Status); |
|
|
|
|
|
dump(tmc2160State); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
void StepMotorCtrlModule::create_default_cfg(config_t& cfg) { |
|
|
void StepMotorCtrlModule::create_default_cfg(config_t& cfg) { |
|
@ -104,6 +109,7 @@ int32_t StepMotorCtrlModule::pri_module_xxx_reg(int32_t param_id, bool read, int |
|
|
PROCESS_REG(kreg_step_motor_max_d, REG_GET(m_cfg.max_d), REG_SET(m_cfg.max_d)); |
|
|
PROCESS_REG(kreg_step_motor_max_d, REG_GET(m_cfg.max_d), REG_SET(m_cfg.max_d)); |
|
|
PROCESS_REG(kreg_step_motor_min_d, REG_GET(m_cfg.min_d), REG_SET(m_cfg.min_d)); |
|
|
PROCESS_REG(kreg_step_motor_min_d, REG_GET(m_cfg.min_d), REG_SET(m_cfg.min_d)); |
|
|
PROCESS_REG(kreg_step_motor_iglobalscaler, REG_GET(m_cfg.stepmotor_iglobalscaler), REG_SET(m_cfg.stepmotor_iglobalscaler)); |
|
|
PROCESS_REG(kreg_step_motor_iglobalscaler, REG_GET(m_cfg.stepmotor_iglobalscaler), REG_SET(m_cfg.stepmotor_iglobalscaler)); |
|
|
|
|
|
PROCESS_REG(kreg_step_motor_in_debug_mode, REG_GET(m_state.debugmode), REG_SET(m_state.debugmode)); |
|
|
|
|
|
|
|
|
default: |
|
|
default: |
|
|
return err::kmodule_not_find_config_index; |
|
|
return err::kmodule_not_find_config_index; |
|
@ -246,67 +252,111 @@ void StepMotorCtrlModule::after_motor_move() { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
void StepMotorCtrlModule::dumpTMC5130Status(TMC51X0::DevStatusReg_t* status) { |
|
|
void StepMotorCtrlModule::dumpTMC5130Status(TMC51X0::DevStatusReg_t* status) { |
|
|
ZLOGE(TAG, "sg_result: %d", status->sg_result); |
|
|
|
|
|
ZLOGE(TAG, "fsactive: %d", status->fsactive); |
|
|
|
|
|
ZLOGE(TAG, "cs_actual: %d", status->cs_actual); |
|
|
|
|
|
ZLOGE(TAG, "stallguard: %d", status->stallguard); |
|
|
|
|
|
ZLOGE(TAG, "ot: %d", status->ot); |
|
|
|
|
|
ZLOGE(TAG, "otpw: %d", status->otpw); |
|
|
|
|
|
ZLOGE(TAG, "s2ga: %d", status->s2ga); |
|
|
|
|
|
ZLOGE(TAG, "s2gb: %d", status->s2gb); |
|
|
|
|
|
ZLOGE(TAG, "ola: %d", status->ola); |
|
|
|
|
|
ZLOGE(TAG, "olb: %d", status->olb); |
|
|
|
|
|
ZLOGE(TAG, "stst: %d", status->stst); |
|
|
|
|
|
|
|
|
ZLOGI(TAG, "------------ dump TMC51X0 DevStatusReg_t ---------------"); |
|
|
|
|
|
ZLOGI(TAG, "sg_result: %d", status->sg_result); |
|
|
|
|
|
ZLOGI(TAG, "fsactive: %d", status->fsactive); |
|
|
|
|
|
ZLOGI(TAG, "cs_actual: %d", status->cs_actual); |
|
|
|
|
|
ZLOGI(TAG, "stallguard: %d", status->stallguard); |
|
|
|
|
|
ZLOGI(TAG, "ot: %d", status->ot); |
|
|
|
|
|
ZLOGI(TAG, "otpw: %d", status->otpw); |
|
|
|
|
|
ZLOGI(TAG, "s2ga: %d", status->s2ga); |
|
|
|
|
|
ZLOGI(TAG, "s2gb: %d", status->s2gb); |
|
|
|
|
|
ZLOGI(TAG, "ola: %d", status->ola); |
|
|
|
|
|
ZLOGI(TAG, "olb: %d", status->olb); |
|
|
|
|
|
ZLOGI(TAG, "stst: %d", status->stst); |
|
|
} |
|
|
} |
|
|
void StepMotorCtrlModule::dump(TMC2160MotorDriverStatus_t val) { |
|
|
void StepMotorCtrlModule::dump(TMC2160MotorDriverStatus_t val) { |
|
|
ZLOGE(TAG, "sg_result: %d", val.sg_result); |
|
|
|
|
|
ZLOGE(TAG, "s2vsa: %d", val.s2vsa); |
|
|
|
|
|
ZLOGE(TAG, "s2vsb: %d", val.s2vsb); |
|
|
|
|
|
ZLOGE(TAG, "stealth: %d", val.stealth); |
|
|
|
|
|
ZLOGE(TAG, "fsactive: %d", val.fsactive); |
|
|
|
|
|
ZLOGE(TAG, "cs_actual: %d", val.cs_actual); |
|
|
|
|
|
ZLOGE(TAG, "reserved2: %d", val.reserved2); |
|
|
|
|
|
ZLOGE(TAG, "stallguard: %d", val.stallguard); |
|
|
|
|
|
ZLOGE(TAG, "ot: %d", val.ot); |
|
|
|
|
|
ZLOGE(TAG, "otpw: %d", val.otpw); |
|
|
|
|
|
ZLOGE(TAG, "s2ga: %d", val.s2ga); |
|
|
|
|
|
ZLOGE(TAG, "s2gb: %d", val.s2gb); |
|
|
|
|
|
ZLOGE(TAG, "ola: %d", val.ola); |
|
|
|
|
|
ZLOGE(TAG, "olb: %d", val.olb); |
|
|
|
|
|
ZLOGE(TAG, "stst: %d", val.stst); |
|
|
|
|
|
|
|
|
ZLOGI(TAG, "------------ dump TMC2160MotorDriverStatus_t ---------------"); |
|
|
|
|
|
ZLOGI(TAG, "sg_result: %d", val.sg_result); |
|
|
|
|
|
ZLOGI(TAG, "s2vsa: %d", val.s2vsa); |
|
|
|
|
|
ZLOGI(TAG, "s2vsb: %d", val.s2vsb); |
|
|
|
|
|
ZLOGI(TAG, "stealth: %d", val.stealth); |
|
|
|
|
|
ZLOGI(TAG, "fsactive: %d", val.fsactive); |
|
|
|
|
|
ZLOGI(TAG, "cs_actual: %d", val.cs_actual); |
|
|
|
|
|
ZLOGI(TAG, "reserved2: %d", val.reserved2); |
|
|
|
|
|
ZLOGI(TAG, "stallguard: %d", val.stallguard); |
|
|
|
|
|
ZLOGI(TAG, "ot: %d", val.ot); |
|
|
|
|
|
ZLOGI(TAG, "otpw: %d", val.otpw); |
|
|
|
|
|
ZLOGI(TAG, "s2ga: %d", val.s2ga); |
|
|
|
|
|
ZLOGI(TAG, "s2gb: %d", val.s2gb); |
|
|
|
|
|
ZLOGI(TAG, "ola: %d", val.ola); |
|
|
|
|
|
ZLOGI(TAG, "olb: %d", val.olb); |
|
|
|
|
|
ZLOGI(TAG, "stst: %d", val.stst); |
|
|
} |
|
|
} |
|
|
void StepMotorCtrlModule::dump(TMC4361AMotorStatus_t val) { |
|
|
void StepMotorCtrlModule::dump(TMC4361AMotorStatus_t val) { |
|
|
|
|
|
|
|
|
ZLOGE(TAG, "TARGET_REACHED_F: %d", val.TARGET_REACHED_F); |
|
|
|
|
|
ZLOGE(TAG, "POS_COMP_REACHED_F: %d", val.POS_COMP_REACHED_F); |
|
|
|
|
|
ZLOGE(TAG, "VEL_REACHED_F: %d", val.VEL_REACHED_F); |
|
|
|
|
|
ZLOGE(TAG, "VEL_STATE_F: %d", val.VEL_STATE_F); |
|
|
|
|
|
ZLOGE(TAG, "RAMP_STATE_F: %d", val.RAMP_STATE_F); |
|
|
|
|
|
ZLOGE(TAG, "STOPL_ACTIVE_F: %d", val.STOPL_ACTIVE_F); |
|
|
|
|
|
ZLOGE(TAG, "STOPR_ACTIVE_F: %d", val.STOPR_ACTIVE_F); |
|
|
|
|
|
ZLOGE(TAG, "VSTOPL_ACTIVE_F: %d", val.VSTOPL_ACTIVE_F); |
|
|
|
|
|
ZLOGE(TAG, "VSTOPR_ACTIVE_F: %d", val.VSTOPR_ACTIVE_F); |
|
|
|
|
|
ZLOGE(TAG, "ACTIVE_STALL_F: %d", val.ACTIVE_STALL_F); |
|
|
|
|
|
ZLOGE(TAG, "HOME_ERROR_F: %d", val.HOME_ERROR_F); |
|
|
|
|
|
ZLOGE(TAG, "FS_ACTIVE_F: %d", val.FS_ACTIVE_F); |
|
|
|
|
|
ZLOGE(TAG, "ENC_FAIL_F: %d", val.ENC_FAIL_F); |
|
|
|
|
|
ZLOGE(TAG, "N_ACTIVE_F: %d", val.N_ACTIVE_F); |
|
|
|
|
|
ZLOGE(TAG, "ENC_LATCH_F: %d", val.ENC_LATCH_F); |
|
|
|
|
|
ZLOGE(TAG, "MULTI_CYCLE_FAIL_F: %d", val.MULTI_CYCLE_FAIL_F); |
|
|
|
|
|
ZLOGE(TAG, "___: %d", val.___); |
|
|
|
|
|
ZLOGE(TAG, "CL_FIT_F: %d", val.CL_FIT_F); |
|
|
|
|
|
ZLOGE(TAG, "SERIAL_ENC_FLAGS: %d", val.SERIAL_ENC_FLAGS); |
|
|
|
|
|
ZLOGE(TAG, "SG: %d", val.SG); |
|
|
|
|
|
ZLOGE(TAG, "OT: %d", val.OT); |
|
|
|
|
|
ZLOGE(TAG, "OTPW: %d", val.OTPW); |
|
|
|
|
|
ZLOGE(TAG, "S2GA: %d", val.S2GA); |
|
|
|
|
|
ZLOGE(TAG, "S2GB: %d", val.S2GB); |
|
|
|
|
|
ZLOGE(TAG, "OLA: %d", val.OLA); |
|
|
|
|
|
ZLOGE(TAG, "OLB: %d", val.OLB); |
|
|
|
|
|
ZLOGE(TAG, "STST: %d", val.STST); |
|
|
|
|
|
} |
|
|
|
|
|
void StepMotorCtrlModule::dump(TMC2160MotorGstate_t val) {} |
|
|
|
|
|
void StepMotorCtrlModule::dump(TMC4361AMotorEventState_t val) {} |
|
|
|
|
|
|
|
|
ZLOGI(TAG, "------------ dump TMC4361AMotorStatus_t ---------------"); |
|
|
|
|
|
|
|
|
|
|
|
ZLOGI(TAG, "TARGET_REACHED_F: %d", val.TARGET_REACHED_F); |
|
|
|
|
|
ZLOGI(TAG, "POS_COMP_REACHED_F: %d", val.POS_COMP_REACHED_F); |
|
|
|
|
|
ZLOGI(TAG, "VEL_REACHED_F: %d", val.VEL_REACHED_F); |
|
|
|
|
|
ZLOGI(TAG, "VEL_STATE_F: %d", val.VEL_STATE_F); |
|
|
|
|
|
ZLOGI(TAG, "RAMP_STATE_F: %d", val.RAMP_STATE_F); |
|
|
|
|
|
ZLOGI(TAG, "STOPL_ACTIVE_F: %d", val.STOPL_ACTIVE_F); |
|
|
|
|
|
ZLOGI(TAG, "STOPR_ACTIVE_F: %d", val.STOPR_ACTIVE_F); |
|
|
|
|
|
ZLOGI(TAG, "VSTOPL_ACTIVE_F: %d", val.VSTOPL_ACTIVE_F); |
|
|
|
|
|
ZLOGI(TAG, "VSTOPR_ACTIVE_F: %d", val.VSTOPR_ACTIVE_F); |
|
|
|
|
|
ZLOGI(TAG, "ACTIVE_STALL_F: %d", val.ACTIVE_STALL_F); |
|
|
|
|
|
ZLOGI(TAG, "HOME_ERROR_F: %d", val.HOME_ERROR_F); |
|
|
|
|
|
ZLOGI(TAG, "FS_ACTIVE_F: %d", val.FS_ACTIVE_F); |
|
|
|
|
|
ZLOGI(TAG, "ENC_FAIL_F: %d", val.ENC_FAIL_F); |
|
|
|
|
|
ZLOGI(TAG, "N_ACTIVE_F: %d", val.N_ACTIVE_F); |
|
|
|
|
|
ZLOGI(TAG, "ENC_LATCH_F: %d", val.ENC_LATCH_F); |
|
|
|
|
|
ZLOGI(TAG, "MULTI_CYCLE_FAIL_F: %d", val.MULTI_CYCLE_FAIL_F); |
|
|
|
|
|
ZLOGI(TAG, "___: %d", val.___); |
|
|
|
|
|
ZLOGI(TAG, "CL_FIT_F: %d", val.CL_FIT_F); |
|
|
|
|
|
ZLOGI(TAG, "SERIAL_ENC_FLAGS: %d", val.SERIAL_ENC_FLAGS); |
|
|
|
|
|
ZLOGI(TAG, "SG: %d", val.SG); |
|
|
|
|
|
ZLOGI(TAG, "OT: %d", val.OT); |
|
|
|
|
|
ZLOGI(TAG, "OTPW: %d", val.OTPW); |
|
|
|
|
|
ZLOGI(TAG, "S2GA: %d", val.S2GA); |
|
|
|
|
|
ZLOGI(TAG, "S2GB: %d", val.S2GB); |
|
|
|
|
|
ZLOGI(TAG, "OLA: %d", val.OLA); |
|
|
|
|
|
ZLOGI(TAG, "OLB: %d", val.OLB); |
|
|
|
|
|
ZLOGI(TAG, "STST: %d", val.STST); |
|
|
|
|
|
} |
|
|
|
|
|
void StepMotorCtrlModule::dump(TMC2160MotorGstate_t val) { |
|
|
|
|
|
ZLOGI(TAG, "------------ dump TMC2160MotorGstate_t ---------------"); |
|
|
|
|
|
|
|
|
|
|
|
ZLOGI(TAG, "reset: %d", val.reset); |
|
|
|
|
|
ZLOGI(TAG, "drv_err: %d", val.drv_err); |
|
|
|
|
|
ZLOGI(TAG, "uv_cp: %d", val.uv_cp); |
|
|
|
|
|
} |
|
|
|
|
|
void StepMotorCtrlModule::dump(TMC4361AMotorEventState_t val) { |
|
|
|
|
|
ZLOGI(TAG, "------------ dump TMC4361AMotorEventState_t ---------------"); |
|
|
|
|
|
|
|
|
|
|
|
ZLOGI(TAG, "TARGET_REACHED : %d", val.TARGET_REACHED); |
|
|
|
|
|
ZLOGI(TAG, "POS_COMP_REACHED : %d", val.POS_COMP_REACHED); |
|
|
|
|
|
ZLOGI(TAG, "VEL_REACHED : %d", val.VEL_REACHED); |
|
|
|
|
|
ZLOGI(TAG, "VEL_STATE_EQ_0 : %d", val.VEL_STATE_EQ_0); |
|
|
|
|
|
ZLOGI(TAG, "VEL_STATE_EQ_1 : %d", val.VEL_STATE_EQ_1); |
|
|
|
|
|
ZLOGI(TAG, "VEL_STATE_EQ_2 : %d", val.VEL_STATE_EQ_2); |
|
|
|
|
|
ZLOGI(TAG, "RAMP_STATE_EQ_0 : %d", val.RAMP_STATE_EQ_0); |
|
|
|
|
|
ZLOGI(TAG, "RAMP_STATE_EQ_1 : %d", val.RAMP_STATE_EQ_1); |
|
|
|
|
|
ZLOGI(TAG, "RAMP_STATE_EQ_2 : %d", val.RAMP_STATE_EQ_2); |
|
|
|
|
|
ZLOGI(TAG, "MAX_PHASE_TRAP : %d", val.MAX_PHASE_TRAP); |
|
|
|
|
|
ZLOGI(TAG, "FROZEN : %d", val.FROZEN); |
|
|
|
|
|
ZLOGI(TAG, "STOPL : %d", val.STOPL); |
|
|
|
|
|
ZLOGI(TAG, "STOPR : %d", val.STOPR); |
|
|
|
|
|
ZLOGI(TAG, "VSTOPL_ACTIVE : %d", val.VSTOPL_ACTIVE); |
|
|
|
|
|
ZLOGI(TAG, "VSTOPR_ACTIVE : %d", val.VSTOPR_ACTIVE); |
|
|
|
|
|
ZLOGI(TAG, "HOME_ERROR : %d", val.HOME_ERROR); |
|
|
|
|
|
ZLOGI(TAG, "XLATCH_DONE : %d", val.XLATCH_DONE); |
|
|
|
|
|
ZLOGI(TAG, "FS_ACTIVE : %d", val.FS_ACTIVE); |
|
|
|
|
|
ZLOGI(TAG, "ENC_FAIL : %d", val.ENC_FAIL); |
|
|
|
|
|
ZLOGI(TAG, "N_ACTIVE : %d", val.N_ACTIVE); |
|
|
|
|
|
ZLOGI(TAG, "ENC_DONE : %d", val.ENC_DONE); |
|
|
|
|
|
ZLOGI(TAG, "SER_ENC_DATA_FAIL : %d", val.SER_ENC_DATA_FAIL); |
|
|
|
|
|
ZLOGI(TAG, "___ : %d", val.___); |
|
|
|
|
|
ZLOGI(TAG, "SER_DATA_DONE : %d", val.SER_DATA_DONE); |
|
|
|
|
|
ZLOGI(TAG, "SERIAL_ENC_Flags : %d", val.SERIAL_ENC_Flags); |
|
|
|
|
|
ZLOGI(TAG, "COVER_DONE : %d", val.COVER_DONE); |
|
|
|
|
|
ZLOGI(TAG, "ENC_VEL0 : %d", val.ENC_VEL0); |
|
|
|
|
|
ZLOGI(TAG, "CL_MAX : %d", val.CL_MAX); |
|
|
|
|
|
ZLOGI(TAG, "CL_FIT : %d", val.CL_FIT); |
|
|
|
|
|
ZLOGI(TAG, "STOP_ON_STALL : %d", val.STOP_ON_STALL); |
|
|
|
|
|
ZLOGI(TAG, "MOTOR_EV : %d", val.MOTOR_EV); |
|
|
|
|
|
ZLOGI(TAG, "RST_EV : %d", val.RST_EV); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
void StepMotorCtrlModule::setErrorFlag(int32_t ecode, uint32_t motorStatue) { |
|
|
void StepMotorCtrlModule::setErrorFlag(int32_t ecode, uint32_t motorStatue) { |
|
|
creg.module_errorcode = ecode; |
|
|
creg.module_errorcode = ecode; |
|
@ -315,6 +365,11 @@ void StepMotorCtrlModule::setErrorFlag(int32_t ecode, uint32_t motorStatue) { |
|
|
|
|
|
|
|
|
bool StepMotorCtrlModule::check_when_run() { |
|
|
bool StepMotorCtrlModule::check_when_run() { |
|
|
//
|
|
|
//
|
|
|
|
|
|
|
|
|
|
|
|
if (m_state.debugmode) { |
|
|
|
|
|
return true; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
TMC51X0* tmc5130 = dynamic_cast<TMC51X0*>(m_stepM1); |
|
|
TMC51X0* tmc5130 = dynamic_cast<TMC51X0*>(m_stepM1); |
|
|
if (tmc5130) { |
|
|
if (tmc5130) { |
|
|
auto state = tmc5130->getGState(); |
|
|
auto state = tmc5130->getGState(); |
|
|