From d1a065881bc9e3246afa090488753dda67a7dc60 Mon Sep 17 00:00:00 2001 From: PavelSindler Date: Fri, 22 Sep 2017 20:43:30 +0200 Subject: [PATCH] fan error: long pause is used during print, resuming print resets error flag; stop print used during heating phase --- Firmware/temperature.cpp | 37 ++++++++++++++++++++----------------- Firmware/ultralcd.cpp | 5 +++++ Firmware/ultralcd.h | 1 + 3 files changed, 26 insertions(+), 17 deletions(-) diff --git a/Firmware/temperature.cpp b/Firmware/temperature.cpp index 620819da..97804d16 100644 --- a/Firmware/temperature.cpp +++ b/Firmware/temperature.cpp @@ -460,33 +460,36 @@ extern void stop_and_save_print_to_ram(float z_move, float e_move); extern void restore_print_from_ram_and_continue(float e_move); void fanSpeedError(unsigned char _fan) { - if (card.sdprinting) { - if(heating_status != 0) lcd_print_stop(); + if (heating_status != 0) { + lcd_print_stop(); + } else lcd_sdcard_pause(); } - - setTargetHotend0(0); - - //lcd_update(); - WRITE(BEEPER, HIGH); - delayMicroseconds(2000); - WRITE(BEEPER, LOW); - delayMicroseconds(100); - - + else { + setTargetHotend0(0); + } SERIAL_ERROR_START; switch (_fan) { case 0: - fanSpeed = 255; - //lcd_print_stop(); SERIAL_ERRORLNPGM("ERROR: Extruder fan speed is lower then expected"); - LCD_ALERTMESSAGEPGM("Err: EXTR. FAN ERROR"); + if (get_message_level() == 0) { + WRITE(BEEPER, HIGH); + delayMicroseconds(200); + WRITE(BEEPER, LOW); + delayMicroseconds(100); + LCD_ALERTMESSAGEPGM("Err: EXTR. FAN ERROR"); + } break; case 1: - //stop_and_save_print_to_ram(0, 0); SERIAL_ERRORLNPGM("ERROR: Print fan speed is lower then expected"); - LCD_ALERTMESSAGEPGM("Err: PRINT FAN ERROR"); + if (get_message_level() == 0) { + WRITE(BEEPER, HIGH); + delayMicroseconds(200); + WRITE(BEEPER, LOW); + delayMicroseconds(100); + LCD_ALERTMESSAGEPGM("Err: PRINT FAN ERROR"); + } break; } } diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 4c0acb63..60a02d54 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -828,6 +828,7 @@ void lcd_sdcard_pause() { static void lcd_sdcard_resume() { lcd_return_to_status(); + lcd_reset_alert_level(); //for fan speed error lcd_commands_type = LCD_COMMAND_LONG_PAUSE_RESUME; } @@ -5498,6 +5499,10 @@ void lcd_reset_alert_level() lcd_status_message_level = 0; } +uint8_t get_message_level() +{ + return lcd_status_message_level; +} #ifdef DOGLCD void lcd_setcontrast(uint8_t value) { diff --git a/Firmware/ultralcd.h b/Firmware/ultralcd.h index 9b749a33..77e89059 100644 --- a/Firmware/ultralcd.h +++ b/Firmware/ultralcd.h @@ -14,6 +14,7 @@ void lcd_setstatuspgm(const char* message); void lcd_setalertstatuspgm(const char* message); void lcd_reset_alert_level(); + uint8_t get_message_level(); void lcd_adjust_z(); void lcd_pick_babystep(); void lcd_alright();