diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index f04ca2eb99..1e70d78f04 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -448,11 +448,11 @@ // @section extras // Arc interpretation settings: -#define ARC_SUPPORT // Disabling this saves ~2660bytes +#define ARC_SUPPORT // Disabling this saves ~2738 bytes #define MM_PER_ARC_SEGMENT 1 #define N_ARC_CORRECTION 25 -// Support for G5 with XYZE destination and IJPQ offsets +// Support for G5 with XYZE destination and IJPQ offsets. Needs ~2666 bytes //#define BEZIER_CURVE_SUPPORT const unsigned int dropsegments = 5; //everything with less than this number of steps will be ignored as move and joined with the next movement diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp index 1f15c0980a..aa03a16c3d 100644 --- a/Marlin/Marlin_main.cpp +++ b/Marlin/Marlin_main.cpp @@ -7604,13 +7604,14 @@ void prepare_move() { float feed_rate = feedrate * feedrate_multiplier / 60 / 100.0; - millis_t previous_ms = millis(); + millis_t next_ping_ms = millis() + 200UL; for (i = 1; i < segments; i++) { // Iterate (segments-1) times + thermalManager.manage_heater(); millis_t now = millis(); - if (now - previous_ms > 200UL) { - previous_ms = now; + if (ELAPSED(now, next_ping_ms)) { + next_ping_ms = now + 200UL; idle(); } diff --git a/Marlin/planner_bezier.cpp b/Marlin/planner_bezier.cpp index b72478d75e..ad80c6b198 100644 --- a/Marlin/planner_bezier.cpp +++ b/Marlin/planner_bezier.cpp @@ -118,15 +118,15 @@ void cubic_b_spline(const float position[NUM_AXIS], const float target[NUM_AXIS] bez_target[Y_AXIS] = position[Y_AXIS]; float step = MAX_STEP; - uint8_t idle_counter = 0; millis_t next_ping_ms = millis() + 200UL; while (t < 1.0) { + thermalManager.manage_heater(); millis_t now = millis(); if (ELAPSED(now, next_ping_ms)) { next_ping_ms = now + 200UL; - (idle_counter++ & 0x03) ? thermalManager.manage_heater() : idle(); + idle(); } // First try to reduce the step in order to make it sufficiently