mirror of
https://github.com/MarlinFirmware/Marlin.git
synced 2024-11-28 06:21:31 +00:00
Sync and report changed position
This commit is contained in:
parent
11f9c253e0
commit
03ba79f144
@ -128,13 +128,17 @@ void set_bed_leveling_enabled(const bool enable/*=true*/) {
|
|||||||
// so compensation will give the right stepper counts.
|
// so compensation will give the right stepper counts.
|
||||||
planner.unapply_leveling(current_position);
|
planner.unapply_leveling(current_position);
|
||||||
|
|
||||||
|
SYNC_PLAN_POSITION_KINEMATIC();
|
||||||
|
|
||||||
#endif // OLDSCHOOL_ABL
|
#endif // OLDSCHOOL_ABL
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#if ENABLED(ENABLE_LEVELING_FADE_HEIGHT)
|
#if ENABLED(ENABLE_LEVELING_FADE_HEIGHT)
|
||||||
|
|
||||||
void set_z_fade_height(const float zfh) {
|
void set_z_fade_height(const float zfh, const bool do_report/*=true*/) {
|
||||||
|
|
||||||
|
if (planner.z_fade_height == zfh) return; // do nothing if no change
|
||||||
|
|
||||||
const bool level_active = planner.leveling_active;
|
const bool level_active = planner.leveling_active;
|
||||||
|
|
||||||
@ -145,6 +149,10 @@ void set_bed_leveling_enabled(const bool enable/*=true*/) {
|
|||||||
planner.set_z_fade_height(zfh);
|
planner.set_z_fade_height(zfh);
|
||||||
|
|
||||||
if (level_active) {
|
if (level_active) {
|
||||||
|
const float oldpos[XYZE] = {
|
||||||
|
current_position[X_AXIS], current_position[Y_AXIS],
|
||||||
|
current_position[Z_AXIS], current_position[E_AXIS]
|
||||||
|
};
|
||||||
#if ENABLED(AUTO_BED_LEVELING_UBL)
|
#if ENABLED(AUTO_BED_LEVELING_UBL)
|
||||||
set_bed_leveling_enabled(true); // turn back on after changing fade height
|
set_bed_leveling_enabled(true); // turn back on after changing fade height
|
||||||
#else
|
#else
|
||||||
@ -155,7 +163,10 @@ void set_bed_leveling_enabled(const bool enable/*=true*/) {
|
|||||||
Z_AXIS
|
Z_AXIS
|
||||||
#endif
|
#endif
|
||||||
);
|
);
|
||||||
|
SYNC_PLAN_POSITION_KINEMATIC();
|
||||||
#endif
|
#endif
|
||||||
|
if (do_report && memcmp(oldpos, current_position, sizeof(oldpos)))
|
||||||
|
report_current_position();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -47,7 +47,7 @@ void set_bed_leveling_enabled(const bool enable=true);
|
|||||||
void reset_bed_level();
|
void reset_bed_level();
|
||||||
|
|
||||||
#if ENABLED(ENABLE_LEVELING_FADE_HEIGHT)
|
#if ENABLED(ENABLE_LEVELING_FADE_HEIGHT)
|
||||||
void set_z_fade_height(const float zfh);
|
void set_z_fade_height(const float zfh, const bool do_report=true);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if ENABLED(AUTO_BED_LEVELING_BILINEAR) || ENABLED(MESH_BED_LEVELING)
|
#if ENABLED(AUTO_BED_LEVELING_BILINEAR) || ENABLED(MESH_BED_LEVELING)
|
||||||
|
@ -71,17 +71,19 @@
|
|||||||
volatile int unified_bed_leveling::encoder_diff;
|
volatile int unified_bed_leveling::encoder_diff;
|
||||||
|
|
||||||
unified_bed_leveling::unified_bed_leveling() {
|
unified_bed_leveling::unified_bed_leveling() {
|
||||||
ubl_cnt++; // Debug counter to insure we only have one UBL object present in memory. We can eliminate this (and all references to ubl_cnt) very soon.
|
ubl_cnt++; // Debug counter to ensure we only have one UBL object present in memory. We can eliminate this (and all references to ubl_cnt) very soon.
|
||||||
reset();
|
reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
void unified_bed_leveling::reset() {
|
void unified_bed_leveling::reset() {
|
||||||
|
const bool was_enabled = planner.leveling_active;
|
||||||
set_bed_leveling_enabled(false);
|
set_bed_leveling_enabled(false);
|
||||||
storage_slot = -1;
|
storage_slot = -1;
|
||||||
#if ENABLED(ENABLE_LEVELING_FADE_HEIGHT)
|
#if ENABLED(ENABLE_LEVELING_FADE_HEIGHT)
|
||||||
planner.set_z_fade_height(10.0);
|
planner.set_z_fade_height(10.0);
|
||||||
#endif
|
#endif
|
||||||
ZERO(z_values);
|
ZERO(z_values);
|
||||||
|
if (was_enabled) report_current_position();
|
||||||
}
|
}
|
||||||
|
|
||||||
void unified_bed_leveling::invalidate() {
|
void unified_bed_leveling::invalidate() {
|
||||||
|
@ -108,7 +108,7 @@ void GcodeSuite::M420() {
|
|||||||
if (parser.seen('S')) set_bed_leveling_enabled(to_enable);
|
if (parser.seen('S')) set_bed_leveling_enabled(to_enable);
|
||||||
|
|
||||||
#if ENABLED(ENABLE_LEVELING_FADE_HEIGHT)
|
#if ENABLED(ENABLE_LEVELING_FADE_HEIGHT)
|
||||||
if (parser.seen('Z')) set_z_fade_height(parser.value_linear_units());
|
if (parser.seen('Z')) set_z_fade_height(parser.value_linear_units(), false);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const bool new_status = planner.leveling_active;
|
const bool new_status = planner.leveling_active;
|
||||||
|
@ -285,6 +285,7 @@ void GcodeSuite::G29() {
|
|||||||
bed_level_virt_interpolate();
|
bed_level_virt_interpolate();
|
||||||
#endif
|
#endif
|
||||||
set_bed_leveling_enabled(abl_should_enable);
|
set_bed_leveling_enabled(abl_should_enable);
|
||||||
|
if (abl_should_enable) report_current_position();
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
} // parser.seen('W')
|
} // parser.seen('W')
|
||||||
|
@ -211,6 +211,12 @@ void get_cartesian_from_steppers() {
|
|||||||
* Set the current_position for an axis based on
|
* Set the current_position for an axis based on
|
||||||
* the stepper positions, removing any leveling that
|
* the stepper positions, removing any leveling that
|
||||||
* may have been applied.
|
* may have been applied.
|
||||||
|
*
|
||||||
|
* To prevent small shifts in axis position always call
|
||||||
|
* SYNC_PLAN_POSITION_KINEMATIC after updating axes with this.
|
||||||
|
*
|
||||||
|
* To keep hosts in sync, always call report_current_position
|
||||||
|
* after updating the current_position.
|
||||||
*/
|
*/
|
||||||
void set_current_from_steppers_for_axis(const AxisEnum axis) {
|
void set_current_from_steppers_for_axis(const AxisEnum axis) {
|
||||||
get_cartesian_from_steppers();
|
get_cartesian_from_steppers();
|
||||||
|
Loading…
Reference in New Issue
Block a user