Fix issues with no hotend / bed / fan (#18395)
This commit is contained in:
@ -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
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
Reference in New Issue
Block a user