🔧 Config updates

This commit is contained in:
Scott Lahteine 2024-02-07 21:11:33 -06:00
parent a18045a96a
commit cbaff4bc46
13 changed files with 2674 additions and 2495 deletions

View File

@ -35,7 +35,7 @@
* *
* Advanced settings can be found in Configuration_adv.h * Advanced settings can be found in Configuration_adv.h
*/ */
#define CONFIGURATION_H_VERSION 02010201 #define CONFIGURATION_H_VERSION 02010202
//=========================================================================== //===========================================================================
//============================= Getting Started ============================= //============================= Getting Started =============================
@ -46,12 +46,13 @@
* *
* Example Configs: https://github.com/MarlinFirmware/Configurations/branches/all * Example Configs: https://github.com/MarlinFirmware/Configurations/branches/all
* *
* Průša Calculator: https://blog.prusaprinters.org/calculator_3416/ * Průša Calculator: https://blog.prusa3d.com/calculator_3416/
* *
* Calibration Guides: https://reprap.org/wiki/Calibration * Calibration Guides: https://reprap.org/wiki/Calibration
* https://reprap.org/wiki/Triffid_Hunter%27s_Calibration_Guide * https://reprap.org/wiki/Triffid_Hunter%27s_Calibration_Guide
* https://sites.google.com/site/repraplogphase/calibration-of-your-reprap * https://web.archive.org/web/20220907014303/https://sites.google.com/site/repraplogphase/calibration-of-your-reprap
* https://youtu.be/wAL9d7FgInk * https://youtu.be/wAL9d7FgInk
* https://teachingtechyt.github.io/calibration.html
* *
* Calibration Objects: https://www.thingiverse.com/thing:5573 * Calibration Objects: https://www.thingiverse.com/thing:5573
* https://www.thingiverse.com/thing:1278865 * https://www.thingiverse.com/thing:1278865
@ -257,7 +258,8 @@
#if ENABLED(SWITCHING_NOZZLE) #if ENABLED(SWITCHING_NOZZLE)
#define SWITCHING_NOZZLE_SERVO_NR 0 #define SWITCHING_NOZZLE_SERVO_NR 0
//#define SWITCHING_NOZZLE_E1_SERVO_NR 1 // If two servos are used, the index of the second //#define SWITCHING_NOZZLE_E1_SERVO_NR 1 // If two servos are used, the index of the second
#define SWITCHING_NOZZLE_SERVO_ANGLES { 0, 90 } // Angles for E0, E1 (single servo) or lowered/raised (dual servo) #define SWITCHING_NOZZLE_SERVO_ANGLES { 0, 90 } // A pair of angles for { E0, E1 }.
// For Dual Servo use two pairs: { { lower, raise }, { lower, raise } }
#define SWITCHING_NOZZLE_SERVO_DWELL 2500 // Dwell time to wait for servo to make physical move #define SWITCHING_NOZZLE_SERVO_DWELL 2500 // Dwell time to wait for servo to make physical move
#endif #endif
@ -422,11 +424,11 @@
//#define AUTO_POWER_CONTROL // Enable automatic control of the PS_ON pin //#define AUTO_POWER_CONTROL // Enable automatic control of the PS_ON pin
#if ENABLED(AUTO_POWER_CONTROL) #if ENABLED(AUTO_POWER_CONTROL)
#define AUTO_POWER_FANS // Turn on PSU if fans need power #define AUTO_POWER_FANS // Turn on PSU for fans
#define AUTO_POWER_E_FANS #define AUTO_POWER_E_FANS // Turn on PSU for E Fans
#define AUTO_POWER_CONTROLLERFAN #define AUTO_POWER_CONTROLLERFAN // Turn on PSU for Controller Fan
#define AUTO_POWER_CHAMBER_FAN #define AUTO_POWER_CHAMBER_FAN // Turn on PSU for Chamber Fan
#define AUTO_POWER_COOLER_FAN #define AUTO_POWER_COOLER_FAN // Turn on PSU for Cooler Fan
#define POWER_TIMEOUT 30 // (s) Turn off power if the machine is idle for this duration #define POWER_TIMEOUT 30 // (s) Turn off power if the machine is idle for this duration
//#define POWER_OFF_DELAY 60 // (s) Delay of poweroff after M81 command. Useful to let fans run for extra time. //#define POWER_OFF_DELAY 60 // (s) Delay of poweroff after M81 command. Useful to let fans run for extra time.
#endif #endif
@ -555,7 +557,7 @@
#define TEMP_SENSOR_5 0 #define TEMP_SENSOR_5 0
#define TEMP_SENSOR_6 0 #define TEMP_SENSOR_6 0
#define TEMP_SENSOR_7 0 #define TEMP_SENSOR_7 0
#define TEMP_SENSOR_BED 0 #define TEMP_SENSOR_BED 1
#define TEMP_SENSOR_PROBE 0 #define TEMP_SENSOR_PROBE 0
#define TEMP_SENSOR_CHAMBER 0 #define TEMP_SENSOR_CHAMBER 0
#define TEMP_SENSOR_COOLER 0 #define TEMP_SENSOR_COOLER 0
@ -657,13 +659,17 @@
// @section hotend temp // @section hotend temp
// Enable PIDTEMP for PID control or MPCTEMP for Predictive Model. /**
// temperature control. Disable both for bang-bang heating. * Temperature Control
*
* (NONE) : Bang-bang heating
* PIDTEMP : PID temperature control (~4.1K)
* MPCTEMP : Predictive Model temperature control. (~1.8K without auto-tune)
*/
#define PIDTEMP // See the PID Tuning Guide at https://reprap.org/wiki/PID_Tuning #define PIDTEMP // See the PID Tuning Guide at https://reprap.org/wiki/PID_Tuning
//#define MPCTEMP // ** EXPERIMENTAL ** //#define MPCTEMP // ** EXPERIMENTAL ** See https://marlinfw.org/docs/features/model_predictive_control.html
#define BANG_MAX 255 // Limits current to nozzle while in bang-bang mode; 255=full current #define PID_MAX 255 // Limit hotend current while PID is active (see PID_FUNCTIONAL_RANGE below); 255=full current
#define PID_MAX BANG_MAX // Limits current to nozzle while PID is active (see PID_FUNCTIONAL_RANGE below); 255=full current
#define PID_K1 0.95 // Smoothing factor within any PID loop #define PID_K1 0.95 // Smoothing factor within any PID loop
#if ENABLED(PIDTEMP) #if ENABLED(PIDTEMP)
@ -682,21 +688,23 @@
#define DEFAULT_Ki 1.08 #define DEFAULT_Ki 1.08
#define DEFAULT_Kd 114.00 #define DEFAULT_Kd 114.00
#endif #endif
#else
#define BANG_MAX 255 // Limit hotend current while in bang-bang mode; 255=full current
#endif #endif
/** /**
* Model Predictive Control for hotend * Model Predictive Control for hotend
* *
* Use a physical model of the hotend to control temperature. When configured correctly * Use a physical model of the hotend to control temperature. When configured correctly this gives
* this gives better responsiveness and stability than PID and it also removes the need * better responsiveness and stability than PID and removes the need for PID_EXTRUSION_SCALING
* for PID_EXTRUSION_SCALING and PID_FAN_SCALING. Use M306 T to autotune the model. * and PID_FAN_SCALING. Use M306 T to autotune the model.
* @section mpctemp * @section mpctemp
*/ */
#if ENABLED(MPCTEMP) #if ENABLED(MPCTEMP)
//#define MPC_EDIT_MENU // Add MPC editing to the "Advanced Settings" menu. (~1300 bytes of flash) //#define MPC_EDIT_MENU // Add MPC editing to the "Advanced Settings" menu. (~1.3K bytes of flash)
//#define MPC_AUTOTUNE_MENU // Add MPC auto-tuning to the "Advanced Settings" menu. (~350 bytes of flash) //#define MPC_AUTOTUNE_MENU // Add MPC auto-tuning to the "Advanced Settings" menu. (~350 bytes of flash)
#define MPC_MAX BANG_MAX // (0..255) Current to nozzle while MPC is active. #define MPC_MAX 255 // (0..255) Current to nozzle while MPC is active.
#define MPC_HEATER_POWER { 40.0f } // (W) Heat cartridge powers. #define MPC_HEATER_POWER { 40.0f } // (W) Heat cartridge powers.
#define MPC_INCLUDE_FAN // Model the fan speed? #define MPC_INCLUDE_FAN // Model the fan speed?
@ -715,8 +723,12 @@
//#define MPC_FAN_0_ACTIVE_HOTEND //#define MPC_FAN_0_ACTIVE_HOTEND
#endif #endif
// Filament Heat Capacity (joules/kelvin/mm)
// Set at runtime with M306 H<value>
#define FILAMENT_HEAT_CAPACITY_PERMM { 5.6e-3f } // 0.0056 J/K/mm for 1.75mm PLA (0.0149 J/K/mm for 2.85mm PLA). #define FILAMENT_HEAT_CAPACITY_PERMM { 5.6e-3f } // 0.0056 J/K/mm for 1.75mm PLA (0.0149 J/K/mm for 2.85mm PLA).
//#define FILAMENT_HEAT_CAPACITY_PERMM { 3.6e-3f } // 0.0036 J/K/mm for 1.75mm PETG (0.0094 J/K/mm for 2.85mm PETG). // 0.0036 J/K/mm for 1.75mm PETG (0.0094 J/K/mm for 2.85mm PETG).
// 0.00515 J/K/mm for 1.75mm ABS (0.0137 J/K/mm for 2.85mm ABS).
// 0.00522 J/K/mm for 1.75mm Nylon (0.0138 J/K/mm for 2.85mm Nylon).
// Advanced options // Advanced options
#define MPC_SMOOTHING_FACTOR 0.5f // (0.0...1.0) Noisy temperature sensors may need a lower value for stabilization. #define MPC_SMOOTHING_FACTOR 0.5f // (0.0...1.0) Noisy temperature sensors may need a lower value for stabilization.
@ -731,23 +743,7 @@
//====================== PID > Bed Temperature Control ====================== //====================== PID > Bed Temperature Control ======================
//=========================================================================== //===========================================================================
/** // @section bed temp
* PID Bed Heating
*
* If this option is enabled set PID constants below.
* If this option is disabled, bang-bang will be used and BED_LIMIT_SWITCHING will enable hysteresis.
*
* The PID frequency will be the same as the extruder PWM.
* If PID_dT is the default, and correct for the hardware/configuration, that means 7.689Hz,
* which is fine for driving a square wave into a resistive load and does not significantly
* impact FET heating. This also works fine on a Fotek SSR-10DA Solid State Relay into a 250W
* heater. If your configuration is significantly different than this and you don't understand
* the issues involved, don't use bed PID until someone else verifies that your hardware works.
* @section bed temp
*/
//#define PIDTEMPBED
//#define BED_LIMIT_SWITCHING
/** /**
* Max Bed Power * Max Bed Power
@ -757,6 +753,20 @@
*/ */
#define MAX_BED_POWER 255 // limits duty cycle to bed; 255=full current #define MAX_BED_POWER 255 // limits duty cycle to bed; 255=full current
/**
* PID Bed Heating
*
* The PID frequency will be the same as the extruder PWM.
* If PID_dT is the default, and correct for the hardware/configuration, that means 7.689Hz,
* which is fine for driving a square wave into a resistive load and does not significantly
* impact FET heating. This also works fine on a Fotek SSR-10DA Solid State Relay into a 250W
* heater. If your configuration is significantly different than this and you don't understand
* the issues involved, don't use bed PID until someone else verifies that your hardware works.
*
* With this option disabled, bang-bang will be used. BED_LIMIT_SWITCHING enables hysteresis.
*/
//#define PIDTEMPBED
#if ENABLED(PIDTEMPBED) #if ENABLED(PIDTEMPBED)
//#define MIN_BED_POWER 0 //#define MIN_BED_POWER 0
//#define PID_BED_DEBUG // Print Bed PID debug data to the serial port. //#define PID_BED_DEBUG // Print Bed PID debug data to the serial port.
@ -768,7 +778,9 @@
#define DEFAULT_bedKd 305.4 #define DEFAULT_bedKd 305.4
// FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles. // FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles.
#endif // PIDTEMPBED #else
//#define BED_LIMIT_SWITCHING // Keep the bed temperature within BED_HYSTERESIS of the target
#endif
//=========================================================================== //===========================================================================
//==================== PID > Chamber Temperature Control ==================== //==================== PID > Chamber Temperature Control ====================
@ -880,7 +892,12 @@
//#define COREYX //#define COREYX
//#define COREZX //#define COREZX
//#define COREZY //#define COREZY
//#define MARKFORGED_XY // MarkForged. See https://reprap.org/forum/read.php?152,504042
//
// MarkForged Kinematics
// See https://reprap.org/forum/read.php?152,504042
//
//#define MARKFORGED_XY
//#define MARKFORGED_YX //#define MARKFORGED_YX
// Enable for a belt style printer with endless "Z" motion // Enable for a belt style printer with endless "Z" motion
@ -889,8 +906,8 @@
// Enable for Polargraph Kinematics // Enable for Polargraph Kinematics
//#define POLARGRAPH //#define POLARGRAPH
#if ENABLED(POLARGRAPH) #if ENABLED(POLARGRAPH)
#define POLARGRAPH_MAX_BELT_LEN 1035.0 #define POLARGRAPH_MAX_BELT_LEN 1035.0 // (mm) Belt length at full extension. Override with M665 H.
#define DEFAULT_SEGMENTS_PER_SECOND 5 #define DEFAULT_SEGMENTS_PER_SECOND 5 // Move segmentation based on duration
#endif #endif
// @section delta // @section delta
@ -937,7 +954,7 @@
// Distance between bed and nozzle Z home position // Distance between bed and nozzle Z home position
#define DELTA_HEIGHT 250.00 // (mm) Get this value from G33 auto calibrate #define DELTA_HEIGHT 250.00 // (mm) Get this value from G33 auto calibrate
#define DELTA_ENDSTOP_ADJ { 0.0, 0.0, 0.0 } // Get these values from G33 auto calibrate #define DELTA_ENDSTOP_ADJ { 0.0, 0.0, 0.0 } // (mm) Get these values from G33 auto calibrate
// Horizontal distance bridged by diagonal push rods when effector is centered. // Horizontal distance bridged by diagonal push rods when effector is centered.
#define DELTA_RADIUS 124.0 // (mm) Get this value from G33 auto calibrate #define DELTA_RADIUS 124.0 // (mm) Get this value from G33 auto calibrate
@ -945,11 +962,11 @@
// Trim adjustments for individual towers // Trim adjustments for individual towers
// tower angle corrections for X and Y tower / rotate XYZ so Z tower angle = 0 // tower angle corrections for X and Y tower / rotate XYZ so Z tower angle = 0
// measured in degrees anticlockwise looking from above the printer // measured in degrees anticlockwise looking from above the printer
#define DELTA_TOWER_ANGLE_TRIM { 0.0, 0.0, 0.0 } // Get these values from G33 auto calibrate #define DELTA_TOWER_ANGLE_TRIM { 0.0, 0.0, 0.0 } // (mm) Get these values from G33 auto calibrate
// Delta radius and diagonal rod adjustments (mm) // Delta radius and diagonal rod adjustments
//#define DELTA_RADIUS_TRIM_TOWER { 0.0, 0.0, 0.0 } //#define DELTA_RADIUS_TRIM_TOWER { 0.0, 0.0, 0.0 } // (mm)
//#define DELTA_DIAGONAL_ROD_TRIM_TOWER { 0.0, 0.0, 0.0 } //#define DELTA_DIAGONAL_ROD_TRIM_TOWER { 0.0, 0.0, 0.0 } // (mm)
#endif #endif
// @section scara // @section scara
@ -985,8 +1002,8 @@
// Radius around the center where the arm cannot reach // Radius around the center where the arm cannot reach
#define MIDDLE_DEAD_ZONE_R 0 // (mm) #define MIDDLE_DEAD_ZONE_R 0 // (mm)
#define THETA_HOMING_OFFSET 0 // Calculated from Calibration Guide and M360 / M114. See http://reprap.harleystudio.co.za/?page_id=1073 #define THETA_HOMING_OFFSET 0 // Calculated from Calibration Guide and M360 / M114. See https://www.morgan3dp.com/morgan-calibration-guide/
#define PSI_HOMING_OFFSET 0 // Calculated from Calibration Guide and M364 / M114. See http://reprap.harleystudio.co.za/?page_id=1073 #define PSI_HOMING_OFFSET 0 // Calculated from Calibration Guide and M364 / M114. See https://www.morgan3dp.com/morgan-calibration-guide/
#elif ENABLED(MP_SCARA) #elif ENABLED(MP_SCARA)
@ -1020,7 +1037,7 @@
// Radius around the center where the arm cannot reach // Radius around the center where the arm cannot reach
#define MIDDLE_DEAD_ZONE_R 0 // (mm) #define MIDDLE_DEAD_ZONE_R 0 // (mm)
// Calculated from Calibration Guide and M360 / M114. See http://reprap.harleystudio.co.za/?page_id=1073 // Calculated from Calibration Guide and M360 / M114. See https://www.morgan3dp.com/morgan-calibration-guide/
#define THETA_HOMING_OFFSET 0 #define THETA_HOMING_OFFSET 0
#define PSI_HOMING_OFFSET 0 #define PSI_HOMING_OFFSET 0
#endif #endif
@ -1293,19 +1310,17 @@
/** /**
* Z_MIN_PROBE_PIN * Z_MIN_PROBE_PIN
* *
* Define this pin if the probe is not connected to Z_MIN_PIN. * Override this pin only if the probe cannot be connected to
* If not defined the default pin for the selected MOTHERBOARD * the default Z_MIN_PROBE_PIN for the selected MOTHERBOARD.
* will be used. Most of the time the default is what you want.
* *
* - The simplest option is to use a free endstop connector. * - The simplest option is to use a free endstop connector.
* - Use 5V for powered (usually inductive) sensors. * - Use 5V for powered (usually inductive) sensors.
* *
* - RAMPS 1.3/1.4 boards may use the 5V, GND, and Aux4->D32 pin: * - For simple switches...
* - For simple switches connect... * - Normally-closed (NC) also connect to GND.
* - normally-closed switches to GND and D32. * - Normally-open (NO) also connect to 5V.
* - normally-open switches to 5V and D32.
*/ */
//#define Z_MIN_PROBE_PIN 32 // Pin 32 is the RAMPS default //#define Z_MIN_PROBE_PIN -1
/** /**
* Probe Type * Probe Type
@ -1336,8 +1351,10 @@
/** /**
* Z Servo Probe, such as an endstop switch on a rotating arm. * Z Servo Probe, such as an endstop switch on a rotating arm.
*/ */
//#define Z_PROBE_SERVO_NR 0 // Defaults to SERVO 0 connector. //#define Z_PROBE_SERVO_NR 0
#ifdef Z_PROBE_SERVO_NR
//#define Z_SERVO_ANGLES { 70, 0 } // Z Servo Deploy and Stow angles //#define Z_SERVO_ANGLES { 70, 0 } // Z Servo Deploy and Stow angles
#endif
/** /**
* The BLTouch probe uses a Hall effect sensor and emulates a servo. * The BLTouch probe uses a Hall effect sensor and emulates a servo.
@ -1407,7 +1424,7 @@
#define MAG_MOUNTED_STOW_5 { PROBE_STOW_FEEDRATE, { 0, 0, 0 } } // Extra move if needed #define MAG_MOUNTED_STOW_5 { PROBE_STOW_FEEDRATE, { 0, 0, 0 } } // Extra move if needed
#endif #endif
// Duet Smart Effector (for delta printers) - https://bit.ly/2ul5U7J // Duet Smart Effector (for delta printers) - https://docs.duet3d.com/en/Duet3D_hardware/Accessories/Smart_Effector
// When the pin is defined you can use M672 to set/reset the probe sensitivity. // When the pin is defined you can use M672 to set/reset the probe sensitivity.
//#define DUET_SMART_EFFECTOR //#define DUET_SMART_EFFECTOR
#if ENABLED(DUET_SMART_EFFECTOR) #if ENABLED(DUET_SMART_EFFECTOR)
@ -1423,7 +1440,7 @@
//#define SENSORLESS_PROBING //#define SENSORLESS_PROBING
/** /**
* Allen key retractable z-probe as seen on many Kossel delta printers - https://reprap.org/wiki/Kossel#Automatic_bed_leveling_probe * Allen key retractable z-probe as seen on many Kossel delta printers - https://reprap.org/wiki/Kossel#Autolevel_probe
* Deploys by touching z-axis belt. Retracts by pushing the probe down. * Deploys by touching z-axis belt. Retracts by pushing the probe down.
*/ */
//#define Z_PROBE_ALLEN_KEY //#define Z_PROBE_ALLEN_KEY
@ -1470,7 +1487,7 @@
* *
* Tune and Adjust * Tune and Adjust
* - Probe Offsets can be tuned at runtime with 'M851', LCD menus, babystepping, etc. * - Probe Offsets can be tuned at runtime with 'M851', LCD menus, babystepping, etc.
* - PROBE_OFFSET_WIZARD (configuration_adv.h) can be used for setting the Z offset. * - PROBE_OFFSET_WIZARD (Configuration_adv.h) can be used for setting the Z offset.
* *
* Assuming the typical work area orientation: * Assuming the typical work area orientation:
* - Probe to RIGHT of the Nozzle has a Positive X offset * - Probe to RIGHT of the Nozzle has a Positive X offset
@ -1571,12 +1588,12 @@
* Example: `M851 Z-5` with a CLEARANCE of 4 => 9mm from bed to nozzle. * Example: `M851 Z-5` with a CLEARANCE of 4 => 9mm from bed to nozzle.
* But: `M851 Z+1` with a CLEARANCE of 2 => 2mm from bed to nozzle. * But: `M851 Z+1` with a CLEARANCE of 2 => 2mm from bed to nozzle.
*/ */
#define Z_CLEARANCE_DEPLOY_PROBE 10 // Z Clearance for Deploy/Stow #define Z_CLEARANCE_DEPLOY_PROBE 10 // (mm) Z Clearance for Deploy/Stow
#define Z_CLEARANCE_BETWEEN_PROBES 5 // Z Clearance between probe points #define Z_CLEARANCE_BETWEEN_PROBES 5 // (mm) Z Clearance between probe points
#define Z_CLEARANCE_MULTI_PROBE 5 // Z Clearance between multiple probes #define Z_CLEARANCE_MULTI_PROBE 5 // (mm) Z Clearance between multiple probes
//#define Z_AFTER_PROBING 5 // Z position after probing is done //#define Z_AFTER_PROBING 5 // (mm) Z position after probing is done
#define Z_PROBE_LOW_POINT -2 // Farthest distance below the trigger-point to go before stopping #define Z_PROBE_LOW_POINT -2 // (mm) Farthest distance below the trigger-point to go before stopping
// For M851 give a range for adjusting the Z probe offset // For M851 give a range for adjusting the Z probe offset
#define Z_PROBE_OFFSET_RANGE_MIN -20 #define Z_PROBE_OFFSET_RANGE_MIN -20
@ -1630,22 +1647,22 @@
// Disable axis steppers immediately when they're not being stepped. // Disable axis steppers immediately when they're not being stepped.
// WARNING: When motors turn off there is a chance of losing position accuracy! // WARNING: When motors turn off there is a chance of losing position accuracy!
#define DISABLE_X false //#define DISABLE_X
#define DISABLE_Y false //#define DISABLE_Y
#define DISABLE_Z false //#define DISABLE_Z
//#define DISABLE_I false //#define DISABLE_I
//#define DISABLE_J false //#define DISABLE_J
//#define DISABLE_K false //#define DISABLE_K
//#define DISABLE_U false //#define DISABLE_U
//#define DISABLE_V false //#define DISABLE_V
//#define DISABLE_W false //#define DISABLE_W
// Turn off the display blinking that warns about possible accuracy reduction // Turn off the display blinking that warns about possible accuracy reduction
//#define DISABLE_REDUCED_ACCURACY_WARNING //#define DISABLE_REDUCED_ACCURACY_WARNING
// @section extruder // @section extruder
#define DISABLE_E false // Disable the extruder when not stepping //#define DISABLE_E // Disable the extruder when not stepping
#define DISABLE_OTHER_EXTRUDERS // Keep only the active extruder enabled #define DISABLE_OTHER_EXTRUDERS // Keep only the active extruder enabled
// @section motion // @section motion
@ -1888,6 +1905,12 @@
//#define AUTO_BED_LEVELING_UBL //#define AUTO_BED_LEVELING_UBL
//#define MESH_BED_LEVELING //#define MESH_BED_LEVELING
/**
* Commands to execute at the end of G29 probing.
* Useful to retract or move the Z probe out of the way.
*/
//#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10"
/** /**
* Normally G28 leaves leveling disabled on completion. Enable one of * Normally G28 leaves leveling disabled on completion. Enable one of
* these options to restore the prior leveling state or to always enable * these options to restore the prior leveling state or to always enable
@ -1917,7 +1940,7 @@
/** /**
* Enable detailed logging of G28, G29, M48, etc. * Enable detailed logging of G28, G29, M48, etc.
* Turn on with the command 'M111 S32'. * Turn on with the command 'M111 S32'.
* NOTE: Requires a lot of PROGMEM! * NOTE: Requires a lot of flash!
*/ */
//#define DEBUG_LEVELING_FEATURE //#define DEBUG_LEVELING_FEATURE
@ -1977,7 +2000,7 @@
//#define EXTRAPOLATE_BEYOND_GRID //#define EXTRAPOLATE_BEYOND_GRID
// //
// Experimental Subdivision of the grid by Catmull-Rom method. // Subdivision of the grid by Catmull-Rom method.
// Synthesizes intermediate points to produce a more detailed mesh. // Synthesizes intermediate points to produce a more detailed mesh.
// //
//#define ABL_BILINEAR_SUBDIVISION //#define ABL_BILINEAR_SUBDIVISION
@ -2041,8 +2064,8 @@
#if ENABLED(LCD_BED_TRAMMING) #if ENABLED(LCD_BED_TRAMMING)
#define BED_TRAMMING_INSET_LFRB { 30, 30, 30, 30 } // (mm) Left, Front, Right, Back insets #define BED_TRAMMING_INSET_LFRB { 30, 30, 30, 30 } // (mm) Left, Front, Right, Back insets
#define BED_TRAMMING_HEIGHT 0.0 // (mm) Z height of nozzle at leveling points #define BED_TRAMMING_HEIGHT 0.0 // (mm) Z height of nozzle at tramming points
#define BED_TRAMMING_Z_HOP 4.0 // (mm) Z height of nozzle between leveling points #define BED_TRAMMING_Z_HOP 4.0 // (mm) Z height of nozzle between tramming points
//#define BED_TRAMMING_INCLUDE_CENTER // Move to the center after the last corner //#define BED_TRAMMING_INCLUDE_CENTER // Move to the center after the last corner
//#define BED_TRAMMING_USE_PROBE //#define BED_TRAMMING_USE_PROBE
#if ENABLED(BED_TRAMMING_USE_PROBE) #if ENABLED(BED_TRAMMING_USE_PROBE)
@ -2071,12 +2094,6 @@
#define BED_TRAMMING_LEVELING_ORDER { LF, RF, RB, LB } #define BED_TRAMMING_LEVELING_ORDER { LF, RF, RB, LB }
#endif #endif
/**
* Commands to execute at the end of G29 probing.
* Useful to retract or move the Z probe out of the way.
*/
//#define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10"
// @section homing // @section homing
// The center of the bed is at (X=0, Y=0) // The center of the bed is at (X=0, Y=0)
@ -2104,8 +2121,8 @@
//#define Z_SAFE_HOMING //#define Z_SAFE_HOMING
#if ENABLED(Z_SAFE_HOMING) #if ENABLED(Z_SAFE_HOMING)
#define Z_SAFE_HOMING_X_POINT X_CENTER // X point for Z homing #define Z_SAFE_HOMING_X_POINT X_CENTER // (mm) X point for Z homing
#define Z_SAFE_HOMING_Y_POINT Y_CENTER // Y point for Z homing #define Z_SAFE_HOMING_Y_POINT Y_CENTER // (mm) Y point for Z homing
#endif #endif
// Homing speeds (linear=mm/min, rotational=°/min) // Homing speeds (linear=mm/min, rotational=°/min)
@ -2189,7 +2206,7 @@
*/ */
//#define EEPROM_SETTINGS // Persistent storage with M500 and M501 //#define EEPROM_SETTINGS // Persistent storage with M500 and M501
//#define DISABLE_M503 // Saves ~2700 bytes of flash. Disable for release! //#define DISABLE_M503 // Saves ~2700 bytes of flash. Disable for release!
#define EEPROM_CHITCHAT // Give feedback on EEPROM commands. Disable to save PROGMEM. #define EEPROM_CHITCHAT // Give feedback on EEPROM commands. Disable to save flash.
#define EEPROM_BOOT_SILENT // Keep M503 quiet and only give errors during first load #define EEPROM_BOOT_SILENT // Keep M503 quiet and only give errors during first load
#if ENABLED(EEPROM_SETTINGS) #if ENABLED(EEPROM_SETTINGS)
//#define EEPROM_AUTO_INIT // Init EEPROM automatically on any errors. //#define EEPROM_AUTO_INIT // Init EEPROM automatically on any errors.
@ -2262,7 +2279,7 @@
#endif #endif
/** /**
* Clean Nozzle Feature -- EXPERIMENTAL * Clean Nozzle Feature
* *
* Adds the G12 command to perform a nozzle cleaning process. * Adds the G12 command to perform a nozzle cleaning process.
* *
@ -2296,7 +2313,6 @@
* Before starting, the nozzle moves to NOZZLE_CLEAN_START_POINT. * Before starting, the nozzle moves to NOZZLE_CLEAN_START_POINT.
* *
* Caveats: The ending Z should be the same as starting Z. * Caveats: The ending Z should be the same as starting Z.
* Attention: EXPERIMENTAL. G-code arguments may change.
*/ */
//#define NOZZLE_CLEAN_FEATURE //#define NOZZLE_CLEAN_FEATURE
@ -2411,7 +2427,7 @@
#define PASSWORD_ON_STARTUP #define PASSWORD_ON_STARTUP
#define PASSWORD_UNLOCK_GCODE // Unlock with the M511 P<password> command. Disable to prevent brute-force attack. #define PASSWORD_UNLOCK_GCODE // Unlock with the M511 P<password> command. Disable to prevent brute-force attack.
#define PASSWORD_CHANGE_GCODE // Change the password with M512 P<old> S<new>. #define PASSWORD_CHANGE_GCODE // Change the password with M512 P<old> S<new>.
//#define PASSWORD_ON_SD_PRINT_MENU // This does not prevent gcodes from running //#define PASSWORD_ON_SD_PRINT_MENU // This does not prevent G-codes from running
//#define PASSWORD_AFTER_SD_PRINT_END //#define PASSWORD_AFTER_SD_PRINT_END
//#define PASSWORD_AFTER_SD_PRINT_ABORT //#define PASSWORD_AFTER_SD_PRINT_ABORT
//#include "Configuration_Secure.h" // External file with PASSWORD_DEFAULT_VALUE //#include "Configuration_Secure.h" // External file with PASSWORD_DEFAULT_VALUE
@ -2597,7 +2613,7 @@
// //
// Original RADDS LCD Display+Encoder+SDCardReader // Original RADDS LCD Display+Encoder+SDCardReader
// http://doku.radds.org/dokumentation/lcd-display/ // https://web.archive.org/web/20200719145306/http://doku.radds.org/dokumentation/lcd-display/
// //
//#define RADDS_DISPLAY //#define RADDS_DISPLAY
@ -2627,7 +2643,6 @@
// //
// RigidBot Panel V1.0 // RigidBot Panel V1.0
// http://www.inventapart.com/
// //
//#define RIGIDBOT_PANEL //#define RIGIDBOT_PANEL
@ -2671,8 +2686,9 @@
// //
// Sainsmart (YwRobot) LCD Displays // Sainsmart (YwRobot) LCD Displays
// //
// These require F.Malpartida's LiquidCrystal_I2C library // These require LiquidCrystal_I2C library:
// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home // https://github.com/MarlinFirmware/New-LiquidCrystal
// https://github.com/fmalpartida/New-LiquidCrystal/wiki
// //
//#define LCD_SAINSMART_I2C_1602 //#define LCD_SAINSMART_I2C_1602
//#define LCD_SAINSMART_I2C_2004 //#define LCD_SAINSMART_I2C_2004
@ -2705,7 +2721,7 @@
// //
// //
// 2-wire Non-latching LCD SR from https://goo.gl/aJJ4sH // 2-wire Non-latching LCD SR from https://github.com/fmalpartida/New-LiquidCrystal/wiki/schematics#user-content-ShiftRegister_connection
// LCD configuration: https://reprap.org/wiki/SAV_3D_LCD // LCD configuration: https://reprap.org/wiki/SAV_3D_LCD
// //
//#define SAV_3DLCD //#define SAV_3DLCD
@ -2777,7 +2793,7 @@
// //
// MaKr3d Makr-Panel with graphic controller and SD support. // MaKr3d Makr-Panel with graphic controller and SD support.
// https://reprap.org/wiki/MaKr3d_MaKrPanel // https://reprap.org/wiki/MaKrPanel
// //
//#define MAKRPANEL //#define MAKRPANEL
@ -2795,7 +2811,7 @@
// //
// Cartesio UI // Cartesio UI
// http://mauk.cc/webshop/cartesio-shop/electronics/user-interface // https://web.archive.org/web/20180605050442/http://mauk.cc/webshop/cartesio-shop/electronics/user-interface
// //
//#define CARTESIO_UI //#define CARTESIO_UI
@ -2839,16 +2855,16 @@
//#define FYSETC_GENERIC_12864_1_1 // Larger display with basic ON/OFF backlight. //#define FYSETC_GENERIC_12864_1_1 // Larger display with basic ON/OFF backlight.
// //
// BigTreeTech Mini 12864 V1.0 is an alias for FYSETC_MINI_12864_2_1. Type A/B. NeoPixel RGB Backlight. // BigTreeTech Mini 12864 V1.0 / V2.0 is an alias for FYSETC_MINI_12864_2_1. Type A/B. NeoPixel RGB Backlight.
// https://github.com/bigtreetech/MINI-12864
// //
//#define BTT_MINI_12864 //#define BTT_MINI_12864
// //
// Factory display for Creality CR-10 // Factory display for Creality CR-10 / CR-7 / Ender-3
// https://www.aliexpress.com/item/32833148327.html // https://marlinfw.org/docs/hardware/controllers.html#cr10_stockdisplay
// //
// This is RAMPS-compatible using a single 10-pin connector. // Connect to EXP1 on RAMPS and compatible boards.
// (For CR-10 owners who want to replace the Melzi Creality board but retain the display)
// //
//#define CR10_STOCKDISPLAY //#define CR10_STOCKDISPLAY
@ -2963,10 +2979,12 @@
* ORIGIN (Marlin DWIN_SET) * ORIGIN (Marlin DWIN_SET)
* - Download https://github.com/coldtobi/Marlin_DGUS_Resources * - Download https://github.com/coldtobi/Marlin_DGUS_Resources
* - Copy the downloaded DWIN_SET folder to the SD card. * - Copy the downloaded DWIN_SET folder to the SD card.
* - Product: https://www.aliexpress.com/item/32993409517.html
* *
* FYSETC (Supplier default) * FYSETC (Supplier default)
* - Download https://github.com/FYSETC/FYSTLCD-2.0 * - Download https://github.com/FYSETC/FYSTLCD-2.0
* - Copy the downloaded SCREEN folder to the SD card. * - Copy the downloaded SCREEN folder to the SD card.
* - Product: https://www.aliexpress.com/item/32961471929.html
* *
* HIPRECY (Supplier default) * HIPRECY (Supplier default)
* - Download https://github.com/HiPrecy/Touch-Lcd-LEO * - Download https://github.com/HiPrecy/Touch-Lcd-LEO
@ -2975,10 +2993,17 @@
* MKS (MKS-H43) (Supplier default) * MKS (MKS-H43) (Supplier default)
* - Download https://github.com/makerbase-mks/MKS-H43 * - Download https://github.com/makerbase-mks/MKS-H43
* - Copy the downloaded DWIN_SET folder to the SD card. * - Copy the downloaded DWIN_SET folder to the SD card.
* - Product: https://www.aliexpress.com/item/1005002008179262.html
* *
* RELOADED (T5UID1) * RELOADED (T5UID1)
* - Download https://github.com/Desuuuu/DGUS-reloaded/releases * - Download https://github.com/Neo2003/DGUS-reloaded/releases
* - Copy the downloaded DWIN_SET folder to the SD card. * - Copy the downloaded DWIN_SET folder to the SD card.
*
* Flash display with DGUS Displays for Marlin:
* - Format the SD card to FAT32 with an allocation size of 4kb.
* - Download files as specified for your type of display.
* - Plug the microSD card into the back of the display.
* - Boot the display and wait for the update to complete.
*/ */
//#define DGUS_LCD_UI_ORIGIN //#define DGUS_LCD_UI_ORIGIN
//#define DGUS_LCD_UI_FYSETC //#define DGUS_LCD_UI_FYSETC
@ -3037,6 +3062,7 @@
// //
// 480x320, 3.5", SPI Display with Rotary Encoder from MKS // 480x320, 3.5", SPI Display with Rotary Encoder from MKS
// Usually paired with MKS Robin Nano V2 & V3 // Usually paired with MKS Robin Nano V2 & V3
// https://github.com/makerbase-mks/MKS-TFT-Hardware/tree/master/MKS%20TS35
// //
//#define MKS_TS35_V2_0 //#define MKS_TS35_V2_0
@ -3101,12 +3127,14 @@
//#define ANET_ET5_TFT35 //#define ANET_ET5_TFT35
// //
// 1024x600, 7", RGB Stock Display with Rotary Encoder from BIQU-BX // 1024x600, 7", RGB Stock Display with Rotary Encoder from BIQU BX
// https://github.com/bigtreetech/BIQU-BX/tree/master/Hardware
// //
//#define BIQU_BX_TFT70 //#define BIQU_BX_TFT70
// //
// 480x320, 3.5", SPI Stock Display with Rotary Encoder from BIQU B1 SE Series // 480x320, 3.5", SPI Stock Display with Rotary Encoder from BIQU B1 SE Series
// https://github.com/bigtreetech/TFT35-SPI/tree/master/v1
// //
//#define BTT_TFT35_SPI_V1_0 //#define BTT_TFT35_SPI_V1_0
@ -3144,7 +3172,7 @@
//#define TFT_LVGL_UI //#define TFT_LVGL_UI
#if ENABLED(TFT_COLOR_UI) #if ENABLED(TFT_COLOR_UI)
//#define TFT_SHARED_SPI // SPI is shared between TFT display and other devices. Disable async data transfer //#define TFT_SHARED_IO // SPI is shared between TFT display and other devices. Disable async data transfer
#endif #endif
#if ENABLED(TFT_LVGL_UI) #if ENABLED(TFT_LVGL_UI)
@ -3295,6 +3323,9 @@
//#define RGB_LED_G_PIN 43 //#define RGB_LED_G_PIN 43
//#define RGB_LED_B_PIN 35 //#define RGB_LED_B_PIN 35
//#define RGB_LED_W_PIN -1 //#define RGB_LED_W_PIN -1
#endif
#if ANY(RGB_LED, RGBW_LED, PCA9632)
//#define RGB_STARTUP_TEST // For PWM pins, fade between all colors //#define RGB_STARTUP_TEST // For PWM pins, fade between all colors
#if ENABLED(RGB_STARTUP_TEST) #if ENABLED(RGB_STARTUP_TEST)
#define RGB_STARTUP_TEST_INNER_MS 10 // (ms) Reduce or increase fading speed #define RGB_STARTUP_TEST_INNER_MS 10 // (ms) Reduce or increase fading speed

