diff --git a/Marlin/src/module/motion.cpp b/Marlin/src/module/motion.cpp index 045a088dfe..c026712c68 100644 --- a/Marlin/src/module/motion.cpp +++ b/Marlin/src/module/motion.cpp @@ -594,6 +594,14 @@ float soft_endstop_min[XYZ] = { X_MIN_BED, Y_MIN_BED, Z_MIN_POS }, // Calculate and execute the segments for (uint16_t s = segments + 1; --s;) { + + static millis_t next_idle_ms = millis() + 200UL; + thermalManager.manage_heater(); // This returns immediately if not really needed. + if (ELAPSED(millis(), next_idle_ms)) { + next_idle_ms = millis() + 200UL; + idle(); + } + LOOP_XYZE(i) raw[i] += segment_distance[i]; #if ENABLED(DELTA) DELTA_RAW_IK(); // Delta can inline its kinematics