|
|
|
@ -270,23 +270,6 @@
|
|
|
|
|
#endif
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Delta requirements
|
|
|
|
|
*/
|
|
|
|
|
#if ENABLED(DELTA)
|
|
|
|
|
#if DISABLED(USE_XMAX_PLUG) && DISABLED(USE_YMAX_PLUG) && DISABLED(USE_ZMAX_PLUG)
|
|
|
|
|
#error "You probably want to use Max Endstops for DELTA!"
|
|
|
|
|
#elif ENABLED(ENABLE_LEVELING_FADE_HEIGHT) && DISABLED(AUTO_BED_LEVELING_BILINEAR) && !UBL_DELTA
|
|
|
|
|
#error "ENABLE_LEVELING_FADE_HEIGHT on DELTA requires AUTO_BED_LEVELING_BILINEAR or AUTO_BED_LEVELING_UBL."
|
|
|
|
|
#elif ABL_GRID
|
|
|
|
|
#if (GRID_MAX_POINTS_X & 1) == 0 || (GRID_MAX_POINTS_Y & 1) == 0
|
|
|
|
|
#error "DELTA requires GRID_MAX_POINTS_X and GRID_MAX_POINTS_Y to be odd numbers."
|
|
|
|
|
#elif GRID_MAX_POINTS_X < 3
|
|
|
|
|
#error "DELTA requires GRID_MAX_POINTS_X and GRID_MAX_POINTS_Y to be 3 or higher."
|
|
|
|
|
#endif
|
|
|
|
|
#endif
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Babystepping
|
|
|
|
|
*/
|
|
|
|
@ -430,44 +413,57 @@
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Allow only one bed leveling option to be defined
|
|
|
|
|
* Kinematics
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Allow only one kinematic type to be defined
|
|
|
|
|
*/
|
|
|
|
|
static_assert(1 >= 0
|
|
|
|
|
#if ENABLED(AUTO_BED_LEVELING_LINEAR)
|
|
|
|
|
#if ENABLED(DELTA)
|
|
|
|
|
+ 1
|
|
|
|
|
#endif
|
|
|
|
|
#if ENABLED(AUTO_BED_LEVELING_3POINT)
|
|
|
|
|
#if ENABLED(MORGAN_SCARA)
|
|
|
|
|
+ 1
|
|
|
|
|
#endif
|
|
|
|
|
#if ENABLED(AUTO_BED_LEVELING_BILINEAR)
|
|
|
|
|
#if ENABLED(MAKERARM_SCARA)
|
|
|
|
|
+ 1
|
|
|
|
|
#endif
|
|
|
|
|
#if ENABLED(AUTO_BED_LEVELING_UBL)
|
|
|
|
|
#if ENABLED(COREXY)
|
|
|
|
|
+ 1
|
|
|
|
|
#endif
|
|
|
|
|
#if ENABLED(MESH_BED_LEVELING)
|
|
|
|
|
#if ENABLED(COREXZ)
|
|
|
|
|
+ 1
|
|
|
|
|
#endif
|
|
|
|
|
, "Select only one of: MESH_BED_LEVELING, AUTO_BED_LEVELING_LINEAR, AUTO_BED_LEVELING_3POINT, AUTO_BED_LEVELING_BILINEAR or AUTO_BED_LEVELING_UBL."
|
|
|
|
|
#if ENABLED(COREYZ)
|
|
|
|
|
+ 1
|
|
|
|
|
#endif
|
|
|
|
|
#if ENABLED(COREYX)
|
|
|
|
|
+ 1
|
|
|
|
|
#endif
|
|
|
|
|
#if ENABLED(COREZX)
|
|
|
|
|
+ 1
|
|
|
|
|
#endif
|
|
|
|
|
#if ENABLED(COREZY)
|
|
|
|
|
+ 1
|
|
|
|
|
#endif
|
|
|
|
|
, "Please enable only one of DELTA, MORGAN_SCARA, MAKERARM_SCARA, COREXY, COREYX, COREXZ, COREZX, COREYZ, or COREZY."
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Mesh Bed Leveling
|
|
|
|
|
* Delta requirements
|
|
|
|
|
*/
|
|
|
|
|
#if ENABLED(MESH_BED_LEVELING)
|
|
|
|
|
#if ENABLED(DELTA)
|
|
|
|
|
#error "MESH_BED_LEVELING does not yet support DELTA printers."
|
|
|
|
|
#elif GRID_MAX_POINTS_X > 9 || GRID_MAX_POINTS_Y > 9
|
|
|
|
|
#error "GRID_MAX_POINTS_X and GRID_MAX_POINTS_Y must be less than 10 for MBL."
|
|
|
|
|
#endif
|
|
|
|
|
#if DISABLED(USE_XMAX_PLUG) && DISABLED(USE_YMAX_PLUG) && DISABLED(USE_ZMAX_PLUG)
|
|
|
|
|
#error "You probably want to use Max Endstops for DELTA!"
|
|
|
|
|
#elif ENABLED(ENABLE_LEVELING_FADE_HEIGHT) && DISABLED(AUTO_BED_LEVELING_BILINEAR) && !UBL_DELTA
|
|
|
|
|
#error "ENABLE_LEVELING_FADE_HEIGHT on DELTA requires AUTO_BED_LEVELING_BILINEAR or AUTO_BED_LEVELING_UBL."
|
|
|
|
|
#elif ABL_GRID
|
|
|
|
|
#if (GRID_MAX_POINTS_X & 1) == 0 || (GRID_MAX_POINTS_Y & 1) == 0
|
|
|
|
|
#error "DELTA requires GRID_MAX_POINTS_X and GRID_MAX_POINTS_Y to be odd numbers."
|
|
|
|
|
#elif GRID_MAX_POINTS_X < 3
|
|
|
|
|
#error "DELTA requires GRID_MAX_POINTS_X and GRID_MAX_POINTS_Y to be 3 or higher."
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Unified Bed Leveling
|
|
|
|
|
*/
|
|
|
|
|
#if ENABLED(AUTO_BED_LEVELING_UBL)
|
|
|
|
|
#if IS_SCARA
|
|
|
|
|
#error "AUTO_BED_LEVELING_UBL does not yet support SCARA printers."
|
|
|
|
|
#endif
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
@ -503,7 +499,6 @@ static_assert(1 >= 0
|
|
|
|
|
, "Please enable only one probe option: PROBE_MANUALLY, FIX_MOUNTED_PROBE, BLTOUCH, SOLENOID_PROBE, Z_PROBE_ALLEN_KEY, Z_PROBE_SLED, or Z Servo."
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#if PROBE_SELECTED
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
@ -594,46 +589,57 @@ static_assert(1 >= 0
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* LCD_BED_LEVELING requirements
|
|
|
|
|
* Allow only one bed leveling option to be defined
|
|
|
|
|
*/
|
|
|
|
|
#if ENABLED(LCD_BED_LEVELING)
|
|
|
|
|
#if DISABLED(ULTIPANEL)
|
|
|
|
|
#error "LCD_BED_LEVELING requires an LCD controller."
|
|
|
|
|
#elif DISABLED(MESH_BED_LEVELING) && !(HAS_ABL && ENABLED(PROBE_MANUALLY))
|
|
|
|
|
#error "LCD_BED_LEVELING requires MESH_BED_LEVELING or PROBE_MANUALLY."
|
|
|
|
|
static_assert(1 >= 0
|
|
|
|
|
#if ENABLED(AUTO_BED_LEVELING_LINEAR)
|
|
|
|
|
+ 1
|
|
|
|
|
#endif
|
|
|
|
|
#if ENABLED(AUTO_BED_LEVELING_3POINT)
|
|
|
|
|
+ 1
|
|
|
|
|
#endif
|
|
|
|
|
#if ENABLED(AUTO_BED_LEVELING_BILINEAR)
|
|
|
|
|
+ 1
|
|
|
|
|
#endif
|
|
|
|
|
#if ENABLED(AUTO_BED_LEVELING_UBL)
|
|
|
|
|
+ 1
|
|
|
|
|
#endif
|
|
|
|
|
#if ENABLED(MESH_BED_LEVELING)
|
|
|
|
|
+ 1
|
|
|
|
|
#endif
|
|
|
|
|
, "Select only one of: MESH_BED_LEVELING, AUTO_BED_LEVELING_LINEAR, AUTO_BED_LEVELING_3POINT, AUTO_BED_LEVELING_BILINEAR or AUTO_BED_LEVELING_UBL."
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Homing Bump
|
|
|
|
|
* Bed Leveling Requirements
|
|
|
|
|
*/
|
|
|
|
|
#if X_HOME_BUMP_MM < 0 || Y_HOME_BUMP_MM < 0 || Z_HOME_BUMP_MM < 0
|
|
|
|
|
#error "[XYZ]_HOME_BUMP_MM must be greater than or equal to 0."
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#if ENABLED(AUTO_BED_LEVELING_UBL)
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Make sure Z_SAFE_HOMING point is reachable
|
|
|
|
|
* Unified Bed Leveling
|
|
|
|
|
*/
|
|
|
|
|
#if ENABLED(Z_SAFE_HOMING)
|
|
|
|
|
#if !WITHIN(Z_SAFE_HOMING_X_POINT, MIN_PROBE_X, MAX_PROBE_X)
|
|
|
|
|
#if HAS_BED_PROBE
|
|
|
|
|
#error "Z_SAFE_HOMING_X_POINT can't be reached by the Z probe."
|
|
|
|
|
#else
|
|
|
|
|
#error "Z_SAFE_HOMING_X_POINT can't be reached by the nozzle."
|
|
|
|
|
#endif
|
|
|
|
|
#elif !WITHIN(Z_SAFE_HOMING_Y_POINT, MIN_PROBE_Y, MAX_PROBE_Y)
|
|
|
|
|
#if HAS_BED_PROBE
|
|
|
|
|
#error "Z_SAFE_HOMING_Y_POINT can't be reached by the Z probe."
|
|
|
|
|
|
|
|
|
|
#if IS_SCARA
|
|
|
|
|
#error "AUTO_BED_LEVELING_UBL does not yet support SCARA printers."
|
|
|
|
|
#elif DISABLED(EEPROM_SETTINGS)
|
|
|
|
|
#error "AUTO_BED_LEVELING_UBL requires EEPROM_SETTINGS. Please update your configuration."
|
|
|
|
|
#elif !WITHIN(GRID_MAX_POINTS_X, 3, 15) || !WITHIN(GRID_MAX_POINTS_Y, 3, 15)
|
|
|
|
|
#error "GRID_MAX_POINTS_[XY] must be a whole number between 3 and 15."
|
|
|
|
|
#else
|
|
|
|
|
#error "Z_SAFE_HOMING_Y_POINT can't be reached by the nozzle."
|
|
|
|
|
#endif
|
|
|
|
|
static_assert(WITHIN(UBL_PROBE_PT_1_X, MIN_PROBE_X, MAX_PROBE_X), "UBL_PROBE_PT_1_X can't be reached by the Z probe.");
|
|
|
|
|
static_assert(WITHIN(UBL_PROBE_PT_2_X, MIN_PROBE_X, MAX_PROBE_X), "UBL_PROBE_PT_2_X can't be reached by the Z probe.");
|
|
|
|
|
static_assert(WITHIN(UBL_PROBE_PT_3_X, MIN_PROBE_X, MAX_PROBE_X), "UBL_PROBE_PT_3_X can't be reached by the Z probe.");
|
|
|
|
|
static_assert(WITHIN(UBL_PROBE_PT_1_Y, MIN_PROBE_Y, MAX_PROBE_Y), "UBL_PROBE_PT_1_Y can't be reached by the Z probe.");
|
|
|
|
|
static_assert(WITHIN(UBL_PROBE_PT_2_Y, MIN_PROBE_Y, MAX_PROBE_Y), "UBL_PROBE_PT_2_Y can't be reached by the Z probe.");
|
|
|
|
|
static_assert(WITHIN(UBL_PROBE_PT_3_Y, MIN_PROBE_Y, MAX_PROBE_Y), "UBL_PROBE_PT_3_Y can't be reached by the Z probe.");
|
|
|
|
|
#endif
|
|
|
|
|
#endif // Z_SAFE_HOMING
|
|
|
|
|
|
|
|
|
|
#elif HAS_ABL
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Auto Bed Leveling
|
|
|
|
|
*/
|
|
|
|
|
#if HAS_ABL
|
|
|
|
|
|
|
|
|
|
#if ENABLED(USE_RAW_KINEMATICS)
|
|
|
|
|
#error "USE_RAW_KINEMATICS is not compatible with AUTO_BED_LEVELING"
|
|
|
|
@ -647,65 +653,85 @@ static_assert(1 >= 0
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Check auto bed leveling sub-options, especially probe points
|
|
|
|
|
* Check auto bed leveling probe points
|
|
|
|
|
*/
|
|
|
|
|
#if ABL_GRID
|
|
|
|
|
#ifndef DELTA_PROBEABLE_RADIUS
|
|
|
|
|
#if LEFT_PROBE_BED_POSITION > RIGHT_PROBE_BED_POSITION
|
|
|
|
|
#error "LEFT_PROBE_BED_POSITION must be less than RIGHT_PROBE_BED_POSITION."
|
|
|
|
|
#elif FRONT_PROBE_BED_POSITION > BACK_PROBE_BED_POSITION
|
|
|
|
|
#error "FRONT_PROBE_BED_POSITION must be less than BACK_PROBE_BED_POSITION."
|
|
|
|
|
#endif
|
|
|
|
|
#if LEFT_PROBE_BED_POSITION < MIN_PROBE_X
|
|
|
|
|
#error "The given LEFT_PROBE_BED_POSITION can't be reached by the Z probe."
|
|
|
|
|
#elif RIGHT_PROBE_BED_POSITION > MAX_PROBE_X
|
|
|
|
|
#error "The given RIGHT_PROBE_BED_POSITION can't be reached by the Z probe."
|
|
|
|
|
#elif FRONT_PROBE_BED_POSITION < MIN_PROBE_Y
|
|
|
|
|
#error "The given FRONT_PROBE_BED_POSITION can't be reached by the Z probe."
|
|
|
|
|
#elif BACK_PROBE_BED_POSITION > MAX_PROBE_Y
|
|
|
|
|
#error "The given BACK_PROBE_BED_POSITION can't be reached by the Z probe."
|
|
|
|
|
#endif
|
|
|
|
|
#endif
|
|
|
|
|
#elif ENABLED(AUTO_BED_LEVELING_UBL)
|
|
|
|
|
#if DISABLED(EEPROM_SETTINGS)
|
|
|
|
|
#error "AUTO_BED_LEVELING_UBL requires EEPROM_SETTINGS. Please update your configuration."
|
|
|
|
|
#elif !WITHIN(GRID_MAX_POINTS_X, 3, 15) || !WITHIN(GRID_MAX_POINTS_Y, 3, 15)
|
|
|
|
|
#error "GRID_MAX_POINTS_[XY] must be a whole number between 3 and 15."
|
|
|
|
|
|
|
|
|
|
#ifdef DELTA_PROBEABLE_RADIUS
|
|
|
|
|
static_assert(LEFT_PROBE_BED_POSITION >= -DELTA_PROBEABLE_RADIUS, "LEFT_PROBE_BED_POSITION must be within DELTA_PROBEABLE_RADIUS.");
|
|
|
|
|
static_assert(RIGHT_PROBE_BED_POSITION <= DELTA_PROBEABLE_RADIUS, "RIGHT_PROBE_BED_POSITION must be within DELTA_PROBEABLE_RADIUS.");
|
|
|
|
|
static_assert(FRONT_PROBE_BED_POSITION >= -DELTA_PROBEABLE_RADIUS, "FRONT_PROBE_BED_POSITION must be within DELTA_PROBEABLE_RADIUS.");
|
|
|
|
|
static_assert(BACK_PROBE_BED_POSITION <= DELTA_PROBEABLE_RADIUS, "BACK_PROBE_BED_POSITION must be within DELTA_PROBEABLE_RADIUS.");
|
|
|
|
|
#else
|
|
|
|
|
static_assert(LEFT_PROBE_BED_POSITION < RIGHT_PROBE_BED_POSITION, "LEFT_PROBE_BED_POSITION must be less than RIGHT_PROBE_BED_POSITION.");
|
|
|
|
|
static_assert(FRONT_PROBE_BED_POSITION < BACK_PROBE_BED_POSITION, "FRONT_PROBE_BED_POSITION must be less than BACK_PROBE_BED_POSITION.");
|
|
|
|
|
static_assert(LEFT_PROBE_BED_POSITION >= MIN_PROBE_X, "LEFT_PROBE_BED_POSITION can't be reached by the Z probe.");
|
|
|
|
|
static_assert(RIGHT_PROBE_BED_POSITION <= MAX_PROBE_X, "RIGHT_PROBE_BED_POSITION can't be reached by the Z probe.");
|
|
|
|
|
static_assert(FRONT_PROBE_BED_POSITION >= MIN_PROBE_Y, "FRONT_PROBE_BED_POSITION can't be reached by the Z probe.");
|
|
|
|
|
static_assert(BACK_PROBE_BED_POSITION <= MAX_PROBE_Y, "BACK_PROBE_BED_POSITION can't be reached by the Z probe.");
|
|
|
|
|
#endif
|
|
|
|
|
#if IS_CARTESIAN
|
|
|
|
|
#if !WITHIN(GRID_MAX_POINTS_X, 3, 15) || !WITHIN(GRID_MAX_POINTS_Y, 3, 15)
|
|
|
|
|
#error "GRID_MAX_POINTS_[XY] must be a whole number between 3 and 15."
|
|
|
|
|
#elif !WITHIN(UBL_PROBE_PT_1_X, MIN_PROBE_X, MAX_PROBE_X)
|
|
|
|
|
#error "The given UBL_PROBE_PT_1_X can't be reached by the Z probe."
|
|
|
|
|
#elif !WITHIN(UBL_PROBE_PT_2_X, MIN_PROBE_X, MAX_PROBE_X)
|
|
|
|
|
#error "The given UBL_PROBE_PT_2_X can't be reached by the Z probe."
|
|
|
|
|
#elif !WITHIN(UBL_PROBE_PT_3_X, MIN_PROBE_X, MAX_PROBE_X)
|
|
|
|
|
#error "The given UBL_PROBE_PT_3_X can't be reached by the Z probe."
|
|
|
|
|
#elif !WITHIN(UBL_PROBE_PT_1_Y, MIN_PROBE_Y, MAX_PROBE_Y)
|
|
|
|
|
#error "The given UBL_PROBE_PT_1_Y can't be reached by the Z probe."
|
|
|
|
|
#elif !WITHIN(UBL_PROBE_PT_2_Y, MIN_PROBE_Y, MAX_PROBE_Y)
|
|
|
|
|
#error "The given UBL_PROBE_PT_2_Y can't be reached by the Z probe."
|
|
|
|
|
#elif !WITHIN(UBL_PROBE_PT_3_Y, MIN_PROBE_Y, MAX_PROBE_Y)
|
|
|
|
|
#error "The given UBL_PROBE_PT_3_Y can't be reached by the Z probe."
|
|
|
|
|
|
|
|
|
|
#else // AUTO_BED_LEVELING_3POINT
|
|
|
|
|
|
|
|
|
|
static_assert(WITHIN(ABL_PROBE_PT_1_X, MIN_PROBE_X, MAX_PROBE_X), "ABL_PROBE_PT_1_X can't be reached by the Z probe.");
|
|
|
|
|
static_assert(WITHIN(ABL_PROBE_PT_2_X, MIN_PROBE_X, MAX_PROBE_X), "ABL_PROBE_PT_2_X can't be reached by the Z probe.");
|
|
|
|
|
static_assert(WITHIN(ABL_PROBE_PT_3_X, MIN_PROBE_X, MAX_PROBE_X), "ABL_PROBE_PT_3_X can't be reached by the Z probe.");
|
|
|
|
|
static_assert(WITHIN(ABL_PROBE_PT_1_Y, MIN_PROBE_Y, MAX_PROBE_Y), "ABL_PROBE_PT_1_Y can't be reached by the Z probe.");
|
|
|
|
|
static_assert(WITHIN(ABL_PROBE_PT_2_Y, MIN_PROBE_Y, MAX_PROBE_Y), "ABL_PROBE_PT_2_Y can't be reached by the Z probe.");
|
|
|
|
|
static_assert(WITHIN(ABL_PROBE_PT_3_Y, MIN_PROBE_Y, MAX_PROBE_Y), "ABL_PROBE_PT_3_Y can't be reached by the Z probe.");
|
|
|
|
|
|
|
|
|
|
#endif // AUTO_BED_LEVELING_3POINT
|
|
|
|
|
|
|
|
|
|
#elif ENABLED(MESH_BED_LEVELING)
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Mesh Bed Leveling
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
#if ENABLED(DELTA)
|
|
|
|
|
#error "MESH_BED_LEVELING does not yet support DELTA printers."
|
|
|
|
|
#elif GRID_MAX_POINTS_X > 9 || GRID_MAX_POINTS_Y > 9
|
|
|
|
|
#error "GRID_MAX_POINTS_X and GRID_MAX_POINTS_Y must be less than 10 for MBL."
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
#else // AUTO_BED_LEVELING_3POINT
|
|
|
|
|
#if !WITHIN(ABL_PROBE_PT_1_X, MIN_PROBE_X, MAX_PROBE_X)
|
|
|
|
|
#error "The given ABL_PROBE_PT_1_X can't be reached by the Z probe."
|
|
|
|
|
#elif !WITHIN(ABL_PROBE_PT_2_X, MIN_PROBE_X, MAX_PROBE_X)
|
|
|
|
|
#error "The given ABL_PROBE_PT_2_X can't be reached by the Z probe."
|
|
|
|
|
#elif !WITHIN(ABL_PROBE_PT_3_X, MIN_PROBE_X, MAX_PROBE_X)
|
|
|
|
|
#error "The given ABL_PROBE_PT_3_X can't be reached by the Z probe."
|
|
|
|
|
#elif !WITHIN(ABL_PROBE_PT_1_Y, MIN_PROBE_Y, MAX_PROBE_Y)
|
|
|
|
|
#error "The given ABL_PROBE_PT_1_Y can't be reached by the Z probe."
|
|
|
|
|
#elif !WITHIN(ABL_PROBE_PT_2_Y, MIN_PROBE_Y, MAX_PROBE_Y)
|
|
|
|
|
#error "The given ABL_PROBE_PT_2_Y can't be reached by the Z probe."
|
|
|
|
|
#elif !WITHIN(ABL_PROBE_PT_3_Y, MIN_PROBE_Y, MAX_PROBE_Y)
|
|
|
|
|
#error "The given ABL_PROBE_PT_3_Y can't be reached by the Z probe."
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* LCD_BED_LEVELING requirements
|
|
|
|
|
*/
|
|
|
|
|
#if ENABLED(LCD_BED_LEVELING)
|
|
|
|
|
#if DISABLED(ULTIPANEL)
|
|
|
|
|
#error "LCD_BED_LEVELING requires an LCD controller."
|
|
|
|
|
#elif DISABLED(MESH_BED_LEVELING) && !(HAS_ABL && ENABLED(PROBE_MANUALLY))
|
|
|
|
|
#error "LCD_BED_LEVELING requires MESH_BED_LEVELING or PROBE_MANUALLY."
|
|
|
|
|
#endif
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Homing Bump
|
|
|
|
|
*/
|
|
|
|
|
#if X_HOME_BUMP_MM < 0 || Y_HOME_BUMP_MM < 0 || Z_HOME_BUMP_MM < 0
|
|
|
|
|
#error "[XYZ]_HOME_BUMP_MM must be greater than or equal to 0."
|
|
|
|
|
#endif
|
|
|
|
|
#endif // AUTO_BED_LEVELING_3POINT
|
|
|
|
|
|
|
|
|
|
#endif // HAS_ABL
|
|
|
|
|
/**
|
|
|
|
|
* Make sure Z_SAFE_HOMING point is reachable
|
|
|
|
|
*/
|
|
|
|
|
#if ENABLED(Z_SAFE_HOMING)
|
|
|
|
|
#if !WITHIN(Z_SAFE_HOMING_X_POINT, MIN_PROBE_X, MAX_PROBE_X)
|
|
|
|
|
#if HAS_BED_PROBE
|
|
|
|
|
#error "Z_SAFE_HOMING_X_POINT can't be reached by the Z probe."
|
|
|
|
|
#else
|
|
|
|
|
#error "Z_SAFE_HOMING_X_POINT can't be reached by the nozzle."
|
|
|
|
|
#endif
|
|
|
|
|
#elif !WITHIN(Z_SAFE_HOMING_Y_POINT, MIN_PROBE_Y, MAX_PROBE_Y)
|
|
|
|
|
#if HAS_BED_PROBE
|
|
|
|
|
#error "Z_SAFE_HOMING_Y_POINT can't be reached by the Z probe."
|
|
|
|
|
#else
|
|
|
|
|
#error "Z_SAFE_HOMING_Y_POINT can't be reached by the nozzle."
|
|
|
|
|
#endif
|
|
|
|
|
#endif
|
|
|
|
|
#endif // Z_SAFE_HOMING
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Advance Extrusion
|
|
|
|
@ -739,40 +765,6 @@ static_assert(1 >= 0
|
|
|
|
|
#error "Only enable one SAV_3DGLCD display type: U8GLIB_SSD1306 or U8GLIB_SH1106."
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Don't set more than one kinematic type
|
|
|
|
|
*/
|
|
|
|
|
static_assert(1 >= 0
|
|
|
|
|
#if ENABLED(DELTA)
|
|
|
|
|
+ 1
|
|
|
|
|
#endif
|
|
|
|
|
#if ENABLED(MORGAN_SCARA)
|
|
|
|
|
+ 1
|
|
|
|
|
#endif
|
|
|
|
|
#if ENABLED(MAKERARM_SCARA)
|
|
|
|
|
+ 1
|
|
|
|
|
#endif
|
|
|
|
|
#if ENABLED(COREXY)
|
|
|
|
|
+ 1
|
|
|
|
|
#endif
|
|
|
|
|
#if ENABLED(COREXZ)
|
|
|
|
|
+ 1
|
|
|
|
|
#endif
|
|
|
|
|
#if ENABLED(COREYZ)
|
|
|
|
|
+ 1
|
|
|
|
|
#endif
|
|
|
|
|
#if ENABLED(COREYX)
|
|
|
|
|
+ 1
|
|
|
|
|
#endif
|
|
|
|
|
#if ENABLED(COREZX)
|
|
|
|
|
+ 1
|
|
|
|
|
#endif
|
|
|
|
|
#if ENABLED(COREZY)
|
|
|
|
|
+ 1
|
|
|
|
|
#endif
|
|
|
|
|
, "Please enable only one of DELTA, MORGAN_SCARA, MAKERARM_SCARA, COREXY, COREYX, COREXZ, COREZX, COREYZ, or COREZY."
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Allen Key
|
|
|
|
|
* Deploying the Allen Key probe uses big moves in z direction. Too dangerous for an unhomed z-axis.
|
|
|
|
@ -1147,8 +1139,30 @@ static_assert(1 >= 0
|
|
|
|
|
, "Please select no more than one LCD controller option."
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
#if ENABLED(HAVE_TMC2130) && !( \
|
|
|
|
|
ENABLED( X_IS_TMC2130 ) \
|
|
|
|
|
/**
|
|
|
|
|
* Make sure HAVE_TMCDRIVER is warranted
|
|
|
|
|
*/
|
|
|
|
|
#if ENABLED(HAVE_TMCDRIVER) && !( \
|
|
|
|
|
ENABLED( X_IS_TMC ) \
|
|
|
|
|
|| ENABLED( X2_IS_TMC ) \
|
|
|
|
|
|| ENABLED( Y_IS_TMC ) \
|
|
|
|
|
|| ENABLED( Y2_IS_TMC ) \
|
|
|
|
|
|| ENABLED( Z_IS_TMC ) \
|
|
|
|
|
|| ENABLED( Z2_IS_TMC ) \
|
|
|
|
|
|| ENABLED( E0_IS_TMC ) \
|
|
|
|
|
|| ENABLED( E1_IS_TMC ) \
|
|
|
|
|
|| ENABLED( E2_IS_TMC ) \
|
|
|
|
|
|| ENABLED( E3_IS_TMC ) \
|
|
|
|
|
|| ENABLED( E4_IS_TMC ) \
|
|
|
|
|
)
|
|
|
|
|
#error "HAVE_TMCDRIVER requires at least one TMC stepper to be set."
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Make sure HAVE_TMC2130 is warranted
|
|
|
|
|
*/
|
|
|
|
|
#if ENABLED(HAVE_TMC2130)
|
|
|
|
|
#if !( ENABLED( X_IS_TMC2130 ) \
|
|
|
|
|
|| ENABLED( X2_IS_TMC2130 ) \
|
|
|
|
|
|| ENABLED( Y_IS_TMC2130 ) \
|
|
|
|
|
|| ENABLED( Y2_IS_TMC2130 ) \
|
|
|
|
@ -1157,12 +1171,32 @@ static_assert(1 >= 0
|
|
|
|
|
|| ENABLED( E0_IS_TMC2130 ) \
|
|
|
|
|
|| ENABLED( E1_IS_TMC2130 ) \
|
|
|
|
|
|| ENABLED( E2_IS_TMC2130 ) \
|
|
|
|
|
|| ENABLED( E3_IS_TMC2130 ) )
|
|
|
|
|
#error "Choose at least one TMC2130 stepper."
|
|
|
|
|
|| ENABLED( E3_IS_TMC2130 ) \
|
|
|
|
|
|| ENABLED( E4_IS_TMC2130 ) \
|
|
|
|
|
)
|
|
|
|
|
#error "HAVE_TMC2130 requires at least one TMC2130 stepper to be set."
|
|
|
|
|
#elif ENABLED(HYBRID_THRESHOLD) && DISABLED(STEALTHCHOP)
|
|
|
|
|
#error "Enable STEALTHCHOP to use HYBRID_THRESHOLD."
|
|
|
|
|
#endif
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#if ENABLED(HYBRID_THRESHOLD) && DISABLED(STEALTHCHOP)
|
|
|
|
|
#error "Enable STEALTHCHOP to use HYBRID_THRESHOLD."
|
|
|
|
|
/**
|
|
|
|
|
* Make sure HAVE_L6470DRIVER is warranted
|
|
|
|
|
*/
|
|
|
|
|
#if ENABLED(HAVE_L6470DRIVER) && !( \
|
|
|
|
|
ENABLED( X_IS_L6470 ) \
|
|
|
|
|
|| ENABLED( X2_IS_L6470 ) \
|
|
|
|
|
|| ENABLED( Y_IS_L6470 ) \
|
|
|
|
|
|| ENABLED( Y2_IS_L6470 ) \
|
|
|
|
|
|| ENABLED( Z_IS_L6470 ) \
|
|
|
|
|
|| ENABLED( Z2_IS_L6470 ) \
|
|
|
|
|
|| ENABLED( E0_IS_L6470 ) \
|
|
|
|
|
|| ENABLED( E1_IS_L6470 ) \
|
|
|
|
|
|| ENABLED( E2_IS_L6470 ) \
|
|
|
|
|
|| ENABLED( E3_IS_L6470 ) \
|
|
|
|
|
|| ENABLED( E4_IS_L6470 ) \
|
|
|
|
|
)
|
|
|
|
|
#error "HAVE_L6470DRIVER requires at least one L6470 stepper to be set."
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|