View File

@ -30,7 +30,7 @@
* *
* Basic settings can be found in Configuration.h * Basic settings can be found in Configuration.h
*/ */
#define CONFIGURATION_ADV_H_VERSION 02010201 #define CONFIGURATION_ADV_H_VERSION 02010202
// @section develop // @section develop
@ -190,12 +190,10 @@
/** /**
* Hephestos 2 24V heated bed upgrade kit. * Hephestos 2 24V heated bed upgrade kit.
* https://store.bq.com/en/heated-bed-kit-hephestos2 * https://www.en3dstudios.com/product/bq-hephestos-2-heated-bed-kit/
*/ */
//#define HEPHESTOS2_HEATED_BED_KIT //#define HEPHESTOS2_HEATED_BED_KIT
#if ENABLED(HEPHESTOS2_HEATED_BED_KIT) #if ENABLED(HEPHESTOS2_HEATED_BED_KIT)
#undef TEMP_SENSOR_BED
#define TEMP_SENSOR_BED 70
#define HEATER_BED_INVERTING true #define HEATER_BED_INVERTING true
#endif #endif
@ -278,9 +276,7 @@
#define THERMAL_PROTECTION_BOARD // Halt the printer if the board sensor leaves the temp range below. #define THERMAL_PROTECTION_BOARD // Halt the printer if the board sensor leaves the temp range below.
#define BOARD_MINTEMP 8 // (°C) #define BOARD_MINTEMP 8 // (°C)
#define BOARD_MAXTEMP 70 // (°C) #define BOARD_MAXTEMP 70 // (°C)
#ifndef TEMP_BOARD_PIN //#define TEMP_BOARD_PIN -1 // Board temp sensor pin override.
//#define TEMP_BOARD_PIN -1 // Board temp sensor pin, if not set in pins file.
#endif
#endif #endif
/** /**
@ -300,8 +296,8 @@
* THERMAL_PROTECTION_HYSTERESIS and/or THERMAL_PROTECTION_PERIOD * THERMAL_PROTECTION_HYSTERESIS and/or THERMAL_PROTECTION_PERIOD
*/ */
#if ENABLED(THERMAL_PROTECTION_HOTENDS) #if ENABLED(THERMAL_PROTECTION_HOTENDS)
#define THERMAL_PROTECTION_PERIOD 40 // Seconds #define THERMAL_PROTECTION_PERIOD 40 // (seconds)
#define THERMAL_PROTECTION_HYSTERESIS 4 // Degrees Celsius #define THERMAL_PROTECTION_HYSTERESIS 4 // (°C)
//#define ADAPTIVE_FAN_SLOWING // Slow part cooling fan if temperature drops //#define ADAPTIVE_FAN_SLOWING // Slow part cooling fan if temperature drops
#if BOTH(ADAPTIVE_FAN_SLOWING, PIDTEMP) #if BOTH(ADAPTIVE_FAN_SLOWING, PIDTEMP)
@ -320,50 +316,50 @@
* and/or decrease WATCH_TEMP_INCREASE. WATCH_TEMP_INCREASE should not be set * and/or decrease WATCH_TEMP_INCREASE. WATCH_TEMP_INCREASE should not be set
* below 2. * below 2.
*/ */
#define WATCH_TEMP_PERIOD 40 // Seconds #define WATCH_TEMP_PERIOD 40 // (seconds)
#define WATCH_TEMP_INCREASE 2 // Degrees Celsius #define WATCH_TEMP_INCREASE 2 // (°C)
#endif #endif
/** /**
* Thermal Protection parameters for the bed are just as above for hotends. * Thermal Protection parameters for the bed are just as above for hotends.
*/ */
#if ENABLED(THERMAL_PROTECTION_BED) #if ENABLED(THERMAL_PROTECTION_BED)
#define THERMAL_PROTECTION_BED_PERIOD 20 // Seconds #define THERMAL_PROTECTION_BED_PERIOD 20 // (seconds)
#define THERMAL_PROTECTION_BED_HYSTERESIS 2 // Degrees Celsius #define THERMAL_PROTECTION_BED_HYSTERESIS 2 // (°C)
/** /**
* As described above, except for the bed (M140/M190/M303). * As described above, except for the bed (M140/M190/M303).
*/ */
#define WATCH_BED_TEMP_PERIOD 60 // Seconds #define WATCH_BED_TEMP_PERIOD 60 // (seconds)
#define WATCH_BED_TEMP_INCREASE 2 // Degrees Celsius #define WATCH_BED_TEMP_INCREASE 2 // (°C)
#endif #endif
/** /**
* Thermal Protection parameters for the heated chamber. * Thermal Protection parameters for the heated chamber.
*/ */
#if ENABLED(THERMAL_PROTECTION_CHAMBER) #if ENABLED(THERMAL_PROTECTION_CHAMBER)
#define THERMAL_PROTECTION_CHAMBER_PERIOD 20 // Seconds #define THERMAL_PROTECTION_CHAMBER_PERIOD 20 // (seconds)
#define THERMAL_PROTECTION_CHAMBER_HYSTERESIS 2 // Degrees Celsius #define THERMAL_PROTECTION_CHAMBER_HYSTERESIS 2 // (°C)
/** /**
* Heated chamber watch settings (M141/M191). * Heated chamber watch settings (M141/M191).
*/ */
#define WATCH_CHAMBER_TEMP_PERIOD 60 // Seconds #define WATCH_CHAMBER_TEMP_PERIOD 60 // (seconds)
#define WATCH_CHAMBER_TEMP_INCREASE 2 // Degrees Celsius #define WATCH_CHAMBER_TEMP_INCREASE 2 // (°C)
#endif #endif
/** /**
* Thermal Protection parameters for the laser cooler. * Thermal Protection parameters for the laser cooler.
*/ */
#if ENABLED(THERMAL_PROTECTION_COOLER) #if ENABLED(THERMAL_PROTECTION_COOLER)
#define THERMAL_PROTECTION_COOLER_PERIOD 10 // Seconds #define THERMAL_PROTECTION_COOLER_PERIOD 10 // (seconds)
#define THERMAL_PROTECTION_COOLER_HYSTERESIS 3 // Degrees Celsius #define THERMAL_PROTECTION_COOLER_HYSTERESIS 3 // (°C)
/** /**
* Laser cooling watch settings (M143/M193). * Laser cooling watch settings (M143/M193).
*/ */
#define WATCH_COOLER_TEMP_PERIOD 60 // Seconds #define WATCH_COOLER_TEMP_PERIOD 60 // (seconds)
#define WATCH_COOLER_TEMP_INCREASE 3 // Degrees Celsius #define WATCH_COOLER_TEMP_INCREASE 3 // (°C)
#endif #endif
#if ANY(THERMAL_PROTECTION_HOTENDS, THERMAL_PROTECTION_BED, THERMAL_PROTECTION_CHAMBER, THERMAL_PROTECTION_COOLER) #if ANY(THERMAL_PROTECTION_HOTENDS, THERMAL_PROTECTION_BED, THERMAL_PROTECTION_CHAMBER, THERMAL_PROTECTION_COOLER)
@ -375,7 +371,7 @@
#endif #endif
#if ENABLED(PIDTEMP) #if ENABLED(PIDTEMP)
// Add an experimental additional term to the heater power, proportional to the extrusion speed. // Add an additional term to the heater power, proportional to the extrusion speed.
// A well-chosen Kc value should add just enough power to melt the increased material volume. // A well-chosen Kc value should add just enough power to melt the increased material volume.
//#define PID_EXTRUSION_SCALING //#define PID_EXTRUSION_SCALING
#if ENABLED(PID_EXTRUSION_SCALING) #if ENABLED(PID_EXTRUSION_SCALING)
@ -384,7 +380,7 @@
#endif #endif
/** /**
* Add an experimental additional term to the heater power, proportional to the fan speed. * Add an additional term to the heater power, proportional to the fan speed.
* A well-chosen Kf value should add just enough power to compensate for power-loss from the cooling fan. * A well-chosen Kf value should add just enough power to compensate for power-loss from the cooling fan.
* You can either just add a constant compensation with the DEFAULT_Kf value * You can either just add a constant compensation with the DEFAULT_Kf value
* or follow the instruction below to get speed-dependent compensation. * or follow the instruction below to get speed-dependent compensation.
@ -528,6 +524,8 @@
#define TEMP_SENSOR_AD8495_OFFSET 0.0 #define TEMP_SENSOR_AD8495_OFFSET 0.0
#define TEMP_SENSOR_AD8495_GAIN 1.0 #define TEMP_SENSOR_AD8495_GAIN 1.0
// @section fans
/** /**
* Controller Fan * Controller Fan
* To cool down the stepper drivers and MOSFETs. * To cool down the stepper drivers and MOSFETs.
@ -591,7 +589,7 @@
* FAST_PWM_FAN_FREQUENCY * FAST_PWM_FAN_FREQUENCY
* Set this to your desired frequency. * Set this to your desired frequency.
* For AVR, if left undefined this defaults to F = F_CPU/(2*255*1) * For AVR, if left undefined this defaults to F = F_CPU/(2*255*1)
* i.e., F = 31.4kHz on 16MHz microcontrollers or F = 39.2kHz on 20MHz microcontrollers. * i.e., F = 31.4kHz on 16MHz micro-controllers or F = 39.2kHz on 20MHz micro-controllers.
* For non AVR, if left undefined this defaults to F = 1Khz. * For non AVR, if left undefined this defaults to F = 1Khz.
* This F value is only to protect the hardware from an absence of configuration * This F value is only to protect the hardware from an absence of configuration
* and not to complete it when users are not aware that the frequency must be specifically set to support the target board. * and not to complete it when users are not aware that the frequency must be specifically set to support the target board.
@ -625,8 +623,6 @@
*/ */
//#define REDUNDANT_PART_COOLING_FAN 2 // Index of the fan to sync with FAN 0. //#define REDUNDANT_PART_COOLING_FAN 2 // Index of the fan to sync with FAN 0.
// @section extruder
/** /**
* Extruder cooling fans * Extruder cooling fans
* *
@ -703,6 +699,7 @@
#define FANMUX2_PIN -1 #define FANMUX2_PIN -1
/** /**
* @section caselight
* M355 Case Light on-off / brightness * M355 Case Light on-off / brightness
*/ */
//#define CASE_LIGHT_ENABLE //#define CASE_LIGHT_ENABLE
@ -725,7 +722,7 @@
#endif #endif
#endif #endif
// @section homing // @section endstops
// If you want endstops to stay on (by default) even when not homing // If you want endstops to stay on (by default) even when not homing
// enable this option. Override at any time with M120, M121. // enable this option. Override at any time with M120, M121.
@ -742,6 +739,8 @@
//#define CLOSED_LOOP_MOVE_COMPLETE_PIN -1 //#define CLOSED_LOOP_MOVE_COMPLETE_PIN -1
#endif #endif
// @section idex
/** /**
* Dual X Carriage * Dual X Carriage
* *
@ -776,7 +775,6 @@
#define X1_MAX_POS X_BED_SIZE // A max coordinate so the X1 carriage can't hit the parked X2 carriage #define X1_MAX_POS X_BED_SIZE // A max coordinate so the X1 carriage can't hit the parked X2 carriage
#define X2_MIN_POS 80 // A min coordinate so the X2 carriage can't hit the parked X1 carriage #define X2_MIN_POS 80 // A min coordinate so the X2 carriage can't hit the parked X1 carriage
#define X2_MAX_POS 353 // The max position of the X2 carriage, typically also the home position #define X2_MAX_POS 353 // The max position of the X2 carriage, typically also the home position
#define X2_HOME_DIR 1 // Set to 1. The X2 carriage always homes to the max endstop position
#define X2_HOME_POS X2_MAX_POS // Default X2 home position. Set to X2_MAX_POS. #define X2_HOME_POS X2_MAX_POS // Default X2 home position. Set to X2_MAX_POS.
// NOTE: For Dual X Carriage use M218 T1 Xn to override the X2_HOME_POS. // NOTE: For Dual X Carriage use M218 T1 Xn to override the X2_HOME_POS.
// This allows recalibration of endstops distance without a rebuild. // This allows recalibration of endstops distance without a rebuild.
@ -792,6 +790,8 @@
//#define EVENT_GCODE_IDEX_AFTER_MODECHANGE "G28X" //#define EVENT_GCODE_IDEX_AFTER_MODECHANGE "G28X"
#endif #endif
// @section multi stepper
/** /**
* Multi-Stepper / Multi-Endstop * Multi-Stepper / Multi-Endstop
* *
@ -863,6 +863,8 @@
//#define INVERT_E1_VS_E0_DIR // E direction signals are opposites //#define INVERT_E1_VS_E0_DIR // E direction signals are opposites
#endif #endif
// @section extruder
// Activate a solenoid on the active extruder with M380. Disable all with M381. // Activate a solenoid on the active extruder with M380. Disable all with M381.
// Define SOL0_PIN, SOL1_PIN, etc., for each extruder that has a solenoid. // Define SOL0_PIN, SOL1_PIN, etc., for each extruder that has a solenoid.
//#define EXT_SOLENOID //#define EXT_SOLENOID
@ -885,7 +887,7 @@
//#define QUICK_HOME // If G28 contains XY do a diagonal move first //#define QUICK_HOME // If G28 contains XY do a diagonal move first
//#define HOME_Y_BEFORE_X // If G28 contains XY home Y before X //#define HOME_Y_BEFORE_X // If G28 contains XY home Y before X
//#define HOME_Z_FIRST // Home Z first. Requires a Z-MIN endstop (not a probe). //#define HOME_Z_FIRST // Home Z first. Requires a real endstop (not a probe).
//#define CODEPENDENT_XY_HOMING // If X/Y can't home without homing Y/X first //#define CODEPENDENT_XY_HOMING // If X/Y can't home without homing Y/X first
// @section bltouch // @section bltouch
@ -930,12 +932,15 @@
* Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller! * Danger: Don't activate 5V mode unless attached to a 5V-tolerant controller!
* V3.0 or 3.1: Set default mode to 5V mode at Marlin startup. * V3.0 or 3.1: Set default mode to 5V mode at Marlin startup.
* If disabled, OD mode is the hard-coded default on 3.0 * If disabled, OD mode is the hard-coded default on 3.0
* On startup, Marlin will compare its eeprom to this value. If the selected mode * On startup, Marlin will compare its EEPROM to this value. If the selected mode
* differs, a mode set eeprom write will be completed at initialization. * differs, a mode set EEPROM write will be completed at initialization.
* Use the option below to force an eeprom write to a V3.1 probe regardless. * Use the option below to force an EEPROM write to a V3.1 probe regardless.
*/ */
//#define BLTOUCH_SET_5V_MODE //#define BLTOUCH_SET_5V_MODE
// Safety: Enable voltage mode settings in the LCD menu.
//#define BLTOUCH_LCD_VOLTAGE_MENU
/** /**
* Safety: Activate if connecting a probe with an unknown voltage mode. * Safety: Activate if connecting a probe with an unknown voltage mode.
* V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0 * V3.0: Set a probe into mode selected above at Marlin startup. Required for 5V mode on 3.0
@ -954,12 +959,10 @@
*/ */
//#define BLTOUCH_HS_MODE true //#define BLTOUCH_HS_MODE true
// Safety: Enable voltage mode settings in the LCD menu.
//#define BLTOUCH_LCD_VOLTAGE_MENU
#endif // BLTOUCH #endif // BLTOUCH
// @section extras // @section calibration
/** /**
* Z Steppers Auto-Alignment * Z Steppers Auto-Alignment
@ -1030,7 +1033,7 @@
//#define ASSISTED_TRAMMING //#define ASSISTED_TRAMMING
#if ENABLED(ASSISTED_TRAMMING) #if ENABLED(ASSISTED_TRAMMING)
// Define positions for probe points. // Define from 3 to 9 points to probe.
#define TRAMMING_POINT_XY { { 20, 20 }, { 180, 20 }, { 180, 180 }, { 20, 180 } } #define TRAMMING_POINT_XY { { 20, 20 }, { 180, 20 }, { 180, 180 }, { 20, 180 } }
// Define position names for probe points. // Define position names for probe points.
@ -1056,7 +1059,7 @@
#endif #endif
// @section motion // @section motion control
/** /**
* Input Shaping -- EXPERIMENTAL * Input Shaping -- EXPERIMENTAL
@ -1095,6 +1098,8 @@
//#define SHAPING_MENU // Add a menu to the LCD to set shaping parameters. //#define SHAPING_MENU // Add a menu to the LCD to set shaping parameters.
#endif #endif
// @section motion
#define AXIS_RELATIVE_MODES { false, false, false, false } #define AXIS_RELATIVE_MODES { false, false, false, false }
// Add a Duplicate option for well-separated conjoined nozzles // Add a Duplicate option for well-separated conjoined nozzles
@ -1151,7 +1156,7 @@
*/ */
//#define XY_FREQUENCY_LIMIT 10 // (Hz) Maximum frequency of small zigzag infill moves. Set with M201 F<hertz>. //#define XY_FREQUENCY_LIMIT 10 // (Hz) Maximum frequency of small zigzag infill moves. Set with M201 F<hertz>.
#ifdef XY_FREQUENCY_LIMIT #ifdef XY_FREQUENCY_LIMIT
#define XY_FREQUENCY_MIN_PERCENT 5 // (percent) Minimum FR percentage to apply. Set with M201 G<min%>. #define XY_FREQUENCY_MIN_PERCENT 5 // (%) Minimum FR percentage to apply. Set with M201 G<min%>.
#endif #endif
// Minimum planner junction speed. Sets the default minimum speed the planner plans for at the end // Minimum planner junction speed. Sets the default minimum speed the planner plans for at the end
@ -1224,7 +1229,7 @@
#define CALIBRATION_NOZZLE_TIP_HEIGHT 1.0 // mm #define CALIBRATION_NOZZLE_TIP_HEIGHT 1.0 // mm
#define CALIBRATION_NOZZLE_OUTER_DIAMETER 2.0 // mm #define CALIBRATION_NOZZLE_OUTER_DIAMETER 2.0 // mm
// Uncomment to enable reporting (required for "G425 V", but consumes PROGMEM). // Uncomment to enable reporting (required for "G425 V", but consumes flash).
//#define CALIBRATION_REPORTING //#define CALIBRATION_REPORTING
// The true location and dimension the cube/bolt/washer on the bed. // The true location and dimension the cube/bolt/washer on the bed.
@ -1432,7 +1437,7 @@
//#define LCD_TIMEOUT_TO_STATUS 15000 // (ms) //#define LCD_TIMEOUT_TO_STATUS 15000 // (ms)
#if ENABLED(SHOW_BOOTSCREEN) #if ENABLED(SHOW_BOOTSCREEN)
#define BOOTSCREEN_TIMEOUT 4000 // (ms) Total Duration to display the boot screen(s) #define BOOTSCREEN_TIMEOUT 3000 // (ms) Total Duration to display the boot screen(s)
#if EITHER(HAS_MARLINUI_U8GLIB, TFT_COLOR_UI) #if EITHER(HAS_MARLINUI_U8GLIB, TFT_COLOR_UI)
#define BOOT_MARLIN_LOGO_SMALL // Show a smaller Marlin logo on the Boot Screen (saving lots of flash) #define BOOT_MARLIN_LOGO_SMALL // Show a smaller Marlin logo on the Boot Screen (saving lots of flash)
#endif #endif
@ -1617,7 +1622,7 @@
#if ENABLED(SDCARD_SORT_ALPHA) #if ENABLED(SDCARD_SORT_ALPHA)
#define SDSORT_LIMIT 40 // Maximum number of sorted items (10-256). Costs 27 bytes each. #define SDSORT_LIMIT 40 // Maximum number of sorted items (10-256). Costs 27 bytes each.
#define SDSORT_FOLDERS -1 // -1=above 0=none 1=below #define SDSORT_FOLDERS -1 // -1=above 0=none 1=below
#define SDSORT_GCODE false // Allow turning sorting on/off with LCD and M34 G-code. #define SDSORT_GCODE false // Enable G-code M34 to set sorting behaviors: M34 S<-1|0|1> F<-1|0|1>
#define SDSORT_USES_RAM false // Pre-allocate a static array for faster pre-sorting. #define SDSORT_USES_RAM false // Pre-allocate a static array for faster pre-sorting.
#define SDSORT_USES_STACK false // Prefer the stack for pre-sorting to give back some SRAM. (Negated by next 2 options.) #define SDSORT_USES_STACK false // Prefer the stack for pre-sorting to give back some SRAM. (Negated by next 2 options.)
#define SDSORT_CACHE_NAMES false // Keep sorted items in RAM longer for speedy performance. Most expensive option. #define SDSORT_CACHE_NAMES false // Keep sorted items in RAM longer for speedy performance. Most expensive option.
@ -1820,7 +1825,7 @@
#endif #endif
/** /**
* Status (Info) Screen customizations * Status (Info) Screen customization
* These options may affect code size and screen render time. * These options may affect code size and screen render time.
* Custom status screens can forcibly override these settings. * Custom status screens can forcibly override these settings.
*/ */
@ -2062,7 +2067,7 @@
#if ENABLED(BABYSTEPPING) #if ENABLED(BABYSTEPPING)
//#define INTEGRATED_BABYSTEPPING // EXPERIMENTAL integration of babystepping into the Stepper ISR //#define INTEGRATED_BABYSTEPPING // EXPERIMENTAL integration of babystepping into the Stepper ISR
//#define BABYSTEP_WITHOUT_HOMING //#define BABYSTEP_WITHOUT_HOMING
//#define BABYSTEP_ALWAYS_AVAILABLE // Allow babystepping at all times (not just during movement). //#define BABYSTEP_ALWAYS_AVAILABLE // Allow babystepping at all times (not just during movement)
//#define BABYSTEP_XY // Also enable X/Y Babystepping. Not supported on DELTA! //#define BABYSTEP_XY // Also enable X/Y Babystepping. Not supported on DELTA!
#define BABYSTEP_INVERT_Z false // Change if Z babysteps should go the other way #define BABYSTEP_INVERT_Z false // Change if Z babysteps should go the other way
//#define BABYSTEP_MILLIMETER_UNITS // Specify BABYSTEP_MULTIPLICATOR_(XY|Z) in mm instead of micro-steps //#define BABYSTEP_MILLIMETER_UNITS // Specify BABYSTEP_MULTIPLICATOR_(XY|Z) in mm instead of micro-steps
@ -2073,7 +2078,7 @@
#if ENABLED(DOUBLECLICK_FOR_Z_BABYSTEPPING) #if ENABLED(DOUBLECLICK_FOR_Z_BABYSTEPPING)
#define DOUBLECLICK_MAX_INTERVAL 1250 // Maximum interval between clicks, in milliseconds. #define DOUBLECLICK_MAX_INTERVAL 1250 // Maximum interval between clicks, in milliseconds.
// Note: Extra time may be added to mitigate controller latency. // Note: Extra time may be added to mitigate controller latency.
//#define MOVE_Z_WHEN_IDLE // Jump to the move Z menu on doubleclick when printer is idle. //#define MOVE_Z_WHEN_IDLE // Jump to the move Z menu on double-click when printer is idle.
#if ENABLED(MOVE_Z_WHEN_IDLE) #if ENABLED(MOVE_Z_WHEN_IDLE)
#define MOVE_Z_IDLE_MULTIPLICATOR 1 // Multiply 1mm by this factor for the move step size. #define MOVE_Z_IDLE_MULTIPLICATOR 1 // Multiply 1mm by this factor for the move step size.
#endif #endif
@ -2114,7 +2119,6 @@
#endif #endif
//#define ADVANCE_K_EXTRA // Add a second linear advance constant, configurable with M900 L. //#define ADVANCE_K_EXTRA // Add a second linear advance constant, configurable with M900 L.
//#define LA_DEBUG // Print debug information to serial during operation. Disable for production use. //#define LA_DEBUG // Print debug information to serial during operation. Disable for production use.
//#define EXPERIMENTAL_SCURVE // Allow S-Curve Acceleration to be used with LA.
//#define ALLOW_LOW_EJERK // Allow a DEFAULT_EJERK value of <10. Recommended for direct drive hotends. //#define ALLOW_LOW_EJERK // Allow a DEFAULT_EJERK value of <10. Recommended for direct drive hotends.
//#define EXPERIMENTAL_I2S_LA // Allow I2S_STEPPER_STREAM to be used with LA. Performance degrades as the LA step rate reaches ~20kHz. //#define EXPERIMENTAL_I2S_LA // Allow I2S_STEPPER_STREAM to be used with LA. Performance degrades as the LA step rate reaches ~20kHz.
#endif #endif
@ -2205,6 +2209,8 @@
#endif #endif
// @section probes
/** /**
* Thermal Probe Compensation * Thermal Probe Compensation
* *
@ -2267,7 +2273,7 @@
// Height above Z=0.0 to raise the nozzle. Lowering this can help the probe to heat faster. // Height above Z=0.0 to raise the nozzle. Lowering this can help the probe to heat faster.
// Note: The Z=0.0 offset is determined by the probe Z offset (e.g., as set with M851 Z). // Note: The Z=0.0 offset is determined by the probe Z offset (e.g., as set with M851 Z).
#define PTC_PROBE_HEATING_OFFSET 0.5 #define PTC_PROBE_HEATING_OFFSET 0.5 // (mm)
#endif #endif
#endif // PTC_PROBE || PTC_BED || PTC_HOTEND #endif // PTC_PROBE || PTC_BED || PTC_HOTEND
@ -2322,6 +2328,8 @@
#define G38_MINIMUM_MOVE 0.0275 // (mm) Minimum distance that will produce a move. #define G38_MINIMUM_MOVE 0.0275 // (mm) Minimum distance that will produce a move.
#endif #endif
// @section motion
// Moves (or segments) with fewer steps than this will be joined with the next move // Moves (or segments) with fewer steps than this will be joined with the next move
#define MIN_STEPS_PER_SEGMENT 6 #define MIN_STEPS_PER_SEGMENT 6
@ -2377,7 +2385,7 @@
//================================= Buffers ================================= //================================= Buffers =================================
//=========================================================================== //===========================================================================
// @section motion // @section gcode
// The number of linear moves that can be in the planner at once. // The number of linear moves that can be in the planner at once.
// The value of BLOCK_BUFFER_SIZE must be a power of 2 (e.g., 8, 16, 32) // The value of BLOCK_BUFFER_SIZE must be a power of 2 (e.g., 8, 16, 32)
@ -2462,11 +2470,13 @@
//#define FULL_REPORT_TO_HOST_FEATURE // Auto-report the machine status like Grbl CNC //#define FULL_REPORT_TO_HOST_FEATURE // Auto-report the machine status like Grbl CNC
#endif #endif
// Bad Serial-connections can miss a received command by sending an 'ok' /**
// Therefore some clients abort after 30 seconds in a timeout. * Bad Serial-connections can miss a received command by sending an 'ok'
// Some other clients start sending commands while receiving a 'wait'. * Therefore some clients abort after 30 seconds in a timeout.
// This "wait" is only sent when the buffer is empty. 1 second is a good value here. * Some other clients start sending commands while receiving a 'wait'.
//#define NO_TIMEOUTS 1000 // Milliseconds * This "wait" is only sent when the buffer is empty. 1 second is a good value here.
*/
//#define NO_TIMEOUTS 1000 // (ms)
// Some clients will have this feature soon. This could make the NO_TIMEOUTS unnecessary. // Some clients will have this feature soon. This could make the NO_TIMEOUTS unnecessary.
//#define ADVANCED_OK //#define ADVANCED_OK
@ -2498,6 +2508,8 @@
*/ */
//#define EXTRA_FAN_SPEED //#define EXTRA_FAN_SPEED
// @section gcode
/** /**
* Firmware-based and LCD-controlled retract * Firmware-based and LCD-controlled retract
* *
@ -2532,6 +2544,8 @@
#endif #endif
#endif #endif
// @section tool change
/** /**
* Universal tool change settings. * Universal tool change settings.
* Applies to all types of extruders except where explicitly noted. * Applies to all types of extruders except where explicitly noted.
@ -2727,10 +2741,10 @@
#endif #endif
#if AXIS_IS_TMC_CONFIG(X2) #if AXIS_IS_TMC_CONFIG(X2)
#define X2_CURRENT 800 #define X2_CURRENT X_CURRENT
#define X2_CURRENT_HOME X2_CURRENT #define X2_CURRENT_HOME X_CURRENT_HOME
#define X2_MICROSTEPS X_MICROSTEPS #define X2_MICROSTEPS X_MICROSTEPS
#define X2_RSENSE 0.11 #define X2_RSENSE X_RSENSE
#define X2_CHAIN_POS -1 #define X2_CHAIN_POS -1
//#define X2_INTERPOLATE true //#define X2_INTERPOLATE true
//#define X2_HOLD_MULTIPLIER 0.5 //#define X2_HOLD_MULTIPLIER 0.5
@ -2747,10 +2761,10 @@
#endif #endif
#if AXIS_IS_TMC_CONFIG(Y2) #if AXIS_IS_TMC_CONFIG(Y2)
#define Y2_CURRENT 800 #define Y2_CURRENT Y_CURRENT
#define Y2_CURRENT_HOME Y2_CURRENT #define Y2_CURRENT_HOME Y_CURRENT_HOME
#define Y2_MICROSTEPS Y_MICROSTEPS #define Y2_MICROSTEPS Y_MICROSTEPS
#define Y2_RSENSE 0.11 #define Y2_RSENSE Y_RSENSE
#define Y2_CHAIN_POS -1 #define Y2_CHAIN_POS -1
//#define Y2_INTERPOLATE true //#define Y2_INTERPOLATE true
//#define Y2_HOLD_MULTIPLIER 0.5 //#define Y2_HOLD_MULTIPLIER 0.5
@ -2767,30 +2781,30 @@
#endif #endif
#if AXIS_IS_TMC_CONFIG(Z2) #if AXIS_IS_TMC_CONFIG(Z2)
#define Z2_CURRENT 800 #define Z2_CURRENT Z_CURRENT
#define Z2_CURRENT_HOME Z2_CURRENT #define Z2_CURRENT_HOME Z_CURRENT_HOME
#define Z2_MICROSTEPS Z_MICROSTEPS #define Z2_MICROSTEPS Z_MICROSTEPS
#define Z2_RSENSE 0.11 #define Z2_RSENSE Z_RSENSE
#define Z2_CHAIN_POS -1 #define Z2_CHAIN_POS -1
//#define Z2_INTERPOLATE true //#define Z2_INTERPOLATE true
//#define Z2_HOLD_MULTIPLIER 0.5 //#define Z2_HOLD_MULTIPLIER 0.5
#endif #endif
#if AXIS_IS_TMC_CONFIG(Z3) #if AXIS_IS_TMC_CONFIG(Z3)
#define Z3_CURRENT 800 #define Z3_CURRENT Z_CURRENT
#define Z3_CURRENT_HOME Z3_CURRENT #define Z3_CURRENT_HOME Z_CURRENT_HOME
#define Z3_MICROSTEPS Z_MICROSTEPS #define Z3_MICROSTEPS Z_MICROSTEPS
#define Z3_RSENSE 0.11 #define Z3_RSENSE Z_RSENSE
#define Z3_CHAIN_POS -1 #define Z3_CHAIN_POS -1
//#define Z3_INTERPOLATE true //#define Z3_INTERPOLATE true
//#define Z3_HOLD_MULTIPLIER 0.5 //#define Z3_HOLD_MULTIPLIER 0.5
#endif #endif
#if AXIS_IS_TMC_CONFIG(Z4) #if AXIS_IS_TMC_CONFIG(Z4)
#define Z4_CURRENT 800 #define Z4_CURRENT Z_CURRENT
#define Z4_CURRENT_HOME Z4_CURRENT #define Z4_CURRENT_HOME Z_CURRENT_HOME
#define Z4_MICROSTEPS Z_MICROSTEPS #define Z4_MICROSTEPS Z_MICROSTEPS
#define Z4_RSENSE 0.11 #define Z4_RSENSE Z_RSENSE
#define Z4_CHAIN_POS -1 #define Z4_CHAIN_POS -1
//#define Z4_INTERPOLATE true //#define Z4_INTERPOLATE true
//#define Z4_HOLD_MULTIPLIER 0.5 //#define Z4_HOLD_MULTIPLIER 0.5
@ -2866,63 +2880,63 @@
#endif #endif
#if AXIS_IS_TMC_CONFIG(E1) #if AXIS_IS_TMC_CONFIG(E1)
#define E1_CURRENT 800 #define E1_CURRENT E0_CURRENT
#define E1_MICROSTEPS E0_MICROSTEPS #define E1_MICROSTEPS E0_MICROSTEPS
#define E1_RSENSE 0.11 #define E1_RSENSE E0_RSENSE
#define E1_CHAIN_POS -1 #define E1_CHAIN_POS -1
//#define E1_INTERPOLATE true //#define E1_INTERPOLATE true
//#define E1_HOLD_MULTIPLIER 0.5 //#define E1_HOLD_MULTIPLIER 0.5
#endif #endif
#if AXIS_IS_TMC_CONFIG(E2) #if AXIS_IS_TMC_CONFIG(E2)
#define E2_CURRENT 800 #define E2_CURRENT E0_CURRENT
#define E2_MICROSTEPS E0_MICROSTEPS #define E2_MICROSTEPS E0_MICROSTEPS
#define E2_RSENSE 0.11 #define E2_RSENSE E0_RSENSE
#define E2_CHAIN_POS -1 #define E2_CHAIN_POS -1
//#define E2_INTERPOLATE true //#define E2_INTERPOLATE true
//#define E2_HOLD_MULTIPLIER 0.5 //#define E2_HOLD_MULTIPLIER 0.5
#endif #endif
#if AXIS_IS_TMC_CONFIG(E3) #if AXIS_IS_TMC_CONFIG(E3)
#define E3_CURRENT 800 #define E3_CURRENT E0_CURRENT
#define E3_MICROSTEPS E0_MICROSTEPS #define E3_MICROSTEPS E0_MICROSTEPS
#define E3_RSENSE 0.11 #define E3_RSENSE E0_RSENSE
#define E3_CHAIN_POS -1 #define E3_CHAIN_POS -1
//#define E3_INTERPOLATE true //#define E3_INTERPOLATE true
//#define E3_HOLD_MULTIPLIER 0.5 //#define E3_HOLD_MULTIPLIER 0.5
#endif #endif
#if AXIS_IS_TMC_CONFIG(E4) #if AXIS_IS_TMC_CONFIG(E4)
#define E4_CURRENT 800 #define E4_CURRENT E0_CURRENT
#define E4_MICROSTEPS E0_MICROSTEPS #define E4_MICROSTEPS E0_MICROSTEPS
#define E4_RSENSE 0.11 #define E4_RSENSE E0_RSENSE
#define E4_CHAIN_POS -1 #define E4_CHAIN_POS -1
//#define E4_INTERPOLATE true //#define E4_INTERPOLATE true
//#define E4_HOLD_MULTIPLIER 0.5 //#define E4_HOLD_MULTIPLIER 0.5
#endif #endif
#if AXIS_IS_TMC_CONFIG(E5) #if AXIS_IS_TMC_CONFIG(E5)
#define E5_CURRENT 800 #define E5_CURRENT E0_CURRENT
#define E5_MICROSTEPS E0_MICROSTEPS #define E5_MICROSTEPS E0_MICROSTEPS
#define E5_RSENSE 0.11 #define E5_RSENSE E0_RSENSE
#define E5_CHAIN_POS -1 #define E5_CHAIN_POS -1
//#define E5_INTERPOLATE true //#define E5_INTERPOLATE true
//#define E5_HOLD_MULTIPLIER 0.5 //#define E5_HOLD_MULTIPLIER 0.5
#endif #endif
#if AXIS_IS_TMC_CONFIG(E6) #if AXIS_IS_TMC_CONFIG(E6)
#define E6_CURRENT 800 #define E6_CURRENT E0_CURRENT
#define E6_MICROSTEPS E0_MICROSTEPS #define E6_MICROSTEPS E0_MICROSTEPS
#define E6_RSENSE 0.11 #define E6_RSENSE E0_RSENSE
#define E6_CHAIN_POS -1 #define E6_CHAIN_POS -1
//#define E6_INTERPOLATE true //#define E6_INTERPOLATE true
//#define E6_HOLD_MULTIPLIER 0.5 //#define E6_HOLD_MULTIPLIER 0.5
#endif #endif
#if AXIS_IS_TMC_CONFIG(E7) #if AXIS_IS_TMC_CONFIG(E7)
#define E7_CURRENT 800 #define E7_CURRENT E0_CURRENT
#define E7_MICROSTEPS E0_MICROSTEPS #define E7_MICROSTEPS E0_MICROSTEPS
#define E7_RSENSE 0.11 #define E7_RSENSE E0_RSENSE
#define E7_CHAIN_POS -1 #define E7_CHAIN_POS -1
//#define E7_INTERPOLATE true //#define E7_INTERPOLATE true
//#define E7_HOLD_MULTIPLIER 0.5 //#define E7_HOLD_MULTIPLIER 0.5
@ -3143,7 +3157,7 @@
* *
* It is recommended to set HOMING_BUMP_MM to { 0, 0, 0 }. * It is recommended to set HOMING_BUMP_MM to { 0, 0, 0 }.
* *
* SPI_ENDSTOPS *** Beta feature! *** TMC2130/TMC5160 Only *** * SPI_ENDSTOPS *** TMC2130/TMC5160 Only ***
* Poll the driver through SPI to determine load when homing. * Poll the driver through SPI to determine load when homing.
* Removes the need for a wire from DIAG1 to an endstop pin. * Removes the need for a wire from DIAG1 to an endstop pin.
* *
@ -3171,7 +3185,7 @@
//#define U_STALL_SENSITIVITY 8 //#define U_STALL_SENSITIVITY 8
//#define V_STALL_SENSITIVITY 8 //#define V_STALL_SENSITIVITY 8
//#define W_STALL_SENSITIVITY 8 //#define W_STALL_SENSITIVITY 8
//#define SPI_ENDSTOPS // TMC2130 only //#define SPI_ENDSTOPS // TMC2130/TMC5160 only
//#define IMPROVE_HOMING_RELIABILITY //#define IMPROVE_HOMING_RELIABILITY
#endif #endif
@ -3190,8 +3204,7 @@
//#define TMC_HOME_PHASE { 896, 896, 896 } //#define TMC_HOME_PHASE { 896, 896, 896 }
/** /**
* Beta feature! * Step on both rising and falling edge signals (as with a square wave).
* Create a 50/50 square wave step pulse optimal for stepper drivers.
*/ */
//#define SQUARE_WAVE_STEPPING //#define SQUARE_WAVE_STEPPING
@ -3227,9 +3240,8 @@
/** /**
* TWI/I2C BUS * TWI/I2C BUS
* *
* This feature is an EXPERIMENTAL feature so it shall not be used on production * This feature is EXPERIMENTAL but may be useful for custom I2C peripherals.
* machines. Enabling this will allow you to send and receive I2C data from slave * Enable this to send and receive I2C data from slave devices on the bus.
* devices on the bus.
* *
* ; Example #1 * ; Example #1
* ; This macro send the string "Marlin" to the slave device with address 0x63 (99) * ; This macro send the string "Marlin" to the slave device with address 0x63 (99)
@ -3276,7 +3288,7 @@
//#define PHOTOGRAPH_PIN 23 //#define PHOTOGRAPH_PIN 23
// Canon Hack Development Kit // Canon Hack Development Kit
// https://captain-slow.dk/2014/03/09/3d-printing-timelapses/ // https://web.archive.org/web/20200920094805/https://captain-slow.dk/2014/03/09/3d-printing-timelapses/
//#define CHDK_PIN 4 //#define CHDK_PIN 4
// Optional second move with delay to trigger the camera shutter // Optional second move with delay to trigger the camera shutter
@ -3430,7 +3442,7 @@
* Feed rates are set by the F parameter of a move command e.g. G1 X0 Y10 F6000 * Feed rates are set by the F parameter of a move command e.g. G1 X0 Y10 F6000
* Laser power would be calculated by bit shifting off 8 LSB's. In binary this is div 256. * Laser power would be calculated by bit shifting off 8 LSB's. In binary this is div 256.
* The calculation gives us ocr values from 0 to 255, values over F65535 will be set as 255 . * The calculation gives us ocr values from 0 to 255, values over F65535 will be set as 255 .
* More refined power control such as compesation for accell/decell will be addressed in future releases. * More refined power control such as compensation for accel/decel will be addressed in future releases.
* *
* M5 I clears inline mode and set power to 0, M5 sets the power output to 0 but leaves inline mode on. * M5 I clears inline mode and set power to 0, M5 sets the power output to 0 but leaves inline mode on.
*/ */
@ -3438,8 +3450,8 @@
/** /**
* Enable M3 commands for laser mode inline power planner syncing. * Enable M3 commands for laser mode inline power planner syncing.
* This feature enables any M3 S-value to be injected into the block buffers while in * This feature enables any M3 S-value to be injected into the block buffers while in
* CUTTER_MODE_CONTINUOUS. The option allows M3 laser power to be commited without waiting * CUTTER_MODE_CONTINUOUS. The option allows M3 laser power to be committed without waiting
* for a planner syncronization * for a planner synchronization
*/ */
//#define LASER_POWER_SYNC //#define LASER_POWER_SYNC
@ -3674,7 +3686,9 @@
//#define GCODE_QUOTED_STRINGS // Support for quoted string parameters //#define GCODE_QUOTED_STRINGS // Support for quoted string parameters
#endif #endif
// Support for MeatPack G-code compression (https://github.com/scottmudge/OctoPrint-MeatPack) /**
* Support for MeatPack G-code compression (https://github.com/scottmudge/OctoPrint-MeatPack)
*/
//#define MEATPACK_ON_SERIAL_PORT_1 //#define MEATPACK_ON_SERIAL_PORT_1
//#define MEATPACK_ON_SERIAL_PORT_2 //#define MEATPACK_ON_SERIAL_PORT_2
@ -3706,8 +3720,6 @@
//#define VARIABLE_G0_FEEDRATE // The G0 feedrate is set by F in G0 motion mode //#define VARIABLE_G0_FEEDRATE // The G0 feedrate is set by F in G0 motion mode
#endif #endif
// @section gcode
/** /**
* Startup commands * Startup commands
* *
@ -3875,7 +3887,7 @@
* Wiki: https://wiki.aus3d.com.au/Magnetic_Encoder * Wiki: https://wiki.aus3d.com.au/Magnetic_Encoder
* Github: https://github.com/Aus3D/MagneticEncoder * Github: https://github.com/Aus3D/MagneticEncoder
* *
* Supplier: https://aus3d.com.au/magnetic-encoder-module * Supplier: https://aus3d.com.au/products/magnetic-encoder-module
* Alternative Supplier: https://reliabuild3d.com/ * Alternative Supplier: https://reliabuild3d.com/
* *
* Reliabuild encoders have been modified to improve reliability. * Reliabuild encoders have been modified to improve reliability.
@ -4062,13 +4074,17 @@
#endif #endif
/** /**
* WiFi Support (Espressif ESP32 WiFi) * Native ESP32 board with WiFi or add-on ESP32 WiFi-101 module
*/ */
//#define WIFISUPPORT // Marlin embedded WiFi management //#define WIFISUPPORT // Marlin embedded WiFi management. Not needed for simple WiFi serial port.
//#define ESP3D_WIFISUPPORT // ESP3D Library WiFi management (https://github.com/luc-github/ESP3DLib) //#define ESP3D_WIFISUPPORT // ESP3D Library WiFi management (https://github.com/luc-github/ESP3DLib)
#if EITHER(WIFISUPPORT, ESP3D_WIFISUPPORT) /**
//#define WEBSUPPORT // Start a webserver (which may include auto-discovery) * Extras for an ESP32-based motherboard with WIFISUPPORT
* These options don't apply to add-on WiFi modules based on ESP32 WiFi101.
*/
#if ENABLED(WIFISUPPORT)
//#define WEBSUPPORT // Start a webserver (which may include auto-discovery) using SPIFFS
//#define OTASUPPORT // Support over-the-air firmware updates //#define OTASUPPORT // Support over-the-air firmware updates
//#define WIFI_CUSTOM_COMMAND // Accept feature config commands (e.g., WiFi ESP3D) from the host //#define WIFI_CUSTOM_COMMAND // Accept feature config commands (e.g., WiFi ESP3D) from the host
@ -4118,7 +4134,7 @@
// Add an LCD menu for MMU2 // Add an LCD menu for MMU2
//#define MMU2_MENUS //#define MMU2_MENUS
#if EITHER(MMU2_MENUS, HAS_PRUSA_MMU2S)
// Settings for filament load / unload from the LCD menu. // Settings for filament load / unload from the LCD menu.
// This is for Průša MK3-style extruders. Customize for your hardware. // This is for Průša MK3-style extruders. Customize for your hardware.
#define MMU2_FILAMENTCHANGE_EJECT_FEED 80.0 #define MMU2_FILAMENTCHANGE_EJECT_FEED 80.0
@ -4141,12 +4157,11 @@
{ 10.0, 700 }, \ { 10.0, 700 }, \
{ -10.0, 400 }, \ { -10.0, 400 }, \
{ -50.0, 2000 } { -50.0, 2000 }
#endif
/** /**
* Using a sensor like the MMU2S * Using a sensor like the MMU2S
* This mode requires a MK3S extruder with a sensor at the extruder idler, like the MMU2S. * This mode requires a MK3S extruder with a sensor at the extruder idler, like the MMU2S.
* See https://help.prusa3d.com/en/guide/3b-mk3s-mk2-5s-extruder-upgrade_41560, step 11 * See https://help.prusa3d.com/guide/3b-mk3s-mk2-5s-extruder-upgrade_41560#42048, step 11
*/ */
#if HAS_PRUSA_MMU2S #if HAS_PRUSA_MMU2S
#define MMU2_C0_RETRY 5 // Number of retries (total time = timeout*retries) #define MMU2_C0_RETRY 5 // Number of retries (total time = timeout*retries)

View File

@ -82,7 +82,7 @@ preheat_1_temp_hotend = 180
bang_max = 255 bang_max = 255
pidtemp = on pidtemp = on
pid_k1 = 0.95 pid_k1 = 0.95
pid_max = BANG_MAX pid_max = 255
pid_functional_range = 10 pid_functional_range = 10
default_kp = 22.20 default_kp = 22.20
@ -140,10 +140,10 @@ invert_x_step_pin = false
invert_y_step_pin = false invert_y_step_pin = false
invert_z_step_pin = false invert_z_step_pin = false
disable_x = false disable_x = off
disable_y = false disable_y = off
disable_z = false disable_z = off
disable_e = false disable_e = off
proportional_font_ratio = 1.0 proportional_font_ratio = 1.0
default_nominal_filament_dia = 1.75 default_nominal_filament_dia = 1.75

View File

@ -39,7 +39,7 @@
|| X_STEP_PIN == N || Y_STEP_PIN == N || Z_STEP_PIN == N \ || X_STEP_PIN == N || Y_STEP_PIN == N || Z_STEP_PIN == N \
|| X_DIR_PIN == N || Y_DIR_PIN == N || Z_DIR_PIN == N \ || X_DIR_PIN == N || Y_DIR_PIN == N || Z_DIR_PIN == N \
|| X_ENA_PIN == N || Y_ENA_PIN == N || Z_ENA_PIN == N \ || X_ENA_PIN == N || Y_ENA_PIN == N || Z_ENA_PIN == N \
|| BTN_EN1 == N || BTN_EN2 == N \ || BTN_EN1 == N || BTN_EN2 == N || LCD_PINS_EN == N \
) )
#if SERIAL_IN_USE(0) #if SERIAL_IN_USE(0)
// D0-D1. No known conflicts. // D0-D1. No known conflicts.

