|
|
@ -65,11 +65,11 @@ |
|
|
|
* 207 M218 XYZ hotend_offset (float x3 per additional hotend) |
|
|
|
* |
|
|
|
* Mesh bed leveling: |
|
|
|
* 219 M420 S status (uint8) |
|
|
|
* 220 z_offset (float) |
|
|
|
* 224 mesh_num_x (uint8 as set in firmware) |
|
|
|
* 225 mesh_num_y (uint8 as set in firmware) |
|
|
|
* 226 G29 S3 XYZ z_values[][] (float x9, by default, up to float x 81) |
|
|
|
* 219 M420 S from mbl.status (bool) |
|
|
|
* 220 mbl.z_offset (float) |
|
|
|
* 224 MESH_NUM_X_POINTS (uint8 as set in firmware) |
|
|
|
* 225 MESH_NUM_Y_POINTS (uint8 as set in firmware) |
|
|
|
* 226 G29 S3 XYZ z_values[][] (float x9, by default, up to float x 81) +288 |
|
|
|
* |
|
|
|
* AUTO BED LEVELING |
|
|
|
* 262 M851 zprobe_zoffset (float) |
|
|
@ -263,21 +263,19 @@ void Config_Postprocess() { |
|
|
|
#if ENABLED(MESH_BED_LEVELING) |
|
|
|
// Compile time test that sizeof(mbl.z_values) is as expected
|
|
|
|
typedef char c_assert[(sizeof(mbl.z_values) == (MESH_NUM_X_POINTS) * (MESH_NUM_Y_POINTS) * sizeof(dummy)) ? 1 : -1]; |
|
|
|
uint8_t mesh_num_x = MESH_NUM_X_POINTS, |
|
|
|
mesh_num_y = MESH_NUM_Y_POINTS, |
|
|
|
dummy_uint8 = mbl.status & _BV(MBL_STATUS_HAS_MESH_BIT); |
|
|
|
EEPROM_WRITE(dummy_uint8); |
|
|
|
const bool leveling_is_on = TEST(mbl.status, MBL_STATUS_HAS_MESH_BIT); |
|
|
|
const uint8_t mesh_num_x = MESH_NUM_X_POINTS, mesh_num_y = MESH_NUM_Y_POINTS; |
|
|
|
EEPROM_WRITE(leveling_is_on); |
|
|
|
EEPROM_WRITE(mbl.z_offset); |
|
|
|
EEPROM_WRITE(mesh_num_x); |
|
|
|
EEPROM_WRITE(mesh_num_y); |
|
|
|
EEPROM_WRITE(mbl.z_values); |
|
|
|
#else |
|
|
|
// For disabled MBL write a default mesh
|
|
|
|
uint8_t mesh_num_x = 3, |
|
|
|
mesh_num_y = 3, |
|
|
|
mbl_status = 0; |
|
|
|
const bool leveling_is_on = false; |
|
|
|
dummy = 0.0f; |
|
|
|
EEPROM_WRITE(mbl_status); |
|
|
|
const uint8_t mesh_num_x = 3, mesh_num_y = 3; |
|
|
|
EEPROM_WRITE(leveling_is_on); |
|
|
|
EEPROM_WRITE(dummy); // z_offset
|
|
|
|
EEPROM_WRITE(mesh_num_x); |
|
|
|
EEPROM_WRITE(mesh_num_y); |
|
|
@ -498,13 +496,15 @@ void Config_Postprocess() { |
|
|
|
// Mesh (Manual) Bed Leveling
|
|
|
|
//
|
|
|
|
|
|
|
|
uint8_t dummy_uint8, mesh_num_x, mesh_num_y; |
|
|
|
EEPROM_READ(dummy_uint8); |
|
|
|
bool leveling_is_on; |
|
|
|
uint8_t mesh_num_x, mesh_num_y; |
|
|
|
EEPROM_READ(leveling_is_on); |
|
|
|
EEPROM_READ(dummy); |
|
|
|
EEPROM_READ(mesh_num_x); |
|
|
|
EEPROM_READ(mesh_num_y); |
|
|
|
|
|
|
|
#if ENABLED(MESH_BED_LEVELING) |
|
|
|
mbl.status = dummy_uint8; |
|
|
|
mbl.status = leveling_is_on ? _BV(MBL_STATUS_HAS_MESH_BIT) : 0; |
|
|
|
mbl.z_offset = dummy; |
|
|
|
if (mesh_num_x == MESH_NUM_X_POINTS && mesh_num_y == MESH_NUM_Y_POINTS) { |
|
|
|
// EEPROM data fits the current mesh
|
|
|
@ -721,6 +721,7 @@ void Config_ResetDefault() { |
|
|
|
LOOP_XYZ(i) HOTEND_LOOP() hotend_offset[i][e] = tmp4[i][e]; |
|
|
|
#endif |
|
|
|
|
|
|
|
// Applies to all MBL and ABL
|
|
|
|
#if PLANNER_LEVELING |
|
|
|
reset_bed_level(); |
|
|
|
#endif |
|
|
|