From 7f39f076797e4d2f13aa13f0b74fd994ae65ecfc Mon Sep 17 00:00:00 2001 From: "D.R.racer" Date: Mon, 26 Jul 2021 08:56:24 +0200 Subject: [PATCH] Avoid repeated Enable/Disable on an axis if already in desired state --- src/modules/motion.cpp | 16 +++++++++------- src/modules/motion.h | 1 + 2 files changed, 10 insertions(+), 7 deletions(-) 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 }; }