From 1622c278940c5bcaa3c525f7b2650ae9fb0b1c3f Mon Sep 17 00:00:00 2001 From: PavelSindler Date: Fri, 7 Jul 2017 10:31:21 +0200 Subject: [PATCH 1/4] slightly modified axis selftest --- Firmware/ultralcd.cpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 57ec0c61..2c61a442 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -4462,10 +4462,8 @@ static bool lcd_selfcheck_axis_sg(char axis) { current_position_init = st_get_position_mm(axis); if (i < 1) { - current_position[axis] += margin; - plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[3], manual_feedrate[0] / 60, active_extruder); - st_synchronize(); - current_position[axis] += axis_length; + + current_position[axis] += (axis_length + margin); plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[3], manual_feedrate[0] / 60, active_extruder); #ifdef HAVE_TMC2130_DRIVERS tmc2130_home_enter(X_AXIS_MASK << axis); From 26bd8fc5235f0eea184afac0a911736fedd3daca Mon Sep 17 00:00:00 2001 From: PavelSindler Date: Fri, 7 Jul 2017 10:58:10 +0200 Subject: [PATCH 2/4] reverting --- Firmware/ultralcd.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 2c61a442..57ec0c61 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -4462,8 +4462,10 @@ static bool lcd_selfcheck_axis_sg(char axis) { current_position_init = st_get_position_mm(axis); if (i < 1) { - - current_position[axis] += (axis_length + margin); + current_position[axis] += margin; + plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[3], manual_feedrate[0] / 60, active_extruder); + st_synchronize(); + current_position[axis] += axis_length; plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[3], manual_feedrate[0] / 60, active_extruder); #ifdef HAVE_TMC2130_DRIVERS tmc2130_home_enter(X_AXIS_MASK << axis); From 6eb57da7705d31a323c313cdcf8578bbd765bc5b Mon Sep 17 00:00:00 2001 From: PavelSindler Date: Thu, 21 Sep 2017 15:20:02 +0200 Subject: [PATCH 3/4] fan check can be turned off from support menu, saving parameters to eeprom with offset and different levels, fan kickstart,2nd heatbed version, fans check modified --- Firmware/Configuration.h | 3 ++ Firmware/ConfigurationStore.cpp | 62 +++++++++++++++++++++---------- Firmware/ConfigurationStore.h | 6 +-- Firmware/Configuration_adv.h | 2 +- Firmware/Configuration_prusa.h | 4 +- Firmware/Marlin_main.cpp | 22 +++++++++-- Firmware/mesh_bed_calibration.cpp | 45 ++++++++++++++++++---- Firmware/stepper.cpp | 11 +----- Firmware/stepper.h | 3 -- Firmware/temperature.cpp | 34 +++++++++++++---- Firmware/temperature.h | 2 + Firmware/ultralcd.cpp | 13 +++++++ Firmware/ultralcd.h | 1 + 13 files changed, 150 insertions(+), 58 deletions(-) diff --git a/Firmware/Configuration.h b/Firmware/Configuration.h index dfd77462..a2fc7f92 100644 --- a/Firmware/Configuration.h +++ b/Firmware/Configuration.h @@ -56,6 +56,7 @@ #define EEPROM_UVLO_TARGET_BED (EEPROM_UVLO_TARGET_HOTEND - 1) #define EEPROM_UVLO_FEEDRATE (EEPROM_UVLO_TARGET_BED - 2) #define EEPROM_UVLO_FAN_SPEED (EEPROM_UVLO_FEEDRATE - 1) +#define EEPROM_FAN_CHECK_ENABLED (EEPROM_UVLO_FAN_SPEED - 1) // Currently running firmware, each digit stored as uint16_t. @@ -68,6 +69,8 @@ // Magic string, indicating that the current or the previous firmware running was the Prusa3D firmware. #define EEPROM_FIRMWARE_PRUSA_MAGIC 0 +#define EEPROM_OFFSET 20 //offset for storing settings using M500 +//#define EEPROM_OFFSET // This configuration file contains the basic settings. // Advanced settings can be found in Configuration_adv.h diff --git a/Firmware/ConfigurationStore.cpp b/Firmware/ConfigurationStore.cpp index f7f64094..b4c99184 100644 --- a/Firmware/ConfigurationStore.cpp +++ b/Firmware/ConfigurationStore.cpp @@ -11,12 +11,22 @@ void _EEPROM_writeData(int &pos, uint8_t* value, uint8_t size) { - do - { - eeprom_write_byte((unsigned char*)pos, *value); - pos++; - value++; - }while(--size); + while (size--) { + uint8_t * const p = (uint8_t * const)pos; + 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) { + //add error message + return; + } + } + pos++; + value++; + }; + } #define EEPROM_WRITE_VAR(pos, value) _EEPROM_writeData(pos, (uint8_t*)&value, sizeof(value)) void _EEPROM_readData(int &pos, uint8_t* value, uint8_t size) @@ -30,13 +40,7 @@ void _EEPROM_readData(int &pos, uint8_t* value, uint8_t size) } #define EEPROM_READ_VAR(pos, value) _EEPROM_readData(pos, (uint8_t*)&value, sizeof(value)) //====================================================================================== - - - - #define EEPROM_OFFSET 20 - - // IMPORTANT: Whenever there are changes made to the variables stored in EEPROM // in the functions below, also increment the version number. This makes sure that // the default values are used whenever there is a change to the data, to prevent @@ -46,10 +50,10 @@ void _EEPROM_readData(int &pos, uint8_t* value, uint8_t size) #define EEPROM_VERSION "V1" #ifdef EEPROM_SETTINGS -void Config_StoreSettings() +void Config_StoreSettings(uint16_t offset, uint8_t level) { char ver[4]= "000"; - int i=EEPROM_OFFSET; + int i = offset; EEPROM_WRITE_VAR(i,ver); // invalidate data first EEPROM_WRITE_VAR(i,axis_steps_per_unit); EEPROM_WRITE_VAR(i,max_feedrate); @@ -124,12 +128,17 @@ void Config_StoreSettings() EEPROM_WRITE_VAR(i, filament_size[2]); #endif #endif + + if (level >= 10) { + EEPROM_WRITE_VAR(i, extruder_advance_k); + EEPROM_WRITE_VAR(i, advance_ed_ratio); + } /*MYSERIAL.print("Top address used:\n"); - MYSERIAL.print(i); + MYSERIAL.print(i); MYSERIAL.print("\n"); */ char ver2[4]=EEPROM_VERSION; - i=EEPROM_OFFSET; + i=offset; EEPROM_WRITE_VAR(i,ver2); // validate data SERIAL_ECHO_START; SERIAL_ECHOLNPGM("Settings Stored"); @@ -138,9 +147,10 @@ void Config_StoreSettings() #ifndef DISABLE_M503 -void Config_PrintSettings() +void Config_PrintSettings(uint8_t level) { // Always have this function, even with EEPROM_SETTINGS disabled, the current values will be shown - SERIAL_ECHO_START; + + SERIAL_ECHO_START; SERIAL_ECHOLNPGM("Steps per unit:"); SERIAL_ECHO_START; SERIAL_ECHOPAIR(" M92 X",axis_steps_per_unit[X_AXIS]); @@ -259,14 +269,22 @@ void Config_PrintSettings() SERIAL_ECHOLNPGM("Filament settings: Disabled"); } #endif + if (level >= 10) { +#ifdef LIN_ADVANCE + SERIAL_ECHO_START; + SERIAL_ECHOLNPGM("Linear advance settings:"); + SERIAL_ECHOPAIR(" M900 K", extruder_advance_k); + SERIAL_ECHOPAIR(" E/D = ", advance_ed_ratio); +#endif //LIN_ADVANCE + } } #endif #ifdef EEPROM_SETTINGS -void Config_RetrieveSettings() +void Config_RetrieveSettings(uint16_t offset, uint8_t level) { - int i=EEPROM_OFFSET; + int i=offset; char stored_ver[4]; char ver[4]=EEPROM_VERSION; EEPROM_READ_VAR(i,stored_ver); //read stored version @@ -347,6 +365,10 @@ void Config_RetrieveSettings() EEPROM_READ_VAR(i, filament_size[2]); #endif #endif + if (level >= 10) { + EEPROM_READ_VAR(i, extruder_advance_k); + EEPROM_READ_VAR(i, advance_ed_ratio); + } calculate_volumetric_multipliers(); // Call updatePID (similar to when we have processed M301) updatePID(); diff --git a/Firmware/ConfigurationStore.h b/Firmware/ConfigurationStore.h index 164aed68..f5564143 100644 --- a/Firmware/ConfigurationStore.h +++ b/Firmware/ConfigurationStore.h @@ -7,14 +7,14 @@ void Config_ResetDefault(); #ifndef DISABLE_M503 -void Config_PrintSettings(); +void Config_PrintSettings(uint8_t level = 0); #else FORCE_INLINE void Config_PrintSettings() {} #endif #ifdef EEPROM_SETTINGS -void Config_StoreSettings(); -void Config_RetrieveSettings(); +void Config_StoreSettings(uint16_t offset, uint8_t level = 0); +void Config_RetrieveSettings(uint16_t offset, uint8_t level = 0); #else FORCE_INLINE void Config_StoreSettings() {} FORCE_INLINE void Config_RetrieveSettings() { Config_ResetDefault(); Config_PrintSettings(); } diff --git a/Firmware/Configuration_adv.h b/Firmware/Configuration_adv.h index d0cc5319..c551e80f 100644 --- a/Firmware/Configuration_adv.h +++ b/Firmware/Configuration_adv.h @@ -68,7 +68,7 @@ // When first starting the main fan, run it at full speed for the // given number of milliseconds. This gets the fan spinning reliably // before setting a PWM value. (Does not work with software PWM for fan on Sanguinololu) -//#define FAN_KICKSTART_TIME 100 +#define FAN_KICKSTART_TIME 800 diff --git a/Firmware/Configuration_prusa.h b/Firmware/Configuration_prusa.h index 13dfb747..9a6d4101 100644 --- a/Firmware/Configuration_prusa.h +++ b/Firmware/Configuration_prusa.h @@ -472,7 +472,7 @@ const bool Z_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic o #define DEFAULT_PID_TEMP 210 -#define MIN_PRINT_FAN_SPEED 50 +#define MIN_PRINT_FAN_SPEED 75 #ifdef SNMM #define DEFAULT_RETRACTION 4 //used for PINDA temp calibration and pause print @@ -482,4 +482,6 @@ const bool Z_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic o #define UVLO_Z_AXIS_SHIFT 2 +#define HEATBED_V2 + #endif //__CONFIGURATION_PRUSA_H diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 5a0c76a7..0b8852b1 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -818,7 +818,7 @@ void setup() SERIAL_ECHOLN((int)sizeof(block_t)*BLOCK_BUFFER_SIZE); //lcd_update_enable(false); // why do we need this?? - andre // loads data from EEPROM if available else uses defaults (and resets step acceleration rate) - Config_RetrieveSettings(); + Config_RetrieveSettings(EEPROM_OFFSET); SdFatUtil::set_stack_guard(); //writes magic number at the end of static variables to protect against overwriting static memory by stack tp_init(); // Initialize temperature loop plan_init(); // Initialize planner; @@ -1007,7 +1007,8 @@ void setup() #endif //DEBUG_DISABLE_STARTMSGS for (int i = 0; i<4; i++) EEPROM_read_B(EEPROM_BOWDEN_LENGTH + i * 2, &bowden_length[i]); lcd_update_enable(true); - + lcd_implementation_clear(); + lcd_update(2); // Store the currently running firmware into an eeprom, // so the next time the firmware gets updated, it will know from which version it has been updated. update_current_firmware_version_to_eeprom(); @@ -2749,6 +2750,19 @@ void process_commands() #endif + case 79: { + for (int i = 255; i > 0; i = i - 5) { + fanSpeed = i; + //delay_keep_alive(2000); + for (int j = 0; j < 100; j++) { + delay_keep_alive(100); + + } + fan_speed[1]; + MYSERIAL.print(i); SERIAL_ECHOPGM(": "); MYSERIAL.println(fan_speed[1]); + } + }break; + /** * G80: Mesh-based Z probe, probes a grid and produces a * mesh to compensate for variable bed height @@ -4837,12 +4851,12 @@ case 404: //M404 Enter the nominal filament width (3mm, 1.75mm ) N<3.0> or disp case 500: // M500 Store settings in EEPROM { - Config_StoreSettings(); + Config_StoreSettings(EEPROM_OFFSET); } break; case 501: // M501 Read settings from EEPROM { - Config_RetrieveSettings(); + Config_RetrieveSettings(EEPROM_OFFSET); } break; case 502: // M502 Revert to default settings diff --git a/Firmware/mesh_bed_calibration.cpp b/Firmware/mesh_bed_calibration.cpp index c3a7f366..fda871fc 100644 --- a/Firmware/mesh_bed_calibration.cpp +++ b/Firmware/mesh_bed_calibration.cpp @@ -50,6 +50,42 @@ const float bed_skew_angle_extreme = (0.25f * M_PI / 180.f); // Positions of the bed reference points in the machine coordinates, referenced to the P.I.N.D.A sensor. // The points are ordered in a zig-zag fashion to speed up the calibration. + +#ifdef HEATBED_V2 + +// Positions of the bed reference points in the machine coordinates, referenced to the P.I.N.D.A sensor. +// The points are the following: center front, center right, center rear, center left. +const float bed_ref_points_4[] PROGMEM = { + 115.f - BED_ZERO_REF_X, 8.4f - BED_ZERO_REF_Y, + 216.f - BED_ZERO_REF_X, 104.4f - BED_ZERO_REF_Y, + 115.f - BED_ZERO_REF_X, 200.4f - BED_ZERO_REF_Y, + 13.f - BED_ZERO_REF_X, 104.4f - BED_ZERO_REF_Y +}; + +const float bed_ref_points[] PROGMEM = { + 13.f - BED_ZERO_REF_X, 8.4f - BED_ZERO_REF_Y, + 115.f - BED_ZERO_REF_X, 8.4f - BED_ZERO_REF_Y, + 216.f - BED_ZERO_REF_X, 8.4f - BED_ZERO_REF_Y, + + 216.f - BED_ZERO_REF_X, 104.4f - BED_ZERO_REF_Y, + 115.f - BED_ZERO_REF_X, 104.4f - BED_ZERO_REF_Y, + 13.f - BED_ZERO_REF_X, 104.4f - BED_ZERO_REF_Y, + + 13.f - BED_ZERO_REF_X, 200.4f - BED_ZERO_REF_Y, + 115.f - BED_ZERO_REF_X, 200.4f - BED_ZERO_REF_Y, + 216.f - BED_ZERO_REF_X, 200.4f - BED_ZERO_REF_Y +}; +#else + +// Positions of the bed reference points in the machine coordinates, referenced to the P.I.N.D.A sensor. +// The points are the following: center front, center right, center rear, center left. +const float bed_ref_points_4[] PROGMEM = { + 115.f - BED_ZERO_REF_X, 8.4f - BED_ZERO_REF_Y, + 216.f - BED_ZERO_REF_X, 104.4f - BED_ZERO_REF_Y, + 115.f - BED_ZERO_REF_X, 202.4f - BED_ZERO_REF_Y, + 13.f - BED_ZERO_REF_X, 104.4f - BED_ZERO_REF_Y +}; + const float bed_ref_points[] PROGMEM = { 13.f - BED_ZERO_REF_X, 8.4f - BED_ZERO_REF_Y, 115.f - BED_ZERO_REF_X, 8.4f - BED_ZERO_REF_Y, @@ -64,14 +100,7 @@ const float bed_ref_points[] PROGMEM = { 216.f - BED_ZERO_REF_X, 202.4f - BED_ZERO_REF_Y }; -// Positions of the bed reference points in the machine coordinates, referenced to the P.I.N.D.A sensor. -// The points are the following: center front, center right, center rear, center left. -const float bed_ref_points_4[] PROGMEM = { - 115.f - BED_ZERO_REF_X, 8.4f - BED_ZERO_REF_Y, - 216.f - BED_ZERO_REF_X, 104.4f - BED_ZERO_REF_Y, - 115.f - BED_ZERO_REF_X, 202.4f - BED_ZERO_REF_Y, - 13.f - BED_ZERO_REF_X, 104.4f - BED_ZERO_REF_Y -}; +#endif //not HEATBED_V2 static inline float sqr(float x) { return x * x; } diff --git a/Firmware/stepper.cpp b/Firmware/stepper.cpp index d3f6d94f..e041134f 100644 --- a/Firmware/stepper.cpp +++ b/Firmware/stepper.cpp @@ -1379,15 +1379,6 @@ void microstep_readings() #endif } -static void check_fans() { - if (READ(TACH_0) != fan_state[0]) { - fan_edge_counter[0] ++; - fan_state[0] = READ(TACH_0); - } - if (READ(TACH_1) != fan_state[1]) { - fan_edge_counter[1] ++; - fan_state[1] = READ(TACH_1); - } -} + diff --git a/Firmware/stepper.h b/Firmware/stepper.h index 29af8e52..9915de90 100644 --- a/Firmware/stepper.h +++ b/Firmware/stepper.h @@ -104,9 +104,6 @@ void digipot_current(uint8_t driver, int current); void microstep_init(); void microstep_readings(); -static void check_fans(); - - #ifdef BABYSTEPPING void babystep(const uint8_t axis,const bool direction); // perform a short step with a single stepper motor, outside of any convention #endif diff --git a/Firmware/temperature.cpp b/Firmware/temperature.cpp index 600e152d..6970cabb 100644 --- a/Firmware/temperature.cpp +++ b/Firmware/temperature.cpp @@ -429,26 +429,31 @@ void setExtruderAutoFanState(int pin, bool state) } void countFanSpeed() -{ +{ + //SERIAL_ECHOPGM("edge counter 1:"); MYSERIAL.println(fan_edge_counter[1]); fan_speed[0] = (fan_edge_counter[0] * (float(250) / (millis() - extruder_autofan_last_check))); fan_speed[1] = (fan_edge_counter[1] * (float(250) / (millis() - extruder_autofan_last_check))); - + /*SERIAL_ECHOPGM("time interval: "); MYSERIAL.println(millis() - extruder_autofan_last_check); + SERIAL_ECHOPGM("extruder fan speed:"); MYSERIAL.print(fan_speed[0]); SERIAL_ECHOPGM("; edge counter:"); MYSERIAL.println(fan_edge_counter[0]); + SERIAL_ECHOPGM("print fan speed:"); MYSERIAL.print(fan_speed[1]); SERIAL_ECHOPGM("; edge counter:"); MYSERIAL.println(fan_edge_counter[1]); + SERIAL_ECHOLNPGM(" ");*/ fan_edge_counter[0] = 0; fan_edge_counter[1] = 0; } void checkFanSpeed() { + bool fans_check_enabled = (eeprom_read_byte((uint8_t*)EEPROM_FAN_CHECK_ENABLED) > 0); static unsigned char fan_speed_errors[2] = { 0,0 }; - if (fan_speed[0] == 0 && current_temperature[0] > EXTRUDER_AUTO_FAN_TEMPERATURE) fan_speed_errors[0]++; + if (fan_speed[0] == 0 && (current_temperature[0] > EXTRUDER_AUTO_FAN_TEMPERATURE)) fan_speed_errors[0]++; else fan_speed_errors[0] = 0; - if (fan_speed[1] == 0 && fanSpeed > MIN_PRINT_FAN_SPEED) fan_speed_errors[1]++; + if ((fan_speed[1] == 0)&& (fanSpeed > MIN_PRINT_FAN_SPEED)) fan_speed_errors[1]++; else fan_speed_errors[1] = 0; - if (fan_speed_errors[0] > 5) fanSpeedError(0); - if (fan_speed_errors[1] > 15) fanSpeedError(1); + if ((fan_speed_errors[0] > 5) && fans_check_enabled) fanSpeedError(0); //extruder fan + if ((fan_speed_errors[1] > 15) && fans_check_enabled) fanSpeedError(1); //print fan } void fanSpeedError(unsigned char _fan) { @@ -485,8 +490,8 @@ void checkExtruderAutoFans() // which fan pins need to be turned on? #if defined(EXTRUDER_0_AUTO_FAN_PIN) && EXTRUDER_0_AUTO_FAN_PIN > -1 - if (current_temperature[0] > EXTRUDER_AUTO_FAN_TEMPERATURE) - fanState |= 1; + if (current_temperature[0] > EXTRUDER_AUTO_FAN_TEMPERATURE) + fanState |= 1; #endif #if defined(EXTRUDER_1_AUTO_FAN_PIN) && EXTRUDER_1_AUTO_FAN_PIN > -1 if (current_temperature[1] > EXTRUDER_AUTO_FAN_TEMPERATURE) @@ -2148,6 +2153,19 @@ ISR(TIMER0_COMPB_vect) } } #endif //BABYSTEPPING + + check_fans(); +} + +void check_fans() { + if (READ(TACH_0) != fan_state[0]) { + fan_edge_counter[0] ++; + fan_state[0] = !fan_state[0]; + } + if (READ(TACH_1) != fan_state[1]) { + fan_edge_counter[1] ++; + fan_state[1] = !fan_state[1]; + } } #ifdef PIDTEMP diff --git a/Firmware/temperature.h b/Firmware/temperature.h index c30efbfc..7d247945 100644 --- a/Firmware/temperature.h +++ b/Firmware/temperature.h @@ -222,5 +222,7 @@ void countFanSpeed(); void checkFanSpeed(); void fanSpeedError(unsigned char _fan); +void check_fans(); + #endif diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 1d785566..c8eeceb4 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -29,6 +29,7 @@ int8_t encoderDiff; /* encoderDiff is updated from interrupt context and added to encoderPosition every LCD update */ extern int lcd_change_fil_state; +extern bool fans_check_enabled = true; //Function pointer to menu functions. typedef void (*menuFunc_t)(); @@ -1045,10 +1046,22 @@ static void lcd_support_menu() } MENU_ITEM(submenu, MSG_INFO_EXTRUDER, lcd_menu_extruder_info); MENU_ITEM(submenu, PSTR("Temperatures"), lcd_menu_temperatures); + if (fans_check_enabled == true) { + MENU_ITEM(function, PSTR("Check fans [EN]"), lcd_set_fan_check); + } + else { + MENU_ITEM(function, PSTR("Check fans [DIS]"), lcd_set_fan_check); + } #endif //MK1BP END_MENU(); } +void lcd_set_fan_check() { + fans_check_enabled = !fans_check_enabled; + eeprom_update_byte((unsigned char *)EEPROM_FAN_CHECK_ENABLED, fans_check_enabled); + lcd_goto_menu(lcd_support_menu, 15); +} + void lcd_unLoadFilament() { diff --git a/Firmware/ultralcd.h b/Firmware/ultralcd.h index f1789433..6276abf3 100644 --- a/Firmware/ultralcd.h +++ b/Firmware/ultralcd.h @@ -223,6 +223,7 @@ static void extr_unload_1(); static void extr_unload_2(); static void extr_unload_3(); static void lcd_disable_farm_mode(); +static void lcd_set_fan_check(); void extr_unload_all(); void extr_unload_used(); void extr_unload(); From effe6126be9f578933290220734449cb9d8a928c Mon Sep 17 00:00:00 2001 From: PavelSindler Date: Thu, 21 Sep 2017 15:35:46 +0200 Subject: [PATCH 4/4] eeprom error message --- Firmware/ConfigurationStore.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Firmware/ConfigurationStore.cpp b/Firmware/ConfigurationStore.cpp index b4c99184..6911a10d 100644 --- a/Firmware/ConfigurationStore.cpp +++ b/Firmware/ConfigurationStore.cpp @@ -19,7 +19,7 @@ void _EEPROM_writeData(int &pos, uint8_t* value, uint8_t size) if (v != eeprom_read_byte(p)) { eeprom_write_byte(p, v); if (eeprom_read_byte(p) != v) { - //add error message + SERIAL_ECHOLNPGM("EEPROM Error"); return; } }