Browse Source

Merge pull request #8456 from thinkyhead/bf2_wednesday_tweaks

[2.0] No retroactive adjustment with M851 Z
pull/1/head
Scott Lahteine 7 years ago
committed by GitHub
parent
commit
485abb023b
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 9
      Marlin/src/gcode/motion/M290.cpp
  2. 1
      Marlin/src/gcode/probe/M851.cpp
  3. 13
      Marlin/src/lcd/ultralcd.cpp
  4. 7
      Marlin/src/module/configuration_store.cpp
  5. 36
      Marlin/src/module/probe.cpp
  6. 1
      Marlin/src/module/probe.h

9
Marlin/src/gcode/motion/M290.cpp

@ -37,22 +37,17 @@ void GcodeSuite::M290() {
for (uint8_t a = X_AXIS; a <= Z_AXIS; a++)
if (parser.seenval(axis_codes[a]) || (a == Z_AXIS && parser.seenval('S'))) {
const float offs = constrain(parser.value_axis_units((AxisEnum)a), -2, 2);
thermalManager.babystep_axis((AxisEnum)a, offs * planner.axis_steps_per_mm[a]);
#if ENABLED(BABYSTEP_ZPROBE_OFFSET)
if (a == Z_AXIS) {
zprobe_zoffset += offs;
refresh_zprobe_zoffset(true); // 'true' to not babystep
}
#endif
thermalManager.babystep_axis((AxisEnum)a, offs * planner.axis_steps_per_mm[a]);
}
#else
if (parser.seenval('Z') || parser.seenval('S')) {
const float offs = constrain(parser.value_axis_units(Z_AXIS), -2, 2);
thermalManager.babystep_axis(Z_AXIS, offs * planner.axis_steps_per_mm[Z_AXIS]);
#if ENABLED(BABYSTEP_ZPROBE_OFFSET)
zprobe_zoffset += offs;
refresh_zprobe_zoffset(); // This will babystep the axis
#else
thermalManager.babystep_axis(Z_AXIS, offs * planner.axis_steps_per_mm[Z_AXIS]);
#endif
}
#endif

1
Marlin/src/gcode/probe/M851.cpp

@ -35,7 +35,6 @@ void GcodeSuite::M851() {
const float value = parser.value_linear_units();
if (WITHIN(value, Z_PROBE_OFFSET_RANGE_MIN, Z_PROBE_OFFSET_RANGE_MAX)) {
zprobe_zoffset = value;
refresh_zprobe_zoffset();
SERIAL_ECHO(zprobe_zoffset);
}
else

13
Marlin/src/lcd/ultralcd.cpp

@ -1100,8 +1100,6 @@ void kill_screen(const char* lcd_msg) {
ENCODER_DIRECTION_NORMAL();
if (encoderPosition) {
const int16_t babystep_increment = (int32_t)encoderPosition * (BABYSTEP_MULTIPLICATOR);
encoderPosition = 0;
const float new_zoffset = zprobe_zoffset + planner.steps_to_mm[Z_AXIS] * babystep_increment;
if (WITHIN(new_zoffset, Z_PROBE_OFFSET_RANGE_MIN, Z_PROBE_OFFSET_RANGE_MAX)) {
@ -1109,9 +1107,9 @@ void kill_screen(const char* lcd_msg) {
thermalManager.babystep_axis(Z_AXIS, babystep_increment);
zprobe_zoffset = new_zoffset;
refresh_zprobe_zoffset(true);
lcdDrawUpdate = LCDVIEW_CALL_REDRAW_NEXT;
}
encoderPosition = 0;
}
if (lcdDrawUpdate) {
lcd_implementation_drawedit(PSTR(MSG_ZPROBE_ZOFFSET), ftostr43sign(zprobe_zoffset));
@ -1678,11 +1676,6 @@ void kill_screen(const char* lcd_msg) {
static void lcd_load_settings() { lcd_completion_feedback(settings.load()); }
#endif
#if HAS_BED_PROBE && DISABLED(BABYSTEP_ZPROBE_OFFSET)
static void lcd_refresh_zprobe_zoffset() { refresh_zprobe_zoffset(); }
#endif
#if ENABLED(LEVEL_BED_CORNERS)
/**
@ -2000,7 +1993,7 @@ void kill_screen(const char* lcd_msg) {
#if ENABLED(BABYSTEP_ZPROBE_OFFSET)
MENU_ITEM(submenu, MSG_ZPROBE_ZOFFSET, lcd_babystep_zoffset);
#elif HAS_BED_PROBE
MENU_ITEM_EDIT_CALLBACK(float32, MSG_ZPROBE_ZOFFSET, &zprobe_zoffset, Z_PROBE_OFFSET_RANGE_MIN, Z_PROBE_OFFSET_RANGE_MAX, lcd_refresh_zprobe_zoffset);
MENU_ITEM_EDIT(float32, MSG_ZPROBE_ZOFFSET, &zprobe_zoffset, Z_PROBE_OFFSET_RANGE_MIN, Z_PROBE_OFFSET_RANGE_MAX);
#endif
MENU_ITEM(submenu, MSG_LEVEL_BED, _lcd_level_bed_continue);
@ -3647,7 +3640,7 @@ void kill_screen(const char* lcd_msg) {
#if ENABLED(BABYSTEP_ZPROBE_OFFSET)
MENU_ITEM(submenu, MSG_ZPROBE_ZOFFSET, lcd_babystep_zoffset);
#elif HAS_BED_PROBE
MENU_ITEM_EDIT_CALLBACK(float32, MSG_ZPROBE_ZOFFSET, &zprobe_zoffset, Z_PROBE_OFFSET_RANGE_MIN, Z_PROBE_OFFSET_RANGE_MAX, lcd_refresh_zprobe_zoffset);
MENU_ITEM_EDIT(float32, MSG_ZPROBE_ZOFFSET, &zprobe_zoffset, Z_PROBE_OFFSET_RANGE_MIN, Z_PROBE_OFFSET_RANGE_MAX);
#endif
// M203 / M205 - Feedrate items

7
Marlin/src/module/configuration_store.cpp

@ -247,10 +247,6 @@ void MarlinSettings::postprocess() {
set_z_fade_height(new_z_fade_height);
#endif
#if HAS_BED_PROBE
refresh_zprobe_zoffset();
#endif
#if ENABLED(AUTO_BED_LEVELING_BILINEAR)
refresh_bed_level();
//set_bed_leveling_enabled(leveling_is_on);
@ -355,9 +351,8 @@ void MarlinSettings::postprocess() {
sizeof(mbl.z_values) == GRID_MAX_POINTS * sizeof(mbl.z_values[0][0]),
"MBL Z array is the wrong size."
);
const bool leveling_is_on = mbl.has_mesh;
const uint8_t mesh_num_x = GRID_MAX_POINTS_X, mesh_num_y = GRID_MAX_POINTS_Y;
EEPROM_WRITE(leveling_is_on);
EEPROM_WRITE(mbl.has_mesh);
EEPROM_WRITE(mbl.z_offset);
EEPROM_WRITE(mesh_num_x);
EEPROM_WRITE(mesh_num_y);

36
Marlin/src/module/probe.cpp

@ -640,42 +640,6 @@ float probe_pt(const float &rx, const float &ry, const bool stow, const uint8_t
return measured_z;
}
void refresh_zprobe_zoffset(const bool no_babystep/*=false*/) {
static float last_zoffset = NAN;
if (!isnan(last_zoffset)) {
#if ENABLED(AUTO_BED_LEVELING_BILINEAR) || ENABLED(BABYSTEP_ZPROBE_OFFSET) || ENABLED(DELTA)
const float diff = zprobe_zoffset - last_zoffset;
#endif
#if ENABLED(AUTO_BED_LEVELING_BILINEAR)
// Correct bilinear grid for new probe offset
if (diff) {
for (uint8_t x = 0; x < GRID_MAX_POINTS_X; x++)
for (uint8_t y = 0; y < GRID_MAX_POINTS_Y; y++)
z_values[x][y] -= diff;
}
#if ENABLED(ABL_BILINEAR_SUBDIVISION)
bed_level_virt_interpolate();
#endif
#endif
#if ENABLED(BABYSTEP_ZPROBE_OFFSET)
if (!no_babystep && planner.leveling_active)
thermalManager.babystep_axis(Z_AXIS, -LROUND(diff * planner.axis_steps_per_mm[Z_AXIS]));
#else
UNUSED(no_babystep);
#endif
#if ENABLED(DELTA) // correct the delta_height
delta_height -= diff;
#endif
}
last_zoffset = zprobe_zoffset;
}
#if HAS_Z_SERVO_ENDSTOP
void servo_probe_init() {

1
Marlin/src/module/probe.h

@ -34,7 +34,6 @@ float probe_pt(const float &rx, const float &ry, const bool, const uint8_t, cons
#if HAS_BED_PROBE
extern float zprobe_zoffset;
void refresh_zprobe_zoffset(const bool no_babystep=false);
#define DEPLOY_PROBE() set_probe_deployed(true)
#define STOW_PROBE() set_probe_deployed(false)
#else

Loading…
Cancel
Save