diff --git a/Marlin/configuration_store.cpp b/Marlin/configuration_store.cpp index 477fb45eda..66cdcd0257 100644 --- a/Marlin/configuration_store.cpp +++ b/Marlin/configuration_store.cpp @@ -133,42 +133,6 @@ #include "mesh_bed_leveling.h" #endif -uint16_t eeprom_checksum; -const char version[4] = EEPROM_VERSION; - -bool eeprom_write_error; - -void _EEPROM_writeData(int &pos, uint8_t* value, uint8_t size) { - if (eeprom_write_error) return; - while (size--) { - uint8_t * const p = (uint8_t * const)pos; - const uint8_t v = *value; - // EEPROM has only ~100,000 write cycles, - // so only write bytes that have changed! - if (v != eeprom_read_byte(p)) { - eeprom_write_byte(p, v); - if (eeprom_read_byte(p) != v) { - SERIAL_ECHO_START; - SERIAL_ECHOLNPGM(MSG_ERR_EEPROM_WRITE); - eeprom_write_error = true; - return; - } - } - eeprom_checksum += v; - pos++; - value++; - }; -} -void _EEPROM_readData(int &pos, uint8_t* value, uint8_t size) { - do { - uint8_t c = eeprom_read_byte((unsigned char*)pos); - *value = c; - eeprom_checksum += c; - pos++; - value++; - } while (--size); -} - /** * Post-process after Retrieve or Reset */ @@ -198,6 +162,42 @@ void Config_Postprocess() { #if ENABLED(EEPROM_SETTINGS) + uint16_t eeprom_checksum; + const char version[4] = EEPROM_VERSION; + + bool eeprom_write_error; + + void _EEPROM_writeData(int &pos, uint8_t* value, uint8_t size) { + if (eeprom_write_error) return; + while (size--) { + uint8_t * const p = (uint8_t * const)pos; + const uint8_t v = *value; + // EEPROM has only ~100,000 write cycles, + // so only write bytes that have changed! + if (v != eeprom_read_byte(p)) { + eeprom_write_byte(p, v); + if (eeprom_read_byte(p) != v) { + SERIAL_ECHO_START; + SERIAL_ECHOLNPGM(MSG_ERR_EEPROM_WRITE); + eeprom_write_error = true; + return; + } + } + eeprom_checksum += v; + pos++; + value++; + }; + } + void _EEPROM_readData(int &pos, uint8_t* value, uint8_t size) { + do { + uint8_t c = eeprom_read_byte((unsigned char*)pos); + *value = c; + eeprom_checksum += c; + pos++; + value++; + } while (--size); + } + #define DUMMY_PID_VALUE 3000.0f #define EEPROM_START() int eeprom_index = EEPROM_OFFSET #define EEPROM_SKIP(VAR) eeprom_index += sizeof(VAR)