643
Marlin/src/inc/Changes.h Normal file
View File

@ -0,0 +1,643 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
*/
#pragma once
/**
* Changes.h
*
* Alert about Configuration changes at compile-time.
*/
/**
* Warnings for old configurations
*/
#ifdef GITHUB_ACTION
// Skip change alerts during CI Test
#elif WATCH_TEMP_PERIOD > 500
#error "WATCH_TEMP_PERIOD now uses seconds instead of milliseconds."
#elif DISABLED(THERMAL_PROTECTION_HOTENDS) && (defined(WATCH_TEMP_PERIOD) || defined(THERMAL_PROTECTION_PERIOD))
#error "Thermal Runaway Protection for hotends is now enabled with THERMAL_PROTECTION_HOTENDS."
#elif DISABLED(THERMAL_PROTECTION_BED) && defined(THERMAL_PROTECTION_BED_PERIOD)
#error "Thermal Runaway Protection for the bed is now enabled with THERMAL_PROTECTION_BED."
#elif (CORE_IS_XZ || CORE_IS_YZ) && ENABLED(Z_LATE_ENABLE)
#error "Z_LATE_ENABLE can't be used with COREXZ, COREZX, COREYZ, or COREZY."
#elif defined(X_HOME_RETRACT_MM)
#error "[XYZ]_HOME_RETRACT_MM settings have been renamed [XYZ]_HOME_BUMP_MM."
#elif defined(SDCARDDETECTINVERTED)
#error "SDCARDDETECTINVERTED is now SD_DETECT_STATE (HIGH)."
#elif defined(SD_DETECT_INVERTED)
#error "SD_DETECT_INVERTED is now SD_DETECT_STATE (HIGH)."
#elif defined(BTENABLED)
#error "BTENABLED is now BLUETOOTH."
#elif defined(CUSTOM_MENDEL_NAME)
#error "CUSTOM_MENDEL_NAME is now CUSTOM_MACHINE_NAME."
#elif defined(HAS_AUTOMATIC_VERSIONING)
#error "HAS_AUTOMATIC_VERSIONING is now CUSTOM_VERSION_FILE."
#elif defined(USE_AUTOMATIC_VERSIONING)
#error "USE_AUTOMATIC_VERSIONING is now CUSTOM_VERSION_FILE."
#elif defined(SDSLOW)
#error "SDSLOW deprecated. Set SD_SPI_SPEED to SPI_HALF_SPEED instead."
#elif defined(SDEXTRASLOW)
#error "SDEXTRASLOW deprecated. Set SD_SPI_SPEED to SPI_QUARTER_SPEED instead."
#elif defined(FILAMENT_SENSOR)
#error "FILAMENT_SENSOR is now FILAMENT_WIDTH_SENSOR."
#elif defined(ENDSTOPPULLUP_FIL_RUNOUT)
#error "ENDSTOPPULLUP_FIL_RUNOUT is now FIL_RUNOUT_PULLUP."
#elif defined(DISABLE_MAX_ENDSTOPS) || defined(DISABLE_MIN_ENDSTOPS)
#error "DISABLE_MAX_ENDSTOPS and DISABLE_MIN_ENDSTOPS deprecated. Use individual USE_*_PLUG options instead."
#elif defined(LANGUAGE_INCLUDE)
#error "LANGUAGE_INCLUDE has been replaced by LCD_LANGUAGE."
#elif defined(EXTRUDER_OFFSET_X) || defined(EXTRUDER_OFFSET_Y)
#error "EXTRUDER_OFFSET_[XY] is deprecated. Use HOTEND_OFFSET_[XY] instead."
#elif defined(PID_PARAMS_PER_EXTRUDER)
#error "PID_PARAMS_PER_EXTRUDER is deprecated. Use PID_PARAMS_PER_HOTEND instead."
#elif defined(EXTRUDER_WATTS) || defined(BED_WATTS)
#error "EXTRUDER_WATTS and BED_WATTS are deprecated and should be removed."
#elif defined(SERVO_ENDSTOP_ANGLES)
#error "SERVO_ENDSTOP_ANGLES is deprecated. Use Z_SERVO_ANGLES instead."
#elif defined(X_ENDSTOP_SERVO_NR) || defined(Y_ENDSTOP_SERVO_NR)
#error "X_ENDSTOP_SERVO_NR and Y_ENDSTOP_SERVO_NR are deprecated and should be removed."
#elif defined(Z_ENDSTOP_SERVO_NR)
#error "Z_ENDSTOP_SERVO_NR is now Z_PROBE_SERVO_NR."
#elif defined(DEFAULT_XYJERK)
#error "DEFAULT_XYJERK is deprecated. Use DEFAULT_XJERK and DEFAULT_YJERK instead."
#elif defined(XY_TRAVEL_SPEED)
#error "XY_TRAVEL_SPEED is now XY_PROBE_FEEDRATE."
#elif defined(XY_PROBE_SPEED)
#error "XY_PROBE_SPEED is now XY_PROBE_FEEDRATE."
#elif defined(Z_PROBE_SPEED_FAST)
#error "Z_PROBE_SPEED_FAST is now Z_PROBE_FEEDRATE_FAST."
#elif defined(Z_PROBE_SPEED_SLOW)
#error "Z_PROBE_SPEED_SLOW is now Z_PROBE_FEEDRATE_SLOW."
#elif defined(PROBE_SERVO_DEACTIVATION_DELAY)
#error "PROBE_SERVO_DEACTIVATION_DELAY is deprecated. Use DEACTIVATE_SERVOS_AFTER_MOVE instead."
#elif defined(SERVO_DEACTIVATION_DELAY)
#error "SERVO_DEACTIVATION_DELAY is now SERVO_DELAY."
#elif ENABLED(FILAMENTCHANGEENABLE)
#error "FILAMENTCHANGEENABLE is now ADVANCED_PAUSE_FEATURE."
#elif ENABLED(FILAMENT_CHANGE_FEATURE)
#error "FILAMENT_CHANGE_FEATURE is now ADVANCED_PAUSE_FEATURE."
#elif defined(FILAMENT_CHANGE_X_POS) || defined(FILAMENT_CHANGE_Y_POS)
#error "FILAMENT_CHANGE_[XY]_POS is now set with NOZZLE_PARK_POINT."
#elif defined(FILAMENT_CHANGE_Z_ADD)
#error "FILAMENT_CHANGE_Z_ADD is now set with NOZZLE_PARK_POINT."
#elif defined(FILAMENT_CHANGE_XY_FEEDRATE)
#error "FILAMENT_CHANGE_XY_FEEDRATE is now NOZZLE_PARK_XY_FEEDRATE."
#elif defined(FILAMENT_CHANGE_Z_FEEDRATE)
#error "FILAMENT_CHANGE_Z_FEEDRATE is now NOZZLE_PARK_Z_FEEDRATE."
#elif defined(PAUSE_PARK_X_POS) || defined(PAUSE_PARK_Y_POS)
#error "PAUSE_PARK_[XY]_POS is now set with NOZZLE_PARK_POINT."
#elif defined(PAUSE_PARK_Z_ADD)
#error "PAUSE_PARK_Z_ADD is now set with NOZZLE_PARK_POINT."
#elif defined(PAUSE_PARK_XY_FEEDRATE)
#error "PAUSE_PARK_XY_FEEDRATE is now NOZZLE_PARK_XY_FEEDRATE."
#elif defined(PAUSE_PARK_Z_FEEDRATE)
#error "PAUSE_PARK_Z_FEEDRATE is now NOZZLE_PARK_Z_FEEDRATE."
#elif defined(FILAMENT_CHANGE_RETRACT_FEEDRATE)
#error "FILAMENT_CHANGE_RETRACT_FEEDRATE is now PAUSE_PARK_RETRACT_FEEDRATE."
#elif defined(FILAMENT_CHANGE_RETRACT_LENGTH)
#error "FILAMENT_CHANGE_RETRACT_LENGTH is now PAUSE_PARK_RETRACT_LENGTH."
#elif defined(FILAMENT_CHANGE_EXTRUDE_FEEDRATE)
#error "FILAMENT_CHANGE_EXTRUDE_FEEDRATE is now ADVANCED_PAUSE_PURGE_FEEDRATE."
#elif defined(ADVANCED_PAUSE_EXTRUDE_FEEDRATE)
#error "ADVANCED_PAUSE_EXTRUDE_FEEDRATE is now ADVANCED_PAUSE_PURGE_FEEDRATE."
#elif defined(FILAMENT_CHANGE_EXTRUDE_LENGTH)
#error "FILAMENT_CHANGE_EXTRUDE_LENGTH is now ADVANCED_PAUSE_PURGE_LENGTH."
#elif defined(ADVANCED_PAUSE_EXTRUDE_LENGTH)
#error "ADVANCED_PAUSE_EXTRUDE_LENGTH is now ADVANCED_PAUSE_PURGE_LENGTH."
#elif defined(FILAMENT_CHANGE_NOZZLE_TIMEOUT)
#error "FILAMENT_CHANGE_NOZZLE_TIMEOUT is now PAUSE_PARK_NOZZLE_TIMEOUT."
#elif defined(FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS)
#error "FILAMENT_CHANGE_NUMBER_OF_ALERT_BEEPS is now FILAMENT_CHANGE_ALERT_BEEPS."
#elif defined(FILAMENT_CHANGE_NO_STEPPER_TIMEOUT)
#error "FILAMENT_CHANGE_NO_STEPPER_TIMEOUT is now PAUSE_PARK_NO_STEPPER_TIMEOUT."
#elif defined(PLA_PREHEAT_HOTEND_TEMP)
#error "PLA_PREHEAT_HOTEND_TEMP is now PREHEAT_1_TEMP_HOTEND."
#elif defined(PLA_PREHEAT_HPB_TEMP)
#error "PLA_PREHEAT_HPB_TEMP is now PREHEAT_1_TEMP_BED."
#elif defined(PLA_PREHEAT_FAN_SPEED)
#error "PLA_PREHEAT_FAN_SPEED is now PREHEAT_1_FAN_SPEED."
#elif defined(ABS_PREHEAT_HOTEND_TEMP)
#error "ABS_PREHEAT_HOTEND_TEMP is now PREHEAT_2_TEMP_HOTEND."
#elif defined(ABS_PREHEAT_HPB_TEMP)
#error "ABS_PREHEAT_HPB_TEMP is now PREHEAT_2_TEMP_BED."
#elif defined(ABS_PREHEAT_FAN_SPEED)
#error "ABS_PREHEAT_FAN_SPEED is now PREHEAT_2_FAN_SPEED."
#elif defined(ENDSTOPS_ONLY_FOR_HOMING)
#error "ENDSTOPS_ONLY_FOR_HOMING is deprecated. Use (disable) ENDSTOPS_ALWAYS_ON_DEFAULT instead."
#elif defined(HOMING_FEEDRATE)
#error "HOMING_FEEDRATE is now set using the HOMING_FEEDRATE_MM_M array instead."
#elif (defined(HOMING_FEEDRATE_XY) || defined(HOMING_FEEDRATE_Z)) && !defined(HOMING_FEEDRATE_MM_M)
#error "HOMING_FEEDRATE_XY and HOMING_FEEDRATE_Z are now set using the HOMING_FEEDRATE_MM_M array instead."
#elif defined(MANUAL_HOME_POSITIONS)
#error "MANUAL_HOME_POSITIONS is deprecated. Set MANUAL_[XYZ]_HOME_POS as-needed instead."
#elif defined(PID_ADD_EXTRUSION_RATE)
#error "PID_ADD_EXTRUSION_RATE is now PID_EXTRUSION_SCALING and is DISABLED by default."
#elif defined(Z_RAISE_BEFORE_HOMING)
#error "Z_RAISE_BEFORE_HOMING is now Z_HOMING_HEIGHT."
#elif defined(MIN_Z_HEIGHT_FOR_HOMING)
#error "MIN_Z_HEIGHT_FOR_HOMING is now Z_HOMING_HEIGHT."
#elif defined(Z_RAISE_BEFORE_PROBING) || defined(Z_RAISE_AFTER_PROBING)
#error "Z_RAISE_(BEFORE|AFTER)_PROBING are deprecated. Use Z_CLEARANCE_DEPLOY_PROBE and Z_AFTER_PROBING instead."
#elif defined(Z_RAISE_PROBE_DEPLOY_STOW) || defined(Z_RAISE_BETWEEN_PROBINGS)
#error "Z_RAISE_PROBE_DEPLOY_STOW and Z_RAISE_BETWEEN_PROBINGS are now Z_CLEARANCE_DEPLOY_PROBE and Z_CLEARANCE_BETWEEN_PROBES."
#elif defined(Z_PROBE_DEPLOY_HEIGHT) || defined(Z_PROBE_TRAVEL_HEIGHT)
#error "Z_PROBE_DEPLOY_HEIGHT and Z_PROBE_TRAVEL_HEIGHT are now Z_CLEARANCE_DEPLOY_PROBE and Z_CLEARANCE_BETWEEN_PROBES."
#elif defined(MANUAL_BED_LEVELING)
#error "MANUAL_BED_LEVELING is now LCD_BED_LEVELING."
#elif defined(MESH_HOME_SEARCH_Z)
#error "MESH_HOME_SEARCH_Z is now LCD_PROBE_Z_RANGE."
#elif defined(MANUAL_PROBE_Z_RANGE)
#error "MANUAL_PROBE_Z_RANGE is now LCD_PROBE_Z_RANGE."
#elif !defined(MIN_STEPS_PER_SEGMENT)
#error "Please replace 'const int dropsegments' with '#define MIN_STEPS_PER_SEGMENT' (and increase by 1)."
#elif MIN_STEPS_PER_SEGMENT <= 0
#error "MIN_STEPS_PER_SEGMENT must be at least 1."
#elif defined(PREVENT_DANGEROUS_EXTRUDE)
#error "PREVENT_DANGEROUS_EXTRUDE is now PREVENT_COLD_EXTRUSION."
#elif defined(SCARA)
#error "SCARA is now MORGAN_SCARA."
#elif defined(ENABLE_AUTO_BED_LEVELING)
#error "ENABLE_AUTO_BED_LEVELING is deprecated. Specify AUTO_BED_LEVELING_LINEAR, AUTO_BED_LEVELING_BILINEAR, or AUTO_BED_LEVELING_3POINT."
#elif defined(AUTO_BED_LEVELING_FEATURE)
#error "AUTO_BED_LEVELING_FEATURE is deprecated. Specify AUTO_BED_LEVELING_LINEAR, AUTO_BED_LEVELING_BILINEAR, or AUTO_BED_LEVELING_3POINT."
#elif defined(ABL_GRID_POINTS)
#error "ABL_GRID_POINTS is now GRID_MAX_POINTS_X and GRID_MAX_POINTS_Y."
#elif defined(ABL_GRID_POINTS_X) || defined(ABL_GRID_POINTS_Y)
#error "ABL_GRID_POINTS_[XY] is now GRID_MAX_POINTS_[XY]."
#elif defined(ABL_GRID_MAX_POINTS_X) || defined(ABL_GRID_MAX_POINTS_Y)
#error "ABL_GRID_MAX_POINTS_[XY] is now GRID_MAX_POINTS_[XY]."
#elif defined(MESH_NUM_X_POINTS) || defined(MESH_NUM_Y_POINTS)
#error "MESH_NUM_[XY]_POINTS is now GRID_MAX_POINTS_[XY]."
#elif defined(UBL_MESH_NUM_X_POINTS) || defined(UBL_MESH_NUM_Y_POINTS)
#error "UBL_MESH_NUM_[XY]_POINTS is now GRID_MAX_POINTS_[XY]."
#elif defined(UBL_G26_MESH_VALIDATION)
#error "UBL_G26_MESH_VALIDATION is now G26_MESH_VALIDATION."
#elif defined(UBL_MESH_EDIT_ENABLED)
#error "UBL_MESH_EDIT_ENABLED is now G26_MESH_VALIDATION."
#elif defined(UBL_MESH_EDITING)
#error "UBL_MESH_EDITING is now G26_MESH_VALIDATION."
#elif defined(BLTOUCH_HEATERS_OFF)
#error "BLTOUCH_HEATERS_OFF is now PROBING_HEATERS_OFF."
#elif defined(BLTOUCH_V3)
#error "BLTOUCH_V3 is obsolete."
#elif defined(BLTOUCH_FORCE_OPEN_DRAIN_MODE)
#error "BLTOUCH_FORCE_OPEN_DRAIN_MODE is obsolete."
#elif defined(BEEPER)
#error "BEEPER is now BEEPER_PIN."
#elif defined(SDCARDDETECT)
#error "SDCARDDETECT is now SD_DETECT_PIN."
#elif defined(STAT_LED_RED) || defined(STAT_LED_BLUE)
#error "STAT_LED_RED/STAT_LED_BLUE are now STAT_LED_RED_PIN/STAT_LED_BLUE_PIN."
#elif defined(LCD_PIN_BL)
#error "LCD_PIN_BL is now LCD_BACKLIGHT_PIN."
#elif defined(LCD_PIN_RESET)
#error "LCD_PIN_RESET is now LCD_RESET_PIN."
#elif defined(EXTRUDER_0_AUTO_FAN_PIN) || defined(EXTRUDER_1_AUTO_FAN_PIN) || defined(EXTRUDER_2_AUTO_FAN_PIN) || defined(EXTRUDER_3_AUTO_FAN_PIN)
#error "EXTRUDER_[0123]_AUTO_FAN_PIN is now E[0123]_AUTO_FAN_PIN."
#elif defined(PID_FAN_SCALING) && !HAS_FAN
#error "PID_FAN_SCALING needs at least one fan enabled."
#elif defined(min_software_endstops) || defined(max_software_endstops)
#error "(min|max)_software_endstops are now (MIN|MAX)_SOFTWARE_ENDSTOPS."
#elif ENABLED(Z_PROBE_SLED) && defined(SLED_PIN)
#error "Replace SLED_PIN with SOL1_PIN (applies to both Z_PROBE_SLED and SOLENOID_PROBE)."
#elif defined(CONTROLLERFAN_PIN)
#error "CONTROLLERFAN_PIN is now CONTROLLER_FAN_PIN, enabled with USE_CONTROLLER_FAN."
#elif defined(CONTROLLERFAN_SPEED)
#error "CONTROLLERFAN_SPEED is now CONTROLLERFAN_SPEED_ACTIVE."
#elif defined(CONTROLLERFAN_SECS)
#error "CONTROLLERFAN_SECS is now CONTROLLERFAN_IDLE_TIME."
#elif defined(MIN_RETRACT)
#error "MIN_RETRACT is now MIN_AUTORETRACT and MAX_AUTORETRACT."
#elif defined(ADVANCE)
#error "ADVANCE is now LIN_ADVANCE."
#elif defined(LIN_ADVANCE_E_D_RATIO)
#error "LIN_ADVANCE (1.5) no longer uses LIN_ADVANCE_E_D_RATIO."
#elif defined(NEOPIXEL_RGBW_LED)
#error "NEOPIXEL_RGBW_LED is now NEOPIXEL_LED."
#elif ENABLED(DELTA) && defined(DELTA_PROBEABLE_RADIUS)
#error "Remove DELTA_PROBEABLE_RADIUS and use PROBING_MARGIN to inset the probe area instead."
#elif ENABLED(DELTA) && defined(DELTA_CALIBRATION_RADIUS)
#error "Remove DELTA_CALIBRATION_RADIUS and use PROBING_MARGIN to inset the probe area instead."
#elif defined(UBL_MESH_INSET)
#error "UBL_MESH_INSET is now just MESH_INSET."
#elif defined(UBL_MESH_MIN_X) || defined(UBL_MESH_MIN_Y) || defined(UBL_MESH_MAX_X) || defined(UBL_MESH_MAX_Y)
#error "UBL_MESH_(MIN|MAX)_[XY] is now just MESH_(MIN|MAX)_[XY]."
#elif defined(ABL_PROBE_PT_1_X) || defined(ABL_PROBE_PT_1_Y) || defined(ABL_PROBE_PT_2_X) || defined(ABL_PROBE_PT_2_Y) || defined(ABL_PROBE_PT_3_X) || defined(ABL_PROBE_PT_3_Y)
#error "ABL_PROBE_PT_[123]_[XY] is no longer required. Please remove it."
#elif defined(UBL_PROBE_PT_1_X) || defined(UBL_PROBE_PT_1_Y) || defined(UBL_PROBE_PT_2_X) || defined(UBL_PROBE_PT_2_Y) || defined(UBL_PROBE_PT_3_X) || defined(UBL_PROBE_PT_3_Y)
#error "UBL_PROBE_PT_[123]_[XY] is no longer required. Please remove it."
#elif defined(MIN_PROBE_EDGE)
#error "MIN_PROBE_EDGE is now called PROBING_MARGIN."
#elif defined(MIN_PROBE_EDGE_LEFT)
#error "MIN_PROBE_EDGE_LEFT is now called PROBING_MARGIN_LEFT."
#elif defined(MIN_PROBE_EDGE_RIGHT)
#error "MIN_PROBE_EDGE_RIGHT is now called PROBING_MARGIN_RIGHT."
#elif defined(MIN_PROBE_EDGE_FRONT)
#error "MIN_PROBE_EDGE_FRONT is now called PROBING_MARGIN_FRONT."
#elif defined(MIN_PROBE_EDGE_BACK)
#error "MIN_PROBE_EDGE_BACK is now called PROBING_MARGIN_BACK."
#elif defined(LEFT_PROBE_BED_POSITION)
#error "LEFT_PROBE_BED_POSITION is obsolete. Set a margin with PROBING_MARGIN or PROBING_MARGIN_LEFT instead."
#elif defined(RIGHT_PROBE_BED_POSITION)
#error "RIGHT_PROBE_BED_POSITION is obsolete. Set a margin with PROBING_MARGIN or PROBING_MARGIN_RIGHT instead."
#elif defined(FRONT_PROBE_BED_POSITION)
#error "FRONT_PROBE_BED_POSITION is obsolete. Set a margin with PROBING_MARGIN or PROBING_MARGIN_FRONT instead."
#elif defined(BACK_PROBE_BED_POSITION)
#error "BACK_PROBE_BED_POSITION is obsolete. Set a margin with PROBING_MARGIN or PROBING_MARGIN_BACK instead."
#elif defined(ENABLE_MESH_EDIT_GFX_OVERLAY)
#error "ENABLE_MESH_EDIT_GFX_OVERLAY is now MESH_EDIT_GFX_OVERLAY."
#elif defined(BABYSTEP_ZPROBE_GFX_REVERSE)
#error "BABYSTEP_ZPROBE_GFX_REVERSE is now set by OVERLAY_GFX_REVERSE."
#elif defined(UBL_GRANULAR_SEGMENTATION_FOR_CARTESIAN)
#error "UBL_GRANULAR_SEGMENTATION_FOR_CARTESIAN is now SEGMENT_LEVELED_MOVES."
#elif HAS_PID_HEATING && (defined(K1) || !defined(PID_K1))
#error "K1 is now PID_K1."
#elif defined(PROBE_DOUBLE_TOUCH)
#error "PROBE_DOUBLE_TOUCH is now MULTIPLE_PROBING."
#elif defined(ANET_KEYPAD_LCD)
#error "ANET_KEYPAD_LCD is now ZONESTAR_LCD."
#elif defined(LCD_I2C_SAINSMART_YWROBOT)
#error "LCD_I2C_SAINSMART_YWROBOT is now LCD_SAINSMART_I2C_(1602|2004)."
#elif defined(MEASURED_LOWER_LIMIT) || defined(MEASURED_UPPER_LIMIT)
#error "MEASURED_(UPPER|LOWER)_LIMIT is now FILWIDTH_ERROR_MARGIN."
#elif defined(HAVE_TMCDRIVER)
#error "HAVE_TMCDRIVER is now [AXIS]_DRIVER_TYPE TMC26X."
#elif defined(STEALTHCHOP)
#error "STEALTHCHOP is now STEALTHCHOP_(XY|Z|E)."
#elif defined(HAVE_TMC26X)
#error "HAVE_TMC26X is now [AXIS]_DRIVER_TYPE TMC26X."
#elif defined(HAVE_TMC2130)
#error "HAVE_TMC2130 is now [AXIS]_DRIVER_TYPE TMC2130."
#elif defined(HAVE_TMC2208)
#error "HAVE_TMC2208 is now [AXIS]_DRIVER_TYPE TMC2208."
#elif defined(HAVE_L6470DRIVER)
#error "HAVE_L6470DRIVER is obsolete. L64xx stepper drivers are no longer supported in Marlin."
#elif defined(X_IS_TMC) || defined(X2_IS_TMC) || defined(Y_IS_TMC) || defined(Y2_IS_TMC) || defined(Z_IS_TMC) || defined(Z2_IS_TMC) || defined(Z3_IS_TMC) \
|| defined(E0_IS_TMC) || defined(E1_IS_TMC) || defined(E2_IS_TMC) || defined(E3_IS_TMC) || defined(E4_IS_TMC) || defined(E5_IS_TMC) || defined(E6_IS_TMC) || defined(E7_IS_TMC)
#error "[AXIS]_IS_TMC is now [AXIS]_DRIVER_TYPE TMC26X."
#elif defined(X_IS_TMC26X) || defined(X2_IS_TMC26X) || defined(Y_IS_TMC26X) || defined(Y2_IS_TMC26X) || defined(Z_IS_TMC26X) || defined(Z2_IS_TMC26X) || defined(Z3_IS_TMC26X) \
|| defined(E0_IS_TMC26X) || defined(E1_IS_TMC26X) || defined(E2_IS_TMC26X) || defined(E3_IS_TMC26X) || defined(E4_IS_TMC26X) || defined(E5_IS_TMC26X) || defined(E6_IS_TMC26X) || defined(E7_IS_TMC26X)
#error "[AXIS]_IS_TMC26X is now [AXIS]_DRIVER_TYPE TMC26X."
#elif defined(X_IS_TMC2130) || defined(X2_IS_TMC2130) || defined(Y_IS_TMC2130) || defined(Y2_IS_TMC2130) || defined(Z_IS_TMC2130) || defined(Z2_IS_TMC2130) || defined(Z3_IS_TMC2130) \
|| defined(E0_IS_TMC2130) || defined(E1_IS_TMC2130) || defined(E2_IS_TMC2130) || defined(E3_IS_TMC2130) || defined(E4_IS_TMC2130) || defined(E5_IS_TMC2130) || defined(E6_IS_TMC2130) || defined(E7_IS_TMC2130)
#error "[AXIS]_IS_TMC2130 is now [AXIS]_DRIVER_TYPE TMC2130."
#elif defined(X_IS_TMC2208) || defined(X2_IS_TMC2208) || defined(Y_IS_TMC2208) || defined(Y2_IS_TMC2208) || defined(Z_IS_TMC2208) || defined(Z2_IS_TMC2208) || defined(Z3_IS_TMC2208) \
|| defined(E0_IS_TMC2208) || defined(E1_IS_TMC2208) || defined(E2_IS_TMC2208) || defined(E3_IS_TMC2208) || defined(E4_IS_TMC2208) || defined(E5_IS_TMC2208) || defined(E6_IS_TMC2208) || defined(E7_IS_TMC2208)
#error "[AXIS]_IS_TMC2208 is now [AXIS]_DRIVER_TYPE TMC2208."
#elif defined(AUTOMATIC_CURRENT_CONTROL)
#error "AUTOMATIC_CURRENT_CONTROL is now MONITOR_DRIVER_STATUS."
#elif defined(FILAMENT_CHANGE_LOAD_LENGTH)
#error "FILAMENT_CHANGE_LOAD_LENGTH is now FILAMENT_CHANGE_FAST_LOAD_LENGTH."
#elif defined(LEVEL_CORNERS_INSET)
#error "LEVEL_CORNERS_INSET is now BED_TRAMMING_INSET_LFRB."
#elif defined(BEZIER_JERK_CONTROL)
#error "BEZIER_JERK_CONTROL is now S_CURVE_ACCELERATION."
#elif HAS_JUNCTION_DEVIATION && defined(JUNCTION_DEVIATION_FACTOR)
#error "JUNCTION_DEVIATION_FACTOR is now JUNCTION_DEVIATION_MM."
#elif defined(JUNCTION_ACCELERATION_FACTOR)
#error "JUNCTION_ACCELERATION_FACTOR is obsolete. Delete it from Configuration_adv.h."
#elif defined(JUNCTION_ACCELERATION)
#error "JUNCTION_ACCELERATION is obsolete. Delete it from Configuration_adv.h."
#elif defined(MAX7219_DEBUG_STEPPER_HEAD)
#error "MAX7219_DEBUG_STEPPER_HEAD is now MAX7219_DEBUG_PLANNER_HEAD."
#elif defined(MAX7219_DEBUG_STEPPER_TAIL)
#error "MAX7219_DEBUG_STEPPER_TAIL is now MAX7219_DEBUG_PLANNER_TAIL."
#elif defined(MAX7219_DEBUG_STEPPER_QUEUE)
#error "MAX7219_DEBUG_STEPPER_QUEUE is now MAX7219_DEBUG_PLANNER_QUEUE."
#elif defined(ENDSTOP_NOISE_FILTER)
#error "ENDSTOP_NOISE_FILTER is now ENDSTOP_NOISE_THRESHOLD [2-7]."
#elif defined(RETRACT_ZLIFT)
#error "RETRACT_ZLIFT is now RETRACT_ZRAISE."
#elif defined(TOOLCHANGE_FS_INIT_BEFORE_SWAP)
#error "TOOLCHANGE_FS_INIT_BEFORE_SWAP is now TOOLCHANGE_FS_SLOW_FIRST_PRIME."
#elif defined(TOOLCHANGE_PARK_ZLIFT) || defined(TOOLCHANGE_UNPARK_ZLIFT)
#error "TOOLCHANGE_PARK_ZLIFT and TOOLCHANGE_UNPARK_ZLIFT are now TOOLCHANGE_ZRAISE."
#elif defined(SINGLENOZZLE_TOOLCHANGE_ZRAISE)
#error "SINGLENOZZLE_TOOLCHANGE_ZRAISE is now TOOLCHANGE_ZRAISE."
#elif defined(SINGLENOZZLE_SWAP_LENGTH)
#error "SINGLENOZZLE_SWAP_LENGTH is now TOOLCHANGE_FIL_SWAP_LENGTH."
#elif defined(SINGLENOZZLE_SWAP_RETRACT_SPEED)
#error "SINGLENOZZLE_SWAP_RETRACT_SPEED is now TOOLCHANGE_FIL_SWAP_RETRACT_SPEED."
#elif defined(SINGLENOZZLE_SWAP_PRIME_SPEED)
#error "SINGLENOZZLE_SWAP_PRIME_SPEED is now TOOLCHANGE_FIL_SWAP_PRIME_SPEED."
#elif defined(SINGLENOZZLE_SWAP_PARK)
#error "SINGLENOZZLE_SWAP_PARK is now TOOLCHANGE_PARK."
#elif defined(SINGLENOZZLE_TOOLCHANGE_XY)
#error "SINGLENOZZLE_TOOLCHANGE_XY is now TOOLCHANGE_PARK_XY."
#elif defined(SINGLENOZZLE_PARK_XY_FEEDRATE)
#error "SINGLENOZZLE_PARK_XY_FEEDRATE is now TOOLCHANGE_PARK_XY_FEEDRATE."
#elif defined(PARKING_EXTRUDER_SECURITY_RAISE)
#error "PARKING_EXTRUDER_SECURITY_RAISE is now TOOLCHANGE_ZRAISE."
#elif defined(SWITCHING_TOOLHEAD_SECURITY_RAISE)
#error "SWITCHING_TOOLHEAD_SECURITY_RAISE is now TOOLCHANGE_ZRAISE."
#elif defined(G0_FEEDRATE) && G0_FEEDRATE == 0
#error "G0_FEEDRATE is now used to set the G0 feedrate."
#elif defined(MBL_Z_STEP)
#error "MBL_Z_STEP is now MESH_EDIT_Z_STEP."
#elif defined(CHDK)
#error "CHDK is now CHDK_PIN."
#elif ANY_PIN( \
MAX6675_SS, MAX6675_SS2, MAX6675_SS3, MAX6675_CS, MAX6675_CS2, MAX6675_CS3,\
MAX31855_SS, MAX31855_SS2, MAX31855_SS3, MAX31855_CS, MAX31855_CS2, MAX31855_CS3, \
MAX31865_SS, MAX31865_SS2, MAX31865_SS3, MAX31865_CS, MAX31865_CS2, MAX31865_CS3)
#warning "MAX*_SS_PIN, MAX*_SS2_PIN, MAX*_SS3_PIN, MAX*_CS_PIN, MAX*_CS2_PIN, and MAX*_CS3_PIN, are obsolete. Please use TEMP_0_CS_PIN/TEMP_1_CS_PIN/TEMP_2_CS_PIN instead."
#elif ANY_PIN(MAX6675_SCK, MAX31855_SCK, MAX31865_SCK)
#warning "MAX*_SCK_PIN is obsolete. Please use TEMP_0_SCK_PIN/TEMP_1_SCK_PIN/TEMP_2_SCK_PIN instead."
#elif ANY_PIN(MAX6675_MISO, MAX6675_DO, MAX31855_MISO, MAX31855_DO, MAX31865_MISO, MAX31865_DO)
#warning "MAX*_MISO_PIN and MAX*_DO_PIN are obsolete. Please use TEMP_0_MISO_PIN/TEMP_1_MISO_PIN/TEMP_2_MISO_PIN instead."
#elif PIN_EXISTS(MAX31865_MOSI)
#warning "MAX31865_MOSI_PIN is obsolete. Please use TEMP_0_MOSI_PIN/TEMP_1_MOSI_PIN/TEMP_2_MOSI_PIN instead."
#elif ANY_PIN(THERMO_CS1_PIN, THERMO_CS2_PIN, THERMO_CS3_PIN, THERMO_DO_PIN, THERMO_SCK_PIN)
#error "THERMO_*_PIN is now TEMP_n_CS_PIN, TEMP_n_SCK_PIN, TEMP_n_MOSI_PIN, TEMP_n_MISO_PIN."
#elif defined(MAX31865_SENSOR_OHMS)
#error "MAX31865_SENSOR_OHMS is now MAX31865_SENSOR_OHMS_0."
#elif defined(MAX31865_CALIBRATION_OHMS)
#error "MAX31865_CALIBRATION_OHMS is now MAX31865_CALIBRATION_OHMS_0."
#elif defined(SPINDLE_LASER_ENABLE)
#error "SPINDLE_LASER_ENABLE is now SPINDLE_FEATURE or LASER_FEATURE."
#elif defined(SPINDLE_LASER_ENABLE_PIN)
#error "SPINDLE_LASER_ENABLE_PIN is now SPINDLE_LASER_ENA_PIN."
#elif defined(SPINDLE_DIR_CHANGE)
#error "SPINDLE_DIR_CHANGE is now SPINDLE_CHANGE_DIR."
#elif defined(SPINDLE_STOP_ON_DIR_CHANGE)
#error "SPINDLE_STOP_ON_DIR_CHANGE is now SPINDLE_CHANGE_DIR_STOP."
#elif defined(SPINDLE_LASER_ACTIVE_HIGH)
#error "SPINDLE_LASER_ACTIVE_HIGH is now SPINDLE_LASER_ACTIVE_STATE."
#elif defined(SPINDLE_LASER_ENABLE_INVERT)
#error "SPINDLE_LASER_ENABLE_INVERT is now SPINDLE_LASER_ACTIVE_STATE."
#elif defined(LASER_POWER_INLINE)
#error "LASER_POWER_INLINE is not required, inline mode is enabled with 'M3 I' and disabled with 'M5 I'."
#elif defined(LASER_POWER_INLINE_TRAPEZOID)
#error "LASER_POWER_INLINE_TRAPEZOID is now LASER_POWER_TRAP."
#elif defined(LASER_POWER_INLINE_TRAPEZOID_CONT)
#error "LASER_POWER_INLINE_TRAPEZOID_CONT is replaced with LASER_POWER_TRAP."
#elif defined(LASER_POWER_INLINE_TRAPEZOID_PER)
#error "LASER_POWER_INLINE_TRAPEZOID_CONT_PER replaced with LASER_POWER_TRAP."
#elif defined(LASER_POWER_INLINE_CONTINUOUS)
#error "LASER_POWER_INLINE_CONTINUOUS is not required, inline mode is enabled with 'M3 I' and disabled with 'M5 I'."
#elif defined(CUTTER_POWER_DISPLAY)
#error "CUTTER_POWER_DISPLAY is now CUTTER_POWER_UNIT."
#elif defined(CHAMBER_HEATER_PIN)
#error "CHAMBER_HEATER_PIN is now HEATER_CHAMBER_PIN."
#elif defined(TMC_Z_CALIBRATION)
#error "TMC_Z_CALIBRATION has been deprecated in favor of MECHANICAL_GANTRY_CALIBRATION."
#elif defined(Z_MIN_PROBE_ENDSTOP)
#error "Z_MIN_PROBE_ENDSTOP is no longer required. Please remove it."
#elif defined(DUAL_NOZZLE_DUPLICATION_MODE)
#error "DUAL_NOZZLE_DUPLICATION_MODE is now MULTI_NOZZLE_DUPLICATION."
#elif defined(MENU_ITEM_CASE_LIGHT)
#error "MENU_ITEM_CASE_LIGHT is now CASE_LIGHT_MENU."
#elif defined(CASE_LIGHT_NEOPIXEL_COLOR)
#error "CASE_LIGHT_NEOPIXEL_COLOR is now CASE_LIGHT_DEFAULT_COLOR."
#elif defined(ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED)
#error "ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED is now SD_ABORT_ON_ENDSTOP_HIT."
#elif defined(LPC_SD_LCD) || defined(LPC_SD_ONBOARD) || defined(LPC_SD_CUSTOM_CABLE)
#error "LPC_SD_(LCD|ONBOARD|CUSTOM_CABLE) are now SDCARD_CONNECTION."
#elif defined(USB_SD_DISABLED)
#error "USB_SD_DISABLED is now NO_SD_HOST_DRIVE."
#elif defined(USB_SD_ONBOARD)
#error "USB_SD_ONBOARD is obsolete. Disable NO_SD_HOST_DRIVE instead."
#elif defined(PSU_ACTIVE_HIGH)
#error "PSU_ACTIVE_HIGH is now PSU_ACTIVE_STATE."
#elif POWER_SUPPLY == 1
#error "Replace POWER_SUPPLY 1 by enabling PSU_CONTROL and setting PSU_ACTIVE_STATE to 'LOW'."
#elif POWER_SUPPLY == 2
#error "Replace POWER_SUPPLY 2 by enabling PSU_CONTROL and setting PSU_ACTIVE_STATE to 'HIGH'."
#elif defined(POWER_SUPPLY)
#error "POWER_SUPPLY is now obsolete. Please remove it."
#elif defined(MKS_ROBIN_TFT)
#error "MKS_ROBIN_TFT is now FSMC_GRAPHICAL_TFT."
#elif defined(SDPOWER)
#error "SDPOWER is now SDPOWER_PIN."
#elif defined(STRING_SPLASH_LINE1) || defined(STRING_SPLASH_LINE2)
#error "STRING_SPLASH_LINE[12] are now obsolete. Please remove them."
#elif defined(Z_PROBE_ALLEN_KEY_DEPLOY_1_X) || defined(Z_PROBE_ALLEN_KEY_STOW_1_X)
#error "Z_PROBE_ALLEN_KEY_(DEPLOY|STOW) coordinates are now a single setting."
#elif defined(X_PROBE_OFFSET_FROM_EXTRUDER) || defined(Y_PROBE_OFFSET_FROM_EXTRUDER) || defined(Z_PROBE_OFFSET_FROM_EXTRUDER)
#error "[XYZ]_PROBE_OFFSET_FROM_EXTRUDER is now NOZZLE_TO_PROBE_OFFSET."
#elif defined(MIN_PROBE_X) || defined(MIN_PROBE_Y) || defined(MAX_PROBE_X) || defined(MAX_PROBE_Y)
#error "(MIN|MAX)_PROBE_[XY] are now calculated at runtime. Please remove them."
#elif defined(Z_STEPPER_ALIGN_X) || defined(Z_STEPPER_ALIGN_X)
#error "Z_STEPPER_ALIGN_X and Z_STEPPER_ALIGN_Y are now combined as Z_STEPPER_ALIGN_XY."
#elif defined(JUNCTION_DEVIATION)
#error "JUNCTION_DEVIATION is no longer required. (See CLASSIC_JERK). Please remove it."
#elif defined(BABYSTEP_MULTIPLICATOR)
#error "BABYSTEP_MULTIPLICATOR is now BABYSTEP_MULTIPLICATOR_[XY|Z]."
#elif defined(LULZBOT_TOUCH_UI)
#error "LULZBOT_TOUCH_UI is now TOUCH_UI_FTDI_EVE."
#elif defined(PS_DEFAULT_OFF)
#error "PS_DEFAULT_OFF is now PSU_DEFAULT_OFF."
#elif defined(FILAMENT_UNLOAD_RETRACT_LENGTH)
#error "FILAMENT_UNLOAD_RETRACT_LENGTH is now FILAMENT_UNLOAD_PURGE_RETRACT."
#elif defined(FILAMENT_UNLOAD_DELAY)
#error "FILAMENT_UNLOAD_DELAY is now FILAMENT_UNLOAD_PURGE_DELAY."
#elif defined(HOME_USING_SPREADCYCLE)
#error "HOME_USING_SPREADCYCLE is now obsolete. Please remove it."
#elif defined(DGUS_LCD)
#error "DGUS_LCD is now DGUS_LCD_UI ORIGIN|FYSETC|HIPRECY)."
#elif defined(DGUS_SERIAL_PORT)
#error "DGUS_SERIAL_PORT is now LCD_SERIAL_PORT."
#elif defined(DGUS_BAUDRATE)
#error "DGUS_BAUDRATE is now LCD_BAUDRATE."
#elif defined(DGUS_STATS_RX_BUFFER_OVERRUNS)
#error "DGUS_STATS_RX_BUFFER_OVERRUNS is now STATS_RX_BUFFER_OVERRUNS."
#elif defined(ANYCUBIC_LCD_SERIAL_PORT)
#error "ANYCUBIC_LCD_SERIAL_PORT is now LCD_SERIAL_PORT."
#elif defined(INTERNAL_SERIAL_PORT)
#error "INTERNAL_SERIAL_PORT is now MMU2_SERIAL_PORT."
#elif defined(X_DUAL_ENDSTOPS_ADJUSTMENT) || defined(Y_DUAL_ENDSTOPS_ADJUSTMENT) || defined(Z_DUAL_ENDSTOPS_ADJUSTMENT)
#error "[XYZ]_DUAL_ENDSTOPS_ADJUSTMENT is now [XYZ]2_ENDSTOP_ADJUSTMENT."
#elif defined(Z_TRIPLE_ENDSTOPS_ADJUSTMENT2) || defined(Z_TRIPLE_ENDSTOPS_ADJUSTMENT3)
#error "Z_TRIPLE_ENDSTOPS_ADJUSTMENT[23] is now Z[23]_ENDSTOP_ADJUSTMENT."
#elif defined(Z_QUAD_ENDSTOPS_ADJUSTMENT2) || defined(Z_QUAD_ENDSTOPS_ADJUSTMENT3) || defined(Z_QUAD_ENDSTOPS_ADJUSTMENT4)
#error "Z_QUAD_ENDSTOPS_ADJUSTMENT[234] is now Z[234]_ENDSTOP_ADJUSTMENT."
#elif defined(Z_DUAL_STEPPER_DRIVERS)
#error "Z_DUAL_STEPPER_DRIVERS is no longer needed and should be removed."
#elif defined(Z_TRIPLE_STEPPER_DRIVERS)
#error "Z_TRIPLE_STEPPER_DRIVERS is no longer needed and should be removed."
#elif defined(Z_QUAD_STEPPER_DRIVERS)
#error "Z_QUAD_STEPPER_DRIVERS is no longer needed and should be removed."
#elif defined(Z_DUAL_ENDSTOPS) || defined(Z_TRIPLE_ENDSTOPS) || defined(Z_QUAD_ENDSTOPS)
#error "Z_(DUAL|TRIPLE|QUAD)_ENDSTOPS is now Z_MULTI_ENDSTOPS."
#elif defined(DUGS_UI_MOVE_DIS_OPTION)
#error "DUGS_UI_MOVE_DIS_OPTION is spelled DGUS_UI_MOVE_DIS_OPTION."
#elif defined(ORIG_E0_AUTO_FAN_PIN) || defined(ORIG_E1_AUTO_FAN_PIN) || defined(ORIG_E2_AUTO_FAN_PIN) || defined(ORIG_E3_AUTO_FAN_PIN) || defined(ORIG_E4_AUTO_FAN_PIN) || defined(ORIG_E5_AUTO_FAN_PIN) || defined(ORIG_E6_AUTO_FAN_PIN) || defined(ORIG_E7_AUTO_FAN_PIN)
#error "ORIG_Ex_AUTO_FAN_PIN is now just Ex_AUTO_FAN_PIN."
#elif defined(ORIG_CHAMBER_AUTO_FAN_PIN)
#error "ORIG_CHAMBER_AUTO_FAN_PIN is now just CHAMBER_AUTO_FAN_PIN."
#elif defined(HOMING_BACKOFF_MM)
#error "HOMING_BACKOFF_MM is now HOMING_BACKOFF_POST_MM."
#elif defined(X_HOME_BUMP_MM) || defined(Y_HOME_BUMP_MM) || defined(Z_HOME_BUMP_MM)
#error "[XYZ]_HOME_BUMP_MM is now HOMING_BUMP_MM."
#elif defined(DIGIPOT_I2C)
#error "DIGIPOT_I2C is now DIGIPOT_MCP4451 (or DIGIPOT_MCP4018)."
#elif defined(TOUCH_BUTTONS)
#error "TOUCH_BUTTONS is now TOUCH_SCREEN."
#elif defined(LCD_FULL_PIXEL_HEIGHT) || defined(LCD_FULL_PIXEL_WIDTH)
#error "LCD_FULL_PIXEL_(WIDTH|HEIGHT) is deprecated and should be removed."
#elif defined(FSMC_UPSCALE)
#error "FSMC_UPSCALE is now GRAPHICAL_TFT_UPSCALE."
#elif defined(ANYCUBIC_TFT_MODEL)
#error "ANYCUBIC_TFT_MODEL is now ANYCUBIC_LCD_I3MEGA."
#elif defined(EVENT_GCODE_SD_STOP)
#error "EVENT_GCODE_SD_STOP is now EVENT_GCODE_SD_ABORT."
#elif defined(GRAPHICAL_TFT_ROTATE_180)
#error "GRAPHICAL_TFT_ROTATE_180 is now TFT_ROTATION set to TFT_ROTATE_180."
#elif defined(PROBE_OFFSET_START)
#error "PROBE_OFFSET_START is now PROBE_OFFSET_WIZARD_START_Z."
#elif defined(POWER_LOSS_PULL)
#error "POWER_LOSS_PULL is now specifically POWER_LOSS_PULL(UP|DOWN)."
#elif defined(SHORT_MANUAL_Z_MOVE)
#error "SHORT_MANUAL_Z_MOVE is now FINE_MANUAL_MOVE, applying to Z on most printers."
#elif defined(FIL_RUNOUT_INVERTING)
#if FIL_RUNOUT_INVERTING
#error "FIL_RUNOUT_INVERTING true is now FIL_RUNOUT_STATE HIGH."
#else
#error "FIL_RUNOUT_INVERTING false is now FIL_RUNOUT_STATE LOW."
#endif
#elif defined(ASSISTED_TRAMMING_MENU_ITEM)
#error "ASSISTED_TRAMMING_MENU_ITEM is deprecated and should be removed."
#elif defined(UNKNOWN_Z_NO_RAISE)
#error "UNKNOWN_Z_NO_RAISE is replaced by setting Z_IDLE_HEIGHT to Z_MAX_POS."
#elif defined(Z_AFTER_DEACTIVATE)
#error "Z_AFTER_DEACTIVATE is replaced by Z_IDLE_HEIGHT."
#elif defined(MEATPACK)
#error "MEATPACK is now enabled with MEATPACK_ON_SERIAL_PORT_1, MEATPACK_ON_SERIAL_PORT_2, etc."
#elif defined(CUSTOM_USER_MENUS)
#error "CUSTOM_USER_MENUS has been replaced by CUSTOM_MENU_MAIN and CUSTOM_MENU_CONFIG."
#elif defined(MKS_LCD12864)
#error "MKS_LCD12864 is now MKS_LCD12864A or MKS_LCD12864B."
#elif defined(DOGM_SD_PERCENT)
#error "DOGM_SD_PERCENT is now SHOW_PROGRESS_PERCENT."
#elif defined(NEOPIXEL_BKGD_LED_INDEX)
#error "NEOPIXEL_BKGD_LED_INDEX is now NEOPIXEL_BKGD_INDEX_FIRST."
#elif defined(TEMP_SENSOR_1_AS_REDUNDANT)
#error "TEMP_SENSOR_1_AS_REDUNDANT is now TEMP_SENSOR_REDUNDANT, with associated TEMP_SENSOR_REDUNDANT_* config."
#elif defined(MAX_REDUNDANT_TEMP_SENSOR_DIFF)
#error "MAX_REDUNDANT_TEMP_SENSOR_DIFF is now TEMP_SENSOR_REDUNDANT_MAX_DIFF"
#elif defined(LCD_ALEPHOBJECTS_CLCD_UI)
#error "LCD_ALEPHOBJECTS_CLCD_UI is now LCD_LULZBOT_CLCD_UI."
#elif defined(MIN_ARC_SEGMENTS)
#error "MIN_ARC_SEGMENTS is now MIN_CIRCLE_SEGMENTS."
#elif defined(ARC_SEGMENTS_PER_R)
#error "ARC_SUPPORT no longer uses ARC_SEGMENTS_PER_R."
#elif ENABLED(ARC_SUPPORT) && (!defined(MIN_ARC_SEGMENT_MM) || !defined(MAX_ARC_SEGMENT_MM))
#error "ARC_SUPPORT now requires MIN_ARC_SEGMENT_MM and MAX_ARC_SEGMENT_MM."
#elif defined(LASER_POWER_INLINE)
#error "LASER_POWER_INLINE is obsolete."
#elif defined(SPINDLE_LASER_PWM)
#error "SPINDLE_LASER_PWM (true) is now set with SPINDLE_LASER_USE_PWM (enabled)."
#elif ANY(IS_RAMPS_EEB, IS_RAMPS_EEF, IS_RAMPS_EFB, IS_RAMPS_EFF, IS_RAMPS_SF)
#error "The IS_RAMPS_* conditionals (for heater/fan/bed pins) are now called FET_ORDER_*."
#elif defined(PROBE_TEMP_COMPENSATION)
#error "PROBE_TEMP_COMPENSATION is now set using the PTC_PROBE, PTC_BED, PTC_HOTEND options."
#elif defined(BTC_PROBE_TEMP)
#error "BTC_PROBE_TEMP is now PTC_PROBE_TEMP."
#elif defined(LCD_SCREEN_ROT_90)
#error "LCD_SCREEN_ROT_90 is now LCD_SCREEN_ROTATE with a value of 90."
#elif defined(LCD_SCREEN_ROT_180)
#error "LCD_SCREEN_ROT_180 is now LCD_SCREEN_ROTATE with a value of 180."
#elif defined(LCD_SCREEN_ROT_270)
#error "LCD_SCREEN_ROT_270 is now LCD_SCREEN_ROTATE with a value of 270."
#elif defined(DEFAULT_LCD_BRIGHTNESS)
#error "DEFAULT_LCD_BRIGHTNESS is now LCD_BRIGHTNESS_DEFAULT."
#elif defined(NOZZLE_PARK_X_ONLY)
#error "NOZZLE_PARK_X_ONLY is now NOZZLE_PARK_MOVE 1."
#elif defined(NOZZLE_PARK_Y_ONLY)
#error "NOZZLE_PARK_Y_ONLY is now NOZZLE_PARK_MOVE 2."
#elif defined(Z_STEPPER_ALIGN_KNOWN_STEPPER_POSITIONS)
#error "Z_STEPPER_ALIGN_KNOWN_STEPPER_POSITIONS is now just Z_STEPPER_ALIGN_STEPPER_XY."
#elif defined(DWIN_CREALITY_LCD_ENHANCED)
#error "DWIN_CREALITY_LCD_ENHANCED is now DWIN_LCD_PROUI."
#elif defined(LINEAR_AXES)
#error "LINEAR_AXES is now NUM_AXES (to account for rotational axes)."
#elif defined(X_DUAL_STEPPER_DRIVERS)
#error "X_DUAL_STEPPER_DRIVERS is no longer needed and should be removed."
#elif defined(Y_DUAL_STEPPER_DRIVERS)
#error "Y_DUAL_STEPPER_DRIVERS is no longer needed and should be removed."
#elif defined(NUM_Z_STEPPER_DRIVERS)
#error "NUM_Z_STEPPER_DRIVERS is no longer needed and should be removed."
#elif defined(LEVEL_BED_CORNERS)
#error "LEVEL_BED_CORNERS is now LCD_BED_TRAMMING."
#elif defined(LEVEL_CORNERS_INSET_LFRB) || defined(LEVEL_CORNERS_HEIGHT) || defined(LEVEL_CORNERS_Z_HOP) || defined(LEVEL_CORNERS_USE_PROBE) || defined(LEVEL_CORNERS_PROBE_TOLERANCE) || defined(LEVEL_CORNERS_VERIFY_RAISED) || defined(LEVEL_CORNERS_AUDIO_FEEDBACK)
#error "LEVEL_CORNERS_* settings have been renamed BED_TRAMMING_*."
#elif defined(LEVEL_CENTER_TOO)
#error "LEVEL_CENTER_TOO is now BED_TRAMMING_INCLUDE_CENTER."
#elif defined(TOUCH_IDLE_SLEEP)
#error "TOUCH_IDLE_SLEEP (seconds) is now TOUCH_IDLE_SLEEP_MINS (minutes)."
#elif defined(LCD_BACKLIGHT_TIMEOUT)
#error "LCD_BACKLIGHT_TIMEOUT (seconds) is now LCD_BACKLIGHT_TIMEOUT_MINS (minutes)."
#elif defined(LCD_SET_PROGRESS_MANUALLY)
#error "LCD_SET_PROGRESS_MANUALLY is now SET_PROGRESS_MANUALLY."
#elif defined(USE_M73_REMAINING_TIME)
#error "USE_M73_REMAINING_TIME is now SET_REMAINING_TIME."
#elif defined(SHOW_SD_PERCENT)
#error "SHOW_SD_PERCENT is now SHOW_PROGRESS_PERCENT."
#elif defined(LIN_ADVANCE_K)
#error "LIN_ADVANCE_K is now ADVANCE_K."
#elif defined(EXTRA_LIN_ADVANCE_K)
#error "EXTRA_LIN_ADVANCE_K is now ADVANCE_K_EXTRA."
#elif defined(POLAR_SEGMENTS_PER_SECOND) || defined(DELTA_SEGMENTS_PER_SECOND) || defined(SCARA_SEGMENTS_PER_SECOND) || defined(TPARA_SEGMENTS_PER_SECOND)
#error "(POLAR|DELTA|SCARA|TPARA)_SEGMENTS_PER_SECOND is now DEFAULT_SEGMENTS_PER_SECOND."
#elif defined(EXPERIMENTAL_SCURVE)
#error "EXPERIMENTAL_SCURVE is no longer needed and should be removed."
#elif defined(DISABLE_INACTIVE_EXTRUDER)
#error "DISABLE_INACTIVE_EXTRUDER is now DISABLE_OTHER_EXTRUDERS."
#elif defined(FAN_PIN)
#error "FAN_PIN is now FAN0_PIN."
#elif defined(DISABLE_INACTIVE_X) || defined(DISABLE_INACTIVE_Y) || defined(DISABLE_INACTIVE_Z) \
|| defined(DISABLE_INACTIVE_I) || defined(DISABLE_INACTIVE_J) || defined(DISABLE_INACTIVE_K) \
|| defined(DISABLE_INACTIVE_U) || defined(DISABLE_INACTIVE_V) || defined(DISABLE_INACTIVE_W) || defined(DISABLE_INACTIVE_E)
#error "DISABLE_INACTIVE_[XYZIJKUVWE] is now DISABLE_IDLE_[XYZIJKUVWE]."
#elif defined(DEFAULT_STEPPER_DEACTIVE_TIME)
#error "DEFAULT_STEPPER_DEACTIVE_TIME is now DEFAULT_STEPPER_TIMEOUT_SEC."
#elif defined(TFT_SHARED_SPI)
#error "TFT_SHARED_SPI is now TFT_SHARED_IO."
#elif defined(LCD_PINS_ENABLE)
#error "LCD_PINS_ENABLE is now LCD_PINS_EN."
#elif defined(FOLDER_SORTING)
#error "FOLDER_SORTING is now SDSORT_FOLDERS."
#elif defined(BTT_MINI_12864_V1)
#error "BTT_MINI_12864_V1 is now BTT_MINI_12864."
#elif defined(SDIO_SUPPORT)
#error "SDIO_SUPPORT is now ONBOARD_SDIO."
#endif
// L64xx stepper drivers have been removed
#define _L6470 0x6470
#define _L6474 0x6474
#define _L6480 0x6480
#define _POWERSTEP01 0xF00D
#if HAS_DRIVER(L6470)
#error "L6470 stepper drivers are no longer supported in Marlin."
#elif HAS_DRIVER(L6474)
#error "L6474 stepper drivers are no longer supported in Marlin."
#elif HAS_DRIVER(L6480)
#error "L6480 stepper drivers are no longer supported in Marlin."
#elif HAS_DRIVER(POWERSTEP01)
#error "POWERSTEP01 stepper drivers are no longer supported in Marlin."
#endif
#undef _L6470
#undef _L6474
#undef _L6480
#undef _POWERSTEP01

