Fix issues with no hotend / bed / fan (#18395)

This commit is contained in:
Scott Lahteine
2020-06-24 19:44:50 -05:00
committed by GitHub
parent b0aad414ec
commit 4275466f49
19 changed files with 732 additions and 585 deletions

View File

@ -37,7 +37,7 @@
*/
// Change EEPROM version if the structure changes
#define EEPROM_VERSION "V80"
#define EEPROM_VERSION "V81"
#define EEPROM_OFFSET 100
// Check the integrity of data offsets.
@ -281,11 +281,11 @@ typedef struct SettingsDataStruct {
#endif
//
// ULTIPANEL
// Material Presets
//
int16_t ui_preheat_hotend_temp[2], // M145 S0 H
ui_preheat_bed_temp[2]; // M145 S0 B
uint8_t ui_preheat_fan_speed[2]; // M145 S0 F
#if PREHEAT_COUNT
preheat_t ui_material_preset[PREHEAT_COUNT]; // M145 S0 H B F
#endif
//
// PIDTEMP
@ -811,27 +811,10 @@ void MarlinSettings::postprocess() {
//
// LCD Preheat settings
//
{
_FIELD_TEST(ui_preheat_hotend_temp);
#if HAS_HOTEND && HAS_LCD_MENU
const int16_t (&ui_preheat_hotend_temp)[2] = ui.preheat_hotend_temp,
(&ui_preheat_bed_temp)[2] = ui.preheat_bed_temp;
const uint8_t (&ui_preheat_fan_speed)[2] = ui.preheat_fan_speed;
#elif ENABLED(DWIN_CREALITY_LCD)
const int16_t (&ui_preheat_hotend_temp)[2] = HMI_ValueStruct.preheat_hotend_temp,
(&ui_preheat_bed_temp)[2] = HMI_ValueStruct.preheat_bed_temp;
const uint8_t (&ui_preheat_fan_speed)[2] = HMI_ValueStruct.preheat_fan_speed;
#else
constexpr int16_t ui_preheat_hotend_temp[2] = { PREHEAT_1_TEMP_HOTEND, PREHEAT_2_TEMP_HOTEND },
ui_preheat_bed_temp[2] = { PREHEAT_1_TEMP_BED, PREHEAT_2_TEMP_BED };
constexpr uint8_t ui_preheat_fan_speed[2] = { PREHEAT_1_FAN_SPEED, PREHEAT_2_FAN_SPEED };
#endif
EEPROM_WRITE(ui_preheat_hotend_temp);
EEPROM_WRITE(ui_preheat_bed_temp);
EEPROM_WRITE(ui_preheat_fan_speed);
}
#if PREHEAT_COUNT
_FIELD_TEST(ui_material_preset);
EEPROM_WRITE(ui.material_preset);
#endif
//
// PIDTEMP
@ -1688,25 +1671,10 @@ void MarlinSettings::postprocess() {
//
// LCD Preheat settings
//
{
_FIELD_TEST(ui_preheat_hotend_temp);
#if HAS_HOTEND && HAS_LCD_MENU
int16_t (&ui_preheat_hotend_temp)[2] = ui.preheat_hotend_temp,
(&ui_preheat_bed_temp)[2] = ui.preheat_bed_temp;
uint8_t (&ui_preheat_fan_speed)[2] = ui.preheat_fan_speed;
#elif ENABLED(DWIN_CREALITY_LCD)
int16_t (&ui_preheat_hotend_temp)[2] = HMI_ValueStruct.preheat_hotend_temp,
(&ui_preheat_bed_temp)[2] = HMI_ValueStruct.preheat_bed_temp;
uint8_t (&ui_preheat_fan_speed)[2] = HMI_ValueStruct.preheat_fan_speed;
#else
int16_t ui_preheat_hotend_temp[2], ui_preheat_bed_temp[2];
uint8_t ui_preheat_fan_speed[2];
#endif
EEPROM_READ(ui_preheat_hotend_temp); // 2 floats
EEPROM_READ(ui_preheat_bed_temp); // 2 floats
EEPROM_READ(ui_preheat_fan_speed); // 2 floats
}
#if PREHEAT_COUNT
_FIELD_TEST(ui_material_preset);
EEPROM_READ(ui.material_preset);
#endif
//
// Hotend PID
@ -2587,22 +2555,27 @@ void MarlinSettings::reset() {
//
// Preheat parameters
//
#if HAS_HOTEND
#if ENABLED(DWIN_CREALITY_LCD)
HMI_ValueStruct.preheat_hotend_temp[0] = PREHEAT_1_TEMP_HOTEND;
HMI_ValueStruct.preheat_hotend_temp[1] = PREHEAT_2_TEMP_HOTEND;
HMI_ValueStruct.preheat_bed_temp[0] = PREHEAT_1_TEMP_BED;
HMI_ValueStruct.preheat_bed_temp[1] = PREHEAT_2_TEMP_BED;
HMI_ValueStruct.preheat_fan_speed[0] = PREHEAT_1_FAN_SPEED;
HMI_ValueStruct.preheat_fan_speed[1] = PREHEAT_2_FAN_SPEED;
#elif HAS_LCD_MENU
ui.preheat_hotend_temp[0] = PREHEAT_1_TEMP_HOTEND;
ui.preheat_hotend_temp[1] = PREHEAT_2_TEMP_HOTEND;
ui.preheat_bed_temp[0] = PREHEAT_1_TEMP_BED;
ui.preheat_bed_temp[1] = PREHEAT_2_TEMP_BED;
ui.preheat_fan_speed[0] = PREHEAT_1_FAN_SPEED;
ui.preheat_fan_speed[1] = PREHEAT_2_FAN_SPEED;
#if PREHEAT_COUNT
#if HAS_HOTEND
constexpr uint16_t hpre[] = ARRAY_N(PREHEAT_COUNT, PREHEAT_1_TEMP_HOTEND, PREHEAT_2_TEMP_HOTEND, PREHEAT_3_TEMP_HOTEND, PREHEAT_4_TEMP_HOTEND, PREHEAT_5_TEMP_HOTEND);
#endif
#if HAS_HEATED_BED
constexpr uint16_t bpre[] = ARRAY_N(PREHEAT_COUNT, PREHEAT_1_TEMP_BED, PREHEAT_2_TEMP_BED, PREHEAT_3_TEMP_BED, PREHEAT_4_TEMP_BED, PREHEAT_5_TEMP_BED);
#endif
#if HAS_FAN
constexpr uint8_t fpre[] = ARRAY_N(PREHEAT_COUNT, PREHEAT_1_FAN_SPEED, PREHEAT_2_FAN_SPEED, PREHEAT_3_FAN_SPEED, PREHEAT_4_FAN_SPEED, PREHEAT_5_FAN_SPEED);
#endif
LOOP_L_N(i, PREHEAT_COUNT) {
#if HAS_HOTEND
ui.material_preset[i].hotend_temp = hpre[i];
#endif
#if HAS_HEATED_BED
ui.material_preset[i].bed_temp = bpre[i];
#endif
#if HAS_FAN
ui.material_preset[i].fan_speed = fpre[i];
#endif
}
#endif
//
@ -3131,16 +3104,22 @@ void MarlinSettings::reset() {
#endif // [XYZ]_DUAL_ENDSTOPS
#if HAS_HOTEND && HAS_LCD_MENU
#if PREHEAT_COUNT
CONFIG_ECHO_HEADING("Material heatup parameters:");
LOOP_L_N(i, COUNT(ui.preheat_hotend_temp)) {
LOOP_L_N(i, PREHEAT_COUNT) {
CONFIG_ECHO_START();
SERIAL_ECHOLNPAIR(
" M145 S", (int)i
, " H", TEMP_UNIT(ui.preheat_hotend_temp[i])
, " B", TEMP_UNIT(ui.preheat_bed_temp[i])
, " F", int(ui.preheat_fan_speed[i])
" M145 S", (int)i
#if HAS_HOTEND
, " H", TEMP_UNIT(ui.material_preset[i].hotend_temp)
#endif
#if HAS_HEATED_BED
, " B", TEMP_UNIT(ui.material_preset[i].bed_temp)
#endif
#if HAS_FAN
, " F", ui.material_preset[i].fan_speed
#endif
);
}

View File

@ -3128,7 +3128,7 @@ void Temperature::tick() {
#if ENABLED(DWIN_CREALITY_LCD)
HMI_flag.heat_flag = 0;
duration_t elapsed = print_job_timer.duration(); // print timer
heat_time = elapsed.value;
dwin_heat_time = elapsed.value;
#else
ui.reset_status();
#endif

View File

@ -797,7 +797,7 @@ class Temperature {
TERN_(HAS_DISPLAY, static void set_heating_message(const uint8_t e));
#if HAS_LCD_MENU
#if HAS_LCD_MENU && HAS_TEMPERATURE
static void lcd_preheat(const int16_t e, const int8_t indh, const int8_t indb);
#endif