mirror of
https://github.com/MarlinFirmware/Marlin.git
synced 2024-11-23 12:04:19 +00:00
🎨 steps_to_mm => mm_per_step (#22847)
This commit is contained in:
parent
064f91e9b0
commit
604a01cd1a
@ -173,7 +173,7 @@ void I2CPositionEncoder::update() {
|
||||
LOOP_L_N(i, I2CPE_ERR_PRST_ARRAY_SIZE) sumP += errPrst[i];
|
||||
const int32_t errorP = int32_t(sumP * RECIPROCAL(I2CPE_ERR_PRST_ARRAY_SIZE));
|
||||
SERIAL_CHAR(axis_codes[encoderAxis]);
|
||||
SERIAL_ECHOLNPGM(" : CORRECT ERR ", errorP * planner.steps_to_mm[encoderAxis], "mm");
|
||||
SERIAL_ECHOLNPGM(" : CORRECT ERR ", errorP * planner.mm_per_step[encoderAxis], "mm");
|
||||
babystep.add_steps(encoderAxis, -LROUND(errorP));
|
||||
errPrstIdx = 0;
|
||||
}
|
||||
|
@ -373,7 +373,7 @@ class FilamentSensorBase {
|
||||
// Only trigger on extrusion with XYZ movement to allow filament change and retract/recover.
|
||||
const uint8_t e = b->extruder;
|
||||
const int32_t steps = b->steps.e;
|
||||
runout_mm_countdown[e] -= (TEST(b->direction_bits, E_AXIS) ? -steps : steps) * planner.steps_to_mm[E_AXIS_N(e)];
|
||||
runout_mm_countdown[e] -= (TEST(b->direction_bits, E_AXIS) ? -steps : steps) * planner.mm_per_step[E_AXIS_N(e)];
|
||||
}
|
||||
}
|
||||
};
|
||||
|
@ -76,7 +76,7 @@ void GcodeSuite::M92() {
|
||||
if (parser.seen('H') || wanted) {
|
||||
const uint16_t argH = parser.ushortval('H'),
|
||||
micro_steps = argH ?: Z_MICROSTEPS;
|
||||
const float z_full_step_mm = micro_steps * planner.steps_to_mm[Z_AXIS];
|
||||
const float z_full_step_mm = micro_steps * planner.mm_per_step[Z_AXIS];
|
||||
SERIAL_ECHO_START();
|
||||
SERIAL_ECHOPGM("{ micro_steps:", micro_steps, ", z_full_step_mm:", z_full_step_mm);
|
||||
if (wanted) {
|
||||
|
@ -755,7 +755,7 @@ namespace ExtUI {
|
||||
* what nozzle is printing.
|
||||
*/
|
||||
void smartAdjustAxis_steps(const int16_t steps, const axis_t axis, bool linked_nozzles) {
|
||||
const float mm = steps * planner.steps_to_mm[axis];
|
||||
const float mm = steps * planner.mm_per_step[axis];
|
||||
UNUSED(mm);
|
||||
|
||||
if (!babystepAxis_steps(steps, axis)) return;
|
||||
@ -791,12 +791,12 @@ namespace ExtUI {
|
||||
* steps that is at least mm long.
|
||||
*/
|
||||
int16_t mmToWholeSteps(const_float_t mm, const axis_t axis) {
|
||||
const float steps = mm / planner.steps_to_mm[axis];
|
||||
const float steps = mm / planner.mm_per_step[axis];
|
||||
return steps > 0 ? CEIL(steps) : FLOOR(steps);
|
||||
}
|
||||
|
||||
float mmFromWholeSteps(int16_t steps, const axis_t axis) {
|
||||
return steps * planner.steps_to_mm[axis];
|
||||
return steps * planner.mm_per_step[axis];
|
||||
}
|
||||
|
||||
#endif // BABYSTEPPING
|
||||
@ -806,7 +806,7 @@ namespace ExtUI {
|
||||
#if HAS_BED_PROBE
|
||||
+ probe.offset.z
|
||||
#elif ENABLED(BABYSTEP_DISPLAY_TOTAL)
|
||||
+ planner.steps_to_mm[Z_AXIS] * babystep.axis_total[BS_AXIS_IND(Z_AXIS)]
|
||||
+ planner.mm_per_step[Z_AXIS] * babystep.axis_total[BS_AXIS_IND(Z_AXIS)]
|
||||
#endif
|
||||
);
|
||||
}
|
||||
|
@ -315,7 +315,7 @@ void scroll_screen(const uint8_t limit, const bool is_menu) {
|
||||
const int16_t babystep_increment = int16_t(ui.encoderPosition) * (BABYSTEP_SIZE_Z);
|
||||
ui.encoderPosition = 0;
|
||||
|
||||
const float diff = planner.steps_to_mm[Z_AXIS] * babystep_increment,
|
||||
const float diff = planner.mm_per_step[Z_AXIS] * babystep_increment,
|
||||
new_probe_offset = probe.offset.z + diff,
|
||||
new_offs = TERN(BABYSTEP_HOTEND_Z_OFFSET
|
||||
, do_probe ? new_probe_offset : hotend_offset[active_extruder].z - diff
|
||||
|
@ -532,7 +532,7 @@ void menu_advanced_steps_per_mm() {
|
||||
if (e == active_extruder)
|
||||
planner.refresh_positioning();
|
||||
else
|
||||
planner.steps_to_mm[E_AXIS_N(e)] = 1.0f / planner.settings.axis_steps_per_mm[E_AXIS_N(e)];
|
||||
planner.mm_per_step[E_AXIS_N(e)] = 1.0f / planner.settings.axis_steps_per_mm[E_AXIS_N(e)];
|
||||
});
|
||||
#elif E_STEPPERS
|
||||
EDIT_ITEM_FAST(float51, MSG_E_STEPS, &planner.settings.axis_steps_per_mm[E_AXIS], 5, 9999, []{ planner.refresh_positioning(); });
|
||||
|
@ -65,8 +65,8 @@
|
||||
babystep.add_steps(axis, steps);
|
||||
}
|
||||
if (ui.should_draw()) {
|
||||
const float spm = planner.steps_to_mm[axis];
|
||||
MenuEditItemBase::draw_edit_screen(msg, BABYSTEP_TO_STR(spm * babystep.accum));
|
||||
const float mps = planner.mm_per_step[axis];
|
||||
MenuEditItemBase::draw_edit_screen(msg, BABYSTEP_TO_STR(mps * babystep.accum));
|
||||
#if ENABLED(BABYSTEP_DISPLAY_TOTAL)
|
||||
const bool in_view = TERN1(HAS_MARLINUI_U8GLIB, PAGE_CONTAINS(LCD_PIXEL_HEIGHT - MENU_FONT_HEIGHT, LCD_PIXEL_HEIGHT - 1));
|
||||
if (in_view) {
|
||||
@ -81,7 +81,7 @@
|
||||
lcd_put_u8str_P(GET_TEXT(MSG_BABYSTEP_TOTAL));
|
||||
lcd_put_wchar(':');
|
||||
#endif
|
||||
lcd_put_u8str(BABYSTEP_TO_STR(spm * babystep.axis_total[BS_TOTAL_IND(axis)]));
|
||||
lcd_put_u8str(BABYSTEP_TO_STR(mps * babystep.axis_total[BS_TOTAL_IND(axis)]));
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
@ -667,7 +667,7 @@ static void moveAxis(const AxisEnum axis, const int8_t direction) {
|
||||
#if ENABLED(BABYSTEP_ZPROBE_OFFSET)
|
||||
const int16_t babystep_increment = direction * BABYSTEP_SIZE_Z;
|
||||
const bool do_probe = DISABLED(BABYSTEP_HOTEND_Z_OFFSET) || active_extruder == 0;
|
||||
const float bsDiff = planner.steps_to_mm[Z_AXIS] * babystep_increment,
|
||||
const float bsDiff = planner.mm_per_step[Z_AXIS] * babystep_increment,
|
||||
new_probe_offset = probe.offset.z + bsDiff,
|
||||
new_offs = TERN(BABYSTEP_HOTEND_Z_OFFSET
|
||||
, do_probe ? new_probe_offset : hotend_offset[active_extruder].z - bsDiff
|
||||
|
@ -652,7 +652,7 @@ static void moveAxis(const AxisEnum axis, const int8_t direction) {
|
||||
#if ENABLED(BABYSTEP_ZPROBE_OFFSET)
|
||||
const int16_t babystep_increment = direction * BABYSTEP_SIZE_Z;
|
||||
const bool do_probe = DISABLED(BABYSTEP_HOTEND_Z_OFFSET) || active_extruder == 0;
|
||||
const float bsDiff = planner.steps_to_mm[Z_AXIS] * babystep_increment,
|
||||
const float bsDiff = planner.mm_per_step[Z_AXIS] * babystep_increment,
|
||||
new_probe_offset = probe.offset.z + bsDiff,
|
||||
new_offs = TERN(BABYSTEP_HOTEND_Z_OFFSET
|
||||
, do_probe ? new_probe_offset : hotend_offset[active_extruder].z - bsDiff
|
||||
|
@ -654,7 +654,7 @@ static void moveAxis(const AxisEnum axis, const int8_t direction) {
|
||||
#if ENABLED(BABYSTEP_ZPROBE_OFFSET)
|
||||
const int16_t babystep_increment = direction * BABYSTEP_SIZE_Z;
|
||||
const bool do_probe = DISABLED(BABYSTEP_HOTEND_Z_OFFSET) || active_extruder == 0;
|
||||
const float bsDiff = planner.steps_to_mm[Z_AXIS] * babystep_increment,
|
||||
const float bsDiff = planner.mm_per_step[Z_AXIS] * babystep_increment,
|
||||
new_probe_offset = probe.offset.z + bsDiff,
|
||||
new_offs = TERN(BABYSTEP_HOTEND_Z_OFFSET
|
||||
, do_probe ? new_probe_offset : hotend_offset[active_extruder].z - bsDiff
|
||||
|
@ -1682,7 +1682,7 @@ void prepare_line_to_destination() {
|
||||
int16_t phaseDelta = (home_phase[axis] - phaseCurrent) * stepperBackoutDir;
|
||||
|
||||
// Check if home distance within endstop assumed repeatability noise of .05mm and warn.
|
||||
if (ABS(phaseDelta) * planner.steps_to_mm[axis] / phasePerUStep < 0.05f)
|
||||
if (ABS(phaseDelta) * planner.mm_per_step[axis] / phasePerUStep < 0.05f)
|
||||
SERIAL_ECHOLNPGM("Selected home phase ", home_phase[axis],
|
||||
" too close to endstop trigger phase ", phaseCurrent,
|
||||
". Pick a different phase for ", AS_CHAR(AXIS_CHAR(axis)));
|
||||
@ -1691,7 +1691,7 @@ void prepare_line_to_destination() {
|
||||
if (phaseDelta < 0) phaseDelta += 1024;
|
||||
|
||||
// Convert TMC µsteps(phase) to whole Marlin µsteps to effector backout direction to mm
|
||||
const float mmDelta = int16_t(phaseDelta / phasePerUStep) * effectorBackoutDir * planner.steps_to_mm[axis];
|
||||
const float mmDelta = int16_t(phaseDelta / phasePerUStep) * effectorBackoutDir * planner.mm_per_step[axis];
|
||||
|
||||
// Optional debug messages
|
||||
if (DEBUGGING(LEVELING)) {
|
||||
@ -1999,7 +1999,7 @@ void prepare_line_to_destination() {
|
||||
// Delta homing treats the axes as normal linear axes.
|
||||
|
||||
const float adjDistance = delta_endstop_adj[axis],
|
||||
minDistance = (MIN_STEPS_PER_SEGMENT) * planner.steps_to_mm[axis];
|
||||
minDistance = (MIN_STEPS_PER_SEGMENT) * planner.mm_per_step[axis];
|
||||
|
||||
// Retrace by the amount specified in delta_endstop_adj if more than min steps.
|
||||
if (adjDistance * (Z_HOME_DIR) < 0 && ABS(adjDistance) > minDistance) { // away from endstop, more than min distance
|
||||
|
@ -138,7 +138,7 @@ planner_settings_t Planner::settings; // Initialized by settings.load(
|
||||
|
||||
uint32_t Planner::max_acceleration_steps_per_s2[DISTINCT_AXES]; // (steps/s^2) Derived from mm_per_s2
|
||||
|
||||
float Planner::steps_to_mm[DISTINCT_AXES]; // (mm) Millimeters per step
|
||||
float Planner::mm_per_step[DISTINCT_AXES]; // (mm) Millimeters per step
|
||||
|
||||
#if HAS_JUNCTION_DEVIATION
|
||||
float Planner::junction_deviation_mm; // (mm) M205 J
|
||||
@ -1702,7 +1702,7 @@ void Planner::endstop_triggered(const AxisEnum axis) {
|
||||
}
|
||||
|
||||
float Planner::triggered_position_mm(const AxisEnum axis) {
|
||||
return stepper.triggered_position(axis) * steps_to_mm[axis];
|
||||
return stepper.triggered_position(axis) * mm_per_step[axis];
|
||||
}
|
||||
|
||||
void Planner::finish_and_disable() {
|
||||
@ -1759,7 +1759,7 @@ float Planner::get_axis_position_mm(const AxisEnum axis) {
|
||||
|
||||
#endif
|
||||
|
||||
return axis_steps * steps_to_mm[axis];
|
||||
return axis_steps * mm_per_step[axis];
|
||||
}
|
||||
|
||||
/**
|
||||
@ -2015,51 +2015,51 @@ bool Planner::_populate_block(block_t * const block, bool split_move,
|
||||
} steps_dist_mm;
|
||||
#if IS_CORE
|
||||
#if CORE_IS_XY
|
||||
steps_dist_mm.head.x = da * steps_to_mm[A_AXIS];
|
||||
steps_dist_mm.head.y = db * steps_to_mm[B_AXIS];
|
||||
steps_dist_mm.z = dc * steps_to_mm[Z_AXIS];
|
||||
steps_dist_mm.a = (da + db) * steps_to_mm[A_AXIS];
|
||||
steps_dist_mm.b = CORESIGN(da - db) * steps_to_mm[B_AXIS];
|
||||
steps_dist_mm.head.x = da * mm_per_step[A_AXIS];
|
||||
steps_dist_mm.head.y = db * mm_per_step[B_AXIS];
|
||||
steps_dist_mm.z = dc * mm_per_step[Z_AXIS];
|
||||
steps_dist_mm.a = (da + db) * mm_per_step[A_AXIS];
|
||||
steps_dist_mm.b = CORESIGN(da - db) * mm_per_step[B_AXIS];
|
||||
#elif CORE_IS_XZ
|
||||
steps_dist_mm.head.x = da * steps_to_mm[A_AXIS];
|
||||
steps_dist_mm.y = db * steps_to_mm[Y_AXIS];
|
||||
steps_dist_mm.head.z = dc * steps_to_mm[C_AXIS];
|
||||
steps_dist_mm.a = (da + dc) * steps_to_mm[A_AXIS];
|
||||
steps_dist_mm.c = CORESIGN(da - dc) * steps_to_mm[C_AXIS];
|
||||
steps_dist_mm.head.x = da * mm_per_step[A_AXIS];
|
||||
steps_dist_mm.y = db * mm_per_step[Y_AXIS];
|
||||
steps_dist_mm.head.z = dc * mm_per_step[C_AXIS];
|
||||
steps_dist_mm.a = (da + dc) * mm_per_step[A_AXIS];
|
||||
steps_dist_mm.c = CORESIGN(da - dc) * mm_per_step[C_AXIS];
|
||||
#elif CORE_IS_YZ
|
||||
steps_dist_mm.x = da * steps_to_mm[X_AXIS];
|
||||
steps_dist_mm.head.y = db * steps_to_mm[B_AXIS];
|
||||
steps_dist_mm.head.z = dc * steps_to_mm[C_AXIS];
|
||||
steps_dist_mm.b = (db + dc) * steps_to_mm[B_AXIS];
|
||||
steps_dist_mm.c = CORESIGN(db - dc) * steps_to_mm[C_AXIS];
|
||||
steps_dist_mm.x = da * mm_per_step[X_AXIS];
|
||||
steps_dist_mm.head.y = db * mm_per_step[B_AXIS];
|
||||
steps_dist_mm.head.z = dc * mm_per_step[C_AXIS];
|
||||
steps_dist_mm.b = (db + dc) * mm_per_step[B_AXIS];
|
||||
steps_dist_mm.c = CORESIGN(db - dc) * mm_per_step[C_AXIS];
|
||||
#endif
|
||||
#if LINEAR_AXES >= 4
|
||||
steps_dist_mm.i = di * steps_to_mm[I_AXIS];
|
||||
steps_dist_mm.i = di * mm_per_step[I_AXIS];
|
||||
#endif
|
||||
#if LINEAR_AXES >= 5
|
||||
steps_dist_mm.j = dj * steps_to_mm[J_AXIS];
|
||||
steps_dist_mm.j = dj * mm_per_step[J_AXIS];
|
||||
#endif
|
||||
#if LINEAR_AXES >= 6
|
||||
steps_dist_mm.k = dk * steps_to_mm[K_AXIS];
|
||||
steps_dist_mm.k = dk * mm_per_step[K_AXIS];
|
||||
#endif
|
||||
#elif ENABLED(MARKFORGED_XY)
|
||||
steps_dist_mm.head.x = da * steps_to_mm[A_AXIS];
|
||||
steps_dist_mm.head.y = db * steps_to_mm[B_AXIS];
|
||||
steps_dist_mm.z = dc * steps_to_mm[Z_AXIS];
|
||||
steps_dist_mm.a = (da - db) * steps_to_mm[A_AXIS];
|
||||
steps_dist_mm.b = db * steps_to_mm[B_AXIS];
|
||||
steps_dist_mm.head.x = da * mm_per_step[A_AXIS];
|
||||
steps_dist_mm.head.y = db * mm_per_step[B_AXIS];
|
||||
steps_dist_mm.z = dc * mm_per_step[Z_AXIS];
|
||||
steps_dist_mm.a = (da - db) * mm_per_step[A_AXIS];
|
||||
steps_dist_mm.b = db * mm_per_step[B_AXIS];
|
||||
#else
|
||||
LINEAR_AXIS_CODE(
|
||||
steps_dist_mm.a = da * steps_to_mm[A_AXIS],
|
||||
steps_dist_mm.b = db * steps_to_mm[B_AXIS],
|
||||
steps_dist_mm.c = dc * steps_to_mm[C_AXIS],
|
||||
steps_dist_mm.i = di * steps_to_mm[I_AXIS],
|
||||
steps_dist_mm.j = dj * steps_to_mm[J_AXIS],
|
||||
steps_dist_mm.k = dk * steps_to_mm[K_AXIS]
|
||||
steps_dist_mm.a = da * mm_per_step[A_AXIS],
|
||||
steps_dist_mm.b = db * mm_per_step[B_AXIS],
|
||||
steps_dist_mm.c = dc * mm_per_step[C_AXIS],
|
||||
steps_dist_mm.i = di * mm_per_step[I_AXIS],
|
||||
steps_dist_mm.j = dj * mm_per_step[J_AXIS],
|
||||
steps_dist_mm.k = dk * mm_per_step[K_AXIS]
|
||||
);
|
||||
#endif
|
||||
|
||||
TERN_(HAS_EXTRUDERS, steps_dist_mm.e = esteps_float * steps_to_mm[E_AXIS_N(extruder)]);
|
||||
TERN_(HAS_EXTRUDERS, steps_dist_mm.e = esteps_float * mm_per_step[E_AXIS_N(extruder)]);
|
||||
|
||||
TERN_(LCD_SHOW_E_TOTAL, e_move_accumulator += steps_dist_mm.e);
|
||||
|
||||
@ -2889,7 +2889,7 @@ bool Planner::buffer_segment(const abce_pos_t &abce
|
||||
// When changing extruders recalculate steps corresponding to the E position
|
||||
#if ENABLED(DISTINCT_E_FACTORS)
|
||||
if (last_extruder != extruder && settings.axis_steps_per_mm[E_AXIS_N(extruder)] != settings.axis_steps_per_mm[E_AXIS_N(last_extruder)]) {
|
||||
position.e = LROUND(position.e * settings.axis_steps_per_mm[E_AXIS_N(extruder)] * steps_to_mm[E_AXIS_N(last_extruder)]);
|
||||
position.e = LROUND(position.e * settings.axis_steps_per_mm[E_AXIS_N(extruder)] * mm_per_step[E_AXIS_N(last_extruder)]);
|
||||
last_extruder = extruder;
|
||||
}
|
||||
#endif
|
||||
@ -3168,11 +3168,11 @@ void Planner::reset_acceleration_rates() {
|
||||
}
|
||||
|
||||
/**
|
||||
* Recalculate 'position' and 'steps_to_mm'.
|
||||
* Recalculate 'position' and 'mm_per_step'.
|
||||
* Must be called whenever settings.axis_steps_per_mm changes!
|
||||
*/
|
||||
void Planner::refresh_positioning() {
|
||||
LOOP_DISTINCT_AXES(i) steps_to_mm[i] = 1.0f / settings.axis_steps_per_mm[i];
|
||||
LOOP_DISTINCT_AXES(i) mm_per_step[i] = 1.0f / settings.axis_steps_per_mm[i];
|
||||
set_position_mm(current_position);
|
||||
reset_acceleration_rates();
|
||||
}
|
||||
|
@ -374,7 +374,7 @@ class Planner {
|
||||
#endif
|
||||
|
||||
static uint32_t max_acceleration_steps_per_s2[DISTINCT_AXES]; // (steps/s^2) Derived from mm_per_s2
|
||||
static float steps_to_mm[DISTINCT_AXES]; // Millimeters per step
|
||||
static float mm_per_step[DISTINCT_AXES]; // Millimeters per step
|
||||
|
||||
#if HAS_JUNCTION_DEVIATION
|
||||
static float junction_deviation_mm; // (mm) M205 J
|
||||
@ -489,7 +489,7 @@ class Planner {
|
||||
static void reset_acceleration_rates();
|
||||
|
||||
/**
|
||||
* Recalculate 'position' and 'steps_to_mm'.
|
||||
* Recalculate 'position' and 'mm_per_step'.
|
||||
* Must be called whenever settings.axis_steps_per_mm changes!
|
||||
*/
|
||||
static void refresh_positioning();
|
||||
|
@ -557,7 +557,7 @@ void MarlinSettings::postprocess() {
|
||||
|
||||
TERN_(EXTENSIBLE_UI, ExtUI::onPostprocessSettings());
|
||||
|
||||
// Refresh steps_to_mm with the reciprocal of axis_steps_per_mm
|
||||
// Refresh mm_per_step with the reciprocal of axis_steps_per_mm
|
||||
// and init stepper.count[], planner.position[] with current_position
|
||||
planner.refresh_positioning();
|
||||
|
||||
|
@ -1102,7 +1102,7 @@ void Temperature::min_temp_error(const heater_id_t heater_id) {
|
||||
lpq[lpq_ptr] = 0;
|
||||
|
||||
if (++lpq_ptr >= lpq_len) lpq_ptr = 0;
|
||||
work_pid[ee].Kc = (lpq[lpq_ptr] * planner.steps_to_mm[E_AXIS]) * PID_PARAM(Kc, ee);
|
||||
work_pid[ee].Kc = (lpq[lpq_ptr] * planner.mm_per_step[E_AXIS]) * PID_PARAM(Kc, ee);
|
||||
pid_output += work_pid[ee].Kc;
|
||||
}
|
||||
#endif // PID_EXTRUSION_SCALING
|
||||
|
Loading…
Reference in New Issue
Block a user