File diff suppressed because it is too large Load Diff

View File

@ -37,19 +37,19 @@
// Determine NUM_SERVOS if none was supplied // Determine NUM_SERVOS if none was supplied
#ifndef NUM_SERVOS #ifndef NUM_SERVOS
#define NUM_SERVOS 0 #define NUM_SERVOS 0
#if ANY(HAS_Z_SERVO_PROBE, CHAMBER_VENT, SWITCHING_TOOLHEAD, SWITCHING_EXTRUDER, SWITCHING_NOZZLE, SPINDLE_SERVO) #if HAS_Z_SERVO_PROBE && NUM_SERVOS <= Z_PROBE_SERVO_NR
#if NUM_SERVOS <= Z_PROBE_SERVO_NR
#undef NUM_SERVOS #undef NUM_SERVOS
#define NUM_SERVOS (Z_PROBE_SERVO_NR + 1) #define NUM_SERVOS (Z_PROBE_SERVO_NR + 1)
#endif #endif
#if NUM_SERVOS <= CHAMBER_VENT_SERVO_NR #if ENABLED(CHAMBER_VENT) && NUM_SERVOS <= CHAMBER_VENT_SERVO_NR
#undef NUM_SERVOS #undef NUM_SERVOS
#define NUM_SERVOS (CHAMBER_VENT_SERVO_NR + 1) #define NUM_SERVOS (CHAMBER_VENT_SERVO_NR + 1)
#endif #endif
#if NUM_SERVOS <= SWITCHING_TOOLHEAD_SERVO_NR #if ENABLED(SWITCHING_TOOLHEAD) && NUM_SERVOS <= SWITCHING_TOOLHEAD_SERVO_NR
#undef NUM_SERVOS #undef NUM_SERVOS
#define NUM_SERVOS (SWITCHING_TOOLHEAD_SERVO_NR + 1) #define NUM_SERVOS (SWITCHING_TOOLHEAD_SERVO_NR + 1)
#endif #endif
#if ENABLED(SWITCHING_NOZZLE)
#if NUM_SERVOS <= SWITCHING_NOZZLE_SERVO_NR #if NUM_SERVOS <= SWITCHING_NOZZLE_SERVO_NR
#undef NUM_SERVOS #undef NUM_SERVOS
#define NUM_SERVOS (SWITCHING_NOZZLE_SERVO_NR + 1) #define NUM_SERVOS (SWITCHING_NOZZLE_SERVO_NR + 1)
@ -58,6 +58,8 @@
#undef NUM_SERVOS #undef NUM_SERVOS
#define NUM_SERVOS (SWITCHING_NOZZLE_E1_SERVO_NR + 1) #define NUM_SERVOS (SWITCHING_NOZZLE_E1_SERVO_NR + 1)
#endif #endif
#endif
#if ENABLED(SWITCHING_EXTRUDER)
#if NUM_SERVOS <= SWITCHING_EXTRUDER_SERVO_NR #if NUM_SERVOS <= SWITCHING_EXTRUDER_SERVO_NR
#undef NUM_SERVOS #undef NUM_SERVOS
#define NUM_SERVOS (SWITCHING_EXTRUDER_SERVO_NR + 1) #define NUM_SERVOS (SWITCHING_EXTRUDER_SERVO_NR + 1)
@ -66,12 +68,12 @@
#undef NUM_SERVOS #undef NUM_SERVOS
#define NUM_SERVOS (SWITCHING_EXTRUDER_E23_SERVO_NR + 1) #define NUM_SERVOS (SWITCHING_EXTRUDER_E23_SERVO_NR + 1)
#endif #endif
#if NUM_SERVOS <= SPINDLE_SERVO_NR #endif
#if ENABLED(SPINDLE_SERVO) && NUM_SERVOS <= SPINDLE_SERVO_NR
#undef NUM_SERVOS #undef NUM_SERVOS
#define NUM_SERVOS (SPINDLE_SERVO_NR + 1) #define NUM_SERVOS (SPINDLE_SERVO_NR + 1)
#endif #endif
#endif #endif // !defined(NUM_SERVOS)
#endif
// Convenience override for a BLTouch alone // Convenience override for a BLTouch alone
#if ENABLED(BLTOUCH) && NUM_SERVOS == 1 #if ENABLED(BLTOUCH) && NUM_SERVOS == 1
@ -87,64 +89,116 @@
#endif #endif
// Some options are disallowed without required axes // Some options are disallowed without required axes
#if !HAS_Y_AXIS #if !HAS_X_AXIS
#undef DISABLE_IDLE_Y //#define LCD_SHOW_E_TOTAL
#undef SAFE_BED_LEVELING_START_Y #define NO_WORKSPACE_OFFSETS
#undef ARC_SUPPORT #undef AUTOTEMP
#undef INPUT_SHAPING_Y #undef CALIBRATION_MEASURE_LEFT
#undef SHAPING_FREQ_Y #undef CALIBRATION_MEASURE_RIGHT
#undef SHAPING_BUFFER_Y #undef DISABLE_IDLE_X
#undef INPUT_SHAPING_X
#undef SAFE_BED_LEVELING_START_X
#undef SHAPING_FREQ_X
#undef STEALTHCHOP_X
#undef INVERT_X_STEP_PIN
#endif #endif
#if !HAS_Y_AXIS
#undef ARC_SUPPORT
#undef CALIBRATION_MEASURE_BACK
#undef CALIBRATION_MEASURE_FRONT
#undef DISABLE_IDLE_Y
#undef HOME_Y_BEFORE_X
#undef INPUT_SHAPING_Y
#undef QUICK_HOME
#undef SAFE_BED_LEVELING_START_Y
#undef SHAPING_FREQ_Y
#undef STEALTHCHOP_Y
#undef INVERT_Y_STEP_PIN
#endif
#if !HAS_Z_AXIS #if !HAS_Z_AXIS
#undef CNC_WORKSPACE_PLANES
#undef DISABLE_IDLE_Z #undef DISABLE_IDLE_Z
#undef ENABLE_LEVELING_FADE_HEIGHT #undef ENABLE_LEVELING_FADE_HEIGHT
#undef HOME_Z_FIRST #undef HOME_Z_FIRST
#undef HOMING_Z_WITH_PROBE #undef HOMING_Z_WITH_PROBE
#undef NUM_Z_STEPPERS #undef NUM_Z_STEPPERS
#undef SAFE_BED_LEVELING_START_Z #undef SAFE_BED_LEVELING_START_Z
#undef STEALTHCHOP_Z
#undef INVERT_Z_STEP_PIN
#undef Z_IDLE_HEIGHT
#undef Z_PROBE_SLED
#undef Z_SAFE_HOMING
#endif #endif
#if !HAS_I_AXIS #if !HAS_I_AXIS
#undef CALIBRATION_MEASURE_IMAX
#undef CALIBRATION_MEASURE_IMIN
#undef DISABLE_IDLE_I #undef DISABLE_IDLE_I
#undef SAFE_BED_LEVELING_START_I #undef SAFE_BED_LEVELING_START_I
#undef STEALTHCHOP_I
#undef INVERT_I_STEP_PIN
#endif #endif
#if !HAS_J_AXIS #if !HAS_J_AXIS
#undef CALIBRATION_MEASURE_JMAX
#undef CALIBRATION_MEASURE_JMIN
#undef DISABLE_IDLE_J #undef DISABLE_IDLE_J
#undef SAFE_BED_LEVELING_START_J #undef SAFE_BED_LEVELING_START_J
#undef STEALTHCHOP_J
#undef INVERT_J_STEP_PIN
#endif #endif
#if !HAS_K_AXIS #if !HAS_K_AXIS
#undef CALIBRATION_MEASURE_KMAX
#undef CALIBRATION_MEASURE_KMIN
#undef DISABLE_IDLE_K #undef DISABLE_IDLE_K
#undef SAFE_BED_LEVELING_START_K #undef SAFE_BED_LEVELING_START_K
#undef STEALTHCHOP_K
#undef INVERT_K_STEP_PIN
#endif #endif
#if !HAS_U_AXIS #if !HAS_U_AXIS
#undef CALIBRATION_MEASURE_UMAX
#undef CALIBRATION_MEASURE_UMIN
#undef DISABLE_IDLE_U #undef DISABLE_IDLE_U
#undef SAFE_BED_LEVELING_START_U #undef SAFE_BED_LEVELING_START_U
#undef STEALTHCHOP_U
#undef INVERT_U_STEP_PIN
#endif #endif
#if !HAS_V_AXIS #if !HAS_V_AXIS
#undef CALIBRATION_MEASURE_VMAX
#undef CALIBRATION_MEASURE_VMIN
#undef DISABLE_IDLE_V #undef DISABLE_IDLE_V
#undef SAFE_BED_LEVELING_START_V #undef SAFE_BED_LEVELING_START_V
#undef STEALTHCHOP_V
#undef INVERT_V_STEP_PIN
#endif #endif
#if !HAS_W_AXIS #if !HAS_W_AXIS
#undef CALIBRATION_MEASURE_WMAX
#undef CALIBRATION_MEASURE_WMIN
#undef DISABLE_IDLE_W #undef DISABLE_IDLE_W
#undef SAFE_BED_LEVELING_START_W #undef SAFE_BED_LEVELING_START_W
#undef STEALTHCHOP_W
#undef INVERT_W_STEP_PIN
#endif #endif
// Disallowed with no extruders // Disallowed with no extruders
#if !HAS_EXTRUDERS #if !HAS_EXTRUDERS
#define NO_VOLUMETRICS #define NO_VOLUMETRICS
#undef DISABLE_IDLE_E
#undef FWRETRACT
#undef PIDTEMP
#undef AUTOTEMP
#undef PID_EXTRUSION_SCALING
#undef LIN_ADVANCE
#undef ADVANCED_PAUSE_FEATURE #undef ADVANCED_PAUSE_FEATURE
#undef FILAMENT_LOAD_UNLOAD_GCODES #undef DISABLE_IDLE_E
#undef EXTRUDER_RUNOUT_PREVENT #undef EXTRUDER_RUNOUT_PREVENT
#undef THERMAL_PROTECTION_PERIOD #undef FILAMENT_LOAD_UNLOAD_GCODES
#undef WATCH_TEMP_PERIOD #undef FWRETRACT
#undef SHOW_TEMP_ADC_VALUES
#undef LCD_SHOW_E_TOTAL #undef LCD_SHOW_E_TOTAL
#undef LIN_ADVANCE
#undef MANUAL_E_MOVES_RELATIVE #undef MANUAL_E_MOVES_RELATIVE
#undef PID_EXTRUSION_SCALING
#undef SHOW_TEMP_ADC_VALUES
#undef STEALTHCHOP_E #undef STEALTHCHOP_E
#endif #endif
@ -179,28 +233,53 @@
#define DISABLE_IDLE_E #define DISABLE_IDLE_E
#endif #endif
#define _OR_HAS_DI(A) || BOTH(HAS_##A##_AXIS, DISABLE_IDLE_##A) #define _OR_HAS_DI(A) || ALL(HAS_##A##_AXIS, DISABLE_IDLE_##A)
#if BOTH(HAS_EXTRUDERS, DISABLE_IDLE_E) MAP(_OR_HAS_DI, X, Y, Z, I, J, K, U, V, W) #if ALL(HAS_EXTRUDERS, DISABLE_IDLE_E) MAP(_OR_HAS_DI, X, Y, Z, I, J, K, U, V, W)
#define HAS_DISABLE_IDLE_AXES 1 #define HAS_DISABLE_IDLE_AXES 1
#endif #endif
#undef _OR_HAS_DI #undef _OR_HAS_DI
#if HOTENDS <= 7 // Remove hotend-dependent settings
#if HOTENDS < 8
#undef E7_AUTO_FAN_PIN #undef E7_AUTO_FAN_PIN
#if HOTENDS <= 6 #undef HEATER_7_MAXTEMP
#undef HEATER_7_MINTEMP
#if HOTENDS < 7
#undef E6_AUTO_FAN_PIN #undef E6_AUTO_FAN_PIN
#if HOTENDS <= 5 #undef HEATER_6_MAXTEMP
#undef HEATER_6_MINTEMP
#if HOTENDS < 6
#undef E5_AUTO_FAN_PIN #undef E5_AUTO_FAN_PIN
#if HOTENDS <= 4 #undef HEATER_5_MAXTEMP
#undef HEATER_5_MINTEMP
#if HOTENDS < 5
#undef E4_AUTO_FAN_PIN #undef E4_AUTO_FAN_PIN
#if HOTENDS <= 3 #undef HEATER_4_MAXTEMP
#undef HEATER_4_MINTEMP
#if HOTENDS < 4
#undef E3_AUTO_FAN_PIN #undef E3_AUTO_FAN_PIN
#if HOTENDS <= 2 #undef HEATER_3_MAXTEMP
#undef HEATER_3_MINTEMP
#if HOTENDS < 3
#undef E2_AUTO_FAN_PIN #undef E2_AUTO_FAN_PIN
#if HOTENDS <= 1 #undef HEATER_2_MAXTEMP
#undef HEATER_2_MINTEMP
#if HOTENDS < 2
#undef E1_AUTO_FAN_PIN #undef E1_AUTO_FAN_PIN
#if HOTENDS == 0 #undef HEATER_1_MAXTEMP
#undef HEATER_1_MINTEMP
#if HOTENDS < 1
#undef AUTOTEMP
#undef E0_AUTO_FAN_PIN #undef E0_AUTO_FAN_PIN
#undef HEATER_0_MAXTEMP
#undef HEATER_0_MINTEMP
#undef PID_PARAMS_PER_HOTEND
#undef PIDTEMP
#undef MPCTEMP
#undef PREVENT_COLD_EXTRUSION
#undef THERMAL_PROTECTION_HOTENDS
#undef THERMAL_PROTECTION_PERIOD
#undef WATCH_TEMP_PERIOD
#endif #endif
#endif #endif
#endif #endif
@ -210,11 +289,32 @@
#endif #endif
#endif #endif
// This flag indicates some kind of jerk storage is needed
#if ANY(CLASSIC_JERK, IS_KINEMATIC)
#define HAS_CLASSIC_JERK 1
#endif
// Use Junction Deviation for motion if Jerk is disabled
#if DISABLED(CLASSIC_JERK)
#define HAS_JUNCTION_DEVIATION 1
#endif
// E jerk exists with JD disabled (of course) but also when Linear Advance is disabled on Delta/SCARA
#if HAS_EXTRUDERS && (ENABLED(CLASSIC_JERK) || (IS_KINEMATIC && DISABLED(LIN_ADVANCE)))
#define HAS_CLASSIC_E_JERK 1
#endif
// Linear advance uses Jerk since E is an isolated axis
#if ALL(HAS_JUNCTION_DEVIATION, LIN_ADVANCE)
#define HAS_LINEAR_E_JERK 1
#endif
/** /**
* Temperature Sensors; define what sensor(s) we have. * Temperature Sensors; define what sensor(s) we have.
*/ */
// Temperature sensor IDs // Temperature sensor IDs
#define HID_NONE -128
#define HID_REDUNDANT -6 #define HID_REDUNDANT -6
#define HID_BOARD -5 #define HID_BOARD -5
#define HID_COOLER -4 #define HID_COOLER -4
@ -233,9 +333,8 @@
#define _SENSOR_IS(I,N) || (TEMP_SENSOR(N) == I) #define _SENSOR_IS(I,N) || (TEMP_SENSOR(N) == I)
#define _E_SENSOR_IS(I,N) _SENSOR_IS(N,I) #define _E_SENSOR_IS(I,N) _SENSOR_IS(N,I)
#define ANY_E_SENSOR_IS(N) (0 REPEAT2(HOTENDS, _E_SENSOR_IS, N)) #define ANY_E_SENSOR_IS(N) (0 REPEAT2(HOTENDS, _E_SENSOR_IS, N))
#define ANY_THERMISTOR_IS(N) ( ANY_E_SENSOR_IS(N) \ #define ANY_THERMISTOR_IS(N) ( ANY_E_SENSOR_IS(N) _SENSOR_IS(N,REDUNDANT) \
_SENSOR_IS(N,BED) _SENSOR_IS(N,PROBE) _SENSOR_IS(N,CHAMBER) \ _SENSOR_IS(N,BED) _SENSOR_IS(N,PROBE) _SENSOR_IS(N,CHAMBER) _SENSOR_IS(N,COOLER) _SENSOR_IS(N,BOARD) )
_SENSOR_IS(N,COOLER) _SENSOR_IS(N,BOARD) _SENSOR_IS(N,REDUNDANT) )
#if ANY_THERMISTOR_IS(1000) #if ANY_THERMISTOR_IS(1000)
#define HAS_USER_THERMISTORS 1 #define HAS_USER_THERMISTORS 1
@ -273,15 +372,13 @@
#define TEMP_SENSOR_0_IS_AD8495 1 #define TEMP_SENSOR_0_IS_AD8495 1
#elif TEMP_SENSOR_0 == -1 #elif TEMP_SENSOR_0 == -1
#define TEMP_SENSOR_0_IS_AD595 1 #define TEMP_SENSOR_0_IS_AD595 1
#elif TEMP_SENSOR_0 == 1000 #elif TEMP_SENSOR_0 > 0
#define TEMP_SENSOR_0_IS_THERMISTOR 1
#if TEMP_SENSOR_0 == 1000
#define TEMP_SENSOR_0_IS_CUSTOM 1 #define TEMP_SENSOR_0_IS_CUSTOM 1
#elif TEMP_SENSOR_0 == 998 || TEMP_SENSOR_0 == 999 #elif TEMP_SENSOR_0 == 998 || TEMP_SENSOR_0 == 999
#define TEMP_SENSOR_0_IS_DUMMY 1 #define TEMP_SENSOR_0_IS_DUMMY 1
#elif TEMP_SENSOR_0 > 0 #endif
#define TEMP_SENSOR_0_IS_THERMISTOR 1
#else
#undef HEATER_0_MINTEMP
#undef HEATER_0_MAXTEMP
#endif #endif
#if TEMP_SENSOR_IS_MAX_TC(1) #if TEMP_SENSOR_IS_MAX_TC(1)
@ -318,15 +415,13 @@
#define TEMP_SENSOR_1_IS_AD8495 1 #define TEMP_SENSOR_1_IS_AD8495 1
#elif TEMP_SENSOR_1 == -1 #elif TEMP_SENSOR_1 == -1
#define TEMP_SENSOR_1_IS_AD595 1 #define TEMP_SENSOR_1_IS_AD595 1
#elif TEMP_SENSOR_1 == 1000 #elif TEMP_SENSOR_1 > 0
#define TEMP_SENSOR_1_IS_THERMISTOR 1
#if TEMP_SENSOR_1 == 1000
#define TEMP_SENSOR_1_IS_CUSTOM 1 #define TEMP_SENSOR_1_IS_CUSTOM 1
#elif TEMP_SENSOR_1 == 998 || TEMP_SENSOR_1 == 999 #elif TEMP_SENSOR_1 == 998 || TEMP_SENSOR_1 == 999
#define TEMP_SENSOR_1_IS_DUMMY 1 #define TEMP_SENSOR_1_IS_DUMMY 1
#elif TEMP_SENSOR_1 > 0 #endif
#define TEMP_SENSOR_1_IS_THERMISTOR 1
#else
#undef HEATER_1_MINTEMP
#undef HEATER_1_MAXTEMP
#endif #endif
#if TEMP_SENSOR_IS_MAX_TC(2) #if TEMP_SENSOR_IS_MAX_TC(2)
@ -363,98 +458,88 @@
#define TEMP_SENSOR_2_IS_AD8495 1 #define TEMP_SENSOR_2_IS_AD8495 1
#elif TEMP_SENSOR_2 == -1 #elif TEMP_SENSOR_2 == -1
#define TEMP_SENSOR_2_IS_AD595 1 #define TEMP_SENSOR_2_IS_AD595 1
#elif TEMP_SENSOR_2 == 1000 #elif TEMP_SENSOR_2 > 0
#define TEMP_SENSOR_2_IS_THERMISTOR 1
#if TEMP_SENSOR_2 == 1000
#define TEMP_SENSOR_2_IS_CUSTOM 1 #define TEMP_SENSOR_2_IS_CUSTOM 1
#elif TEMP_SENSOR_2 == 998 || TEMP_SENSOR_2 == 999 #elif TEMP_SENSOR_2 == 998 || TEMP_SENSOR_2 == 999
#define TEMP_SENSOR_2_IS_DUMMY 1 #define TEMP_SENSOR_2_IS_DUMMY 1
#elif TEMP_SENSOR_2 > 0 #endif
#define TEMP_SENSOR_2_IS_THERMISTOR 1
#else
#undef HEATER_2_MINTEMP
#undef HEATER_2_MAXTEMP
#endif #endif
#if TEMP_SENSOR_3 > 0
#define TEMP_SENSOR_3_IS_THERMISTOR 1
#if TEMP_SENSOR_3 == 1000 #if TEMP_SENSOR_3 == 1000
#define TEMP_SENSOR_3_IS_CUSTOM 1 #define TEMP_SENSOR_3_IS_CUSTOM 1
#elif TEMP_SENSOR_3 == 998 || TEMP_SENSOR_3 == 999 #elif TEMP_SENSOR_3 == 998 || TEMP_SENSOR_3 == 999
#define TEMP_SENSOR_3_IS_DUMMY 1 #define TEMP_SENSOR_3_IS_DUMMY 1
#elif TEMP_SENSOR_3 > 0 #endif
#define TEMP_SENSOR_3_IS_THERMISTOR 1
#elif !TEMP_SENSOR_3
#undef HEATER_3_MINTEMP
#undef HEATER_3_MAXTEMP
#endif #endif
#if TEMP_SENSOR_4 > 0
#define TEMP_SENSOR_4_IS_THERMISTOR 1
#if TEMP_SENSOR_4 == 1000 #if TEMP_SENSOR_4 == 1000
#define TEMP_SENSOR_4_IS_CUSTOM 1 #define TEMP_SENSOR_4_IS_CUSTOM 1
#elif TEMP_SENSOR_4 == 998 || TEMP_SENSOR_4 == 999 #elif TEMP_SENSOR_4 == 998 || TEMP_SENSOR_4 == 999
#define TEMP_SENSOR_4_IS_DUMMY 1 #define TEMP_SENSOR_4_IS_DUMMY 1
#elif TEMP_SENSOR_4 > 0 #endif
#define TEMP_SENSOR_4_IS_THERMISTOR 1
#elif !TEMP_SENSOR_4
#undef HEATER_4_MINTEMP
#undef HEATER_4_MAXTEMP
#endif #endif
#if TEMP_SENSOR_5 > 0
#define TEMP_SENSOR_5_IS_THERMISTOR 1
#if TEMP_SENSOR_5 == 1000 #if TEMP_SENSOR_5 == 1000
#define TEMP_SENSOR_5_IS_CUSTOM 1 #define TEMP_SENSOR_5_IS_CUSTOM 1
#elif TEMP_SENSOR_5 == 998 || TEMP_SENSOR_5 == 999 #elif TEMP_SENSOR_5 == 998 || TEMP_SENSOR_5 == 999
#define TEMP_SENSOR_5_IS_DUMMY 1 #define TEMP_SENSOR_5_IS_DUMMY 1
#elif TEMP_SENSOR_5 > 0 #endif
#define TEMP_SENSOR_5_IS_THERMISTOR 1
#elif !TEMP_SENSOR_5
#undef HEATER_5_MINTEMP
#undef HEATER_5_MAXTEMP
#endif #endif
#if TEMP_SENSOR_6 > 0
#define TEMP_SENSOR_6_IS_THERMISTOR 1
#if TEMP_SENSOR_6 == 1000 #if TEMP_SENSOR_6 == 1000
#define TEMP_SENSOR_6_IS_CUSTOM 1 #define TEMP_SENSOR_6_IS_CUSTOM 1
#elif TEMP_SENSOR_6 == 998 || TEMP_SENSOR_6 == 999 #elif TEMP_SENSOR_6 == 998 || TEMP_SENSOR_6 == 999
#define TEMP_SENSOR_6_IS_DUMMY 1 #define TEMP_SENSOR_6_IS_DUMMY 1
#elif TEMP_SENSOR_6 > 0 #endif
#define TEMP_SENSOR_6_IS_THERMISTOR 1
#elif !TEMP_SENSOR_6
#undef HEATER_6_MINTEMP
#undef HEATER_6_MAXTEMP
#endif #endif
#if TEMP_SENSOR_7 > 0
#define TEMP_SENSOR_7_IS_THERMISTOR 1
#if TEMP_SENSOR_7 == 1000 #if TEMP_SENSOR_7 == 1000
#define TEMP_SENSOR_7_IS_CUSTOM 1 #define TEMP_SENSOR_7_IS_CUSTOM 1
#elif TEMP_SENSOR_7 == 998 || TEMP_SENSOR_7 == 999 #elif TEMP_SENSOR_7 == 998 || TEMP_SENSOR_7 == 999
#define TEMP_SENSOR_7_IS_DUMMY 1 #define TEMP_SENSOR_7_IS_DUMMY 1
#elif TEMP_SENSOR_7 > 0 #endif
#define TEMP_SENSOR_7_IS_THERMISTOR 1
#elif !TEMP_SENSOR_7
#undef HEATER_7_MINTEMP
#undef HEATER_7_MAXTEMP
#endif #endif
#if TEMP_SENSOR_IS_MAX_TC(REDUNDANT) #if TEMP_SENSOR_IS_MAX_TC(REDUNDANT)
#define _REDUNDANT_E (REDUNDANT_TEMP_MATCH(SOURCE, E0) || REDUNDANT_TEMP_MATCH(SOURCE, E1) || REDUNDANT_TEMP_MATCH(SOURCE, E2))
#if TEMP_SENSOR_REDUNDANT == -5 #if TEMP_SENSOR_REDUNDANT == -5
#if !REDUNDANT_TEMP_MATCH(SOURCE, E0) && !REDUNDANT_TEMP_MATCH(SOURCE, E1) && !REDUNDANT_TEMP_MATCH(SOURCE, E2) #if !_REDUNDANT_E
#error "MAX31865 Thermocouples (-5) not supported for TEMP_SENSOR_REDUNDANT_SOURCE other than TEMP_SENSOR_0/TEMP_SENSOR_1/TEMP_SENSOR_2 (0/1/2)." #error "MAX31865 Thermocouples (-5) not supported for TEMP_SENSOR_REDUNDANT_SOURCE other than TEMP_SENSOR_[0-2]."
#endif #endif
#define TEMP_SENSOR_REDUNDANT_IS_MAX31865 1 #define TEMP_SENSOR_REDUNDANT_IS_MAX31865 1
#define TEMP_SENSOR_REDUNDANT_MAX_TC_TMIN 0 #define TEMP_SENSOR_REDUNDANT_MAX_TC_TMIN 0
#define TEMP_SENSOR_REDUNDANT_MAX_TC_TMAX 1024 #define TEMP_SENSOR_REDUNDANT_MAX_TC_TMAX 1024
#elif TEMP_SENSOR_REDUNDANT == -3 #elif TEMP_SENSOR_REDUNDANT == -3
#if !REDUNDANT_TEMP_MATCH(SOURCE, E0) && !REDUNDANT_TEMP_MATCH(SOURCE, E1) && !REDUNDANT_TEMP_MATCH(SOURCE, E2) #if !_REDUNDANT_E
#error "MAX31855 Thermocouples (-3) not supported for TEMP_SENSOR_REDUNDANT_SOURCE other than TEMP_SENSOR_0/TEMP_SENSOR_1/TEMP_SENSOR_2 (0/1/2)." #error "MAX31855 Thermocouples (-3) not supported for TEMP_SENSOR_REDUNDANT_SOURCE other than TEMP_SENSOR_[0-2]."
#endif #endif
#define TEMP_SENSOR_REDUNDANT_IS_MAX31855 1 #define TEMP_SENSOR_REDUNDANT_IS_MAX31855 1
#define TEMP_SENSOR_REDUNDANT_MAX_TC_TMIN -270 #define TEMP_SENSOR_REDUNDANT_MAX_TC_TMIN -270
#define TEMP_SENSOR_REDUNDANT_MAX_TC_TMAX 1800 #define TEMP_SENSOR_REDUNDANT_MAX_TC_TMAX 1800
#elif TEMP_SENSOR_REDUNDANT == -2 #elif TEMP_SENSOR_REDUNDANT == -2
#if !REDUNDANT_TEMP_MATCH(SOURCE, E0) && !REDUNDANT_TEMP_MATCH(SOURCE, E1) && !REDUNDANT_TEMP_MATCH(SOURCE, E2) #if !_REDUNDANT_E
#error "MAX6675 Thermocouples (-2) not supported for TEMP_SENSOR_REDUNDANT_SOURCE other than TEMP_SENSOR_0/TEMP_SENSOR_1/TEMP_SENSOR_2 (0/1/2)." #error "MAX6675 Thermocouples (-2) not supported for TEMP_SENSOR_REDUNDANT_SOURCE other than TEMP_SENSOR_[0-2]."
#endif #endif
#define TEMP_SENSOR_REDUNDANT_IS_MAX6675 1 #define TEMP_SENSOR_REDUNDANT_IS_MAX6675 1
#define TEMP_SENSOR_REDUNDANT_MAX_TC_TMIN 0 #define TEMP_SENSOR_REDUNDANT_MAX_TC_TMIN 0
#define TEMP_SENSOR_REDUNDANT_MAX_TC_TMAX 1024 #define TEMP_SENSOR_REDUNDANT_MAX_TC_TMAX 1024
#endif #endif
#undef _REDUNDANT_E
// Mimic setting up the source TEMP_SENSOR // Mimic setting up the source TEMP_SENSOR
#if REDUNDANT_TEMP_MATCH(SOURCE, E0) #if REDUNDANT_TEMP_MATCH(SOURCE, E0)
@ -490,25 +575,25 @@
#define TEMP_SENSOR_REDUNDANT_IS_AD8495 1 #define TEMP_SENSOR_REDUNDANT_IS_AD8495 1
#elif TEMP_SENSOR_REDUNDANT == -1 #elif TEMP_SENSOR_REDUNDANT == -1
#define TEMP_SENSOR_REDUNDANT_IS_AD595 1 #define TEMP_SENSOR_REDUNDANT_IS_AD595 1
#elif TEMP_SENSOR_REDUNDANT == 998 || TEMP_SENSOR_REDUNDANT == 999
#error "Dummy sensors are not supported for TEMP_SENSOR_REDUNDANT."
#elif TEMP_SENSOR_REDUNDANT > 0 #elif TEMP_SENSOR_REDUNDANT > 0
#define TEMP_SENSOR_REDUNDANT_IS_THERMISTOR 1 #define TEMP_SENSOR_REDUNDANT_IS_THERMISTOR 1
#if TEMP_SENSOR_REDUNDANT == 1000 #if TEMP_SENSOR_REDUNDANT == 1000
#define TEMP_SENSOR_REDUNDANT_IS_CUSTOM 1 #define TEMP_SENSOR_REDUNDANT_IS_CUSTOM 1
#elif TEMP_SENSOR_REDUNDANT == 998 || TEMP_SENSOR_REDUNDANT == 999
#error "Dummy sensors are not supported for TEMP_SENSOR_REDUNDANT."
#endif #endif
#endif #endif
#if TEMP_SENSOR_IS_MAX_TC(0) || TEMP_SENSOR_IS_MAX_TC(1) || TEMP_SENSOR_IS_MAX_TC(2) || TEMP_SENSOR_IS_MAX_TC(REDUNDANT) #if TEMP_SENSOR_IS_MAX_TC(0) || TEMP_SENSOR_IS_MAX_TC(1) || TEMP_SENSOR_IS_MAX_TC(2) || TEMP_SENSOR_IS_MAX_TC(BED) || TEMP_SENSOR_IS_MAX_TC(REDUNDANT)
#define HAS_MAX_TC 1 #define HAS_MAX_TC 1
#endif #endif
#if TEMP_SENSOR_0_IS_MAX6675 || TEMP_SENSOR_1_IS_MAX6675 || TEMP_SENSOR_2_IS_MAX6675 || TEMP_SENSOR_REDUNDANT_IS_MAX6675 #if TEMP_SENSOR_0_IS_MAX6675 || TEMP_SENSOR_1_IS_MAX6675 || TEMP_SENSOR_2_IS_MAX6675 || TEMP_SENSOR_BED_IS_MAX6675 || TEMP_SENSOR_REDUNDANT_IS_MAX6675
#define HAS_MAX6675 1 #define HAS_MAX6675 1
#endif #endif
#if TEMP_SENSOR_0_IS_MAX31855 || TEMP_SENSOR_1_IS_MAX31855 || TEMP_SENSOR_2_IS_MAX31855 || TEMP_SENSOR_REDUNDANT_IS_MAX31855 #if TEMP_SENSOR_0_IS_MAX31855 || TEMP_SENSOR_1_IS_MAX31855 || TEMP_SENSOR_2_IS_MAX31855 || TEMP_SENSOR_BED_IS_MAX31855 || TEMP_SENSOR_REDUNDANT_IS_MAX31855
#define HAS_MAX31855 1 #define HAS_MAX31855 1
#endif #endif
#if TEMP_SENSOR_0_IS_MAX31865 || TEMP_SENSOR_1_IS_MAX31865 || TEMP_SENSOR_2_IS_MAX31865 || TEMP_SENSOR_REDUNDANT_IS_MAX31865 #if TEMP_SENSOR_0_IS_MAX31865 || TEMP_SENSOR_1_IS_MAX31865 || TEMP_SENSOR_2_IS_MAX31865 || TEMP_SENSOR_BED_IS_MAX31865 || TEMP_SENSOR_REDUNDANT_IS_MAX31865
#define HAS_MAX31865 1 #define HAS_MAX31865 1
#endif #endif
@ -520,16 +605,13 @@
#error "MAX6675 Thermocouples (-2) not supported for TEMP_SENSOR_3." #error "MAX6675 Thermocouples (-2) not supported for TEMP_SENSOR_3."
#elif TEMP_SENSOR_3 == -1 #elif TEMP_SENSOR_3 == -1
#define TEMP_SENSOR_3_IS_AD595 1 #define TEMP_SENSOR_3_IS_AD595 1
#elif TEMP_SENSOR_3 == 998 || TEMP_SENSOR_3 == 999
#define TEMP_SENSOR_3_IS_DUMMY 1
#elif TEMP_SENSOR_3 > 0 #elif TEMP_SENSOR_3 > 0
#define TEMP_SENSOR_3_IS_THERMISTOR 1 #define TEMP_SENSOR_3_IS_THERMISTOR 1
#if TEMP_SENSOR_3 == 1000 #if TEMP_SENSOR_3 == 1000
#define TEMP_SENSOR_3_IS_CUSTOM 1 #define TEMP_SENSOR_3_IS_CUSTOM 1
#elif TEMP_SENSOR_3 == 998 || TEMP_SENSOR_3 == 999
#define TEMP_SENSOR_3_IS_DUMMY 1
#endif #endif
#else
#undef HEATER_3_MINTEMP
#undef HEATER_3_MAXTEMP
#endif #endif
#if TEMP_SENSOR_4 == -4 #if TEMP_SENSOR_4 == -4
@ -540,16 +622,13 @@
#error "MAX6675 Thermocouples (-2) not supported for TEMP_SENSOR_4." #error "MAX6675 Thermocouples (-2) not supported for TEMP_SENSOR_4."
#elif TEMP_SENSOR_4 == -1 #elif TEMP_SENSOR_4 == -1
#define TEMP_SENSOR_4_IS_AD595 1 #define TEMP_SENSOR_4_IS_AD595 1
#elif TEMP_SENSOR_4 == 998 || TEMP_SENSOR_4 == 999
#define TEMP_SENSOR_4_IS_DUMMY 1
#elif TEMP_SENSOR_4 > 0 #elif TEMP_SENSOR_4 > 0
#define TEMP_SENSOR_4_IS_THERMISTOR 1 #define TEMP_SENSOR_4_IS_THERMISTOR 1
#if TEMP_SENSOR_4 == 1000 #if TEMP_SENSOR_4 == 1000
#define TEMP_SENSOR_4_IS_CUSTOM 1 #define TEMP_SENSOR_4_IS_CUSTOM 1
#elif TEMP_SENSOR_4 == 998 || TEMP_SENSOR_4 == 999
#define TEMP_SENSOR_4_IS_DUMMY 1
#endif #endif
#else
#undef HEATER_4_MINTEMP
#undef HEATER_4_MAXTEMP
#endif #endif
#if TEMP_SENSOR_5 == -4 #if TEMP_SENSOR_5 == -4
@ -560,16 +639,13 @@
#error "MAX6675 Thermocouples (-2) not supported for TEMP_SENSOR_5." #error "MAX6675 Thermocouples (-2) not supported for TEMP_SENSOR_5."
#elif TEMP_SENSOR_5 == -1 #elif TEMP_SENSOR_5 == -1
#define TEMP_SENSOR_5_IS_AD595 1 #define TEMP_SENSOR_5_IS_AD595 1
#elif TEMP_SENSOR_5 == 998 || TEMP_SENSOR_5 == 999
#define TEMP_SENSOR_5_IS_DUMMY 1
#elif TEMP_SENSOR_5 > 0 #elif TEMP_SENSOR_5 > 0
#define TEMP_SENSOR_5_IS_THERMISTOR 1 #define TEMP_SENSOR_5_IS_THERMISTOR 1
#if TEMP_SENSOR_5 == 1000 #if TEMP_SENSOR_5 == 1000
#define TEMP_SENSOR_5_IS_CUSTOM 1 #define TEMP_SENSOR_5_IS_CUSTOM 1
#elif TEMP_SENSOR_5 == 998 || TEMP_SENSOR_5 == 999
#define TEMP_SENSOR_5_IS_DUMMY 1
#endif #endif
#else
#undef HEATER_5_MINTEMP
#undef HEATER_5_MAXTEMP
#endif #endif
#if TEMP_SENSOR_6 == -4 #if TEMP_SENSOR_6 == -4
@ -580,16 +656,13 @@
#error "MAX6675 Thermocouples (-2) not supported for TEMP_SENSOR_6." #error "MAX6675 Thermocouples (-2) not supported for TEMP_SENSOR_6."
#elif TEMP_SENSOR_6 == -1 #elif TEMP_SENSOR_6 == -1
#define TEMP_SENSOR_6_IS_AD595 1 #define TEMP_SENSOR_6_IS_AD595 1
#elif TEMP_SENSOR_6 == 998 || TEMP_SENSOR_6 == 999
#define TEMP_SENSOR_6_IS_DUMMY 1
#elif TEMP_SENSOR_6 > 0 #elif TEMP_SENSOR_6 > 0
#define TEMP_SENSOR_6_IS_THERMISTOR 1 #define TEMP_SENSOR_6_IS_THERMISTOR 1
#if TEMP_SENSOR_6 == 1000 #if TEMP_SENSOR_6 == 1000
#define TEMP_SENSOR_6_IS_CUSTOM 1 #define TEMP_SENSOR_6_IS_CUSTOM 1
#elif TEMP_SENSOR_6 == 998 || TEMP_SENSOR_6 == 999
#define TEMP_SENSOR_6_IS_DUMMY 1
#endif #endif
#else
#undef HEATER_6_MINTEMP
#undef HEATER_6_MAXTEMP
#endif #endif
#if TEMP_SENSOR_7 == -4 #if TEMP_SENSOR_7 == -4
@ -600,24 +673,37 @@
#error "MAX7775 Thermocouples (-2) not supported for TEMP_SENSOR_7." #error "MAX7775 Thermocouples (-2) not supported for TEMP_SENSOR_7."
#elif TEMP_SENSOR_7 == -1 #elif TEMP_SENSOR_7 == -1
#define TEMP_SENSOR_7_IS_AD595 1 #define TEMP_SENSOR_7_IS_AD595 1
#elif TEMP_SENSOR_7 == 998 || TEMP_SENSOR_7 == 999
#define TEMP_SENSOR_7_IS_DUMMY 1
#elif TEMP_SENSOR_7 > 0 #elif TEMP_SENSOR_7 > 0
#define TEMP_SENSOR_7_IS_THERMISTOR 1 #define TEMP_SENSOR_7_IS_THERMISTOR 1
#if TEMP_SENSOR_7 == 1000 #if TEMP_SENSOR_7 == 1000
#define TEMP_SENSOR_7_IS_CUSTOM 1 #define TEMP_SENSOR_7_IS_CUSTOM 1
#elif TEMP_SENSOR_7 == 998 || TEMP_SENSOR_7 == 999
#define TEMP_SENSOR_7_IS_DUMMY 1
#endif #endif
#else
#undef HEATER_7_MINTEMP
#undef HEATER_7_MAXTEMP
#endif #endif
#if TEMP_SENSOR_BED == -4 #if TEMP_SENSOR_IS_MAX_TC(BED)
#define TEMP_SENSOR_BED_IS_AD8495 1 #if TEMP_SENSOR_BED == -5
#define TEMP_SENSOR_BED_IS_MAX31865 1
#define TEMP_SENSOR_BED_MAX_TC_TMIN 0
#define TEMP_SENSOR_BED_MAX_TC_TMAX 1024
#ifndef MAX31865_SENSOR_WIRES_BED
#define MAX31865_SENSOR_WIRES_BED 2
#endif
#ifndef MAX31865_WIRE_OHMS_BED
#define MAX31865_WIRE_OHMS_BED 0.0f
#endif
#elif TEMP_SENSOR_BED == -3 #elif TEMP_SENSOR_BED == -3
#error "MAX31855 Thermocouples (-3) not supported for TEMP_SENSOR_BED." #define TEMP_SENSOR_BED_IS_MAX31855 1
#define TEMP_SENSOR_BED_MAX_TC_TMIN -270
#define TEMP_SENSOR_BED_MAX_TC_TMAX 1800
#elif TEMP_SENSOR_BED == -2 #elif TEMP_SENSOR_BED == -2
#error "MAX6675 Thermocouples (-2) not supported for TEMP_SENSOR_BED." #define TEMP_SENSOR_BED_IS_MAX6675 1
#define TEMP_SENSOR_BED_MAX_TC_TMIN 0
#define TEMP_SENSOR_BED_MAX_TC_TMAX 1024
#endif
#elif TEMP_SENSOR_BED == -4
#define TEMP_SENSOR_BED_IS_AD8495 1
#elif TEMP_SENSOR_BED == -1 #elif TEMP_SENSOR_BED == -1
#define TEMP_SENSOR_BED_IS_AD595 1 #define TEMP_SENSOR_BED_IS_AD595 1
#elif TEMP_SENSOR_BED > 0 #elif TEMP_SENSOR_BED > 0
@ -628,8 +714,6 @@
#define TEMP_SENSOR_BED_IS_DUMMY 1 #define TEMP_SENSOR_BED_IS_DUMMY 1
#endif #endif
#else #else
#undef THERMAL_PROTECTION_BED
#undef THERMAL_PROTECTION_BED_PERIOD
#undef BED_MINTEMP #undef BED_MINTEMP
#undef BED_MAXTEMP #undef BED_MAXTEMP
#endif #endif
@ -663,12 +747,12 @@
#error "MAX6675 Thermocouples (-2) not supported for TEMP_SENSOR_COOLER." #error "MAX6675 Thermocouples (-2) not supported for TEMP_SENSOR_COOLER."
#elif TEMP_SENSOR_COOLER == -1 #elif TEMP_SENSOR_COOLER == -1
#define TEMP_SENSOR_COOLER_IS_AD595 1 #define TEMP_SENSOR_COOLER_IS_AD595 1
#elif TEMP_SENSOR_COOLER == 998 || TEMP_SENSOR_COOLER == 999
#define TEMP_SENSOR_COOLER_IS_DUMMY 1
#elif TEMP_SENSOR_COOLER > 0 #elif TEMP_SENSOR_COOLER > 0
#define TEMP_SENSOR_COOLER_IS_THERMISTOR 1 #define TEMP_SENSOR_COOLER_IS_THERMISTOR 1
#if TEMP_SENSOR_COOLER == 1000 #if TEMP_SENSOR_COOLER == 1000
#define TEMP_SENSOR_COOLER_IS_CUSTOM 1 #define TEMP_SENSOR_COOLER_IS_CUSTOM 1
#elif TEMP_SENSOR_COOLER == 998 || TEMP_SENSOR_COOLER == 999
#define TEMP_SENSOR_COOLER_IS_DUMMY 1
#endif #endif
#else #else
#undef THERMAL_PROTECTION_COOLER #undef THERMAL_PROTECTION_COOLER
@ -829,6 +913,17 @@
#endif #endif
// Multiple Z steppers // Multiple Z steppers
#ifdef INVERT_Z_DIR
#if NUM_Z_STEPPERS >= 2 && !defined(INVERT_Z2_DIR)
#define INVERT_Z2_DIR INVERT_Z_DIR
#if NUM_Z_STEPPERS >= 3 && !defined(INVERT_Z3_DIR)
#define INVERT_Z3_DIR INVERT_Z_DIR
#if NUM_Z_STEPPERS >= 4 && !defined(INVERT_Z4_DIR)
#define INVERT_Z4_DIR INVERT_Z_DIR
#endif
#endif
#endif
#endif
#if NUM_Z_STEPPERS < 4 #if NUM_Z_STEPPERS < 4
#undef INVERT_Z4_VS_Z_DIR #undef INVERT_Z4_VS_Z_DIR
#if NUM_Z_STEPPERS < 3 #if NUM_Z_STEPPERS < 3
@ -998,10 +1093,8 @@
#define POLL_JOG #define POLL_JOG
#endif #endif
#if X2_HOME_DIR > 0 #if ENABLED(DUAL_X_CARRIAGE)
#define X2_HOME_TO_MAX 1 #define X2_HOME_TO_MAX 1
#elif X2_HOME_DIR < 0
#define X2_HOME_TO_MIN 1
#endif #endif
#ifndef HOMING_BUMP_MM #ifndef HOMING_BUMP_MM
@ -1089,53 +1182,6 @@
#endif #endif
#endif #endif
// Remove unused STEALTHCHOP flags
#if NUM_AXES < 9
#undef STEALTHCHOP_W
#undef CALIBRATION_MEASURE_WMIN
#undef CALIBRATION_MEASURE_WMAX
#if NUM_AXES < 8
#undef STEALTHCHOP_V
#undef CALIBRATION_MEASURE_VMIN
#undef CALIBRATION_MEASURE_VMAX
#if NUM_AXES < 7
#undef STEALTHCHOP_U
#undef CALIBRATION_MEASURE_UMIN
#undef CALIBRATION_MEASURE_UMAX
#if NUM_AXES < 6
#undef STEALTHCHOP_K
#undef CALIBRATION_MEASURE_KMIN
#undef CALIBRATION_MEASURE_KMAX
#if NUM_AXES < 5
#undef STEALTHCHOP_J
#undef CALIBRATION_MEASURE_JMIN
#undef CALIBRATION_MEASURE_JMAX
#if NUM_AXES < 4
#undef STEALTHCHOP_I
#undef CALIBRATION_MEASURE_IMIN
#undef CALIBRATION_MEASURE_IMAX
#if NUM_AXES < 3
#undef STEALTHCHOP_Z
#undef Z_IDLE_HEIGHT
#undef Z_PROBE_SLED
#undef Z_SAFE_HOMING
#undef HOME_Z_FIRST
#undef HOMING_Z_WITH_PROBE
#undef ENABLE_LEVELING_FADE_HEIGHT
#undef NUM_Z_STEPPERS
#undef CNC_WORKSPACE_PLANES
#if NUM_AXES < 2
#undef STEALTHCHOP_Y
#undef QUICK_HOME
#endif
#endif
#endif
#endif
#endif
#endif
#endif
#endif
#if defined(SAFE_BED_LEVELING_START_X) || defined(SAFE_BED_LEVELING_START_Y) || defined(SAFE_BED_LEVELING_START_Z) \ #if defined(SAFE_BED_LEVELING_START_X) || defined(SAFE_BED_LEVELING_START_Y) || defined(SAFE_BED_LEVELING_START_Z) \
|| defined(SAFE_BED_LEVELING_START_I) || defined(SAFE_BED_LEVELING_START_J) || defined(SAFE_BED_LEVELING_START_K) \ || defined(SAFE_BED_LEVELING_START_I) || defined(SAFE_BED_LEVELING_START_J) || defined(SAFE_BED_LEVELING_START_K) \
|| defined(SAFE_BED_LEVELING_START_U) || defined(SAFE_BED_LEVELING_START_V) || defined(SAFE_BED_LEVELING_START_W) || defined(SAFE_BED_LEVELING_START_U) || defined(SAFE_BED_LEVELING_START_V) || defined(SAFE_BED_LEVELING_START_W)
@ -1154,6 +1200,7 @@
#define SD_CONNECTION_IS(V) (_SDCARD_ID(SDCARD_CONNECTION) == _SDCARD_ID(V)) #define SD_CONNECTION_IS(V) (_SDCARD_ID(SDCARD_CONNECTION) == _SDCARD_ID(V))
#else #else
#define SD_CONNECTION_IS(...) 0 #define SD_CONNECTION_IS(...) 0
#undef SD_ABORT_ON_ENDSTOP_HIT
#endif #endif
// Power Monitor sensors // Power Monitor sensors
@ -1197,7 +1244,7 @@
#define _HAS_1(N) (defined(MAIN_MENU_ITEM_##N##_DESC) && defined(MAIN_MENU_ITEM_##N##_GCODE)) #define _HAS_1(N) (defined(MAIN_MENU_ITEM_##N##_DESC) && defined(MAIN_MENU_ITEM_##N##_GCODE))
#define HAS_USER_ITEM(V...) DO(HAS,||,V) #define HAS_USER_ITEM(V...) DO(HAS,||,V)
#else #else
#define HAS_USER_ITEM(N) 0 #define HAS_USER_ITEM(...) 0
#endif #endif
/** /**
@ -1232,10 +1279,6 @@
#define CANNOT_EMBED_CONFIGURATION defined(__AVR__) #define CANNOT_EMBED_CONFIGURATION defined(__AVR__)
#endif #endif
#if ANY(DISABLE_INACTIVE_X, DISABLE_INACTIVE_Y, DISABLE_INACTIVE_Z, DISABLE_INACTIVE_I, DISABLE_INACTIVE_J, DISABLE_INACTIVE_K, DISABLE_INACTIVE_U, DISABLE_INACTIVE_V, DISABLE_INACTIVE_W, DISABLE_INACTIVE_E)
#define HAS_DISABLE_INACTIVE_AXIS 1
#endif
// Fan Kickstart // Fan Kickstart
#if FAN_KICKSTART_TIME && !defined(FAN_KICKSTART_POWER) #if FAN_KICKSTART_TIME && !defined(FAN_KICKSTART_POWER)
#define FAN_KICKSTART_POWER 180 #define FAN_KICKSTART_POWER 180
@ -1249,5 +1292,5 @@
// Input shaping // Input shaping
#if ANY(INPUT_SHAPING_X, INPUT_SHAPING_Y) #if ANY(INPUT_SHAPING_X, INPUT_SHAPING_Y)
#define HAS_SHAPING 1 #define HAS_ZV_SHAPING 1
#endif #endif

File diff suppressed because it is too large Load Diff

View File

@ -46,6 +46,7 @@
#include "../core/types.h" // Ahead of sanity-checks #include "../core/types.h" // Ahead of sanity-checks
#include "Changes.h"
#include "SanityCheck.h" #include "SanityCheck.h"
#include HAL_PATH(.., inc/SanityCheck.h) #include HAL_PATH(.., inc/SanityCheck.h)

File diff suppressed because it is too large Load Diff

View File

@ -33,6 +33,13 @@
#if ENABLED(MARLIN_DEV_MODE) #if ENABLED(MARLIN_DEV_MODE)
#warning "WARNING! Disable MARLIN_DEV_MODE for the final build!" #warning "WARNING! Disable MARLIN_DEV_MODE for the final build!"
#ifdef __LONG_MAX__
#if __LONG_MAX__ > __INT_MAX__
#warning "The 'long' type is larger than the 'int' type on this platform."
#else
#warning "The 'long' type is the same as the 'int' type on this platform."
#endif
#endif
#endif #endif
#if ENABLED(LA_DEBUG) #if ENABLED(LA_DEBUG)
@ -794,6 +801,30 @@
/** /**
* Input Shaping * Input Shaping
*/ */
#if HAS_SHAPING && ANY(CORE_IS_XY, MARKFORGED_XY, MARKFORGED_YX) #if HAS_ZV_SHAPING && ANY(CORE_IS_XY, MARKFORGED_XY, MARKFORGED_YX)
#warning "Input Shaping for CORE / MARKFORGED kinematic axes is still experimental." #warning "Input Shaping for CORE / MARKFORGED kinematic axes is still experimental."
#endif #endif
/**
* SD Card extras
*/
#if SDSORT_CACHE_VFATS_WARNING
#warning "SDSORT_CACHE_VFATS has been reduced to VFAT_ENTRIES_LIMIT."
#endif
#if SDSORT_CACHE_LPC1768_WARNING
#warning "SDCARD_SORT_ALPHA sub-options overridden for LPC1768 with DOGM LCD SCK overlap."
#endif
/**
* Ender-5 S1 bootloader
*/
#ifdef STM32F4_UPDATE_FOLDER
#warning "Place the firmware bin file in a folder named 'STM32F4_UPDATE' on the SD card. Install with 'M936 V2'."
#endif
/**
* ProUI Boot Screen Duration
*/
#if ENABLED(DWIN_LCD_PROUI) && BOOTSCREEN_TIMEOUT > 2000
#warning "For ProUI the original BOOTSCREEN_TIMEOUT of 1100 is recommended."
#endif

