diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index e51d16d565..a327c406ef 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -1053,7 +1053,8 @@ // Delta radius and diagonal rod adjustments //#define DELTA_RADIUS_TRIM_TOWER { 0.0, 0.0, 0.0 } // (mm) //#define DELTA_DIAGONAL_ROD_TRIM_TOWER { 0.0, 0.0, 0.0 } // (mm) -#endif + +#endif // DELTA // @section scara diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index ae4acaa56b..ffcecc3533 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -1628,7 +1628,7 @@ #if HAS_MARLINUI_U8GLIB //#define BOOT_MARLIN_LOGO_ANIMATED // Animated Marlin logo. Costs ~3260 (or ~940) bytes of flash. #endif - #if ANY(HAS_MARLINUI_U8GLIB, TOUCH_UI_FTDI_EVE, HAS_MARLINUI_HD44780) + #if ANY(HAS_MARLINUI_U8GLIB, TOUCH_UI_FTDI_EVE, HAS_MARLINUI_HD44780, HAS_GRAPHICAL_TFT) //#define SHOW_CUSTOM_BOOTSCREEN // Show the bitmap in Marlin/_Bootscreen.h on startup. #endif #endif diff --git a/Marlin/Version.h b/Marlin/Version.h index edf9a292d9..da42afd480 100644 --- a/Marlin/Version.h +++ b/Marlin/Version.h @@ -41,7 +41,7 @@ * here we define this default string as the date where the latest release * version was tagged. */ -//#define STRING_DISTRIBUTION_DATE "2025-11-08" +//#define STRING_DISTRIBUTION_DATE "2025-11-10" /** * The protocol for communication to the host. Protocol indicates communication diff --git a/Marlin/src/gcode/calibrate/G33.cpp b/Marlin/src/gcode/calibrate/G33.cpp index 1eabb30ffa..0a8dd459ca 100644 --- a/Marlin/src/gcode/calibrate/G33.cpp +++ b/Marlin/src/gcode/calibrate/G33.cpp @@ -380,9 +380,9 @@ static float auto_tune_a(const float dcr) { * With HAS_DELTA_SENSORLESS_PROBING: * Use these flags to calibrate stall sensitivity: * Example: G33 P1 Y Z - to calibrate X only - * X Don't activate stallguard on X - * Y Don't activate stallguard on Y - * Z Don't activate stallguard on Z + * X Don't activate StallGuard on X + * Y Don't activate StallGuard on Y + * Z Don't activate StallGuard on Z * S Save offset_sensorless_adj */ void GcodeSuite::G33() { diff --git a/Marlin/src/gcode/feature/ft_motion/M494.cpp b/Marlin/src/gcode/feature/ft_motion/M494.cpp index 840333f896..f3a4e61123 100644 --- a/Marlin/src/gcode/feature/ft_motion/M494.cpp +++ b/Marlin/src/gcode/feature/ft_motion/M494.cpp @@ -121,7 +121,7 @@ void GcodeSuite::M494() { report = true; \ } \ else \ - SERIAL_ECHOLN("?Invalid ", C(N), " smoothing time [", C(CHARIFY(A)), "] value."); \ + SERIAL_ECHOLNPGM("?Invalid ", C(N), " smoothing time [", C(CHARIFY(A)), "] value."); \ } CARTES_GANG( diff --git a/Marlin/src/inc/Conditionals-5-post.h b/Marlin/src/inc/Conditionals-5-post.h index 4bed697726..9eb5031055 100644 --- a/Marlin/src/inc/Conditionals-5-post.h +++ b/Marlin/src/inc/Conditionals-5-post.h @@ -3303,6 +3303,9 @@ #if ANY(ADVANCED_PAUSE_FEATURE, PROBING_HEATERS_OFF) #define HEATER_IDLE_HANDLER 1 #endif +#if ENABLED(DELTA) + #undef PROBING_STEPPERS_OFF +#endif #if HAS_BED_PROBE && (ANY(PROBING_HEATERS_OFF, PROBING_STEPPERS_OFF, PROBING_ESTEPPERS_OFF, PROBING_FANS_OFF) || DELAY_BEFORE_PROBING > 0) #define HAS_QUIET_PROBING 1 #endif @@ -3684,4 +3687,10 @@ #define FTM_BUFFER_SIZE 128 #endif #define FTM_BUFFER_MASK (FTM_BUFFER_SIZE - 1u) + #if ANY(BIQU_MICROPROBE_V1, BIQU_MICROPROBE_V2) + #ifndef PROBE_WAKEUP_TIME_MS + #define PROBE_WAKEUP_TIME_MS 30 + #define PROBE_WAKEUP_TIME_WARNING 1 + #endif + #endif #endif diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index b20d3dfd68..94f820a062 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -399,8 +399,8 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L /** * Custom Boot and Status screens */ -#if ENABLED(SHOW_CUSTOM_BOOTSCREEN) && NONE(HAS_MARLINUI_HD44780, HAS_MARLINUI_U8GLIB, TOUCH_UI_FTDI_EVE, IS_DWIN_MARLINUI) - #error "SHOW_CUSTOM_BOOTSCREEN requires Character LCD, Graphical LCD, or TOUCH_UI_FTDI_EVE." +#if ENABLED(SHOW_CUSTOM_BOOTSCREEN) && NONE(TFT_COLOR_UI, HAS_MARLINUI_HD44780, HAS_MARLINUI_U8GLIB, TOUCH_UI_FTDI_EVE, IS_DWIN_MARLINUI) + #error "SHOW_CUSTOM_BOOTSCREEN requires Character LCD, Graphical LCD, TOUCH_UI_FTDI_EVE, or TFT_COLOR_UI." #elif ENABLED(SHOW_CUSTOM_BOOTSCREEN) && DISABLED(SHOW_BOOTSCREEN) #error "SHOW_CUSTOM_BOOTSCREEN requires SHOW_BOOTSCREEN." #elif ENABLED(CUSTOM_STATUS_SCREEN_IMAGE) && !HAS_MARLINUI_U8GLIB @@ -1277,53 +1277,22 @@ static_assert(NUM_SERVOS <= NUM_SERVO_PLUGS, "NUM_SERVOS (or some servo index) i + (DISABLED(BLTOUCH) && HAS_Z_SERVO_PROBE) \ + COUNT_ENABLED(PROBE_MANUALLY, BLTOUCH, BD_SENSOR, FIX_MOUNTED_PROBE, NOZZLE_AS_PROBE, TOUCH_MI_PROBE, SOLENOID_PROBE, Z_PROBE_ALLEN_KEY, Z_PROBE_SLED, RACK_AND_PINION_PROBE, SENSORLESS_PROBING, MAGLEV4, MAG_MOUNTED_PROBE, BIQU_MICROPROBE_V1, BIQU_MICROPROBE_V2) #error "Please enable only one probe option. See the following errors:" - #if ENABLED(BLTOUCH) - #error "(BLTOUCH is enabled.)" - #elif HAS_Z_SERVO_PROBE - #error "(Z_SERVO_PROBE is enabled.)" - #endif - #if ENABLED(PROBE_MANUALLY) - #error "(PROBE_MANUALLY is enabled.)" - #endif - #if ENABLED(BD_SENSOR) - #error "(BD_SENSOR is enabled.)" - #endif - #if ENABLED(FIX_MOUNTED_PROBE) - #error "(FIX_MOUNTED_PROBE is enabled.)" - #endif - #if ENABLED(NOZZLE_AS_PROBE) - #error "(NOZZLE_AS_PROBE is enabled.)" - #endif - #if ENABLED(TOUCH_MI_PROBE) - #error "(TOUCH_MI_PROBE is enabled.)" - #endif - #if ENABLED(SOLENOID_PROBE) - #error "(SOLENOID_PROBE is enabled.)" - #endif - #if ENABLED(Z_PROBE_ALLEN_KEY) - #error "(Z_PROBE_ALLEN_KEY is enabled.)" - #endif - #if ENABLED(Z_PROBE_SLED) - #error "(Z_PROBE_SLED is enabled.)" - #endif - #if ENABLED(RACK_AND_PINION_PROBE) - #error "(RACK_AND_PINION_PROBE is enabled.)" - #endif - #if ENABLED(SENSORLESS_PROBING) - #error "(SENSORLESS_PROBING is enabled.)" - #endif - #if ENABLED(MAGLEV4) - #error "(MAGLEV4 is enabled.)" - #endif - #if ENABLED(MAG_MOUNTED_PROBE) - #error "(MAG_MOUNTED_PROBE is enabled.)" - #endif - #if ENABLED(BIQU_MICROPROBE_V1) - #error "(BIQU_MICROPROBE_V1 is enabled.)" - #endif - #if ENABLED(BIQU_MICROPROBE_V2) - #error "(BIQU_MICROPROBE_V2 is enabled.)" - #endif + static_assert(DISABLED(BLTOUCH), "(BLTOUCH is enabled.)"); + static_assert(ENABLED(BLTOUCH) || DISABLED(HAS_Z_SERVO_PROBE), "(Z_SERVO_PROBE is enabled.)"); + static_assert(DISABLED(PROBE_MANUALLY), "(PROBE_MANUALLY is enabled.)"); + static_assert(DISABLED(BD_SENSOR), "(BD_SENSOR is enabled.)"); + static_assert(DISABLED(FIX_MOUNTED_PROBE), "(FIX_MOUNTED_PROBE is enabled.)"); + static_assert(DISABLED(NOZZLE_AS_PROBE), "(NOZZLE_AS_PROBE is enabled.)"); + static_assert(DISABLED(TOUCH_MI_PROBE), "(TOUCH_MI_PROBE is enabled.)"); + static_assert(DISABLED(SOLENOID_PROBE), "(SOLENOID_PROBE is enabled.)"); + static_assert(DISABLED(Z_PROBE_ALLEN_KEY), "(Z_PROBE_ALLEN_KEY is enabled.)"); + static_assert(DISABLED(Z_PROBE_SLED), "(Z_PROBE_SLED is enabled.)"); + static_assert(DISABLED(RACK_AND_PINION_PROBE), "(RACK_AND_PINION_PROBE is enabled.)"); + static_assert(DISABLED(SENSORLESS_PROBING), "(SENSORLESS_PROBING is enabled.)"); + static_assert(DISABLED(MAGLEV4), "(MAGLEV4 is enabled.)"); + static_assert(DISABLED(MAG_MOUNTED_PROBE), "(MAG_MOUNTED_PROBE is enabled.)"); + static_assert(DISABLED(BIQU_MICROPROBE_V1), "(BIQU_MICROPROBE_V1 is enabled.)"); + static_assert(DISABLED(BIQU_MICROPROBE_V2), "(BIQU_MICROPROBE_V2 is enabled.)"); #endif #if HAS_BED_PROBE @@ -1500,7 +1469,6 @@ static_assert(NUM_SERVOS <= NUM_SERVO_PLUGS, "NUM_SERVOS (or some servo index) i #elif !PIN_EXISTS(PROBE_ENABLE) #error "BIQU MicroProbe requires a PROBE_ENABLE_PIN." #endif - #if ENABLED(BIQU_MICROPROBE_V1) #if ENABLED(INVERTED_PROBE_STATE) #if Z_MIN_PROBE_ENDSTOP_HIT_STATE != LOW @@ -1518,6 +1486,13 @@ static_assert(NUM_SERVOS <= NUM_SERVO_PLUGS, "NUM_SERVOS (or some servo index) i #error "BIQU_MICROPROBE_V1 requires Z_MIN_ENDSTOP_HIT_STATE HIGH." #endif #endif + #if NONE(ONBOARD_ENDSTOPPULLUPS, ENDSTOPPULLUPS, ENDSTOPPULLUP_ZMIN, ENDSTOPPULLUP_ZMIN_PROBE) + #if USE_Z_MIN_PROBE + #error "BIQU_MICROPROBE_V1 on Z_MIN_PROBE_PIN requires ENDSTOPPULLUP_ZMIN_PROBE, or ENDSTOPPULLUPS." + #else + #error "BIQU_MICROPROBE_V1 on Z_MIN_PIN requires ENDSTOPPULLUP_ZMIN, or ENDSTOPPULLUPS." + #endif + #endif #elif ENABLED(BIQU_MICROPROBE_V2) #if ENABLED(INVERTED_PROBE_STATE) #if Z_MIN_PROBE_ENDSTOP_HIT_STATE != HIGH @@ -1536,6 +1511,13 @@ static_assert(NUM_SERVOS <= NUM_SERVO_PLUGS, "NUM_SERVOS (or some servo index) i #endif #endif #endif + #if NONE(ONBOARD_ENDSTOPPULLUPS, ENDSTOPPULLUPS, ENDSTOPPULLUP_ZMIN, ENDSTOPPULLUP_ZMIN_PROBE) + #if USE_Z_MIN_PROBE + #error "BIQU_MICROPROBE_V2 on Z_MIN_PROBE_PIN requires ENDSTOPPULLUP_ZMIN_PROBE, or ENDSTOPPULLUPS." + #else + #error "BIQU_MICROPROBE_V2 on Z_MIN_PIN requires ENDSTOPPULLUP_ZMIN, or ENDSTOPPULLUPS." + #endif + #endif #endif // BIQU_MICROPROBE_V1 || BIQU_MICROPROBE_V2 /** diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index 5f4b7b8320..7a198943a2 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2025-11-08" + #define STRING_DISTRIBUTION_DATE "2025-11-10" #endif /** diff --git a/Marlin/src/inc/Warnings.cpp b/Marlin/src/inc/Warnings.cpp index be617aa2e8..6da36d832f 100644 --- a/Marlin/src/inc/Warnings.cpp +++ b/Marlin/src/inc/Warnings.cpp @@ -724,6 +724,10 @@ #warning "BIQU MicroProbe V2 detect signal requires a strong pull-up. Some processors have weak internal pull-up capabilities, so we recommended connecting MicroProbe SIGNAL / GND to Z-MIN / Z-STOP instead of the dedicated PROBE port. (Define NO_MICROPROBE_WARNING to suppress this warning.)" #endif +#if PROBE_WAKEUP_TIME_WARNING + #warning "PROBE_WAKEUP_TIME_MS has been set to the default 30ms." +#endif + // // Warn users of potential endstop/DIAG pin conflicts to prevent homing issues when not using sensorless homing // @@ -943,6 +947,9 @@ #if ENABLED(FTM_HOME_AND_PROBE) #if ANY(BIQU_MICROPROBE_V1, BIQU_MICROPROBE_V2) #warning "Let us know if you experience any issues with BIQU Microprobe and FT_MOTION." + #if PROBE_WAKEUP_TIME_MS <= 25 + #warning "A PROBE_WAKEUP_TIME_MS over 25 ms is recommended with FT_MOTION and BIQU_MICROPROBE_V1 or BIQU_MICROPROBE_V2." + #endif #endif #if PROBE_WAKEUP_TIME_MS < 30 #warning "A PROBE_WAKEUP_TIME_MS over 30 ms is recommended with FT_MOTION." @@ -973,8 +980,6 @@ /** * Smooth Linear Advance with Mixing Extruder, S-Curve Acceleration */ -#if ENABLED(SMOOTH_LIN_ADVANCE) - #if ENABLED(MIXING_EXTRUDER) - #warning "SMOOTH_LIN_ADVANCE with MIXING_EXTRUDER is untested. Use with caution." - #endif +#if ALL(SMOOTH_LIN_ADVANCE, MIXING_EXTRUDER) + #warning "SMOOTH_LIN_ADVANCE with MIXING_EXTRUDER is untested. Use with caution." #endif diff --git a/Marlin/src/lcd/tft/canvas.cpp b/Marlin/src/lcd/tft/canvas.cpp index 0f77149a5a..a237bb8434 100644 --- a/Marlin/src/lcd/tft/canvas.cpp +++ b/Marlin/src/lcd/tft/canvas.cpp @@ -134,11 +134,22 @@ void Canvas::addImage(int16_t x, int16_t y, MarlinImage image, uint16_t *colors) uint32_t rle_offset; } rle_state; + #if ENABLED(SHOW_CUSTOM_BOOTSCREEN) + static MarlinImage last_image = noImage; + #endif + // RLE16 HIGHCOLOR - 16 bits per pixel if (color_mode == RLE16) { uint8_t *bytedata = (uint8_t *)images[image].data; if (!bytedata) return; + #if ENABLED(SHOW_CUSTOM_BOOTSCREEN) // Reset RLE state if a different image + if (image != last_image) { + rle_state.has_rle_state = false; + last_image = image; + } + #endif + // Loop through the image data advancing the row and column as needed int16_t srcy = 0, srcx = 0, // Image data line / column index dsty = y, dstx = x; // Destination line / column index diff --git a/Marlin/src/lcd/tft/tft_image.cpp b/Marlin/src/lcd/tft/tft_image.cpp index 1d287f4ba6..25fefbf8c5 100644 --- a/Marlin/src/lcd/tft/tft_image.cpp +++ b/Marlin/src/lcd/tft/tft_image.cpp @@ -30,40 +30,41 @@ const tImage NoLogo = { nullptr, 0, 0, NOCOLORS }; const tImage images[imgCount] = { - TERN(SHOW_BOOTSCREEN, BOOTSCREEN_LOGO, NoLogo), // imgBootScreen - HotEnd_64x64x4, // imgHotEnd - Bed_64x64x4, // imgBed - Bed_Heated_64x64x4, // imgBedHeated - Chamber_64x64x4, // imgChamber - Chamber_Heated_64x64x4, // imgChamberHeated - Fan0_64x64x4, // imgFanIdle - Fan_Slow0_64x64x4, // imgFanSlow0 - Fan_Slow1_64x64x4, // imgFanSlow1 - Fan_Fast0_64x64x4, // imgFanFast0 - Fan_Fast1_64x64x4, // imgFanFast1 - Feedrate_32x32x4, // imgFeedRate - Flowrate_32x32x4, // imgFlowRate - SD_64x64x4, // imgSD - Menu_64x64x4, // imgMenu - Settings_64x64x4, // imgSettings - Directory_32x32x4, // imgDirectory - Confirm_64x64x4, // imgConfirm - Cancel_64x64x4, // imgCancel - Increase_64x64x4, // imgIncrease - Decrease_64x64x4, // imgDecrease - Back_32x32x4, // imgBack - Up_32x32x4, // imgUp - Down_32x32x4, // imgDown - Left_32x32x4, // imgLeft - Right_32x32x4, // imgRight - Refresh_32x32x4, // imgRefresh - Leveling_32x32x4, // imgLeveling - Slider8x16x4, // imgSlider - Home_64x64x4, // imgHome - BtnRounded_64x52x4, // imgBtn52Rounded - BtnRounded_42x39x4, // imgBtn39Rounded - Time_Elapsed_32x32x4, // imgTimeElapsed - Time_Remaining_32x32x4, // imgTimeRemaining + TERN(SHOW_CUSTOM_BOOTSCREEN, CUSTOM_BOOTSCREEN, NoLogo), // imgCustomBoot + TERN(SHOW_BOOTSCREEN, BOOTSCREEN_LOGO, NoLogo), // imgBootScreen + HotEnd_64x64x4, // imgHotEnd + Bed_64x64x4, // imgBed + Bed_Heated_64x64x4, // imgBedHeated + Chamber_64x64x4, // imgChamber + Chamber_Heated_64x64x4, // imgChamberHeated + Fan0_64x64x4, // imgFanIdle + Fan_Slow0_64x64x4, // imgFanSlow0 + Fan_Slow1_64x64x4, // imgFanSlow1 + Fan_Fast0_64x64x4, // imgFanFast0 + Fan_Fast1_64x64x4, // imgFanFast1 + Feedrate_32x32x4, // imgFeedRate + Flowrate_32x32x4, // imgFlowRate + SD_64x64x4, // imgSD + Menu_64x64x4, // imgMenu + Settings_64x64x4, // imgSettings + Directory_32x32x4, // imgDirectory + Confirm_64x64x4, // imgConfirm + Cancel_64x64x4, // imgCancel + Increase_64x64x4, // imgIncrease + Decrease_64x64x4, // imgDecrease + Back_32x32x4, // imgBack + Up_32x32x4, // imgUp + Down_32x32x4, // imgDown + Left_32x32x4, // imgLeft + Right_32x32x4, // imgRight + Refresh_32x32x4, // imgRefresh + Leveling_32x32x4, // imgLeveling + Slider8x16x4, // imgSlider + Home_64x64x4, // imgHome + BtnRounded_64x52x4, // imgBtn52Rounded + BtnRounded_42x39x4, // imgBtn39Rounded + Time_Elapsed_32x32x4, // imgTimeElapsed + Time_Remaining_32x32x4, // imgTimeRemaining }; #endif // HAS_GRAPHICAL_TFT diff --git a/Marlin/src/lcd/tft/tft_image.h b/Marlin/src/lcd/tft/tft_image.h index 8abca6f330..e1f078a90b 100644 --- a/Marlin/src/lcd/tft/tft_image.h +++ b/Marlin/src/lcd/tft/tft_image.h @@ -25,12 +25,21 @@ #if ENABLED(COMPACT_MARLIN_BOOT_LOGO) #define MARLIN_LOGO_CHOSEN(W,H) { (void *)marlin_logo_##W##x##H##x16_rle16, W, H, RLE16 } + #if ENABLED(SHOW_CUSTOM_BOOTSCREEN) + #define _CUSTOM_BOOTSCREEN_CHOSEN(W,H) { (void *)custom_bootscreen_##W##x##H##x16_rle16, W, H, RLE16 } + #define CUSTOM_BOOTSCREEN_CHOSEN(W,H) _CUSTOM_BOOTSCREEN_CHOSEN(W,H) + #endif #else #define MARLIN_LOGO_CHOSEN(W,H) { (void *)marlin_logo_##W##x##H##x16, W, H, HIGHCOLOR } + #if ENABLED(SHOW_CUSTOM_BOOTSCREEN) + #define _CUSTOM_BOOTSCREEN_CHOSEN(W,H){ (void *)custom_bootscreen_##W##x##H##x16, W, H, HIGHCOLOR } + #define CUSTOM_BOOTSCREEN_CHOSEN(W,H) _CUSTOM_BOOTSCREEN_CHOSEN(W,H) + #endif #endif enum MarlinImage : uint8_t { - imgBootScreen = 0x00, // BOOTSCREEN_LOGO / NoLogo + imgCustomBoot = 0x00, // CUSTOM_BOOTSCREEN + imgBootScreen, // BOOTSCREEN_LOGO / NoLogo imgHotEnd, // HotEnd_64x64x4 imgBed, // Bed_64x64x4 imgBedHeated, // Bed_Heated_64x64x4 diff --git a/Marlin/src/lcd/tft/ui_color_ui.cpp b/Marlin/src/lcd/tft/ui_color_ui.cpp index 6c90cb6c36..3287285f69 100644 --- a/Marlin/src/lcd/tft/ui_color_ui.cpp +++ b/Marlin/src/lcd/tft/ui_color_ui.cpp @@ -64,6 +64,20 @@ void MarlinUI::tft_idle() { #if ENABLED(SHOW_BOOTSCREEN) void MarlinUI::show_bootscreen() { + #if ENABLED(SHOW_CUSTOM_BOOTSCREEN) + tft.queue.reset(); + tft.canvas(CUSTOM_BOOTSCREEN_X, CUSTOM_BOOTSCREEN_Y, CUSTOM_BOOTSCREEN_WIDTH, CUSTOM_BOOTSCREEN_HEIGHT); + tft.set_background(COLOR_BACKGROUND); + tft.add_image(0, 0, imgCustomBoot); + tft.queue.sync(); + #ifndef CUSTOM_BOOTSCREEN_TIMEOUT + #define CUSTOM_BOOTSCREEN_TIMEOUT 2500 + #endif + #if CUSTOM_BOOTSCREEN_TIMEOUT + safe_delay(CUSTOM_BOOTSCREEN_TIMEOUT); + #endif + #endif + tft.queue.reset(); tft.canvas(0, 0, TFT_WIDTH, TFT_HEIGHT); diff --git a/Marlin/src/lcd/tft/ui_common.h b/Marlin/src/lcd/tft/ui_common.h index ef26d6745f..f43dc95fb2 100644 --- a/Marlin/src/lcd/tft/ui_common.h +++ b/Marlin/src/lcd/tft/ui_common.h @@ -30,14 +30,37 @@ #include "tft.h" #include "tft_image.h" +#if ENABLED(SHOW_CUSTOM_BOOTSCREEN) + + #include "../../../_Bootscreen.h" + + #ifndef CUSTOM_BOOTSCREEN + #define CUSTOM_BOOTSCREEN CustomBootscreen + #endif + #ifndef CUSTOM_BOOTSCREEN_WIDTH + #define CUSTOM_BOOTSCREEN_WIDTH TFT_WIDTH + #endif + #ifndef CUSTOM_BOOTSCREEN_HEIGHT + #define CUSTOM_BOOTSCREEN_HEIGHT TFT_HEIGHT + #endif + + #ifndef CUSTOM_BOOTSCREEN_X + #define CUSTOM_BOOTSCREEN_X ((TFT_WIDTH - (CUSTOM_BOOTSCREEN_WIDTH)) / 2) + #endif + #ifndef CUSTOM_BOOTSCREEN_Y + #define CUSTOM_BOOTSCREEN_Y ((TFT_HEIGHT - (CUSTOM_BOOTSCREEN_HEIGHT)) / 2) + #endif + + const tImage CustomBootscreen = CUSTOM_BOOTSCREEN_CHOSEN(CUSTOM_BOOTSCREEN_WIDTH, CUSTOM_BOOTSCREEN_HEIGHT); + +#endif // SHOW_CUSTOM_BOOTSCREEN + #if ENABLED(TOUCH_SCREEN) #include "touch.h" extern bool draw_menu_navigation; #else // add_control() function is used to display encoder-controlled elements - enum TouchControlType : uint16_t { - NONE = 0x0000, - }; + enum TouchControlType : uint16_t { NONE = 0x0000 }; #endif #define UI_INCL_(W, H) STRINGIFY_(ui_##W##x##H.h) diff --git a/Marlin/src/module/motion.cpp b/Marlin/src/module/motion.cpp index cb99000451..cf524cbdb9 100644 --- a/Marlin/src/module/motion.cpp +++ b/Marlin/src/module/motion.cpp @@ -2207,7 +2207,7 @@ void prepare_line_to_destination() { thermalManager.wait_for_hotend_heating(active_extruder); #endif - TERN_(HAS_QUIET_PROBING, if (final_approach) probe.set_probing_paused(true)); + TERN_(HAS_QUIET_PROBING, if (final_approach) probe.set_devices_paused_for_probing(true)); } // Disable stealthChop if used. Enable diag1 pin on driver. @@ -2246,7 +2246,7 @@ void prepare_line_to_destination() { if (is_home_dir) { #if HOMING_Z_WITH_PROBE && HAS_QUIET_PROBING - if (axis == Z_AXIS && final_approach) probe.set_probing_paused(false); + if (axis == Z_AXIS && final_approach) probe.set_devices_paused_for_probing(false); #endif endstops.validate_homing_move(); diff --git a/Marlin/src/module/probe.cpp b/Marlin/src/module/probe.cpp index 937b8ebeeb..ae688a864e 100644 --- a/Marlin/src/module/probe.cpp +++ b/Marlin/src/module/probe.cpp @@ -347,12 +347,16 @@ xyz_pos_t Probe::offset; // Initialized by settings.load #define DELAY_BEFORE_PROBING 25 #endif - void Probe::set_probing_paused(const bool dopause) { + /** + * Optionally turn off noisy components so we get a cleaner probe signal. + * Pause for at least 25ms when preparing to probe (dopause == true). + */ + void Probe::set_devices_paused_for_probing(const bool dopause) { TERN_(PROBING_HEATERS_OFF, thermalManager.pause_heaters(dopause)); TERN_(PROBING_FANS_OFF, thermalManager.set_fans_paused(dopause)); TERN_(PROBING_ESTEPPERS_OFF, if (dopause) stepper.disable_e_steppers()); - #if ENABLED(PROBING_STEPPERS_OFF) && DISABLED(DELTA) - static uint8_t old_trusted; + #if ENABLED(PROBING_STEPPERS_OFF) + static main_axes_bits_t old_trusted; if (dopause) { old_trusted = axes_trusted; stepper.disable_axis(X_AXIS); @@ -660,7 +664,7 @@ bool Probe::probe_down_to_z(const float z, const feedRate_t fr_mm_s) { endstops.enable(true); #endif // SENSORLESS_PROBING - TERN_(HAS_QUIET_PROBING, set_probing_paused(true)); + TERN_(HAS_QUIET_PROBING, set_devices_paused_for_probing(true)); // Move down until the probe is triggered do_blocking_move_to_z(z, fr_mm_s); @@ -668,7 +672,7 @@ bool Probe::probe_down_to_z(const float z, const feedRate_t fr_mm_s) { // Check to see if the probe was triggered const bool probe_triggered = ( #if HAS_DELTA_SENSORLESS_PROBING - endstops.trigger_state() & (_BV(X_MAX) | _BV(Y_MAX) | _BV(Z_MAX)) + PROBE_TRIGGERED() #else TEST(endstops.trigger_state(), Z_MIN_PROBE) #endif @@ -679,7 +683,7 @@ bool Probe::probe_down_to_z(const float z, const feedRate_t fr_mm_s) { if (probe_triggered) refresh_largest_sensorless_adj(); #endif - TERN_(HAS_QUIET_PROBING, set_probing_paused(false)); + TERN_(HAS_QUIET_PROBING, set_devices_paused_for_probing(false)); // Re-enable stealthChop if used. Disable diag1 pin on driver. #if ENABLED(SENSORLESS_PROBING) diff --git a/Marlin/src/module/probe.h b/Marlin/src/module/probe.h index 74904d35c5..d0f0ada34c 100644 --- a/Marlin/src/module/probe.h +++ b/Marlin/src/module/probe.h @@ -33,6 +33,10 @@ #include "../feature/bltouch.h" #endif +#if ANY(BD_SENSOR, HAS_DELTA_SENSORLESS_PROBING) + #include "endstops.h" +#endif + #define DEBUG_OUT ENABLED(DEBUG_LEVELING_FEATURE) #include "../core/debug_out.h" @@ -45,20 +49,24 @@ }; #endif -#if ENABLED(BD_SENSOR) - #include "endstops.h" - #define PROBE_READ() endstops.bdp_state -#elif USE_Z_MIN_PROBE - #define PROBE_READ() READ(Z_MIN_PROBE_PIN) +#if HAS_DELTA_SENSORLESS_PROBING + #define PROBE_READ() (endstops.trigger_state() & (_BV(X_MAX) | _BV(Y_MAX) | _BV(Z_MAX))) + #define PROBE_TRIGGERED() (PROBE_READ() != 0) #else - #define PROBE_READ() READ(Z_MIN_PIN) + #if ENABLED(BD_SENSOR) + #define PROBE_READ() endstops.bdp_state + #elif USE_Z_MIN_PROBE + #define PROBE_READ() READ(Z_MIN_PROBE_PIN) + #else + #define PROBE_READ() READ(Z_MIN_PIN) + #endif + #if USE_Z_MIN_PROBE + #define PROBE_HIT_STATE Z_MIN_PROBE_ENDSTOP_HIT_STATE + #else + #define PROBE_HIT_STATE Z_MIN_ENDSTOP_HIT_STATE + #endif + #define PROBE_TRIGGERED() (PROBE_READ() == PROBE_HIT_STATE) #endif -#if USE_Z_MIN_PROBE - #define PROBE_HIT_STATE Z_MIN_PROBE_ENDSTOP_HIT_STATE -#else - #define PROBE_HIT_STATE Z_MIN_ENDSTOP_HIT_STATE -#endif -#define PROBE_TRIGGERED() (PROBE_READ() == PROBE_HIT_STATE) // In BLTOUCH HS mode, the probe travels in a deployed state. #define Z_TWEEN_SAFE_CLEARANCE SUM_TERN(BLTOUCH, Z_CLEARANCE_BETWEEN_PROBES, bltouch.z_extra_clearance()) @@ -347,7 +355,7 @@ public: #endif #if HAS_QUIET_PROBING - static void set_probing_paused(const bool p); + static void set_devices_paused_for_probing(const bool p); #endif #if ENABLED(PROBE_TARE) diff --git a/buildroot/bin/use_example_configs b/buildroot/bin/use_example_configs index 401e15da61..72930d8c45 100755 --- a/buildroot/bin/use_example_configs +++ b/buildroot/bin/use_example_configs @@ -101,6 +101,8 @@ def main(): if branch.startswith("bugfix-2."): branch = branch + elif branch.endswith("bugfix-2.1.x"): + branch = "bugfix-2.1.x" elif branch.endswith("-2.1.x") or branch == "2.1.x": branch = "latest-2.1.x" elif branch.endswith("-2.0.x") or branch == "2.0.x":