diff --git a/src/modules/motion.cpp b/src/modules/motion.cpp index 8500b06..50c5a4e 100644 --- a/src/modules/motion.cpp +++ b/src/modules/motion.cpp @@ -15,14 +15,16 @@ void Motion::InitAxis(Axis axis) { } void Motion::SetEnabled(Axis axis, bool enabled) { - axisData[axis].drv.SetEnabled(axisParams[axis].params, enabled); - axisData[axis].enabled = enabled; + if (enabled != axisData[axis].enabled) { + axisData[axis].drv.SetEnabled(axisParams[axis].params, enabled); + axisData[axis].enabled = enabled; - if (!axisData[axis].enabled) { - // axis is powered off, clear internal StallGuard counters - axisData[axis].stall_trig = false; - axisData[axis].stall_cnt = 0; - } + if (!axisData[axis].enabled) { + // axis is powered off, clear internal StallGuard counters + axisData[axis].stall_trig = false; + axisData[axis].stall_cnt = 0; + } + } // else skip unnecessary Enable/Disable operations on an axis if already in the desired state } void Motion::SetMode(Axis axis, MotorMode mode) { diff --git a/src/modules/motion.h b/src/modules/motion.h index a577dc6..1122f8e 100644 --- a/src/modules/motion.h +++ b/src/modules/motion.h @@ -191,6 +191,7 @@ private: axisParams[axis].jerk, axisParams[axis].accel, }, + .enabled = false }; }