diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 83f98ab74..a46c94ed6 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -9574,7 +9574,7 @@ void prepare_move(uint16_t start_segment_idx) void prepare_arc_move(bool isclockwise, uint16_t start_segment_idx) { float r = hypot(offset[X_AXIS], offset[Y_AXIS]); // Compute arc radius for mc_arc // Trace the arc - mc_arc(current_position, destination, offset, feedrate * feedmultiply / 60 / 100.0, r, isclockwise, start_segment_idx); + mc_arc(current_position, destination, offset, (feedrate * feedmultiply) / 6000.f, r, isclockwise, start_segment_idx); // As far as the parser is concerned, the position is now == target. In reality the // motion control system might still be processing the action and the real tool position // in any intermediate location. diff --git a/Firmware/motion_control.cpp b/Firmware/motion_control.cpp index 142d2efa8..16ed62da2 100644 --- a/Firmware/motion_control.cpp +++ b/Firmware/motion_control.cpp @@ -56,7 +56,7 @@ void mc_arc(const float* position, float* target, const float* offset, float fee if (cs.arc_segments_per_sec > 0) { // 20200417 - FormerLurker - Implement MIN_ARC_SEGMENTS if it is defined - from Marlin 2.0 implementation - float mm_per_arc_segment_sec = (feed_rate / 60.0f) * (1.0f / cs.arc_segments_per_sec); + float mm_per_arc_segment_sec = feed_rate / (60.f * float(cs.arc_segments_per_sec)); if (mm_per_arc_segment_sec < mm_per_arc_segment) mm_per_arc_segment = mm_per_arc_segment_sec; }