View File

@ -37,63 +37,11 @@
#error "MAX_DMA_SIZE is not configured for this platform." #error "MAX_DMA_SIZE is not configured for this platform."
#endif #endif
#define TFT_EXCHANGE_XY _BV32(1)
#define TFT_INVERT_X _BV32(2)
#define TFT_INVERT_Y _BV32(3)
#define TFT_NO_ROTATION (0x00)
#define TFT_ROTATE_90 (TFT_EXCHANGE_XY | TFT_INVERT_X)
#define TFT_ROTATE_180 (TFT_INVERT_X | TFT_INVERT_Y)
#define TFT_ROTATE_270 (TFT_EXCHANGE_XY | TFT_INVERT_Y)
#define TFT_MIRROR_X (TFT_INVERT_Y)
#define TFT_MIRROR_Y (TFT_INVERT_X)
#define TFT_ROTATE_90_MIRROR_X (TFT_ROTATE_90 ^ TFT_INVERT_Y)
#define TFT_ROTATE_90_MIRROR_Y (TFT_ROTATE_90 ^ TFT_INVERT_X)
#define TFT_ROTATE_180_MIRROR_X (TFT_ROTATE_180 ^ TFT_INVERT_Y)
#define TFT_ROTATE_180_MIRROR_Y (TFT_ROTATE_180 ^ TFT_INVERT_X)
#define TFT_ROTATE_270_MIRROR_X (TFT_ROTATE_270 ^ TFT_INVERT_Y)
#define TFT_ROTATE_270_MIRROR_Y (TFT_ROTATE_270 ^ TFT_INVERT_X)
// TFT_ROTATION is user configurable
#ifndef TFT_ROTATION
#define TFT_ROTATION TFT_NO_ROTATION
#endif
// TFT_ORIENTATION is the "sum" of TFT_DEFAULT_ORIENTATION plus user TFT_ROTATION
#define TFT_ORIENTATION ((TFT_DEFAULT_ORIENTATION) ^ (TFT_ROTATION))
#define TFT_COLOR_RGB _BV32(3)
#define TFT_COLOR_BGR _BV32(4)
// Each TFT Driver is responsible for its default color mode. // Each TFT Driver is responsible for its default color mode.
// #ifndef TFT_COLOR // #ifndef TFT_COLOR
// #define TFT_COLOR TFT_COLOR_RGB // #define TFT_COLOR TFT_COLOR_RGB
// #endif // #endif
#define TOUCH_ORIENTATION_NONE 0
#define TOUCH_LANDSCAPE 1
#define TOUCH_PORTRAIT 2
#ifndef TOUCH_CALIBRATION_X
#define TOUCH_CALIBRATION_X 0
#endif
#ifndef TOUCH_CALIBRATION_Y
#define TOUCH_CALIBRATION_Y 0
#endif
#ifndef TOUCH_OFFSET_X
#define TOUCH_OFFSET_X 0
#endif
#ifndef TOUCH_OFFSET_Y
#define TOUCH_OFFSET_Y 0
#endif
#ifndef TOUCH_ORIENTATION
#define TOUCH_ORIENTATION TOUCH_LANDSCAPE
#endif
#ifndef TFT_DRIVER #ifndef TFT_DRIVER
#define TFT_DRIVER AUTO #define TFT_DRIVER AUTO
#endif #endif

