@ -36,7 +36,7 @@
*
*
*/
*/
# define EEPROM_VERSION "V3 5 "
# define EEPROM_VERSION "V3 6 "
// Change EEPROM version if these are changed:
// Change EEPROM version if these are changed:
# define EEPROM_OFFSET 100
# define EEPROM_OFFSET 100
@ -72,7 +72,7 @@
* 224 mbl . z_offset ( float )
* 224 mbl . z_offset ( float )
* 228 GRID_MAX_POINTS_X ( uint8_t )
* 228 GRID_MAX_POINTS_X ( uint8_t )
* 229 GRID_MAX_POINTS_Y ( uint8_t )
* 229 GRID_MAX_POINTS_Y ( uint8_t )
* 230 G29 S3 XYZ z_values [ ] [ ] ( float x9 , up to float x 81) + 288
* 230 G29 S3 XYZ z_values [ ] [ ] ( float x9 , up to float x 81) + 288
*
*
* HAS_BED_PROBE : 4 bytes
* HAS_BED_PROBE : 4 bytes
* 266 M851 zprobe_zoffset ( float )
* 266 M851 zprobe_zoffset ( float )
@ -87,6 +87,11 @@
* 312 G29 L F bilinear_start ( int x2 )
* 312 G29 L F bilinear_start ( int x2 )
* 316 z_values [ ] [ ] ( float x9 , up to float x256 ) + 988
* 316 z_values [ ] [ ] ( float x9 , up to float x256 ) + 988
*
*
* AUTO_BED_LEVELING_UBL : 6 bytes
* 324 G29 A ubl . state . active ( bool )
* 325 G29 Z ubl . state . z_offset ( float )
* 329 G29 S ubl . state . eeprom_storage_slot ( int8_t )
*
* DELTA : 48 bytes
* DELTA : 48 bytes
* 348 M666 XYZ endstop_adj ( float x3 )
* 348 M666 XYZ endstop_adj ( float x3 )
* 360 M665 R delta_radius ( float )
* 360 M665 R delta_radius ( float )
@ -322,15 +327,15 @@ void MarlinSettings::postprocess() {
# endif
# endif
//
//
// G ener al Leveling
// G lob al Leveling
//
//
# if ENABLED(ENABLE_LEVELING_FADE_HEIGHT)
# if ENABLED(ENABLE_LEVELING_FADE_HEIGHT)
EEPROM_WRITE ( planner . z_fade_height ) ;
const float zfh = planner . z_fade_height ;
# else
# else
dummy = 10.0 ;
const float zfh = 10.0 ;
EEPROM_WRITE ( dummy ) ;
# endif
# endif
EEPROM_WRITE ( zfh ) ;
//
//
// Mesh Bed Leveling
// Mesh Bed Leveling
@ -349,8 +354,7 @@ void MarlinSettings::postprocess() {
EEPROM_WRITE ( mesh_num_x ) ;
EEPROM_WRITE ( mesh_num_x ) ;
EEPROM_WRITE ( mesh_num_y ) ;
EEPROM_WRITE ( mesh_num_y ) ;
EEPROM_WRITE ( mbl . z_values ) ;
EEPROM_WRITE ( mbl . z_values ) ;
# else
# else // For disabled MBL write a default mesh
// For disabled MBL write a default mesh
const bool leveling_is_on = false ;
const bool leveling_is_on = false ;
dummy = 0.0f ;
dummy = 0.0f ;
const uint8_t mesh_num_x = 3 , mesh_num_y = 3 ;
const uint8_t mesh_num_x = 3 , mesh_num_y = 3 ;
@ -405,6 +409,19 @@ void MarlinSettings::postprocess() {
for ( uint16_t q = grid_max_x * grid_max_y ; q - - ; ) EEPROM_WRITE ( dummy ) ;
for ( uint16_t q = grid_max_x * grid_max_y ; q - - ; ) EEPROM_WRITE ( dummy ) ;
# endif // AUTO_BED_LEVELING_BILINEAR
# endif // AUTO_BED_LEVELING_BILINEAR
# if ENABLED(AUTO_BED_LEVELING_UBL)
EEPROM_WRITE ( ubl . state . active ) ;
EEPROM_WRITE ( ubl . state . z_offset ) ;
EEPROM_WRITE ( ubl . state . eeprom_storage_slot ) ;
# else
const bool ubl_active = 0 ;
dummy = 0.0f ;
const int8_t eeprom_slot = - 1 ;
EEPROM_WRITE ( ubl_active ) ;
EEPROM_WRITE ( dummy ) ;
EEPROM_WRITE ( eeprom_slot ) ;
# endif //AUTO_BED_LEVELING_UBL
// 9 floats for DELTA / Z_DUAL_ENDSTOPS
// 9 floats for DELTA / Z_DUAL_ENDSTOPS
# if ENABLED(DELTA)
# if ENABLED(DELTA)
EEPROM_WRITE ( endstop_adj ) ; // 3 floats
EEPROM_WRITE ( endstop_adj ) ; // 3 floats
@ -608,8 +625,7 @@ void MarlinSettings::postprocess() {
SERIAL_ECHOLNPGM ( " bytes) " ) ;
SERIAL_ECHOLNPGM ( " bytes) " ) ;
}
}
# if ENABLED(AUTO_BED_LEVELING_UBL)
# if ENABLED(UBL_SAVE_ACTIVE_ON_M500)
ubl . store_state ( ) ;
if ( ubl . state . eeprom_storage_slot > = 0 )
if ( ubl . state . eeprom_storage_slot > = 0 )
ubl . store_mesh ( ubl . state . eeprom_storage_slot ) ;
ubl . store_mesh ( ubl . state . eeprom_storage_slot ) ;
# endif
# endif
@ -693,7 +709,7 @@ void MarlinSettings::postprocess() {
# endif
# endif
//
//
// G ener al Leveling
// G lob al Leveling
//
//
# if ENABLED(ENABLE_LEVELING_FADE_HEIGHT)
# if ENABLED(ENABLE_LEVELING_FADE_HEIGHT)
@ -769,6 +785,18 @@ void MarlinSettings::postprocess() {
for ( uint16_t q = grid_max_x * grid_max_y ; q - - ; ) EEPROM_READ ( dummy ) ;
for ( uint16_t q = grid_max_x * grid_max_y ; q - - ; ) EEPROM_READ ( dummy ) ;
}
}
# if ENABLED(AUTO_BED_LEVELING_UBL)
EEPROM_READ ( ubl . state . active ) ;
EEPROM_READ ( ubl . state . z_offset ) ;
EEPROM_READ ( ubl . state . eeprom_storage_slot ) ;
# else
bool dummyb ;
uint8_t dummyui8 ;
EEPROM_READ ( dummyb ) ;
EEPROM_READ ( dummy ) ;
EEPROM_READ ( dummyui8 ) ;
# endif //AUTO_BED_LEVELING_UBL
# if ENABLED(DELTA)
# if ENABLED(DELTA)
EEPROM_READ ( endstop_adj ) ; // 3 floats
EEPROM_READ ( endstop_adj ) ; // 3 floats
EEPROM_READ ( delta_radius ) ; // 1 float
EEPROM_READ ( delta_radius ) ; // 1 float
@ -951,27 +979,16 @@ void MarlinSettings::postprocess() {
ubl . eeprom_start = ( eeprom_index + 32 ) & 0xFFF8 ; // Pad the end of configuration data so it
ubl . eeprom_start = ( eeprom_index + 32 ) & 0xFFF8 ; // Pad the end of configuration data so it
// can float up or down a little bit without
// can float up or down a little bit without
// disrupting the Unified Bed Leveling data
// disrupting the Unified Bed Leveling data
ubl . load_state ( ) ;
SERIAL_ECHOPGM ( " UBL " ) ;
SERIAL_ECHOPGM ( " UBL " ) ;
if ( ! ubl . state . active ) SERIAL_ECHO ( " not " ) ;
if ( ! ubl . state . active ) SERIAL_ECHO ( " not " ) ;
SERIAL_ECHOLNPGM ( " active! " ) ;
SERIAL_ECHOLNPGM ( " active! " ) ;
if ( ! ubl . sanity_check ( ) ) {
if ( ! ubl . sanity_check ( ) ) {
int tmp_mesh ; // We want to preserve whether the UBL System is Active
SERIAL_ECHOLNPGM ( " \n Unified Bed Leveling system initialized. \n " ) ;
bool tmp_active ; // If it is, we want to preserve the Mesh that is being used.
tmp_mesh = ubl . state . eeprom_storage_slot ;
tmp_active = ubl . state . active ;
SERIAL_ECHOLNPGM ( " \n Initializing Bed Leveling State to current firmware settings. \n " ) ;
ubl . state = ubl . pre_initialized ; // Initialize with the pre_initialized data structure
ubl . state . eeprom_storage_slot = tmp_mesh ; // But then restore some data we don't want mangled
ubl . state . active = tmp_active ;
}
}
else {
else {
SERIAL_PROTOCOLPGM ( " ?Unable to enable Unified Bed Leveling. \n " ) ;
SERIAL_PROTOCOLPGM ( " ?Unable to enable Unified Bed Leveling system. \n " ) ;
ubl . state = ubl . pre_initialized ;
ubl . reset ( ) ;
ubl . reset ( ) ;
ubl . store_state ( ) ;
}
}
if ( ubl . state . eeprom_storage_slot > = 0 ) {
if ( ubl . state . eeprom_storage_slot > = 0 ) {
@ -985,6 +1002,7 @@ void MarlinSettings::postprocess() {
}
}
# endif
# endif
}
}
# if ENABLED(EEPROM_CHITCHAT)
# if ENABLED(EEPROM_CHITCHAT)
report ( ) ;
report ( ) ;
# endif
# endif
@ -1190,6 +1208,10 @@ void MarlinSettings::reset() {
planner . advance_ed_ratio = LIN_ADVANCE_E_D_RATIO ;
planner . advance_ed_ratio = LIN_ADVANCE_E_D_RATIO ;
# endif
# endif
# if ENABLED(AUTO_BED_LEVELING_UBL)
ubl . reset ( ) ;
# endif
postprocess ( ) ;
postprocess ( ) ;
SERIAL_ECHO_START ;
SERIAL_ECHO_START ;