diff --git a/tmcdriver/tmc51x0/tmc51x0.cpp b/tmcdriver/tmc51x0/tmc51x0.cpp index 1e81a9d..4ce5e15 100644 --- a/tmcdriver/tmc51x0/tmc51x0.cpp +++ b/tmcdriver/tmc51x0/tmc51x0.cpp @@ -30,7 +30,7 @@ static const uint8_t tmc5130_defaultRegisterAccess[TMC5130_REGISTER_COUNT] = { #endif /*********************************************************************************************************************** - * 工具? * + * 工具�? * ***********************************************************************************************************************/ #define FIELD_SET(data, mask, shift, value) (data = (((data) & (~(mask))) | (((value) << (shift)) & (mask)))) @@ -107,7 +107,7 @@ void TMC51X0::writeField(uint8_t add, uint32_t mask, uint32_t shift, uint32_t va int32_t TMC51X0::readInt(uint8_t address) { /** * @WARNING: - * 这里没有判断寄存器是否可读,有些寄存器是不可读所以,所以可能?回来的数值和写入数值是不相等的 + * 这里没有判断寄存器是否可读,有些寄存器是不可读所以,所以可能�?�回来的数值和写入数值是不相等的 */ address = TMC51x0_ADDRESS(address); @@ -176,8 +176,17 @@ int32_t TMC51X0::to_user_vel(int32_t vel) { // ***********************************************************************************************************************/ void TMC51X0::stop() { zlock_guard lkg(m_mutex); - - rotate(0); + int mode = readInt(TMC5130_RAMPMODE); + if (mode == TMC5130_MODE_POSITION) { + // writeInt(TMC5130_RAMPMODE, TMC5130_MODE_POSITION); + writeInt(TMC5130_VMAX, 0); + while (getVACTUAL() > 5) { + osDelay(2); + } + writeInt(TMC5130_XTARGET, readInt(TMC5130_XACTUAL)); + } else { + rotate(0); + } } void TMC51X0::rotate(int32_t velocity) { zlock_guard lkg(m_mutex);