diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index b74229ff5..104a532e6 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -3090,16 +3090,18 @@ static void gcode_G80() #endif // SUPPORT_VERBOSITY for (uint8_t i = 0; i < 4; ++i) { - unsigned char codes[4] = { 'L', 'R', 'F', 'B' }; + static const char codes[4] PROGMEM = { 'L', 'R', 'F', 'B' }; + static uint8_t *const eep_addresses[4] PROGMEM = { + (uint8_t*)EEPROM_BED_CORRECTION_LEFT, + (uint8_t*)EEPROM_BED_CORRECTION_RIGHT, + (uint8_t*)EEPROM_BED_CORRECTION_FRONT, + (uint8_t*)EEPROM_BED_CORRECTION_REAR, + }; long correction = 0; - if (code_seen(codes[i])) + if (code_seen(pgm_read_byte(&codes[i]))) correction = code_value_long(); - else if (eeprom_bed_correction_valid) { - unsigned char *addr = (i < 2) ? - ((i == 0) ? (unsigned char*)EEPROM_BED_CORRECTION_LEFT : (unsigned char*)EEPROM_BED_CORRECTION_RIGHT) : - ((i == 2) ? (unsigned char*)EEPROM_BED_CORRECTION_FRONT : (unsigned char*)EEPROM_BED_CORRECTION_REAR); - correction = eeprom_read_int8(addr); - } + else if (eeprom_bed_correction_valid) + correction = (int8_t)eeprom_read_byte((uint8_t*)pgm_read_ptr(&eep_addresses[i])); if (correction == 0) continue; diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 7e86fa4bc..315d0a02c 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -2698,27 +2698,23 @@ void lcd_adjust_bed(void) if (_md->status == 0) { // Menu was entered. - _md->left = 0; - _md->right = 0; - _md->front = 0; - _md->rear = 0; if (eeprom_read_byte((unsigned char*)EEPROM_BED_CORRECTION_VALID) == 1) { - _md->left = eeprom_read_int8((unsigned char*)EEPROM_BED_CORRECTION_LEFT); - _md->right = eeprom_read_int8((unsigned char*)EEPROM_BED_CORRECTION_RIGHT); - _md->front = eeprom_read_int8((unsigned char*)EEPROM_BED_CORRECTION_FRONT); - _md->rear = eeprom_read_int8((unsigned char*)EEPROM_BED_CORRECTION_REAR); + _md->left = (int8_t)eeprom_read_byte((uint8_t*)EEPROM_BED_CORRECTION_LEFT); + _md->right = (int8_t)eeprom_read_byte((uint8_t*)EEPROM_BED_CORRECTION_RIGHT); + _md->front = (int8_t)eeprom_read_byte((uint8_t*)EEPROM_BED_CORRECTION_FRONT); + _md->rear = (int8_t)eeprom_read_byte((uint8_t*)EEPROM_BED_CORRECTION_REAR); } _md->status = 1; } MENU_BEGIN(); // leaving menu - this condition must be immediately before MENU_ITEM_BACK_P ON_MENU_LEAVE( - eeprom_update_int8((unsigned char*)EEPROM_BED_CORRECTION_LEFT, _md->left); - eeprom_update_int8((unsigned char*)EEPROM_BED_CORRECTION_RIGHT, _md->right); - eeprom_update_int8((unsigned char*)EEPROM_BED_CORRECTION_FRONT, _md->front); - eeprom_update_int8((unsigned char*)EEPROM_BED_CORRECTION_REAR, _md->rear); - eeprom_update_byte((unsigned char*)EEPROM_BED_CORRECTION_VALID, 1); + eeprom_update_byte((uint8_t*)EEPROM_BED_CORRECTION_LEFT, (uint8_t)_md->left); + eeprom_update_byte((uint8_t*)EEPROM_BED_CORRECTION_FRONT, (uint8_t)_md->front); + eeprom_update_byte((uint8_t*)EEPROM_BED_CORRECTION_REAR, (uint8_t)_md->rear); + eeprom_update_byte((uint8_t*)EEPROM_BED_CORRECTION_RIGHT, (uint8_t)_md->right); + eeprom_update_byte((uint8_t*)EEPROM_BED_CORRECTION_VALID, 1); ); MENU_ITEM_BACK_P(_T(MSG_BACK)); MENU_ITEM_EDIT_int3_P(_i("Left side [\xe4m]"), &_md->left, -BED_ADJUSTMENT_UM_MAX, BED_ADJUSTMENT_UM_MAX);////MSG_BED_CORRECTION_LEFT c=14 diff --git a/Firmware/util.h b/Firmware/util.h index f2ad46c4b..6936a68cf 100644 --- a/Firmware/util.h +++ b/Firmware/util.h @@ -23,17 +23,6 @@ extern bool force_selftest_if_fw_version(); extern void update_current_firmware_version_to_eeprom(); - -inline int8_t eeprom_read_int8(unsigned char* addr) { - uint8_t v = eeprom_read_byte(addr); - return *reinterpret_cast(&v); -} - -inline void eeprom_update_int8(unsigned char* addr, int8_t v) { - eeprom_update_byte(addr, *reinterpret_cast(&v)); -} - - //-// #define EEPROM_NOZZLE_DIAMETER_uM_DEFAULT 400