diff --git a/Marlin/ultralcd.cpp b/Marlin/ultralcd.cpp index 720e9faa01..6fe7a299ee 100644 --- a/Marlin/ultralcd.cpp +++ b/Marlin/ultralcd.cpp @@ -227,7 +227,7 @@ static void lcd_status_screen(); uint8_t lastEncoderBits; uint32_t encoderPosition; #if PIN_EXISTS(SD_DETECT) - bool lcd_sd_status; + uint8_t lcd_sd_status; #endif #endif // ULTIPANEL @@ -1534,7 +1534,7 @@ void lcd_init() { #if ENABLED(SDSUPPORT) && PIN_EXISTS(SD_DETECT) pinMode(SD_DETECT_PIN, INPUT); WRITE(SD_DETECT_PIN, HIGH); - lcd_sd_status = false; + lcd_sd_status = 2; // UNKNOWN #endif #if ENABLED(LCD_HAS_SLOW_BUTTONS) @@ -1595,21 +1595,22 @@ void lcd_update() { bool sd_status = IS_SD_INSERTED; if (sd_status != lcd_sd_status && lcd_detected()) { lcdDrawUpdate = 2; - lcd_sd_status = sd_status; lcd_implementation_init( // to maybe revive the LCD if static electricity killed it. #if ENABLED(LCD_PROGRESS_BAR) currentMenu == lcd_status_screen #endif ); - if (lcd_sd_status) { + if (sd_status) { card.initsd(); - LCD_MESSAGEPGM(MSG_SD_INSERTED); + if (lcd_sd_status != 2) LCD_MESSAGEPGM(MSG_SD_INSERTED); } else { card.release(); - LCD_MESSAGEPGM(MSG_SD_REMOVED); + if (lcd_sd_status != 2) LCD_MESSAGEPGM(MSG_SD_REMOVED); } + + lcd_sd_status = sd_status; } #endif //SDSUPPORT && SD_DETECT_PIN