diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 1e606bf0..6aea1214 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -7428,7 +7428,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) diff --git a/Firmware/mmu.cpp b/Firmware/mmu.cpp index 4361d5b1..843f415c 100644 --- a/Firmware/mmu.cpp +++ b/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;