From 932643bb96050de952adbe4e26cdf23f53ee70c2 Mon Sep 17 00:00:00 2001 From: Joseph Coffland Date: Sun, 11 Sep 2016 08:22:11 -0700 Subject: [PATCH] Fixed target calculation --- src/machine.c | 5 +++-- src/plan/arc.c | 3 ++- src/plan/exec.c | 2 +- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/machine.c b/src/machine.c index ef71fab..b72b60f 100644 --- a/src/machine.c +++ b/src/machine.c @@ -410,7 +410,7 @@ void mach_calc_model_target(float target[], const float values[], if (mach.gm.distance_mode == ABSOLUTE_MODE) target[axis] = mach_get_active_coord_offset(axis) + TO_MILLIMETERS(values[axis]); - else target[axis] += TO_MILLIMETERS(values[axis]); + else target[axis] = mach.position[axis] + TO_MILLIMETERS(values[axis]); } } @@ -432,7 +432,7 @@ void mach_calc_model_target(float target[], const float values[], if (mach.gm.distance_mode == ABSOLUTE_MODE) // sacidu93's fix to Issue #22 target[axis] = tmp + mach_get_active_coord_offset(axis); - else target[axis] += tmp; + else target[axis] = mach.position[axis] + tmp; } } @@ -673,6 +673,7 @@ void mach_resume_origin_offsets() { // Free Space Motion (4.3.4) static stat_t _feed(float values[], bool flags[]) { float target[AXES]; + copy_vector(target, mach.position); mach_calc_model_target(target, values, flags); // test soft limits diff --git a/src/plan/arc.c b/src/plan/arc.c index 8d8666b..d7eaf39 100644 --- a/src/plan/arc.c +++ b/src/plan/arc.c @@ -433,8 +433,9 @@ stat_t mach_arc_feed(float values[], bool values_f[], // arc endpoints } else if (full_circle) rotations = 1; // default to 1 for full circles // Set model target - mach_calc_model_target(arc.target, values, values_f); const float *position = mach_get_position(); + copy_vector(arc.target, position); + mach_calc_model_target(arc.target, values, values_f); // in radius mode it's an error for start == end if (radius_f && fp_EQ(position[AXIS_X], arc.target[AXIS_X]) && diff --git a/src/plan/exec.c b/src/plan/exec.c index 612eb4d..e55a708 100644 --- a/src/plan/exec.c +++ b/src/plan/exec.c @@ -247,7 +247,7 @@ static stat_t _exec_aline_section(float length, float vin, float vout) { // len / avg. velocity float move_time = 2 * length / (vin + vout); - ex.segments = ceil(usec(move_time) / NOM_SEGMENT_USEC); + ex.segments = ceil(move_time * MICROSECONDS_PER_MINUTE / NOM_SEGMENT_USEC); ex.segment_time = move_time / ex.segments; ex.segment_count = (uint32_t)ex.segments; -- 2.27.0