diff --git a/Firmware/mmu.cpp b/Firmware/mmu.cpp index d8ae497b..edc9a30f 100755 --- a/Firmware/mmu.cpp +++ b/Firmware/mmu.cpp @@ -70,6 +70,7 @@ uint8_t mmu_extruder = MMU_FILAMENT_UNKNOWN; uint8_t tmp_extruder = MMU_FILAMENT_UNKNOWN; int8_t mmu_finda = -1; +uint32_t mmu_last_finda_response = 0; int16_t mmu_version = -1; @@ -264,6 +265,7 @@ void mmu_loop(void) if (mmu_rx_ok() > 0) { fscanf_P(uart2io, PSTR("%hhu"), &mmu_finda); //scan finda from buffer + mmu_last_finda_response = _millis(); FDEBUG_PRINTF_P(PSTR("MMU => '%dok'\n"), mmu_finda); puts_P(PSTR("MMU - ENABLED")); mmu_enabled = true; @@ -376,6 +378,7 @@ void mmu_loop(void) if (mmu_rx_ok() > 0) { fscanf_P(uart2io, PSTR("%hhu"), &mmu_finda); //scan finda from buffer + mmu_last_finda_response = _millis(); FDEBUG_PRINTF_P(PSTR("MMU => '%dok'\n"), mmu_finda); //printf_P(PSTR("Eact: %d\n"), int(e_active())); if (!mmu_finda && CHECK_FSENSOR && fsensor_enabled) { diff --git a/Firmware/mmu.h b/Firmware/mmu.h index ad508c2a..30b8e1af 100644 --- a/Firmware/mmu.h +++ b/Firmware/mmu.h @@ -14,6 +14,7 @@ extern uint8_t mmu_extruder; extern uint8_t tmp_extruder; extern int8_t mmu_finda; +extern uint32_t mmu_last_finda_response; extern bool ir_sensor_detected; extern int16_t mmu_version; diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index d08f536c..2bfe2b5c 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -4016,7 +4016,8 @@ static void lcd_show_sensors_state() uint8_t idler_state = STATE_NA; pinda_state = READ(Z_MIN_PIN); - if (mmu_enabled) { + if (mmu_enabled && ((_millis() - mmu_last_finda_response) < 1000ul) ) + { finda_state = mmu_finda; } if (ir_sensor_detected) {