소스 검색

Merge branch 'MK3' into MK3_dev

Marek Bel 6 년 전
부모
커밋
f1c51502fd
3개의 변경된 파일19개의 추가작업 그리고 6개의 파일을 삭제
  1. 1 1
      Firmware/Marlin_main.cpp
  2. 13 4
      Firmware/mmu.cpp
  3. 5 1
      Firmware/ultralcd.cpp

+ 1 - 1
Firmware/Marlin_main.cpp

@@ -7425,7 +7425,7 @@ if((eSoundMode==e_SOUND_MODE_LOUD)||(eSoundMode==e_SOUND_MODE_ONCE))
       handle_status_leds();
   #endif
   check_axes_activity();
-//  mmu_loop();
+  mmu_loop();
 }
 
 void kill(const char *full_screen_message, unsigned char id)

+ 13 - 4
Firmware/mmu.cpp

@@ -177,7 +177,8 @@ void mmu_loop(void)
 			fscanf_P(uart2io, PSTR("%hhu"), &mmu_finda); //scan finda from buffer
 			printf_P(PSTR("MMU => '%dok'\n"), mmu_finda);
 			mmu_state = 1;
-			mmu_ready = true;
+			if (mmu_cmd == 0)
+				mmu_ready = true;
 		}
 		else if ((mmu_last_request + 30000) < millis())
 		{ //resend request after timeout (30s)
@@ -228,19 +229,26 @@ void mmu_command(uint8_t cmd)
 
 bool mmu_get_response(void)
 {
+//	printf_P(PSTR("mmu_get_response - begin\n"));
 	KEEPALIVE_STATE(IN_PROCESS);
+	while (mmu_cmd != 0)
+	{
+//		mmu_loop();
+		delay_keep_alive(100);
+	}
 	while (!mmu_ready)
 	{
-		mmu_loop();
+//		mmu_loop();
 		if (mmu_state != 3)
 			break;
+		delay_keep_alive(100);
 	}
 	bool ret = mmu_ready;
 	mmu_ready = false;
+//	printf_P(PSTR("mmu_get_response - end %d\n"), ret?1:0);
 	return ret;
 
-/*	printf_P(PSTR("mmu_get_response - begin\n"));
-	//waits for "ok" from mmu
+/*	//waits for "ok" from mmu
 	//function returns true if "ok" was received
 	//if timeout is set to true function return false if there is no "ok" received before timeout
 	bool response = true;
@@ -313,6 +321,7 @@ void manage_response(bool move_axes, bool turn_off_nozzle)
 				  }
 			  }
 			  lcd_display_message_fullscreen_P(_i("Check MMU. Fix the issue and then press button on MMU unit."));
+			  delay_keep_alive(1000);
 		  }
 		  else if (mmu_print_saved) {
 			  printf_P(PSTR("MMU start responding\n"));

+ 5 - 1
Firmware/ultralcd.cpp

@@ -532,7 +532,11 @@ void lcdui_print_percent_done(void)
 // Print extruder status (5 chars total)
 void lcdui_print_extruder(void)
 {
-	int chars = lcd_printf_P(_N(" T%u"), mmu_extruder);
+	int chars = 0;
+	if (mmu_extruder == tmp_extruder)
+		chars = lcd_printf_P(_N(" T%u"), mmu_extruder);
+	else
+		chars = lcd_printf_P(_N(" %u>%u"), mmu_extruder, tmp_extruder);
 	lcd_space(5 - chars);
 }