View File

@ -0,0 +1,63 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
*/
#pragma once
#define TFT_EXCHANGE_XY _BV32(1)
#define TFT_INVERT_X _BV32(2)
#define TFT_INVERT_Y _BV32(3)
#define TFT_NO_ROTATION (0x00)
#define TFT_ROTATE_90 (TFT_EXCHANGE_XY | TFT_INVERT_X)
#define TFT_ROTATE_180 (TFT_INVERT_X | TFT_INVERT_Y)
#define TFT_ROTATE_270 (TFT_EXCHANGE_XY | TFT_INVERT_Y)
#define TFT_MIRROR_X (TFT_INVERT_Y)
#define TFT_MIRROR_Y (TFT_INVERT_X)
#define TFT_ROTATE_90_MIRROR_X (TFT_ROTATE_90 ^ TFT_MIRROR_X)
#define TFT_ROTATE_90_MIRROR_Y (TFT_ROTATE_90 ^ TFT_MIRROR_Y)
#define TFT_ROTATE_180_MIRROR_X (TFT_ROTATE_180 ^ TFT_MIRROR_X)
#define TFT_ROTATE_180_MIRROR_Y (TFT_ROTATE_180 ^ TFT_MIRROR_Y)
#define TFT_ROTATE_270_MIRROR_X (TFT_ROTATE_270 ^ TFT_MIRROR_X)
#define TFT_ROTATE_270_MIRROR_Y (TFT_ROTATE_270 ^ TFT_MIRROR_Y)
// TFT_ROTATION is user configurable
#ifndef TFT_ROTATION
#define TFT_ROTATION TFT_NO_ROTATION
#endif
// TFT_ORIENTATION is the "sum" of TFT_DEFAULT_ORIENTATION plus user TFT_ROTATION
#define TFT_ORIENTATION ((TFT_DEFAULT_ORIENTATION) ^ (TFT_ROTATION))
// Set TFT_COLOR_UI_PORTRAIT flag, if needed
#if ((TFT_ORIENTATION) & TFT_EXCHANGE_XY) == 0
#define TFT_COLOR_UI_PORTRAIT
#endif
#define TFT_COLOR_RGB _BV32(3)
#define TFT_COLOR_BGR _BV32(4)
#define TOUCH_ORIENTATION_NONE 0
#define TOUCH_LANDSCAPE 1
#define TOUCH_PORTRAIT 2