diff --git a/Marlin/Conditionals_LulzBot.h b/Marlin/Conditionals_LulzBot.h index e973aedda..93c4d69a7 100644 --- a/Marlin/Conditionals_LulzBot.h +++ b/Marlin/Conditionals_LulzBot.h @@ -39,7 +39,7 @@ #error Must specify model and toolhead. Please see "Configuration_LulzBot.h" for directions. #endif -#define LULZBOT_FW_VERSION ".2" +#define LULZBOT_FW_VERSION ".3" // Select options based on printer model @@ -124,11 +124,37 @@ #endif // Shared values -#define LULZBOT_STRING_CONFIG_H_AUTHOR "(Aleph Objects Inc., LulzBot Diffusion)" +#define LULZBOT_STRING_CONFIG_H_AUTHOR "(Aleph Objects Inc., LulzBot Git Repository)" #define LULZBOT_BUFSIZE 10 #define LULZBOT_EEPROM_SETTINGS #define LULZBOT_EMERGENCY_PARSER +// Marlin 1.1.5 no longer issues MIN_TEMP errors and appears to handle +// thermal runaway via other means. However, since our users expect a +// MIN_TEMP error when disconnecting their print head, this could be +// perceived as a safety issue. This is a workaround in "temperature.cpp" +// to re-enable that functionality. + +#define LULZBOT_MIN_TEMP_WORKAROUND \ + static int delayBeforeStartMeasuring = OVERSAMPLENR; \ + if(delayBeforeStartMeasuring > 0) { \ + delayBeforeStartMeasuring--; \ + } else { \ + if (current_temperature[e] > HEATER_0_MAXTEMP) max_temp_error(0); \ + if (current_temperature[e] < HEATER_0_MINTEMP) min_temp_error(0); \ + } + +// Marlin 1.1.4 has changed the behavior of G92 so that +// it changes software endstops, making it less useful +// for making position adjustments after hitting an +// endstop. We need the old behavior of G92 for the +// Yellowfin start GCODE and it is also a useful +// feature for custom height adjustments (something +// requested in the forums). The following restores +// the old behavior. + +#define LULZBOT_G92_BACKWARDS_COMPATIBILITY + // Prior branches of the LulzBot firmware used G26 // to reset a probe failed condition. Marlin upstrem // now redefines that for unified bed leveling. The @@ -371,13 +397,6 @@ #define LULZBOT_Z_CLEARANCE_DEPLOY_PROBE 5 #define LULZBOT_Z_CLEARANCE_BETWEEN_PROBES 5 -/* We use G92 for adjusting the coordinate space in the Yellowfin toolhead, - * however upstream Marlin has made it so G92 adjusts the software endstops, - * which makes G92 unusable for our use case. As an interim measure, revert - * to the previous behavior of G29 using NO_WORKSPACE_OFFSETS -*/ -#define LULZBOT_NO_WORKSPACE_OFFSETS - /* On the Finch Aero toolhead, we need to disable the extruder * motor as it causes noise on the probe line on Foxglove Minis. */ diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index 92ed93715..b274ef492 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -1253,7 +1253,7 @@ * - M206 and M428 are disabled. * - G92 will revert to its behavior from Marlin 1.0. */ -#define NO_WORKSPACE_OFFSETS LULZBOT_NO_WORKSPACE_OFFSETS +//#define NO_WORKSPACE_OFFSETS /** * Set the number of proportional font spaces required to fill up a typical character space. diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp index a304cbc92..1fcd8a661 100644 --- a/Marlin/Marlin_main.cpp +++ b/Marlin/Marlin_main.cpp @@ -5914,7 +5914,7 @@ inline void gcode_G92() { current_position[i] = parser.value_axis_units((AxisEnum)i); if (i != E_AXIS) didXYZ = true; #else - #if HAS_POSITION_SHIFT + #if HAS_POSITION_SHIFT && !defined(LULZBOT_G92_BACKWARDS_COMPATIBILITY) const float p = current_position[i]; #endif const float v = parser.value_axis_units((AxisEnum)i); @@ -5923,7 +5923,7 @@ inline void gcode_G92() { if (i != E_AXIS) { didXYZ = true; - #if HAS_POSITION_SHIFT + #if HAS_POSITION_SHIFT && !defined(LULZBOT_G92_BACKWARDS_COMPATIBILITY) position_shift[i] += v - p; // Offset the coordinate space update_software_endstops((AxisEnum)i); diff --git a/Marlin/temperature.cpp b/Marlin/temperature.cpp index 261e12cff..109ad8297 100644 --- a/Marlin/temperature.cpp +++ b/Marlin/temperature.cpp @@ -726,6 +726,8 @@ void Temperature::manage_heater() { HOTEND_LOOP() { + LULZBOT_MIN_TEMP_WORKAROUND + #if HEATER_IDLE_HANDLER if (!heater_idle_timeout_exceeded[e] && heater_idle_timeout_ms[e] && ELAPSED(ms, heater_idle_timeout_ms[e])) heater_idle_timeout_exceeded[e] = true;