From cb12161191be148906d31642b44af04248c3d6cc Mon Sep 17 00:00:00 2001 From: wgm4321 Date: Sun, 28 Dec 2014 20:43:14 -0500 Subject: [PATCH 01/23] Add Filament menu and add Filament/Retract settings to config store. --- Marlin/ConfigurationStore.cpp | 124 ++++++++++++++++-- Marlin/Marlin.h | 4 + Marlin/Marlin_main.cpp | 78 ++++++++--- Marlin/language_en.h | 5 + Marlin/ultralcd.cpp | 45 ++++++- Marlin/ultralcd.h | 1 + .../ultralcd_implementation_hitachi_HD44780.h | 4 + 7 files changed, 232 insertions(+), 29 deletions(-) diff --git a/Marlin/ConfigurationStore.cpp b/Marlin/ConfigurationStore.cpp index 20e68d09e394..0b3e48550325 100644 --- a/Marlin/ConfigurationStore.cpp +++ b/Marlin/ConfigurationStore.cpp @@ -38,15 +38,7 @@ void _EEPROM_readData(int &pos, uint8_t* value, uint8_t size) // wrong data being written to the variables. // ALSO: always make sure the variables in the Store and retrieve sections are in the same order. -#define EEPROM_VERSION "V10" -#ifdef DELTA - #undef EEPROM_VERSION - #define EEPROM_VERSION "V11" -#endif -#ifdef SCARA - #undef EEPROM_VERSION - #define EEPROM_VERSION "V12" -#endif +#define EEPROM_VERSION "V13" #ifdef EEPROM_SETTINGS void Config_StoreSettings() @@ -101,6 +93,31 @@ void Config_StoreSettings() #ifdef SCARA EEPROM_WRITE_VAR(i,axis_scaling); // Add scaling for SCARA #endif + #ifdef FWRETRACT + EEPROM_WRITE_VAR(i,autoretract_enabled); + EEPROM_WRITE_VAR(i,retract_length); + #if EXTRUDERS > 1 + EEPROM_WRITE_VAR(i,retract_length_swap); + #endif + EEPROM_WRITE_VAR(i,retract_feedrate); + EEPROM_WRITE_VAR(i,retract_zlift); + EEPROM_WRITE_VAR(i,retract_recover_length); + #if EXTRUDERS > 1 + EEPROM_WRITE_VAR(i,retract_recover_length_swap); + #endif + EEPROM_WRITE_VAR(i,retract_recover_feedrate); + #endif + + // Save filament sizes + EEPROM_WRITE_VAR(i, volumetric_enabled); + EEPROM_WRITE_VAR(i, filament_size[0]); + #if EXTRUDERS > 1 + EEPROM_WRITE_VAR(i, filament_size[1]); + #if EXTRUDERS > 2 + EEPROM_WRITE_VAR(i, filament_size[2]); + #endif + #endif + char ver2[4]=EEPROM_VERSION; i=EEPROM_OFFSET; EEPROM_WRITE_VAR(i,ver2); // validate data @@ -210,12 +227,46 @@ SERIAL_ECHOLNPGM("Scaling factors:"); SERIAL_ECHO_START; SERIAL_ECHOLNPGM("Recover: S=Extra length (mm) F:Speed (mm/m)"); SERIAL_ECHO_START; - SERIAL_ECHOPAIR(" M208 S",retract_recover_length); - SERIAL_ECHOPAIR(" F" ,retract_recover_feedrate*60); - SERIAL_ECHOLN(""); + SERIAL_ECHOPAIR(" M208 S",retract_recover_length); + SERIAL_ECHOPAIR(" F", retract_recover_feedrate*60); + SERIAL_ECHOLN(""); + SERIAL_ECHO_START; + SERIAL_ECHOLNPGM("Auto-Retract: S=0 to disable, 1 to interpret extrude-only moves as retracts or recoveries"); + SERIAL_ECHO_START; + SERIAL_ECHOPAIR(" M209 S", (unsigned long)(autoretract_enabled ? 1 : 0)); + SERIAL_ECHOLN(""); +#if EXTRUDERS > 1 + SERIAL_ECHO_START; + SERIAL_ECHOLNPGM("Multi-extruder settings:"); + SERIAL_ECHO_START; + SERIAL_ECHOPAIR(" Swap retract length (mm): ", retract_length_swap); + SERIAL_ECHOLN(""); + SERIAL_ECHO_START; + SERIAL_ECHOPAIR(" Swap rec. addl. length (mm): ", retract_recover_length_swap); + SERIAL_ECHOLN(""); #endif + SERIAL_ECHO_START; + if (volumetric_enabled) { + SERIAL_ECHOLNPGM("Filament settings:"); + SERIAL_ECHO_START; + SERIAL_ECHOPAIR(" M200 D", filament_size[0]); + SERIAL_ECHOLN(""); +#if EXTRUDERS > 1 + SERIAL_ECHO_START; + SERIAL_ECHOPAIR(" M200 T1 D", filament_size[1]); + SERIAL_ECHOLN(""); +#if EXTRUDERS > 2 + SERIAL_ECHO_START; + SERIAL_ECHOPAIR(" M200 T2 D", filament_size[2]); + SERIAL_ECHOLN(""); +#endif +#endif + } else { + SERIAL_ECHOLNPGM("Filament settings: Disabled"); + } } #endif +#endif #ifdef EEPROM_SETTINGS @@ -277,6 +328,30 @@ void Config_RetrieveSettings() EEPROM_READ_VAR(i,axis_scaling); #endif + #ifdef FWRETRACT + EEPROM_READ_VAR(i,autoretract_enabled); + EEPROM_READ_VAR(i,retract_length); + #if EXTRUDERS > 1 + EEPROM_READ_VAR(i,retract_length_swap); + #endif + EEPROM_READ_VAR(i,retract_feedrate); + EEPROM_READ_VAR(i,retract_zlift); + EEPROM_READ_VAR(i,retract_recover_length); + #if EXTRUDERS > 1 + EEPROM_READ_VAR(i,retract_recover_length_swap); + #endif + EEPROM_READ_VAR(i,retract_recover_feedrate); + #endif + + EEPROM_READ_VAR(i, volumetric_enabled); + EEPROM_READ_VAR(i, filament_size[0]); +#if EXTRUDERS > 1 + EEPROM_READ_VAR(i, filament_size[1]); +#if EXTRUDERS > 2 + EEPROM_READ_VAR(i, filament_size[2]); +#endif +#endif + calculate_volumetric_multipliers(); // Call updatePID (similar to when we have processed M301) updatePID(); SERIAL_ECHO_START; @@ -353,6 +428,31 @@ void Config_ResetDefault() #endif//PID_ADD_EXTRUSION_RATE #endif//PIDTEMP +#ifdef FWRETRACT + autoretract_enabled = false; + retract_length = RETRACT_LENGTH; +#if EXTRUDERS > 1 + retract_length_swap = RETRACT_LENGTH_SWAP; +#endif + retract_feedrate = RETRACT_FEEDRATE; + retract_zlift = RETRACT_ZLIFT; + retract_recover_length = RETRACT_RECOVER_LENGTH; +#if EXTRUDERS > 1 + retract_recover_length_swap = RETRACT_RECOVER_LENGTH_SWAP; +#endif + retract_recover_feedrate = RETRACT_RECOVER_FEEDRATE; +#endif + + volumetric_enabled = false; + filament_size[0] = DEFAULT_NOMINAL_FILAMENT_DIA; +#if EXTRUDERS > 1 + filament_size[1] = DEFAULT_NOMINAL_FILAMENT_DIA; +#if EXTRUDERS > 2 + filament_size[2] = DEFAULT_NOMINAL_FILAMENT_DIA; +#endif +#endif + calculate_volumetric_multipliers(); + SERIAL_ECHO_START; SERIAL_ECHOLNPGM("Hardcoded Default Settings Loaded"); diff --git a/Marlin/Marlin.h b/Marlin/Marlin.h index 444c43f6958c..84915e7b2af7 100644 --- a/Marlin/Marlin.h +++ b/Marlin/Marlin.h @@ -209,7 +209,9 @@ extern float homing_feedrate[]; extern bool axis_relative_modes[]; extern int feedmultiply; extern int extrudemultiply; // Sets extrude multiply factor (in percent) for all extruders +extern bool volumetric_enabled; extern int extruder_multiply[EXTRUDERS]; // sets extrude multiply factor (in percent) for each extruder individually +extern float filament_size[EXTRUDERS]; // cross-sectional area of filament (in millimeters), typically around 1.75 or 2.85, 0 disables the volumetric calculations for the extruder. extern float volumetric_multiplier[EXTRUDERS]; // reciprocal of cross-sectional area of filament (in square millimeters), stored this way to reduce computational burden in planner extern float current_position[NUM_AXIS] ; extern float add_homing[3]; @@ -266,3 +268,5 @@ extern void digipot_i2c_init(); #endif #endif + +extern void calculate_volumetric_multipliers(); \ No newline at end of file diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp index 644ae31f1a34..314eb433ee7e 100644 --- a/Marlin/Marlin_main.cpp +++ b/Marlin/Marlin_main.cpp @@ -215,6 +215,15 @@ int extruder_multiply[EXTRUDERS] = {100 #endif #endif }; +bool volumetric_enabled = false; +float filament_size[EXTRUDERS] = { DEFAULT_NOMINAL_FILAMENT_DIA + #if EXTRUDERS > 1 + , DEFAULT_NOMINAL_FILAMENT_DIA + #if EXTRUDERS > 2 + , DEFAULT_NOMINAL_FILAMENT_DIA + #endif + #endif +}; float volumetric_multiplier[EXTRUDERS] = {1.0 #if EXTRUDERS > 1 , 1.0 @@ -2823,21 +2832,7 @@ SERIAL_PROTOCOLPGM("\n\n"); #endif //BLINKM case 200: // M200 D set filament diameter and set E axis units to cubic millimeters (use S0 to set back to millimeters). { - float area = .0; - float radius = .0; - if(code_seen('D')) { - radius = (float)code_value() * .5; - if(radius == 0) { - area = 1; - } else { - area = M_PI * pow(radius, 2); - } - } else { - //reserved for setting filament diameter via UFID or filament measuring device - break; - - - } + tmp_extruder = active_extruder; if(code_seen('T')) { tmp_extruder = code_value(); @@ -2847,7 +2842,32 @@ SERIAL_PROTOCOLPGM("\n\n"); break; } } - volumetric_multiplier[tmp_extruder] = 1 / area; + + float area = .0; + if(code_seen('D')) { + float diameter = (float)code_value(); + if (diameter == 0.0) { + // setting any extruder filament size disables volumetric on the assumption that + // slicers either generate in extruder values as cubic mm or as as filament feeds + // for all extruders + volumetric_enabled = false; + } else { + filament_size[tmp_extruder] = (float)code_value(); + // make sure all extruders have some sane value for the filament size + filament_size[0] = (filament_size[0] == 0.0 ? DEFAULT_NOMINAL_FILAMENT_DIA : filament_size[0]); + #if EXTRUDERS > 1 + filament_size[1] = (filament_size[1] == 0.0 ? DEFAULT_NOMINAL_FILAMENT_DIA : filament_size[1]); + #if EXTRUDERS > 2 + filament_size[2] = (filament_size[2] == 0.0 ? DEFAULT_NOMINAL_FILAMENT_DIA : filament_size[2]); + #endif + #endif + volumetric_enabled = true; + } + } else { + //reserved for setting filament diameter via UFID or filament measuring device + break; + } + calculate_volumetric_multipliers(); } break; case 201: // M201 @@ -4580,3 +4600,29 @@ bool setTargetedHotend(int code){ return false; } + +float calculate_volumetric_multiplier(float diameter) { + float area = .0; + float radius = .0; + + radius = diameter * .5; + if (! volumetric_enabled || radius == 0) { + area = 1; + } + else { + area = M_PI * pow(radius, 2); + } + + return 1.0 / area; +} + +void calculate_volumetric_multipliers() { + volumetric_multiplier[0] = calculate_volumetric_multiplier(filament_size[0]); +#if EXTRUDERS > 1 + volumetric_multiplier[1] = calculate_volumetric_multiplier(filament_size[1]); +#if EXTRUDERS > 2 + volumetric_multiplier[2] = calculate_volumetric_multiplier(filament_size[2]); +#endif +#endif +} + diff --git a/Marlin/language_en.h b/Marlin/language_en.h index c094ff641f81..5758e7a7b447 100644 --- a/Marlin/language_en.h +++ b/Marlin/language_en.h @@ -86,6 +86,11 @@ #define MSG_ESTEPS "Esteps/mm" #define MSG_TEMPERATURE "Temperature" #define MSG_MOTION "Motion" +#define MSG_VOLUMETRIC "Filament" +#define MSG_VOLUMETRIC_ENABLED "E in mm3" +#define MSG_FILAMENT_SIZE_EXTRUDER_0 "Fil. Dia. 1" +#define MSG_FILAMENT_SIZE_EXTRUDER_1 "Fil. Dia. 2" +#define MSG_FILAMENT_SIZE_EXTRUDER_2 "Fil. Dia. 3" #define MSG_CONTRAST "LCD contrast" #define MSG_STORE_EPROM "Store memory" #define MSG_LOAD_EPROM "Load memory" diff --git a/Marlin/ultralcd.cpp b/Marlin/ultralcd.cpp index 916114899ce2..adae93bc8d6a 100644 --- a/Marlin/ultralcd.cpp +++ b/Marlin/ultralcd.cpp @@ -59,6 +59,7 @@ static void lcd_control_temperature_menu(); static void lcd_control_temperature_preheat_pla_settings_menu(); static void lcd_control_temperature_preheat_abs_settings_menu(); static void lcd_control_motion_menu(); +static void lcd_control_volumetric_menu(); #ifdef DOGLCD static void lcd_set_contrast(); #endif @@ -78,6 +79,7 @@ static void menu_action_setting_edit_bool(const char* pstr, bool* ptr); static void menu_action_setting_edit_int3(const char* pstr, int* ptr, int minValue, int maxValue); static void menu_action_setting_edit_float3(const char* pstr, float* ptr, float minValue, float maxValue); static void menu_action_setting_edit_float32(const char* pstr, float* ptr, float minValue, float maxValue); +static void menu_action_setting_edit_float43(const char* pstr, float* ptr, float minValue, float maxValue); static void menu_action_setting_edit_float5(const char* pstr, float* ptr, float minValue, float maxValue); static void menu_action_setting_edit_float51(const char* pstr, float* ptr, float minValue, float maxValue); static void menu_action_setting_edit_float52(const char* pstr, float* ptr, float minValue, float maxValue); @@ -86,6 +88,7 @@ static void menu_action_setting_edit_callback_bool(const char* pstr, bool* ptr, static void menu_action_setting_edit_callback_int3(const char* pstr, int* ptr, int minValue, int maxValue, menuFunc_t callbackFunc); static void menu_action_setting_edit_callback_float3(const char* pstr, float* ptr, float minValue, float maxValue, menuFunc_t callbackFunc); static void menu_action_setting_edit_callback_float32(const char* pstr, float* ptr, float minValue, float maxValue, menuFunc_t callbackFunc); +static void menu_action_setting_edit_callback_float43(const char* pstr, float* ptr, float minValue, float maxValue, menuFunc_t callbackFunc); static void menu_action_setting_edit_callback_float5(const char* pstr, float* ptr, float minValue, float maxValue, menuFunc_t callbackFunc); static void menu_action_setting_edit_callback_float51(const char* pstr, float* ptr, float minValue, float maxValue, menuFunc_t callbackFunc); static void menu_action_setting_edit_callback_float52(const char* pstr, float* ptr, float minValue, float maxValue, menuFunc_t callbackFunc); @@ -721,6 +724,8 @@ static void lcd_control_menu() MENU_ITEM(back, MSG_MAIN, lcd_main_menu); MENU_ITEM(submenu, MSG_TEMPERATURE, lcd_control_temperature_menu); MENU_ITEM(submenu, MSG_MOTION, lcd_control_motion_menu); + MENU_ITEM(submenu, MSG_VOLUMETRIC, lcd_control_volumetric_menu); + #ifdef DOGLCD // MENU_ITEM_EDIT(int3, MSG_CONTRAST, &lcd_contrast, 0, 63); MENU_ITEM(submenu, MSG_CONTRAST, lcd_set_contrast); @@ -849,6 +854,26 @@ static void lcd_control_motion_menu() END_MENU(); } +static void lcd_control_volumetric_menu() +{ + START_MENU(); + MENU_ITEM(back, MSG_CONTROL, lcd_control_menu); + + MENU_ITEM_EDIT(bool, MSG_VOLUMETRIC_ENABLED, &volumetric_enabled); + + if (volumetric_enabled) { + MENU_ITEM_EDIT_CALLBACK(float43, MSG_FILAMENT_SIZE_EXTRUDER_0, &filament_size[0], DEFAULT_NOMINAL_FILAMENT_DIA - .5, DEFAULT_NOMINAL_FILAMENT_DIA + .5, calculate_volumetric_multipliers); +#if EXTRUDERS > 1 + MENU_ITEM_EDIT_CALLBACK(float43, MSG_FILAMENT_SIZE_EXTRUDER_1, &filament_size[1], DEFAULT_NOMINAL_FILAMENT_DIA - .5, DEFAULT_NOMINAL_FILAMENT_DIA + .5, calculate_volumetric_multipliers); +#if EXTRUDERS > 2 + MENU_ITEM_EDIT_CALLBACK(float43, MSG_FILAMENT_SIZE_EXTRUDER_2, &filament_size[2], DEFAULT_NOMINAL_FILAMENT_DIA - .5, DEFAULT_NOMINAL_FILAMENT_DIA + .5, calculate_volumetric_multipliers); +#endif +#endif + } + + END_MENU(); +} + #ifdef DOGLCD static void lcd_set_contrast() { @@ -992,6 +1017,7 @@ void lcd_sdcard_menu() menu_edit_type(int, int3, itostr3, 1) menu_edit_type(float, float3, ftostr3, 1) menu_edit_type(float, float32, ftostr32, 100) +menu_edit_type(float, float43, ftostr43, 1000) menu_edit_type(float, float5, ftostr5, 0.01) menu_edit_type(float, float51, ftostr51, 10) menu_edit_type(float, float52, ftostr52, 100) @@ -1461,7 +1487,24 @@ char *ftostr32(const float &x) return conv; } -// Convert float to string with 1.23 format +// Convert float to string with 1.234 format +char *ftostr43(const float &x) +{ + long xx = x * 1000; + if (xx >= 0) + conv[0] = (xx / 1000) % 10 + '0'; + else + conv[0] = '-'; + xx = abs(xx); + conv[1] = '.'; + conv[2] = (xx / 100) % 10 + '0'; + conv[3] = (xx / 10) % 10 + '0'; + conv[4] = (xx) % 10 + '0'; + conv[5] = 0; + return conv; +} + +//Float to string with 1.23 format char *ftostr12ns(const float &x) { long xx=x*100; diff --git a/Marlin/ultralcd.h b/Marlin/ultralcd.h index 339955e592c5..144bfa60bec8 100644 --- a/Marlin/ultralcd.h +++ b/Marlin/ultralcd.h @@ -118,6 +118,7 @@ char *ftostr3(const float &x); char *ftostr31ns(const float &x); // float to string without sign character char *ftostr31(const float &x); char *ftostr32(const float &x); +char *ftostr43(const float &x); char *ftostr12ns(const float &x); char *ftostr5(const float &x); char *ftostr51(const float &x); diff --git a/Marlin/ultralcd_implementation_hitachi_HD44780.h b/Marlin/ultralcd_implementation_hitachi_HD44780.h index bf50812c4f53..af38003c4962 100644 --- a/Marlin/ultralcd_implementation_hitachi_HD44780.h +++ b/Marlin/ultralcd_implementation_hitachi_HD44780.h @@ -693,6 +693,8 @@ static void lcd_implementation_drawmenu_setting_edit_generic_P(uint8_t row, cons #define lcd_implementation_drawmenu_setting_edit_float3(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', ftostr3(*(data))) #define lcd_implementation_drawmenu_setting_edit_float32_selected(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', ftostr32(*(data))) #define lcd_implementation_drawmenu_setting_edit_float32(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', ftostr32(*(data))) +#define lcd_implementation_drawmenu_setting_edit_float43_selected(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', ftostr43(*(data))) +#define lcd_implementation_drawmenu_setting_edit_float43(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', ftostr43(*(data))) #define lcd_implementation_drawmenu_setting_edit_float5_selected(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', ftostr5(*(data))) #define lcd_implementation_drawmenu_setting_edit_float5(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', ftostr5(*(data))) #define lcd_implementation_drawmenu_setting_edit_float52_selected(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', ftostr52(*(data))) @@ -711,6 +713,8 @@ static void lcd_implementation_drawmenu_setting_edit_generic_P(uint8_t row, cons #define lcd_implementation_drawmenu_setting_edit_callback_float3(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', ftostr3(*(data))) #define lcd_implementation_drawmenu_setting_edit_callback_float32_selected(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', ftostr32(*(data))) #define lcd_implementation_drawmenu_setting_edit_callback_float32(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', ftostr32(*(data))) +#define lcd_implementation_drawmenu_setting_edit_callback_float43_selected(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', ftostr43(*(data))) +#define lcd_implementation_drawmenu_setting_edit_callback_float43(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', ftostr43(*(data))) #define lcd_implementation_drawmenu_setting_edit_callback_float5_selected(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', ftostr5(*(data))) #define lcd_implementation_drawmenu_setting_edit_callback_float5(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', ftostr5(*(data))) #define lcd_implementation_drawmenu_setting_edit_callback_float52_selected(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', ftostr52(*(data))) From d60efc3b5dcbf4e56afd6c37b8beac6188de90c3 Mon Sep 17 00:00:00 2001 From: wgm4321 Date: Sun, 28 Dec 2014 20:47:59 -0500 Subject: [PATCH 02/23] Fix syntax error caused by previous changes. --- Marlin/ConfigurationStore.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Marlin/ConfigurationStore.cpp b/Marlin/ConfigurationStore.cpp index 0b3e48550325..8e4a32805b93 100644 --- a/Marlin/ConfigurationStore.cpp +++ b/Marlin/ConfigurationStore.cpp @@ -264,8 +264,8 @@ SERIAL_ECHOLNPGM("Scaling factors:"); } else { SERIAL_ECHOLNPGM("Filament settings: Disabled"); } -} #endif +} #endif From 2701dd8a171fe2e3be013ed4f52d1637bbd7e5fd Mon Sep 17 00:00:00 2001 From: Lane Roberts Date: Wed, 31 Dec 2014 12:34:59 -0600 Subject: [PATCH 03/23] Due to the fix for #1248, X and Y probe offsets must not be floats. The compiler does not support comparing float values: "error: floating constant in preprocessor expression" The loss in X/Y precision shouldn't matter for Z probes, as most microswitches or inductive sensors are larger than 1mm square anyway. --- Marlin/Configuration.h | 1 + 1 file changed, 1 insertion(+) diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index 980efc5cdf25..fe6e371c5c43 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -392,6 +392,7 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of // these are the offsets to the probe relative to the extruder tip (Hotend - Probe) + // X and Y offsets must be integers #define X_PROBE_OFFSET_FROM_EXTRUDER -25 #define Y_PROBE_OFFSET_FROM_EXTRUDER -29 #define Z_PROBE_OFFSET_FROM_EXTRUDER -12.35 From 1d5d853c9a1959ee5e15e3e0f69a2d4e39673ffd Mon Sep 17 00:00:00 2001 From: David Forrest Date: Thu, 1 Jan 2015 19:11:42 -0500 Subject: [PATCH 04/23] temperature.cpp: Fix typo of MAX_BED_PID to MAX_BED_POWER. --- Marlin/temperature.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Marlin/temperature.cpp b/Marlin/temperature.cpp index 5b116d914758..4d17dca00965 100644 --- a/Marlin/temperature.cpp +++ b/Marlin/temperature.cpp @@ -582,7 +582,7 @@ void manage_heater() temp_dState_bed = pid_input; pid_output = pTerm_bed + iTerm_bed - dTerm_bed; - if (pid_output > MAX_BED_PID) { + if (pid_output > MAX_BED_POWER) { if (pid_error_bed > 0 ) temp_iState_bed -= pid_error_bed; // conditional un-integration pid_output=PID_MAX; } else if (pid_output < 0){ From f3e503e7251b47c64955c72b81d28294a2700b62 Mon Sep 17 00:00:00 2001 From: David Forrest Date: Thu, 1 Jan 2015 19:24:42 -0500 Subject: [PATCH 05/23] temperature.cpp: Fix typo of PID_MAX to MAX_BED_POWER for the bed. --- Marlin/temperature.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Marlin/temperature.cpp b/Marlin/temperature.cpp index 4d17dca00965..ce9bba31645e 100644 --- a/Marlin/temperature.cpp +++ b/Marlin/temperature.cpp @@ -584,7 +584,7 @@ void manage_heater() pid_output = pTerm_bed + iTerm_bed - dTerm_bed; if (pid_output > MAX_BED_POWER) { if (pid_error_bed > 0 ) temp_iState_bed -= pid_error_bed; // conditional un-integration - pid_output=PID_MAX; + pid_output=PID_BED_POWER; } else if (pid_output < 0){ if (pid_error_bed < 0 ) temp_iState_bed -= pid_error_bed; // conditional un-integration pid_output=0; From ecda6cdc0a7691bfce4ffba242cd2b245f953981 Mon Sep 17 00:00:00 2001 From: Alexander Hirzel Date: Fri, 2 Jan 2015 01:36:27 -0500 Subject: [PATCH 06/23] Fix typo, PID_BED_POWER -> MAX_BED_POWER --- Marlin/temperature.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Marlin/temperature.cpp b/Marlin/temperature.cpp index ce9bba31645e..94d257d55004 100644 --- a/Marlin/temperature.cpp +++ b/Marlin/temperature.cpp @@ -584,7 +584,7 @@ void manage_heater() pid_output = pTerm_bed + iTerm_bed - dTerm_bed; if (pid_output > MAX_BED_POWER) { if (pid_error_bed > 0 ) temp_iState_bed -= pid_error_bed; // conditional un-integration - pid_output=PID_BED_POWER; + pid_output=MAX_BED_POWER; } else if (pid_output < 0){ if (pid_error_bed < 0 ) temp_iState_bed -= pid_error_bed; // conditional un-integration pid_output=0; From edac64e7d2a54a201e6d819263b8b2b2d317800a Mon Sep 17 00:00:00 2001 From: wgm4321 Date: Sun, 28 Dec 2014 20:43:14 -0500 Subject: [PATCH 07/23] Add Filament menu and add Filament/Retract settings to config store. --- Marlin/ConfigurationStore.cpp | 124 ++++++++++++++++-- Marlin/Marlin.h | 4 + Marlin/Marlin_main.cpp | 78 ++++++++--- Marlin/language_en.h | 5 + Marlin/ultralcd.cpp | 45 ++++++- Marlin/ultralcd.h | 1 + .../ultralcd_implementation_hitachi_HD44780.h | 4 + 7 files changed, 232 insertions(+), 29 deletions(-) diff --git a/Marlin/ConfigurationStore.cpp b/Marlin/ConfigurationStore.cpp index 20e68d09e394..0b3e48550325 100644 --- a/Marlin/ConfigurationStore.cpp +++ b/Marlin/ConfigurationStore.cpp @@ -38,15 +38,7 @@ void _EEPROM_readData(int &pos, uint8_t* value, uint8_t size) // wrong data being written to the variables. // ALSO: always make sure the variables in the Store and retrieve sections are in the same order. -#define EEPROM_VERSION "V10" -#ifdef DELTA - #undef EEPROM_VERSION - #define EEPROM_VERSION "V11" -#endif -#ifdef SCARA - #undef EEPROM_VERSION - #define EEPROM_VERSION "V12" -#endif +#define EEPROM_VERSION "V13" #ifdef EEPROM_SETTINGS void Config_StoreSettings() @@ -101,6 +93,31 @@ void Config_StoreSettings() #ifdef SCARA EEPROM_WRITE_VAR(i,axis_scaling); // Add scaling for SCARA #endif + #ifdef FWRETRACT + EEPROM_WRITE_VAR(i,autoretract_enabled); + EEPROM_WRITE_VAR(i,retract_length); + #if EXTRUDERS > 1 + EEPROM_WRITE_VAR(i,retract_length_swap); + #endif + EEPROM_WRITE_VAR(i,retract_feedrate); + EEPROM_WRITE_VAR(i,retract_zlift); + EEPROM_WRITE_VAR(i,retract_recover_length); + #if EXTRUDERS > 1 + EEPROM_WRITE_VAR(i,retract_recover_length_swap); + #endif + EEPROM_WRITE_VAR(i,retract_recover_feedrate); + #endif + + // Save filament sizes + EEPROM_WRITE_VAR(i, volumetric_enabled); + EEPROM_WRITE_VAR(i, filament_size[0]); + #if EXTRUDERS > 1 + EEPROM_WRITE_VAR(i, filament_size[1]); + #if EXTRUDERS > 2 + EEPROM_WRITE_VAR(i, filament_size[2]); + #endif + #endif + char ver2[4]=EEPROM_VERSION; i=EEPROM_OFFSET; EEPROM_WRITE_VAR(i,ver2); // validate data @@ -210,12 +227,46 @@ SERIAL_ECHOLNPGM("Scaling factors:"); SERIAL_ECHO_START; SERIAL_ECHOLNPGM("Recover: S=Extra length (mm) F:Speed (mm/m)"); SERIAL_ECHO_START; - SERIAL_ECHOPAIR(" M208 S",retract_recover_length); - SERIAL_ECHOPAIR(" F" ,retract_recover_feedrate*60); - SERIAL_ECHOLN(""); + SERIAL_ECHOPAIR(" M208 S",retract_recover_length); + SERIAL_ECHOPAIR(" F", retract_recover_feedrate*60); + SERIAL_ECHOLN(""); + SERIAL_ECHO_START; + SERIAL_ECHOLNPGM("Auto-Retract: S=0 to disable, 1 to interpret extrude-only moves as retracts or recoveries"); + SERIAL_ECHO_START; + SERIAL_ECHOPAIR(" M209 S", (unsigned long)(autoretract_enabled ? 1 : 0)); + SERIAL_ECHOLN(""); +#if EXTRUDERS > 1 + SERIAL_ECHO_START; + SERIAL_ECHOLNPGM("Multi-extruder settings:"); + SERIAL_ECHO_START; + SERIAL_ECHOPAIR(" Swap retract length (mm): ", retract_length_swap); + SERIAL_ECHOLN(""); + SERIAL_ECHO_START; + SERIAL_ECHOPAIR(" Swap rec. addl. length (mm): ", retract_recover_length_swap); + SERIAL_ECHOLN(""); #endif + SERIAL_ECHO_START; + if (volumetric_enabled) { + SERIAL_ECHOLNPGM("Filament settings:"); + SERIAL_ECHO_START; + SERIAL_ECHOPAIR(" M200 D", filament_size[0]); + SERIAL_ECHOLN(""); +#if EXTRUDERS > 1 + SERIAL_ECHO_START; + SERIAL_ECHOPAIR(" M200 T1 D", filament_size[1]); + SERIAL_ECHOLN(""); +#if EXTRUDERS > 2 + SERIAL_ECHO_START; + SERIAL_ECHOPAIR(" M200 T2 D", filament_size[2]); + SERIAL_ECHOLN(""); +#endif +#endif + } else { + SERIAL_ECHOLNPGM("Filament settings: Disabled"); + } } #endif +#endif #ifdef EEPROM_SETTINGS @@ -277,6 +328,30 @@ void Config_RetrieveSettings() EEPROM_READ_VAR(i,axis_scaling); #endif + #ifdef FWRETRACT + EEPROM_READ_VAR(i,autoretract_enabled); + EEPROM_READ_VAR(i,retract_length); + #if EXTRUDERS > 1 + EEPROM_READ_VAR(i,retract_length_swap); + #endif + EEPROM_READ_VAR(i,retract_feedrate); + EEPROM_READ_VAR(i,retract_zlift); + EEPROM_READ_VAR(i,retract_recover_length); + #if EXTRUDERS > 1 + EEPROM_READ_VAR(i,retract_recover_length_swap); + #endif + EEPROM_READ_VAR(i,retract_recover_feedrate); + #endif + + EEPROM_READ_VAR(i, volumetric_enabled); + EEPROM_READ_VAR(i, filament_size[0]); +#if EXTRUDERS > 1 + EEPROM_READ_VAR(i, filament_size[1]); +#if EXTRUDERS > 2 + EEPROM_READ_VAR(i, filament_size[2]); +#endif +#endif + calculate_volumetric_multipliers(); // Call updatePID (similar to when we have processed M301) updatePID(); SERIAL_ECHO_START; @@ -353,6 +428,31 @@ void Config_ResetDefault() #endif//PID_ADD_EXTRUSION_RATE #endif//PIDTEMP +#ifdef FWRETRACT + autoretract_enabled = false; + retract_length = RETRACT_LENGTH; +#if EXTRUDERS > 1 + retract_length_swap = RETRACT_LENGTH_SWAP; +#endif + retract_feedrate = RETRACT_FEEDRATE; + retract_zlift = RETRACT_ZLIFT; + retract_recover_length = RETRACT_RECOVER_LENGTH; +#if EXTRUDERS > 1 + retract_recover_length_swap = RETRACT_RECOVER_LENGTH_SWAP; +#endif + retract_recover_feedrate = RETRACT_RECOVER_FEEDRATE; +#endif + + volumetric_enabled = false; + filament_size[0] = DEFAULT_NOMINAL_FILAMENT_DIA; +#if EXTRUDERS > 1 + filament_size[1] = DEFAULT_NOMINAL_FILAMENT_DIA; +#if EXTRUDERS > 2 + filament_size[2] = DEFAULT_NOMINAL_FILAMENT_DIA; +#endif +#endif + calculate_volumetric_multipliers(); + SERIAL_ECHO_START; SERIAL_ECHOLNPGM("Hardcoded Default Settings Loaded"); diff --git a/Marlin/Marlin.h b/Marlin/Marlin.h index 76b348e774e1..d8012976c472 100644 --- a/Marlin/Marlin.h +++ b/Marlin/Marlin.h @@ -209,7 +209,9 @@ extern float homing_feedrate[]; extern bool axis_relative_modes[]; extern int feedmultiply; extern int extrudemultiply; // Sets extrude multiply factor (in percent) for all extruders +extern bool volumetric_enabled; extern int extruder_multiply[EXTRUDERS]; // sets extrude multiply factor (in percent) for each extruder individually +extern float filament_size[EXTRUDERS]; // cross-sectional area of filament (in millimeters), typically around 1.75 or 2.85, 0 disables the volumetric calculations for the extruder. extern float volumetric_multiplier[EXTRUDERS]; // reciprocal of cross-sectional area of filament (in square millimeters), stored this way to reduce computational burden in planner extern float current_position[NUM_AXIS] ; extern float add_homing[3]; @@ -266,3 +268,5 @@ extern void digipot_i2c_init(); #endif #endif + +extern void calculate_volumetric_multipliers(); \ No newline at end of file diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp index ef3cda04c981..e3e5ef358850 100644 --- a/Marlin/Marlin_main.cpp +++ b/Marlin/Marlin_main.cpp @@ -215,6 +215,15 @@ int extruder_multiply[EXTRUDERS] = {100 #endif #endif }; +bool volumetric_enabled = false; +float filament_size[EXTRUDERS] = { DEFAULT_NOMINAL_FILAMENT_DIA + #if EXTRUDERS > 1 + , DEFAULT_NOMINAL_FILAMENT_DIA + #if EXTRUDERS > 2 + , DEFAULT_NOMINAL_FILAMENT_DIA + #endif + #endif +}; float volumetric_multiplier[EXTRUDERS] = {1.0 #if EXTRUDERS > 1 , 1.0 @@ -2823,21 +2832,7 @@ SERIAL_PROTOCOLPGM("\n\n"); #endif //BLINKM case 200: // M200 D set filament diameter and set E axis units to cubic millimeters (use S0 to set back to millimeters). { - float area = .0; - float radius = .0; - if(code_seen('D')) { - radius = (float)code_value() * .5; - if(radius == 0) { - area = 1; - } else { - area = M_PI * pow(radius, 2); - } - } else { - //reserved for setting filament diameter via UFID or filament measuring device - break; - - - } + tmp_extruder = active_extruder; if(code_seen('T')) { tmp_extruder = code_value(); @@ -2847,7 +2842,32 @@ SERIAL_PROTOCOLPGM("\n\n"); break; } } - volumetric_multiplier[tmp_extruder] = 1 / area; + + float area = .0; + if(code_seen('D')) { + float diameter = (float)code_value(); + if (diameter == 0.0) { + // setting any extruder filament size disables volumetric on the assumption that + // slicers either generate in extruder values as cubic mm or as as filament feeds + // for all extruders + volumetric_enabled = false; + } else { + filament_size[tmp_extruder] = (float)code_value(); + // make sure all extruders have some sane value for the filament size + filament_size[0] = (filament_size[0] == 0.0 ? DEFAULT_NOMINAL_FILAMENT_DIA : filament_size[0]); + #if EXTRUDERS > 1 + filament_size[1] = (filament_size[1] == 0.0 ? DEFAULT_NOMINAL_FILAMENT_DIA : filament_size[1]); + #if EXTRUDERS > 2 + filament_size[2] = (filament_size[2] == 0.0 ? DEFAULT_NOMINAL_FILAMENT_DIA : filament_size[2]); + #endif + #endif + volumetric_enabled = true; + } + } else { + //reserved for setting filament diameter via UFID or filament measuring device + break; + } + calculate_volumetric_multipliers(); } break; case 201: // M201 @@ -4580,3 +4600,29 @@ bool setTargetedHotend(int code){ return false; } + +float calculate_volumetric_multiplier(float diameter) { + float area = .0; + float radius = .0; + + radius = diameter * .5; + if (! volumetric_enabled || radius == 0) { + area = 1; + } + else { + area = M_PI * pow(radius, 2); + } + + return 1.0 / area; +} + +void calculate_volumetric_multipliers() { + volumetric_multiplier[0] = calculate_volumetric_multiplier(filament_size[0]); +#if EXTRUDERS > 1 + volumetric_multiplier[1] = calculate_volumetric_multiplier(filament_size[1]); +#if EXTRUDERS > 2 + volumetric_multiplier[2] = calculate_volumetric_multiplier(filament_size[2]); +#endif +#endif +} + diff --git a/Marlin/language_en.h b/Marlin/language_en.h index c749e98254a3..014b42e51e03 100644 --- a/Marlin/language_en.h +++ b/Marlin/language_en.h @@ -86,6 +86,11 @@ #define MSG_ESTEPS "Esteps/mm" #define MSG_TEMPERATURE "Temperature" #define MSG_MOTION "Motion" +#define MSG_VOLUMETRIC "Filament" +#define MSG_VOLUMETRIC_ENABLED "E in mm3" +#define MSG_FILAMENT_SIZE_EXTRUDER_0 "Fil. Dia. 1" +#define MSG_FILAMENT_SIZE_EXTRUDER_1 "Fil. Dia. 2" +#define MSG_FILAMENT_SIZE_EXTRUDER_2 "Fil. Dia. 3" #define MSG_CONTRAST "LCD contrast" #define MSG_STORE_EPROM "Store memory" #define MSG_LOAD_EPROM "Load memory" diff --git a/Marlin/ultralcd.cpp b/Marlin/ultralcd.cpp index 83895e2fdab8..42d497958303 100644 --- a/Marlin/ultralcd.cpp +++ b/Marlin/ultralcd.cpp @@ -59,6 +59,7 @@ static void lcd_control_temperature_menu(); static void lcd_control_temperature_preheat_pla_settings_menu(); static void lcd_control_temperature_preheat_abs_settings_menu(); static void lcd_control_motion_menu(); +static void lcd_control_volumetric_menu(); #ifdef DOGLCD static void lcd_set_contrast(); #endif @@ -82,6 +83,7 @@ static void menu_action_setting_edit_bool(const char* pstr, bool* ptr); static void menu_action_setting_edit_int3(const char* pstr, int* ptr, int minValue, int maxValue); static void menu_action_setting_edit_float3(const char* pstr, float* ptr, float minValue, float maxValue); static void menu_action_setting_edit_float32(const char* pstr, float* ptr, float minValue, float maxValue); +static void menu_action_setting_edit_float43(const char* pstr, float* ptr, float minValue, float maxValue); static void menu_action_setting_edit_float5(const char* pstr, float* ptr, float minValue, float maxValue); static void menu_action_setting_edit_float51(const char* pstr, float* ptr, float minValue, float maxValue); static void menu_action_setting_edit_float52(const char* pstr, float* ptr, float minValue, float maxValue); @@ -90,6 +92,7 @@ static void menu_action_setting_edit_callback_bool(const char* pstr, bool* ptr, static void menu_action_setting_edit_callback_int3(const char* pstr, int* ptr, int minValue, int maxValue, menuFunc_t callbackFunc); static void menu_action_setting_edit_callback_float3(const char* pstr, float* ptr, float minValue, float maxValue, menuFunc_t callbackFunc); static void menu_action_setting_edit_callback_float32(const char* pstr, float* ptr, float minValue, float maxValue, menuFunc_t callbackFunc); +static void menu_action_setting_edit_callback_float43(const char* pstr, float* ptr, float minValue, float maxValue, menuFunc_t callbackFunc); static void menu_action_setting_edit_callback_float5(const char* pstr, float* ptr, float minValue, float maxValue, menuFunc_t callbackFunc); static void menu_action_setting_edit_callback_float51(const char* pstr, float* ptr, float minValue, float maxValue, menuFunc_t callbackFunc); static void menu_action_setting_edit_callback_float52(const char* pstr, float* ptr, float minValue, float maxValue, menuFunc_t callbackFunc); @@ -742,6 +745,8 @@ static void lcd_control_menu() MENU_ITEM(back, MSG_MAIN, lcd_main_menu); MENU_ITEM(submenu, MSG_TEMPERATURE, lcd_control_temperature_menu); MENU_ITEM(submenu, MSG_MOTION, lcd_control_motion_menu); + MENU_ITEM(submenu, MSG_VOLUMETRIC, lcd_control_volumetric_menu); + #ifdef DOGLCD // MENU_ITEM_EDIT(int3, MSG_CONTRAST, &lcd_contrast, 0, 63); MENU_ITEM(submenu, MSG_CONTRAST, lcd_set_contrast); @@ -870,6 +875,26 @@ static void lcd_control_motion_menu() END_MENU(); } +static void lcd_control_volumetric_menu() +{ + START_MENU(); + MENU_ITEM(back, MSG_CONTROL, lcd_control_menu); + + MENU_ITEM_EDIT(bool, MSG_VOLUMETRIC_ENABLED, &volumetric_enabled); + + if (volumetric_enabled) { + MENU_ITEM_EDIT_CALLBACK(float43, MSG_FILAMENT_SIZE_EXTRUDER_0, &filament_size[0], DEFAULT_NOMINAL_FILAMENT_DIA - .5, DEFAULT_NOMINAL_FILAMENT_DIA + .5, calculate_volumetric_multipliers); +#if EXTRUDERS > 1 + MENU_ITEM_EDIT_CALLBACK(float43, MSG_FILAMENT_SIZE_EXTRUDER_1, &filament_size[1], DEFAULT_NOMINAL_FILAMENT_DIA - .5, DEFAULT_NOMINAL_FILAMENT_DIA + .5, calculate_volumetric_multipliers); +#if EXTRUDERS > 2 + MENU_ITEM_EDIT_CALLBACK(float43, MSG_FILAMENT_SIZE_EXTRUDER_2, &filament_size[2], DEFAULT_NOMINAL_FILAMENT_DIA - .5, DEFAULT_NOMINAL_FILAMENT_DIA + .5, calculate_volumetric_multipliers); +#endif +#endif + } + + END_MENU(); +} + #ifdef DOGLCD static void lcd_set_contrast() { @@ -1013,6 +1038,7 @@ void lcd_sdcard_menu() menu_edit_type(int, int3, itostr3, 1) menu_edit_type(float, float3, ftostr3, 1) menu_edit_type(float, float32, ftostr32, 100) +menu_edit_type(float, float43, ftostr43, 1000) menu_edit_type(float, float5, ftostr5, 0.01) menu_edit_type(float, float51, ftostr51, 10) menu_edit_type(float, float52, ftostr52, 100) @@ -1482,7 +1508,24 @@ char *ftostr32(const float &x) return conv; } -// Convert float to string with 1.23 format +// Convert float to string with 1.234 format +char *ftostr43(const float &x) +{ + long xx = x * 1000; + if (xx >= 0) + conv[0] = (xx / 1000) % 10 + '0'; + else + conv[0] = '-'; + xx = abs(xx); + conv[1] = '.'; + conv[2] = (xx / 100) % 10 + '0'; + conv[3] = (xx / 10) % 10 + '0'; + conv[4] = (xx) % 10 + '0'; + conv[5] = 0; + return conv; +} + +//Float to string with 1.23 format char *ftostr12ns(const float &x) { long xx=x*100; diff --git a/Marlin/ultralcd.h b/Marlin/ultralcd.h index 351a2654b4c5..a175f4a75717 100644 --- a/Marlin/ultralcd.h +++ b/Marlin/ultralcd.h @@ -118,6 +118,7 @@ char *ftostr3(const float &x); char *ftostr31ns(const float &x); // float to string without sign character char *ftostr31(const float &x); char *ftostr32(const float &x); +char *ftostr43(const float &x); char *ftostr12ns(const float &x); char *ftostr32sp(const float &x); // remove zero-padding from ftostr32 char *ftostr5(const float &x); diff --git a/Marlin/ultralcd_implementation_hitachi_HD44780.h b/Marlin/ultralcd_implementation_hitachi_HD44780.h index 1a93fe3e6e42..fe0953e56c87 100644 --- a/Marlin/ultralcd_implementation_hitachi_HD44780.h +++ b/Marlin/ultralcd_implementation_hitachi_HD44780.h @@ -693,6 +693,8 @@ static void lcd_implementation_drawmenu_setting_edit_generic_P(uint8_t row, cons #define lcd_implementation_drawmenu_setting_edit_float3(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', ftostr3(*(data))) #define lcd_implementation_drawmenu_setting_edit_float32_selected(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', ftostr32(*(data))) #define lcd_implementation_drawmenu_setting_edit_float32(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', ftostr32(*(data))) +#define lcd_implementation_drawmenu_setting_edit_float43_selected(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', ftostr43(*(data))) +#define lcd_implementation_drawmenu_setting_edit_float43(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', ftostr43(*(data))) #define lcd_implementation_drawmenu_setting_edit_float5_selected(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', ftostr5(*(data))) #define lcd_implementation_drawmenu_setting_edit_float5(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', ftostr5(*(data))) #define lcd_implementation_drawmenu_setting_edit_float52_selected(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', ftostr52(*(data))) @@ -711,6 +713,8 @@ static void lcd_implementation_drawmenu_setting_edit_generic_P(uint8_t row, cons #define lcd_implementation_drawmenu_setting_edit_callback_float3(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', ftostr3(*(data))) #define lcd_implementation_drawmenu_setting_edit_callback_float32_selected(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', ftostr32(*(data))) #define lcd_implementation_drawmenu_setting_edit_callback_float32(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', ftostr32(*(data))) +#define lcd_implementation_drawmenu_setting_edit_callback_float43_selected(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', ftostr43(*(data))) +#define lcd_implementation_drawmenu_setting_edit_callback_float43(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', ftostr43(*(data))) #define lcd_implementation_drawmenu_setting_edit_callback_float5_selected(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', ftostr5(*(data))) #define lcd_implementation_drawmenu_setting_edit_callback_float5(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', ftostr5(*(data))) #define lcd_implementation_drawmenu_setting_edit_callback_float52_selected(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', ftostr52(*(data))) From b32be2dc64cd3281b7ea9853824b71bcd3fca2de Mon Sep 17 00:00:00 2001 From: wgm4321 Date: Sun, 28 Dec 2014 20:47:59 -0500 Subject: [PATCH 08/23] Fix syntax error caused by previous changes. --- Marlin/ConfigurationStore.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Marlin/ConfigurationStore.cpp b/Marlin/ConfigurationStore.cpp index 0b3e48550325..8e4a32805b93 100644 --- a/Marlin/ConfigurationStore.cpp +++ b/Marlin/ConfigurationStore.cpp @@ -264,8 +264,8 @@ SERIAL_ECHOLNPGM("Scaling factors:"); } else { SERIAL_ECHOLNPGM("Filament settings: Disabled"); } -} #endif +} #endif From 1f520a5a8c4f3bfdf373dd4b5e0b6b7a8ae30e9e Mon Sep 17 00:00:00 2001 From: Lane Roberts Date: Wed, 31 Dec 2014 12:34:59 -0600 Subject: [PATCH 09/23] Due to the fix for #1248, X and Y probe offsets must not be floats. The compiler does not support comparing float values: "error: floating constant in preprocessor expression" The loss in X/Y precision shouldn't matter for Z probes, as most microswitches or inductive sensors are larger than 1mm square anyway. --- Marlin/Configuration.h | 1 + 1 file changed, 1 insertion(+) diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index 980efc5cdf25..fe6e371c5c43 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -392,6 +392,7 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of // these are the offsets to the probe relative to the extruder tip (Hotend - Probe) + // X and Y offsets must be integers #define X_PROBE_OFFSET_FROM_EXTRUDER -25 #define Y_PROBE_OFFSET_FROM_EXTRUDER -29 #define Z_PROBE_OFFSET_FROM_EXTRUDER -12.35 From eed451e03434488916a7135f105702980390e074 Mon Sep 17 00:00:00 2001 From: Alexander Hirzel Date: Fri, 2 Jan 2015 11:11:18 -0500 Subject: [PATCH 10/23] rework analogInputToDigitalPin definition --- Marlin/Marlin.h | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/Marlin/Marlin.h b/Marlin/Marlin.h index d8012976c472..13e55523653e 100644 --- a/Marlin/Marlin.h +++ b/Marlin/Marlin.h @@ -30,7 +30,10 @@ # include "Arduino.h" #else # include "WProgram.h" - //Arduino < 1.0.0 does not define this, so we need to do it ourselves +#endif + +// Arduino < 1.0.0 does not define this, so we need to do it ourselves +#ifndef analogInputToDigitalPin # define analogInputToDigitalPin(p) ((p) + A0) #endif @@ -240,9 +243,9 @@ extern unsigned char fanSpeedSoftPwm; #endif #ifdef FILAMENT_SENSOR - extern float filament_width_nominal; //holds the theoretical filament diameter ie., 3.00 or 1.75 - extern bool filament_sensor; //indicates that filament sensor readings should control extrusion - extern float filament_width_meas; //holds the filament diameter as accurately measured + extern float filament_width_nominal; //holds the theoretical filament diameter ie., 3.00 or 1.75 + extern bool filament_sensor; //indicates that filament sensor readings should control extrusion + extern float filament_width_meas; //holds the filament diameter as accurately measured extern signed char measurement_delay[]; //ring buffer to delay measurement extern int delay_index1, delay_index2; //index into ring buffer extern float delay_dist; //delay distance counter @@ -269,4 +272,5 @@ extern void digipot_i2c_init(); #endif -extern void calculate_volumetric_multipliers(); \ No newline at end of file +extern void calculate_volumetric_multipliers(); + From b5e50cdd4e8717caef23ffdd88825172a3c2c8b2 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 2 Jan 2015 08:53:09 -0800 Subject: [PATCH 11/23] Move scripts and documentation to subfolders --- Marlin/{ => documentation}/LCD Menu Tree.pdf | Bin Marlin/{ => documentation}/Menu Plans.xlsx | Bin .../{ => scripts}/createTemperatureLookupMarlin.py | 0 Marlin/{ => scripts}/create_speed_lookuptable.py | 0 4 files changed, 0 insertions(+), 0 deletions(-) rename Marlin/{ => documentation}/LCD Menu Tree.pdf (100%) rename Marlin/{ => documentation}/Menu Plans.xlsx (100%) rename Marlin/{ => scripts}/createTemperatureLookupMarlin.py (100%) rename Marlin/{ => scripts}/create_speed_lookuptable.py (100%) diff --git a/Marlin/LCD Menu Tree.pdf b/Marlin/documentation/LCD Menu Tree.pdf similarity index 100% rename from Marlin/LCD Menu Tree.pdf rename to Marlin/documentation/LCD Menu Tree.pdf diff --git a/Marlin/Menu Plans.xlsx b/Marlin/documentation/Menu Plans.xlsx similarity index 100% rename from Marlin/Menu Plans.xlsx rename to Marlin/documentation/Menu Plans.xlsx diff --git a/Marlin/createTemperatureLookupMarlin.py b/Marlin/scripts/createTemperatureLookupMarlin.py similarity index 100% rename from Marlin/createTemperatureLookupMarlin.py rename to Marlin/scripts/createTemperatureLookupMarlin.py diff --git a/Marlin/create_speed_lookuptable.py b/Marlin/scripts/create_speed_lookuptable.py similarity index 100% rename from Marlin/create_speed_lookuptable.py rename to Marlin/scripts/create_speed_lookuptable.py From 3f9707aa3315781c8214968b2cf2e6d34c4c688b Mon Sep 17 00:00:00 2001 From: monkeydave Date: Sat, 3 Jan 2015 10:56:10 +0000 Subject: [PATCH 12/23] Added .gitignore back into repo --- .gitignore | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000000..a24cf93707c4 --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +*.o +applet/ +*~ +*.orig +*.rej +*.bak From 86cc22d63978cc72518dcc1541cfb280e46e21fc Mon Sep 17 00:00:00 2001 From: monkeydave Date: Sat, 3 Jan 2015 11:43:40 +0000 Subject: [PATCH 13/23] Readd .travis.yml, change build enviroment to use ino instead of gcc --- .travis.yml | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 000000000000..5d953fe1d1cd --- /dev/null +++ b/.travis.yml @@ -0,0 +1,38 @@ +--- +language: c + +before_install: + - pwd + - wget https://bootstrap.pypa.io/get-pip.py + - wget https://bintray.com/artifact/download/olikraus/u8glib/u8glib_arduino_v1.17.zip +install: + - sudo python get-pip.py + - sudo pip install ino + # add ppa for newer version of Arduino than available in ubuntu 12.04 + - sudo add-apt-repository ppa:michael-gruz/elektronik -y + - sudo apt-get update -q + - sudo apt-get install arduino +before_script: + # add U8glib, LiquidCrystal_I2C & LiquidTWI2 libraries + - sudo unzip u8glib_arduino_v1.17.zip -d /usr/share/arduino/libraries/ + - cd /usr/share/arduino/libraries/ + - sudo git clone https://github.com/kiyoshigawa/LiquidCrystal_I2C.git + - ls -la + - ls -la LiquidCrystal_I2C/ + - sudo git clone https://github.com/lincomatic/LiquidTWI2.git + # remove Robot_Control library to stop compile error! + - sudo rm -rf /usr/share/arduino/libraries/Robot_Control + # change back to home directory for compiling + - cd /home/travis/build/monkeydave/Marlin + # ino needs files in src directory + - ln -s Marlin src + # remove Marlin.pde as it confuses ino + - rm Marlin/Marlin.pde +script: + - ino build -m mega2560 + - cp Marlin/example_configurations/delta/Configuration* Marlin/ + - rm -rf .build/ + - ino build -m mega2560 + - sed -i 's/#define MOTHERBOARD BOARD_RAMPS_13_EFB/#define MOTHERBOARD BOARD_DUEMILANOVE_328P/g' Marlin/Configuration.h + - rm -rf .build/ + - ino build -m atmega328 \ No newline at end of file From 21cc188272a68b89b30d969038acc2c3644bb677 Mon Sep 17 00:00:00 2001 From: monkeydave Date: Sat, 3 Jan 2015 12:09:12 +0000 Subject: [PATCH 14/23] Updated .travis.yml for ErikZalm branch pull request --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 5d953fe1d1cd..2b34d7ee1274 100644 --- a/.travis.yml +++ b/.travis.yml @@ -23,10 +23,10 @@ before_script: # remove Robot_Control library to stop compile error! - sudo rm -rf /usr/share/arduino/libraries/Robot_Control # change back to home directory for compiling - - cd /home/travis/build/monkeydave/Marlin + - cd /home/travis/build/ErikZalm/Marlin # ino needs files in src directory - ln -s Marlin src - # remove Marlin.pde as it confuses ino + # remove Marlin.pde as it confuses ino after it finds Marlin.ino - rm Marlin/Marlin.pde script: - ino build -m mega2560 From 206b7f4e92fe974ea5923334fde531deb02ff449 Mon Sep 17 00:00:00 2001 From: Bo Herrmannsen Date: Sat, 3 Jan 2015 13:52:52 +0100 Subject: [PATCH 15/23] Update .gitignore --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index a24cf93707c4..cd72efb10d28 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,5 @@ applet/ *.orig *.rej *.bak +*.DS_Store +*.idea From be81dfa3de4bae956cbc210fb88ff40161169a74 Mon Sep 17 00:00:00 2001 From: monkeydave Date: Sat, 3 Jan 2015 16:50:05 +0000 Subject: [PATCH 16/23] Updated .travis.yml so others forks will also compile --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 2b34d7ee1274..94b1377a419e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -23,7 +23,7 @@ before_script: # remove Robot_Control library to stop compile error! - sudo rm -rf /usr/share/arduino/libraries/Robot_Control # change back to home directory for compiling - - cd /home/travis/build/ErikZalm/Marlin + - cd $TRAVIS_BUILD_DIR # ino needs files in src directory - ln -s Marlin src # remove Marlin.pde as it confuses ino after it finds Marlin.ino From 07b85f8b92a836e6c1566a4a52eaf80db3110392 Mon Sep 17 00:00:00 2001 From: monkeydave Date: Sat, 3 Jan 2015 19:29:04 +0000 Subject: [PATCH 17/23] Added compile checks for lots of defines in Configuration.h --- .travis.yml | 122 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 122 insertions(+) diff --git a/.travis.yml b/.travis.yml index 94b1377a419e..b877709a435a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -29,10 +29,132 @@ before_script: # remove Marlin.pde as it confuses ino after it finds Marlin.ino - rm Marlin/Marlin.pde script: + # build default config - ino build -m mega2560 + # backup configuration.h + - cp Marlin/Configuration.h Marlin/Configuration.h.backup + - cp Marlin/Configuration_adv.h Marlin/Configuration_adv.h.backup + # change extruder numbers from 1 to 2 + - sed -i 's/#define EXTRUDERS 1/#define EXTRUDERS 2/g' Marlin/Configuration.h + - rm -rf .build/ + - ino build -m mega2560 + # change extruder numbers from 2 to 3 + - sed -i 's/#define EXTRUDERS 2/#define EXTRUDERS 3/g' Marlin/Configuration.h + - rm -rf .build/ + - ino build -m mega2560 + # enable PIDTEMPBED + - cp Marlin/Configuration.h.backup Marlin/Configuration.h + - sed -i 's/\/\/#define PIDTEMPBED/#define PIDTEMPBED/g' Marlin/Configuration.h + - rm -rf .build/ + - ino build -m mega2560 + # enable THERMAL RUNAWAY PROTECTION for extruders & bed + - cp Marlin/Configuration.h.backup Marlin/Configuration.h + - sed -i 's/\/\/#define THERMAL_RUNAWAY_PROTECTION_PERIOD/#define THERMAL_RUNAWAY_PROTECTION_PERIOD/g' Marlin/Configuration.h + - sed -i 's/\/\/#define THERMAL_RUNAWAY_PROTECTION_HYSTERESIS/#define THERMAL_RUNAWAY_PROTECTION_HYSTERESIS/g' Marlin/Configuration.h + - sed -i 's/\/\/#define THERMAL_RUNAWAY_PROTECTION_BED_PERIOD/#define THERMAL_RUNAWAY_PROTECTION_BED_PERIOD/g' Marlin/Configuration.h + - sed -i 's/\/\/#define THERMAL_RUNAWAY_PROTECTION_BED_HYSTERESIS/#define THERMAL_RUNAWAY_PROTECTION_BED_HYSTERESIS/g' Marlin/Configuration.h + - rm -rf .build/ + - ino build -m mega2560 + # enable AUTO_BED_LEVELING + - cp Marlin/Configuration.h.backup Marlin/Configuration.h + - sed -i 's/\/\/#define ENABLE_AUTO_BED_LEVELING/#define ENABLE_AUTO_BED_LEVELING/g' Marlin/Configuration.h + - rm -rf .build/ + - ino build -m mega2560 + # enable EEPROM_SETTINGS & EEPROM_CHITCHAT + - cp Marlin/Configuration.h.backup Marlin/Configuration.h + - sed -i 's/\/\/#define EEPROM_SETTINGS/#define EEPROM_SETTINGS/g' Marlin/Configuration.h + - sed -i 's/\/\/#define EEPROM_CHITCHAT/#define EEPROM_CHITCHAT/g' Marlin/Configuration.h + - rm -rf .build/ + - ino build -m mega2560 + ### LCDS ### + # ULTIMAKERCONTROLLER + - cp Marlin/Configuration.h.backup Marlin/Configuration.h + - sed -i 's/\/\/#define ULTIMAKERCONTROLLER/#define ULTIMAKERCONTROLLER/g' Marlin/Configuration.h + - rm -rf .build/ + - ino build -m mega2560 + # MAKRPANEL + - cp Marlin/Configuration.h.backup Marlin/Configuration.h + - sed -i 's/\/\/#define MAKRPANEL/#define MAKRPANEL/g' Marlin/Configuration.h + - rm -rf .build/ + - ino build -m mega2560 + # REPRAP_DISCOUNT_SMART_CONTROLLER + - cp Marlin/Configuration.h.backup Marlin/Configuration.h + - sed -i 's/\/\/#define REPRAP_DISCOUNT_SMART_CONTROLLER/#define REPRAP_DISCOUNT_SMART_CONTROLLER/g' Marlin/Configuration.h + - rm -rf .build/ + - ino build -m mega2560 + # G3D_PANE + - cp Marlin/Configuration.h.backup Marlin/Configuration.h + - sed -i 's/\/\/#define G3D_PANEL/#define G3D_PANEL/g' Marlin/Configuration.h + - rm -rf .build/ + - ino build -m mega2560 + # REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER + - cp Marlin/Configuration.h.backup Marlin/Configuration.h + - sed -i 's/\/\/#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER/#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER/g' Marlin/Configuration.h + - rm -rf .build/ + - ino build -m mega2560 + # REPRAPWORLD_KEYPAD + - cp Marlin/Configuration.h.backup Marlin/Configuration.h + - sed -i 's/\/\/#define ULTRA_LCD/#define ULTRA_LCD/g' Marlin/Configuration.h + - sed -i 's/\/\/#define REPRAPWORLD_KEYPAD/#define REPRAPWORLD_KEYPAD/g' Marlin/Configuration.h + - sed -i 's/\/\/#define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0/#define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0/g' Marlin/Configuration.h + - rm -rf .build/ + - ino build -m mega2560 + # RA_CONTROL_PANEL + - cp Marlin/Configuration.h.backup Marlin/Configuration.h + - sed -i 's/\/\/#define RA_CONTROL_PANEL/#define RA_CONTROL_PANEL/g' Marlin/Configuration.h + - rm -rf .build/ + - ino build -m mega2560 + ### I2C PANELS ### + # LCD_I2C_SAINSMART_YWROBOT + - cp Marlin/Configuration.h.backup Marlin/Configuration.h + - sed -i 's/\/\/#define LCD_I2C_SAINSMART_YWROBOT/#define LCD_I2C_SAINSMART_YWROBOT/g' Marlin/Configuration.h + - rm -rf .build/ + - ino build -m mega2560 + # LCD_I2C_PANELOLU2 + - cp Marlin/Configuration.h.backup Marlin/Configuration.h + - sed -i 's/\/\/#define LCD_I2C_PANELOLU2/#define LCD_I2C_PANELOLU2/g' Marlin/Configuration.h + - rm -rf .build/ + - ino build -m mega2560 + # LCD_I2C_VIKI + - cp Marlin/Configuration.h.backup Marlin/Configuration.h + - sed -i 's/\/\/#define LCD_I2C_VIKI/#define LCD_I2C_VIKI/g' Marlin/Configuration.h + - rm -rf .build/ + - ino build -m mega2560 + # SAV_3DLCD + - cp Marlin/Configuration.h.backup Marlin/Configuration.h + - sed -i 's/\/\/#define SAV_3DLCD/#define SAV_3DLCD/g' Marlin/Configuration.h + - rm -rf .build/ + - ino build -m mega2560 + # Enable filament sensor + - cp Marlin/Configuration.h.backup Marlin/Configuration.h + - sed -i 's/\/\/#define FILAMENT_SENSOR/#define FILAMENT_SENSOR/g' Marlin/Configuration.h + - rm -rf .build/ + - ino build -m mega2560 + # Enable filament sensor with LCD display + - cp Marlin/Configuration.h.backup Marlin/Configuration.h + - sed -i 's/\/\/#define ULTIMAKERCONTROLLER/#define ULTIMAKERCONTROLLER/g' Marlin/Configuration.h + - sed -i 's/\/\/#define FILAMENT_SENSOR/#define FILAMENT_SENSOR/g' Marlin/Configuration.h + - sed -i 's/\/\/#define FILAMENT_LCD_DISPLAY/#define FILAMENT_LCD_DISPLAY/g' Marlin/Configuration.h + - rm -rf .build/ + - ino build -m mega2560 + ######## Example Configurations ############## + # Delta Config - cp Marlin/example_configurations/delta/Configuration* Marlin/ - rm -rf .build/ - ino build -m mega2560 + # Makibox Config need to check board type for Teensy++ 2.0 + #- cp Marlin/example_configurations/makibox/Configuration* Marlin/ + #- rm -rf .build/ + #- ino build -m mega2560 + # SCARA Config + - cp Marlin/example_configurations/SCARA/Configuration* Marlin/ + - rm -rf .build/ + - ino build -m mega2560 + # tvrrug Config need to check board type for sanguino atmega644p + #- cp Marlin/example_configurations/tvrrug/Round2/Configuration* Marlin/ + #- rm -rf .build/ + #- ino build -m mega2560 + ######## Board Types ############# - sed -i 's/#define MOTHERBOARD BOARD_RAMPS_13_EFB/#define MOTHERBOARD BOARD_DUEMILANOVE_328P/g' Marlin/Configuration.h - rm -rf .build/ - ino build -m atmega328 \ No newline at end of file From f8aa5ff771f6c81380bdabec02503a3377b93e8a Mon Sep 17 00:00:00 2001 From: wgm4321 Date: Sat, 3 Jan 2015 17:10:13 -0500 Subject: [PATCH 18/23] Fix for cant compile when REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER defined --- Marlin/dogm_lcd_implementation.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Marlin/dogm_lcd_implementation.h b/Marlin/dogm_lcd_implementation.h index 4fed3baf1191..fafd249d6773 100644 --- a/Marlin/dogm_lcd_implementation.h +++ b/Marlin/dogm_lcd_implementation.h @@ -366,6 +366,8 @@ static void _drawmenu_setting_edit_generic(uint8_t row, const char* pstr, char p #define lcd_implementation_drawmenu_setting_edit_float3(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', ftostr3(*(data))) #define lcd_implementation_drawmenu_setting_edit_float32_selected(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', ftostr32(*(data))) #define lcd_implementation_drawmenu_setting_edit_float32(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', ftostr32(*(data))) +#define lcd_implementation_drawmenu_setting_edit_float43_selected(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', ftostr43(*(data))) +#define lcd_implementation_drawmenu_setting_edit_float43(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', ftostr43(*(data))) #define lcd_implementation_drawmenu_setting_edit_float5_selected(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', ftostr5(*(data))) #define lcd_implementation_drawmenu_setting_edit_float5(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', ftostr5(*(data))) #define lcd_implementation_drawmenu_setting_edit_float52_selected(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', ftostr52(*(data))) @@ -384,6 +386,8 @@ static void _drawmenu_setting_edit_generic(uint8_t row, const char* pstr, char p #define lcd_implementation_drawmenu_setting_edit_callback_float3(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', ftostr3(*(data))) #define lcd_implementation_drawmenu_setting_edit_callback_float32_selected(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', ftostr32(*(data))) #define lcd_implementation_drawmenu_setting_edit_callback_float32(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', ftostr32(*(data))) +#define lcd_implementation_drawmenu_setting_edit_callback_float43_selected(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', ftostr43(*(data))) +#define lcd_implementation_drawmenu_setting_edit_callback_float43(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', ftostr43(*(data))) #define lcd_implementation_drawmenu_setting_edit_callback_float5_selected(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', ftostr5(*(data))) #define lcd_implementation_drawmenu_setting_edit_callback_float5(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', ftostr5(*(data))) #define lcd_implementation_drawmenu_setting_edit_callback_float52_selected(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', ftostr52(*(data))) From 04fb34c7ff940228e8a65746f1794bf337cb5ada Mon Sep 17 00:00:00 2001 From: wgm4321 Date: Sat, 3 Jan 2015 17:28:05 -0500 Subject: [PATCH 19/23] Add English defines for filament menu to non-English to prevent compile errors until translated --- Marlin/language_an.h | 5 +++++ Marlin/language_ca.h | 5 +++++ Marlin/language_de.h | 5 +++++ Marlin/language_es.h | 5 +++++ Marlin/language_eu.h | 5 +++++ Marlin/language_fi.h | 5 +++++ Marlin/language_fr.h | 5 +++++ Marlin/language_it.h | 5 +++++ Marlin/language_nl.h | 5 +++++ Marlin/language_pl.h | 5 +++++ Marlin/language_pt.h | 5 +++++ Marlin/language_ru.h | 5 +++++ 12 files changed, 60 insertions(+) diff --git a/Marlin/language_an.h b/Marlin/language_an.h index 8c6820e1ab48..39599b8bc144 100644 --- a/Marlin/language_an.h +++ b/Marlin/language_an.h @@ -86,6 +86,11 @@ #define MSG_ESTEPS "E trangos/mm" #define MSG_TEMPERATURE "Temperatura" #define MSG_MOTION "Movimiento" +#define MSG_VOLUMETRIC "Filament" +#define MSG_VOLUMETRIC_ENABLED "E in mm3" +#define MSG_FILAMENT_SIZE_EXTRUDER_0 "Fil. Dia. 1" +#define MSG_FILAMENT_SIZE_EXTRUDER_1 "Fil. Dia. 2" +#define MSG_FILAMENT_SIZE_EXTRUDER_2 "Fil. Dia. 3" #define MSG_CONTRAST "Contrast" #define MSG_STORE_EPROM "Alzar Memoria" #define MSG_LOAD_EPROM "Cargar Memoria" diff --git a/Marlin/language_ca.h b/Marlin/language_ca.h index 680c6eed01aa..ab87778534f4 100644 --- a/Marlin/language_ca.h +++ b/Marlin/language_ca.h @@ -86,6 +86,11 @@ #define MSG_ESTEPS "Epassos/mm" #define MSG_TEMPERATURE "Temperatura" #define MSG_MOTION "Moviment" +#define MSG_VOLUMETRIC "Filament" +#define MSG_VOLUMETRIC_ENABLED "E in mm3" +#define MSG_FILAMENT_SIZE_EXTRUDER_0 "Fil. Dia. 1" +#define MSG_FILAMENT_SIZE_EXTRUDER_1 "Fil. Dia. 2" +#define MSG_FILAMENT_SIZE_EXTRUDER_2 "Fil. Dia. 3" #define MSG_CONTRAST "Contrast de LCD" #define MSG_STORE_EPROM "Desar a memoria" #define MSG_LOAD_EPROM "Carregar de mem." diff --git a/Marlin/language_de.h b/Marlin/language_de.h index 801250b51dcb..7a8cb2f9d6ec 100644 --- a/Marlin/language_de.h +++ b/Marlin/language_de.h @@ -86,6 +86,11 @@ #define MSG_ESTEPS "Esteps/mm" #define MSG_TEMPERATURE "Temperatur" #define MSG_MOTION "Bewegung" +#define MSG_VOLUMETRIC "Filament" +#define MSG_VOLUMETRIC_ENABLED "E in mm3" +#define MSG_FILAMENT_SIZE_EXTRUDER_0 "Fil. Dia. 1" +#define MSG_FILAMENT_SIZE_EXTRUDER_1 "Fil. Dia. 2" +#define MSG_FILAMENT_SIZE_EXTRUDER_2 "Fil. Dia. 3" #define MSG_CONTRAST "LCD contrast" #define MSG_STORE_EPROM "EPROM speichern" #define MSG_LOAD_EPROM "EPROM laden" diff --git a/Marlin/language_es.h b/Marlin/language_es.h index eff9d6a8af8b..388b7a8401ec 100644 --- a/Marlin/language_es.h +++ b/Marlin/language_es.h @@ -86,6 +86,11 @@ #define MSG_ESTEPS "E pasos/mm" #define MSG_TEMPERATURE "Temperatura" #define MSG_MOTION "Movimiento" +#define MSG_VOLUMETRIC "Filament" +#define MSG_VOLUMETRIC_ENABLED "E in mm3" +#define MSG_FILAMENT_SIZE_EXTRUDER_0 "Fil. Dia. 1" +#define MSG_FILAMENT_SIZE_EXTRUDER_1 "Fil. Dia. 2" +#define MSG_FILAMENT_SIZE_EXTRUDER_2 "Fil. Dia. 3" #define MSG_CONTRAST "Contraste" #define MSG_STORE_EPROM "Guardar memoria" #define MSG_LOAD_EPROM "Cargar memoria" diff --git a/Marlin/language_eu.h b/Marlin/language_eu.h index 4b31b656722d..4a2a04bdb5a8 100644 --- a/Marlin/language_eu.h +++ b/Marlin/language_eu.h @@ -86,6 +86,11 @@ #define MSG_ESTEPS "E pausoak/mm" #define MSG_TEMPERATURE "Tenperatura" #define MSG_MOTION "Mugimendua" +#define MSG_VOLUMETRIC "Filament" +#define MSG_VOLUMETRIC_ENABLED "E in mm3" +#define MSG_FILAMENT_SIZE_EXTRUDER_0 "Fil. Dia. 1" +#define MSG_FILAMENT_SIZE_EXTRUDER_1 "Fil. Dia. 2" +#define MSG_FILAMENT_SIZE_EXTRUDER_2 "Fil. Dia. 3" #define MSG_CONTRAST "LCD kontrastea" #define MSG_STORE_EPROM "Gorde memoria" #define MSG_LOAD_EPROM "Kargatu memoria" diff --git a/Marlin/language_fi.h b/Marlin/language_fi.h index b88c3759ad84..57c1c0387bcc 100644 --- a/Marlin/language_fi.h +++ b/Marlin/language_fi.h @@ -86,6 +86,11 @@ #define MSG_ESTEPS "Esteps/mm" #define MSG_TEMPERATURE "Lampotila" #define MSG_MOTION "Liike" +#define MSG_VOLUMETRIC "Filament" +#define MSG_VOLUMETRIC_ENABLED "E in mm3" +#define MSG_FILAMENT_SIZE_EXTRUDER_0 "Fil. Dia. 1" +#define MSG_FILAMENT_SIZE_EXTRUDER_1 "Fil. Dia. 2" +#define MSG_FILAMENT_SIZE_EXTRUDER_2 "Fil. Dia. 3" #define MSG_CONTRAST "LCD contrast" #define MSG_STORE_EPROM "Tallenna muistiin" #define MSG_LOAD_EPROM "Lataa muistista" diff --git a/Marlin/language_fr.h b/Marlin/language_fr.h index ffcfeb48154a..e6fd80f59cb2 100644 --- a/Marlin/language_fr.h +++ b/Marlin/language_fr.h @@ -86,6 +86,11 @@ #define MSG_ESTEPS "Epas/mm" #define MSG_TEMPERATURE "Temperature" #define MSG_MOTION "Mouvement" +#define MSG_VOLUMETRIC "Filament" +#define MSG_VOLUMETRIC_ENABLED "E in mm3" +#define MSG_FILAMENT_SIZE_EXTRUDER_0 "Fil. Dia. 1" +#define MSG_FILAMENT_SIZE_EXTRUDER_1 "Fil. Dia. 2" +#define MSG_FILAMENT_SIZE_EXTRUDER_2 "Fil. Dia. 3" #define MSG_CONTRAST "Contraste LCD" #define MSG_STORE_EPROM "Sauver config" #define MSG_LOAD_EPROM "Lire config" diff --git a/Marlin/language_it.h b/Marlin/language_it.h index b70a0841ccdc..c5621a4b1965 100644 --- a/Marlin/language_it.h +++ b/Marlin/language_it.h @@ -86,6 +86,11 @@ #define MSG_ESTEPS "Epassi/mm" #define MSG_TEMPERATURE "Temperatura" #define MSG_MOTION "Movimento" +#define MSG_VOLUMETRIC "Filament" +#define MSG_VOLUMETRIC_ENABLED "E in mm3" +#define MSG_FILAMENT_SIZE_EXTRUDER_0 "Fil. Dia. 1" +#define MSG_FILAMENT_SIZE_EXTRUDER_1 "Fil. Dia. 2" +#define MSG_FILAMENT_SIZE_EXTRUDER_2 "Fil. Dia. 3" #define MSG_CONTRAST "LCD contrast" #define MSG_STORE_EPROM "Salva in EEPROM" #define MSG_LOAD_EPROM "Carica da EEPROM" diff --git a/Marlin/language_nl.h b/Marlin/language_nl.h index 56162d34d943..5af5a86acae5 100644 --- a/Marlin/language_nl.h +++ b/Marlin/language_nl.h @@ -86,6 +86,11 @@ #define MSG_ESTEPS "Esteps/mm" #define MSG_TEMPERATURE "Temperatuur" #define MSG_MOTION "Beweging" +#define MSG_VOLUMETRIC "Filament" +#define MSG_VOLUMETRIC_ENABLED "E in mm3" +#define MSG_FILAMENT_SIZE_EXTRUDER_0 "Fil. Dia. 1" +#define MSG_FILAMENT_SIZE_EXTRUDER_1 "Fil. Dia. 2" +#define MSG_FILAMENT_SIZE_EXTRUDER_2 "Fil. Dia. 3" #define MSG_CONTRAST "LCD contrast" #define MSG_STORE_EPROM "Geheugen opslaan" #define MSG_LOAD_EPROM "Geheugen laden" diff --git a/Marlin/language_pl.h b/Marlin/language_pl.h index 430b90053954..3a11565caf8c 100644 --- a/Marlin/language_pl.h +++ b/Marlin/language_pl.h @@ -86,6 +86,11 @@ #define MSG_ESTEPS "krokiE/mm" #define MSG_TEMPERATURE "Temperatura" #define MSG_MOTION "Ruch" +#define MSG_VOLUMETRIC "Filament" +#define MSG_VOLUMETRIC_ENABLED "E in mm3" +#define MSG_FILAMENT_SIZE_EXTRUDER_0 "Fil. Dia. 1" +#define MSG_FILAMENT_SIZE_EXTRUDER_1 "Fil. Dia. 2" +#define MSG_FILAMENT_SIZE_EXTRUDER_2 "Fil. Dia. 3" #define MSG_CONTRAST "Kontrast LCD" #define MSG_STORE_EPROM "Zapisz w pamieci" #define MSG_LOAD_EPROM "Wczytaj z pamieci" diff --git a/Marlin/language_pt.h b/Marlin/language_pt.h index 5c6f4fe7f9f7..bad02a27615c 100644 --- a/Marlin/language_pt.h +++ b/Marlin/language_pt.h @@ -86,6 +86,11 @@ #define MSG_ESTEPS "Epasso/mm:" #define MSG_TEMPERATURE "Temperatura" #define MSG_MOTION "Movimento" +#define MSG_VOLUMETRIC "Filament" +#define MSG_VOLUMETRIC_ENABLED "E in mm3" +#define MSG_FILAMENT_SIZE_EXTRUDER_0 "Fil. Dia. 1" +#define MSG_FILAMENT_SIZE_EXTRUDER_1 "Fil. Dia. 2" +#define MSG_FILAMENT_SIZE_EXTRUDER_2 "Fil. Dia. 3" #define MSG_CONTRAST "Contrast" #define MSG_STORE_EPROM "Guardar memoria" #define MSG_LOAD_EPROM "Carregar memoria" diff --git a/Marlin/language_ru.h b/Marlin/language_ru.h index 844b3776b752..0fbb979744ac 100644 --- a/Marlin/language_ru.h +++ b/Marlin/language_ru.h @@ -86,6 +86,11 @@ #define MSG_ESTEPS "E шаг/mm:" #define MSG_TEMPERATURE "Температура \x7E" #define MSG_MOTION "Скорости \x7E" +#define MSG_VOLUMETRIC "Filament" +#define MSG_VOLUMETRIC_ENABLED "E in mm3" +#define MSG_FILAMENT_SIZE_EXTRUDER_0 "Fil. Dia. 1" +#define MSG_FILAMENT_SIZE_EXTRUDER_1 "Fil. Dia. 2" +#define MSG_FILAMENT_SIZE_EXTRUDER_2 "Fil. Dia. 3" #define MSG_CONTRAST "LCD contrast" #define MSG_STORE_EPROM "Сохранить в EPROM" #define MSG_LOAD_EPROM "Загруз. из EPROM" From 9d57c376db87f14ebd5b3f074b0af42d09664f11 Mon Sep 17 00:00:00 2001 From: monkeydave Date: Sat, 3 Jan 2015 22:46:15 +0000 Subject: [PATCH 20/23] Commented out configs that are failing with no easy fixes for the moment --- .travis.yml | 54 ++++++++++++++++++++++++++--------------------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/.travis.yml b/.travis.yml index b877709a435a..8a378c7871a4 100644 --- a/.travis.yml +++ b/.travis.yml @@ -35,13 +35,15 @@ script: - cp Marlin/Configuration.h Marlin/Configuration.h.backup - cp Marlin/Configuration_adv.h Marlin/Configuration_adv.h.backup # change extruder numbers from 1 to 2 - - sed -i 's/#define EXTRUDERS 1/#define EXTRUDERS 2/g' Marlin/Configuration.h - - rm -rf .build/ - - ino build -m mega2560 - # change extruder numbers from 2 to 3 - - sed -i 's/#define EXTRUDERS 2/#define EXTRUDERS 3/g' Marlin/Configuration.h - - rm -rf .build/ - - ino build -m mega2560 + # commented out for the moment fails build but compiles fine in Arduino + #- sed -i 's/#define EXTRUDERS 1/#define EXTRUDERS 2/g' Marlin/Configuration.h + #- rm -rf .build/ + #- ino build -m mega2560 + # change extruder numbers from 2 to 3, needs to be a board with 3 extruders defined in pins.h + #- sed -i 's/#define MOTHERBOARD BOARD_ULTIMAKER/#define MOTHERBOARD BOARD_AZTEEG_X3_PRO/g' Marlin/Configuration.h + #- sed -i 's/#define EXTRUDERS 2/#define EXTRUDERS 3/g' Marlin/Configuration.h + #- rm -rf .build/ + #- ino build -m mega2560 # enable PIDTEMPBED - cp Marlin/Configuration.h.backup Marlin/Configuration.h - sed -i 's/\/\/#define PIDTEMPBED/#define PIDTEMPBED/g' Marlin/Configuration.h @@ -73,10 +75,11 @@ script: - rm -rf .build/ - ino build -m mega2560 # MAKRPANEL - - cp Marlin/Configuration.h.backup Marlin/Configuration.h - - sed -i 's/\/\/#define MAKRPANEL/#define MAKRPANEL/g' Marlin/Configuration.h - - rm -rf .build/ - - ino build -m mega2560 + # Needs to use melzi and sanguino hardware + #- cp Marlin/Configuration.h.backup Marlin/Configuration.h + #- sed -i 's/\/\/#define MAKRPANEL/#define MAKRPANEL/g' Marlin/Configuration.h + #- rm -rf .build/ + #- ino build -m mega2560 # REPRAP_DISCOUNT_SMART_CONTROLLER - cp Marlin/Configuration.h.backup Marlin/Configuration.h - sed -i 's/\/\/#define REPRAP_DISCOUNT_SMART_CONTROLLER/#define REPRAP_DISCOUNT_SMART_CONTROLLER/g' Marlin/Configuration.h @@ -92,13 +95,14 @@ script: - sed -i 's/\/\/#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER/#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER/g' Marlin/Configuration.h - rm -rf .build/ - ino build -m mega2560 - # REPRAPWORLD_KEYPAD - - cp Marlin/Configuration.h.backup Marlin/Configuration.h - - sed -i 's/\/\/#define ULTRA_LCD/#define ULTRA_LCD/g' Marlin/Configuration.h - - sed -i 's/\/\/#define REPRAPWORLD_KEYPAD/#define REPRAPWORLD_KEYPAD/g' Marlin/Configuration.h - - sed -i 's/\/\/#define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0/#define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0/g' Marlin/Configuration.h - - rm -rf .build/ - - ino build -m mega2560 + # REPRAPWORLD_KEYPAD + # Cant find configuration details to get it to compile + #- cp Marlin/Configuration.h.backup Marlin/Configuration.h + #- sed -i 's/\/\/#define ULTRA_LCD/#define ULTRA_LCD/g' Marlin/Configuration.h + #- sed -i 's/\/\/#define REPRAPWORLD_KEYPAD/#define REPRAPWORLD_KEYPAD/g' Marlin/Configuration.h + #- sed -i 's/\/\/#define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0/#define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0/g' Marlin/Configuration.h + #- rm -rf .build/ + #- ino build -m mega2560 # RA_CONTROL_PANEL - cp Marlin/Configuration.h.backup Marlin/Configuration.h - sed -i 's/\/\/#define RA_CONTROL_PANEL/#define RA_CONTROL_PANEL/g' Marlin/Configuration.h @@ -106,10 +110,11 @@ script: - ino build -m mega2560 ### I2C PANELS ### # LCD_I2C_SAINSMART_YWROBOT - - cp Marlin/Configuration.h.backup Marlin/Configuration.h - - sed -i 's/\/\/#define LCD_I2C_SAINSMART_YWROBOT/#define LCD_I2C_SAINSMART_YWROBOT/g' Marlin/Configuration.h - - rm -rf .build/ - - ino build -m mega2560 + # Failing at the moment needs different library + #- cp Marlin/Configuration.h.backup Marlin/Configuration.h + #- sed -i 's/\/\/#define LCD_I2C_SAINSMART_YWROBOT/#define LCD_I2C_SAINSMART_YWROBOT/g' Marlin/Configuration.h + #- rm -rf .build/ + #- ino build -m mega2560 # LCD_I2C_PANELOLU2 - cp Marlin/Configuration.h.backup Marlin/Configuration.h - sed -i 's/\/\/#define LCD_I2C_PANELOLU2/#define LCD_I2C_PANELOLU2/g' Marlin/Configuration.h @@ -120,11 +125,6 @@ script: - sed -i 's/\/\/#define LCD_I2C_VIKI/#define LCD_I2C_VIKI/g' Marlin/Configuration.h - rm -rf .build/ - ino build -m mega2560 - # SAV_3DLCD - - cp Marlin/Configuration.h.backup Marlin/Configuration.h - - sed -i 's/\/\/#define SAV_3DLCD/#define SAV_3DLCD/g' Marlin/Configuration.h - - rm -rf .build/ - - ino build -m mega2560 # Enable filament sensor - cp Marlin/Configuration.h.backup Marlin/Configuration.h - sed -i 's/\/\/#define FILAMENT_SENSOR/#define FILAMENT_SENSOR/g' Marlin/Configuration.h From 30248214c7fd52333d1c71bebe5ede40dbd76011 Mon Sep 17 00:00:00 2001 From: Philippe L Date: Sat, 3 Jan 2015 15:45:06 +0100 Subject: [PATCH 21/23] temp runaway: proper cast to prevent any overflow. --- Marlin/temperature.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Marlin/temperature.cpp b/Marlin/temperature.cpp index 94d257d55004..7acc5ffd87a1 100644 --- a/Marlin/temperature.cpp +++ b/Marlin/temperature.cpp @@ -1049,7 +1049,7 @@ void thermal_runaway_protection(int *state, unsigned long *timer, float temperat { *timer = millis(); } - else if ( (millis() - *timer) > period_seconds*1000) + else if ( (millis() - *timer) > ((unsigned long) period_seconds) * 1000) { SERIAL_ERROR_START; SERIAL_ERRORLNPGM("Thermal Runaway, system stopped! Heater_ID: "); From 9472bbe51d091f3099bf2a2db5a4a21133667393 Mon Sep 17 00:00:00 2001 From: Dan Royer Date: Sun, 4 Jan 2015 12:17:46 -0800 Subject: [PATCH 22/23] issue 968 for dev branch try, try again. If 'OK' is garbled on sending PC won't receive it. Both machines will wait on each other forever. This resends OK if nothing is heard from PC for a while to avoid this bad case. --- Marlin/Marlin_main.cpp | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp index e3e5ef358850..b8ab94fa88fa 100644 --- a/Marlin/Marlin_main.cpp +++ b/Marlin/Marlin_main.cpp @@ -376,6 +376,7 @@ const int sensitive_pins[] = SENSITIVE_PINS; // Sensitive pin list for M42 //Inactivity shutdown variables static unsigned long previous_millis_cmd = 0; +static unsigned long previous_millis_ok = 0; static unsigned long max_inactive_time = 0; static unsigned long stepper_inactive_time = DEFAULT_STEPPER_DEACTIVE_TIME*1000l; @@ -645,6 +646,7 @@ void loop() else { SERIAL_PROTOCOLLNPGM(MSG_OK); + previous_millis_ok = millis(); } } else @@ -3155,12 +3157,13 @@ SERIAL_PROTOCOLPGM("\n\n"); } } else if (servo_index >= 0) { - SERIAL_PROTOCOL(MSG_OK); + SERIAL_PROTOCOL(MSG_OK); SERIAL_PROTOCOL(" Servo "); SERIAL_PROTOCOL(servo_index); SERIAL_PROTOCOL(": "); SERIAL_PROTOCOL(servos[servo_index].read()); SERIAL_PROTOCOLLN(""); + previous_millis_ok = millis(); } } break; @@ -3235,6 +3238,7 @@ SERIAL_PROTOCOLPGM("\n\n"); SERIAL_PROTOCOL(" d:"); SERIAL_PROTOCOL(unscalePID_d(bedKd)); SERIAL_PROTOCOLLN(""); + previous_millis_ok = millis(); } break; #endif //PIDTEMP @@ -3525,6 +3529,7 @@ case 404: //M404 Enter the nominal filament width (3mm, 1.75mm ) N<3.0> or disp SERIAL_ECHO_START; SERIAL_ECHOLNPGM(MSG_ZPROBE_ZOFFSET " " MSG_OK); SERIAL_PROTOCOLLN(""); + previous_millis_ok = millis(); } else { @@ -3911,6 +3916,7 @@ case 404: //M404 Enter the nominal filament width (3mm, 1.75mm ) N<3.0> or disp ClearToSend(); } + void FlushSerialRequestResend() { //char cmdbuffer[bufindr][100]="Resend:"; @@ -3928,6 +3934,7 @@ void ClearToSend() return; #endif //SDSUPPORT SERIAL_PROTOCOLLNPGM(MSG_OK); + previous_millis_ok = millis(); } void get_coordinates() @@ -4352,6 +4359,14 @@ void manage_inactivity(bool ignore_stepper_queue/*=false*/) //default argument s if( (millis() - previous_millis_cmd) > max_inactive_time ) if(max_inactive_time) kill(); + + // If 'OK' is garbled on sending PC won't receive it. Both machines will wait on each other forever. + // This resends OK if nothing is heard from PC for a while to avoid this bad case. + if( (millis() - previous_millis_ok) > max_inactive_time/4 ) { + SERIAL_PROTOCOL(MSG_OK); + previous_millis_ok=millis(); + } + if(stepper_inactive_time) { if( (millis() - previous_millis_cmd) > stepper_inactive_time ) { From 097861976624fc16f95e2fe50888003deabfd2f0 Mon Sep 17 00:00:00 2001 From: Dan Royer Date: Tue, 6 Jan 2015 13:00:41 -0800 Subject: [PATCH 23/23] issue 1318 - added DEFINE In configuration.h with default ok timeout ms (at end of file) - changed manage_inactivity() to use the new define --- Marlin/Configuration.h | 2 ++ Marlin/Marlin_main.cpp | 16 ++++++++-------- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index fe6e371c5c43..92712af20e17 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -781,6 +781,8 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of +// Send OK to PC, then wait OK_TIMEOUT ms before sending another 'OK', in case the first one was garbled. +#define OK_TIMEOUT 250 diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp index b8ab94fa88fa..f327788c81ae 100644 --- a/Marlin/Marlin_main.cpp +++ b/Marlin/Marlin_main.cpp @@ -646,7 +646,7 @@ void loop() else { SERIAL_PROTOCOLLNPGM(MSG_OK); - previous_millis_ok = millis(); + previous_millis_ok = millis(); } } else @@ -3163,7 +3163,7 @@ SERIAL_PROTOCOLPGM("\n\n"); SERIAL_PROTOCOL(": "); SERIAL_PROTOCOL(servos[servo_index].read()); SERIAL_PROTOCOLLN(""); - previous_millis_ok = millis(); + previous_millis_ok = millis(); } } break; @@ -3238,7 +3238,7 @@ SERIAL_PROTOCOLPGM("\n\n"); SERIAL_PROTOCOL(" d:"); SERIAL_PROTOCOL(unscalePID_d(bedKd)); SERIAL_PROTOCOLLN(""); - previous_millis_ok = millis(); + previous_millis_ok = millis(); } break; #endif //PIDTEMP @@ -3529,7 +3529,7 @@ case 404: //M404 Enter the nominal filament width (3mm, 1.75mm ) N<3.0> or disp SERIAL_ECHO_START; SERIAL_ECHOLNPGM(MSG_ZPROBE_ZOFFSET " " MSG_OK); SERIAL_PROTOCOLLN(""); - previous_millis_ok = millis(); + previous_millis_ok = millis(); } else { @@ -3934,7 +3934,7 @@ void ClearToSend() return; #endif //SDSUPPORT SERIAL_PROTOCOLLNPGM(MSG_OK); - previous_millis_ok = millis(); + previous_millis_ok = millis(); } void get_coordinates() @@ -4362,9 +4362,9 @@ void manage_inactivity(bool ignore_stepper_queue/*=false*/) //default argument s // If 'OK' is garbled on sending PC won't receive it. Both machines will wait on each other forever. // This resends OK if nothing is heard from PC for a while to avoid this bad case. - if( (millis() - previous_millis_ok) > max_inactive_time/4 ) { - SERIAL_PROTOCOL(MSG_OK); - previous_millis_ok=millis(); + if( (millis() - previous_millis_ok) > OK_TIMEOUT ) { + SERIAL_PROTOCOL(MSG_OK); + previous_millis_ok=millis(); } if(stepper_inactive_time) {