Prechádzať zdrojové kódy

send A (abort) command to mmu only when loading phase of T-code

PavelSindler 5 rokov pred
rodič
commit
6ba86acebc
2 zmenil súbory, kde vykonal 5 pridanie a 2 odobranie
  1. 4 2
      Firmware/mmu.cpp
  2. 1 0
      Firmware/mmu.h

+ 4 - 2
Firmware/mmu.cpp

@@ -41,7 +41,7 @@ uint8_t mmu_cmd = 0;
 //idler ir sensor
 uint8_t mmu_idl_sens = 0;
 bool mmu_idler_sensor_detected = false; 
-
+bool mmu_loading_flag = false;
 
 uint8_t mmu_extruder = MMU_FILAMENT_UNKNOWN;
 
@@ -334,7 +334,7 @@ void mmu_loop(void)
 		if (mmu_idler_sensor_detected) {
 			if (mmu_idl_sens)
 			{
-				if (PIN_GET(MMU_IDLER_SENSOR_PIN) == 0)
+				if (PIN_GET(MMU_IDLER_SENSOR_PIN) == 0 && mmu_loading_flag)
 				{
 #ifdef MMU_DEBUG
 					printf_P(PSTR("MMU <= 'A'\n"));
@@ -424,6 +424,7 @@ void mmu_load_step() {
 }
 bool mmu_get_response(uint8_t move)
 {
+	mmu_loading_flag = false;
 	if (!mmu_idler_sensor_detected) move = MMU_NO_MOVE;
 
 	printf_P(PSTR("mmu_get_response - begin move:%d\n"), move);
@@ -443,6 +444,7 @@ bool mmu_get_response(uint8_t move)
 
 		switch (move) {
 			case MMU_LOAD_MOVE: 
+				mmu_loading_flag = true;
 				mmu_load_step();
 				break;
 			case MMU_UNLOAD_MOVE:

+ 1 - 0
Firmware/mmu.h

@@ -12,6 +12,7 @@ extern uint8_t tmp_extruder;
 
 extern int8_t mmu_finda;
 extern bool mmu_idler_sensor_detected;
+extern bool mmu_loading_flag;
 
 extern int16_t mmu_version;
 extern int16_t mmu_buildnr;