Procházet zdrojové kódy

Rename autoDeplete to lcd_autoDeplete and make it global. When filament runs out, call M600 AUTO if lcd_autoDeplete is enabled. Shorten finda polling period to 300 ms.

Marek Bel před 6 roky
rodič
revize
b08ae95568
3 změnil soubory, kde provedl 11 přidání a 8 odebrání
  1. 4 2
      Firmware/mmu.cpp
  2. 6 6
      Firmware/ultralcd.cpp
  3. 1 0
      Firmware/ultralcd.h

+ 4 - 2
Firmware/mmu.cpp

@@ -9,6 +9,7 @@
 #include "Configuration_prusa.h"
 #include "fsensor.h"
 #include "cardreader.h"
+#include "ultralcd.h"
 
 
 extern const char* lcd_display_message_fullscreen_P(const char *msg);
@@ -192,7 +193,7 @@ void mmu_loop(void)
 			}
 			mmu_cmd = 0;
 		}
-		else if ((mmu_last_response + 800) < millis()) //request every 800ms
+		else if ((mmu_last_response + 300) < millis()) //request every 300ms
 		{
 			puts_P(PSTR("MMU <= 'P0'"));
 		    mmu_puts_P(PSTR("P0\n")); //send 'read finda' request
@@ -208,7 +209,8 @@ void mmu_loop(void)
 			if (!mmu_finda && CHECK_FINDA && fsensor_enabled) {
 				fsensor_stop_and_save_print();
 				enquecommand_front_P(PSTR("FSENSOR_RECOVER")); //then recover
-				enquecommand_front_P(PSTR("M600")); //save print and run M600 command
+				if (lcd_autoDeplete) enquecommand_front_P(PSTR("M600 AUTO")); //save print and run M600 command
+				else enquecommand_front_P(PSTR("M600")); //save print and run M600 command
 			}
 			mmu_state = 1;
 			if (mmu_cmd == 0)

+ 6 - 6
Firmware/ultralcd.cpp

@@ -88,7 +88,7 @@ unsigned long display_time; //just timer for showing pid finished message on lcd
 float pid_temp = DEFAULT_PID_TEMP;
 
 static bool forceMenuExpire = false;
-static bool autoDeplete;
+bool lcd_autoDeplete;
 
 
 static float manual_feedrate[] = MANUAL_FEEDRATE;
@@ -4662,8 +4662,8 @@ while (0)
 
 static void auto_deplete_switch()
 {
-    autoDeplete = !autoDeplete;
-    eeprom_update_byte((unsigned char *)EEPROM_AUTO_DEPLETE, autoDeplete);
+    lcd_autoDeplete = !lcd_autoDeplete;
+    eeprom_update_byte((unsigned char *)EEPROM_AUTO_DEPLETE, lcd_autoDeplete);
 }
 static void lcd_settings_menu()
 {
@@ -4681,7 +4681,7 @@ static void lcd_settings_menu()
 
 	if (mmu_enabled)
 	{
-        if (autoDeplete) MENU_ITEM_FUNCTION_P(_i("Auto deplete [on]"), auto_deplete_switch);
+        if (lcd_autoDeplete) MENU_ITEM_FUNCTION_P(_i("Auto deplete [on]"), auto_deplete_switch);
         else MENU_ITEM_FUNCTION_P(_i("Auto deplete[off]"), auto_deplete_switch);
 	}
 
@@ -7070,8 +7070,8 @@ void ultralcd_init()
 {
     {
         uint8_t autoDepleteRaw = eeprom_read_byte(reinterpret_cast<uint8_t*>(EEPROM_AUTO_DEPLETE));
-        if (0xff == autoDepleteRaw) autoDeplete = false;
-        else autoDeplete = autoDepleteRaw;
+        if (0xff == autoDepleteRaw) lcd_autoDeplete = false;
+        else lcd_autoDeplete = autoDepleteRaw;
 
     }
 	lcd_init();

+ 1 - 0
Firmware/ultralcd.h

@@ -111,6 +111,7 @@ extern int8_t SilentModeMenu;
 
 extern bool cancel_heatup;
 extern bool isPrintPaused;
+extern bool lcd_autoDeplete;
 
 
 void lcd_ignore_click(bool b=true);