Merge bugfix-2.0.x into 2.0.x
This commit is contained in:
@ -26,6 +26,15 @@
|
||||
* Conditionals that need to be set before Configuration_adv.h or pins.h
|
||||
*/
|
||||
|
||||
#if ENABLED(MORGAN_SCARA)
|
||||
#define IS_SCARA 1
|
||||
#define IS_KINEMATIC 1
|
||||
#elif ENABLED(DELTA)
|
||||
#define IS_KINEMATIC 1
|
||||
#else
|
||||
#define IS_CARTESIAN 1
|
||||
#endif
|
||||
|
||||
#if ENABLED(CARTESIO_UI)
|
||||
|
||||
#define DOGLCD
|
||||
@ -65,7 +74,6 @@
|
||||
#define U8GLIB_ST7565_64128N
|
||||
#elif ENABLED(ELB_FULL_GRAPHIC_CONTROLLER)
|
||||
#define U8GLIB_LM6059_AF
|
||||
#define SD_DETECT_INVERTED
|
||||
#elif ENABLED(AZSMZ_12864)
|
||||
#define U8GLIB_ST7565_64128N
|
||||
#endif
|
||||
@ -193,7 +201,9 @@
|
||||
#endif
|
||||
|
||||
// 128x64 I2C OLED LCDs - SSD1306/SSD1309/SH1106
|
||||
#define HAS_SSD1306_OLED_I2C ANY(U8GLIB_SSD1306, U8GLIB_SSD1309, U8GLIB_SH1106)
|
||||
#if ANY(U8GLIB_SSD1306, U8GLIB_SSD1309, U8GLIB_SH1106)
|
||||
#define HAS_SSD1306_OLED_I2C 1
|
||||
#endif
|
||||
#if HAS_SSD1306_OLED_I2C
|
||||
#define IS_ULTRA_LCD
|
||||
#define DOGLCD
|
||||
@ -346,20 +356,36 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Aliases for LCD features
|
||||
#if ANY(DGUS_LCD_UI_ORIGIN, DGUS_LCD_UI_FYSETC, DGUS_LCD_UI_HIPRECY)
|
||||
#define HAS_DGUS_LCD 1
|
||||
#endif
|
||||
|
||||
// Extensible UI serial touch screens. (See src/lcd/extensible_ui)
|
||||
#if ANY(MALYAN_LCD, DGUS_LCD, TOUCH_UI_FTDI_EVE)
|
||||
#if ANY(HAS_DGUS_LCD, MALYAN_LCD, TOUCH_UI_FTDI_EVE)
|
||||
#define IS_EXTUI
|
||||
#define EXTENSIBLE_UI
|
||||
#endif
|
||||
|
||||
// Aliases for LCD features
|
||||
#define HAS_SPI_LCD ENABLED(ULTRA_LCD)
|
||||
#define HAS_DISPLAY (HAS_SPI_LCD || ENABLED(EXTENSIBLE_UI))
|
||||
#define HAS_GRAPHICAL_LCD ENABLED(DOGLCD)
|
||||
#define HAS_CHARACTER_LCD (HAS_SPI_LCD && !HAS_GRAPHICAL_LCD)
|
||||
#define HAS_LCD_MENU (ENABLED(ULTIPANEL) && DISABLED(NO_LCD_MENUS))
|
||||
#define HAS_ADC_BUTTONS ENABLED(ADC_KEYPAD)
|
||||
#define HAS_DGUS_LCD ANY(DGUS_LCD_UI_ORIGIN, DGUS_LCD_UI_FYSETC, DGUS_LCD_UI_HIPRECY)
|
||||
#if EITHER(ULTRA_LCD, EXTENSIBLE_UI)
|
||||
#define HAS_DISPLAY 1
|
||||
#if ENABLED(ULTRA_LCD)
|
||||
#define HAS_SPI_LCD 1
|
||||
#if ENABLED(DOGLCD)
|
||||
#define HAS_GRAPHICAL_LCD 1
|
||||
#else
|
||||
#define HAS_CHARACTER_LCD 1
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if ENABLED(ULTIPANEL) && DISABLED(NO_LCD_MENUS)
|
||||
#define HAS_LCD_MENU 1
|
||||
#endif
|
||||
#if ENABLED(ADC_KEYPAD)
|
||||
#define HAS_ADC_BUTTONS 1
|
||||
#endif
|
||||
|
||||
#if HAS_GRAPHICAL_LCD
|
||||
#ifndef LCD_PIXEL_WIDTH
|
||||
@ -433,22 +459,46 @@
|
||||
#ifndef HOTENDS
|
||||
#define HOTENDS EXTRUDERS
|
||||
#endif
|
||||
|
||||
#ifndef E_STEPPERS
|
||||
#define E_STEPPERS EXTRUDERS
|
||||
#endif
|
||||
|
||||
#ifndef E_MANUAL
|
||||
#define E_MANUAL EXTRUDERS
|
||||
#endif
|
||||
|
||||
// Helper macros for extruder and hotend arrays
|
||||
#define HOTEND_LOOP() for (int8_t e = 0; e < HOTENDS; e++)
|
||||
#define ARRAY_BY_EXTRUDERS(V...) ARRAY_N(EXTRUDERS, V)
|
||||
#define ARRAY_BY_EXTRUDERS1(v1) ARRAY_BY_EXTRUDERS(v1, v1, v1, v1, v1, v1, v1, v1)
|
||||
#define ARRAY_BY_HOTENDS(V...) ARRAY_N(HOTENDS, V)
|
||||
#define ARRAY_BY_HOTENDS1(v1) ARRAY_BY_HOTENDS(v1, v1, v1, v1, v1, v1, v1, v1)
|
||||
|
||||
#define DO_SWITCH_EXTRUDER (ENABLED(SWITCHING_EXTRUDER) && (DISABLED(SWITCHING_NOZZLE) || SWITCHING_EXTRUDER_SERVO_NR != SWITCHING_NOZZLE_SERVO_NR))
|
||||
#define SWITCHING_NOZZLE_TWO_SERVOS defined(SWITCHING_NOZZLE_E1_SERVO_NR)
|
||||
#if ENABLED(SWITCHING_EXTRUDER) && (DISABLED(SWITCHING_NOZZLE) || SWITCHING_EXTRUDER_SERVO_NR != SWITCHING_NOZZLE_SERVO_NR)
|
||||
#define DO_SWITCH_EXTRUDER 1
|
||||
#endif
|
||||
|
||||
#define HAS_HOTEND_OFFSET (HOTENDS > 1)
|
||||
#define HAS_DUPLICATION_MODE EITHER(DUAL_X_CARRIAGE, MULTI_NOZZLE_DUPLICATION)
|
||||
#ifdef SWITCHING_NOZZLE_E1_SERVO_NR
|
||||
#define SWITCHING_NOZZLE_TWO_SERVOS 1
|
||||
#endif
|
||||
|
||||
#if HOTENDS > 1
|
||||
#define HAS_HOTEND_OFFSET 1
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Default hotend offsets, if not defined
|
||||
*/
|
||||
#if HAS_HOTEND_OFFSET
|
||||
#ifndef HOTEND_OFFSET_X
|
||||
#define HOTEND_OFFSET_X { 0 } // X offsets for each extruder
|
||||
#endif
|
||||
#ifndef HOTEND_OFFSET_Y
|
||||
#define HOTEND_OFFSET_Y { 0 } // Y offsets for each extruder
|
||||
#endif
|
||||
#ifndef HOTEND_OFFSET_Z
|
||||
#define HOTEND_OFFSET_Z { 0 } // Z offsets for each extruder
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/**
|
||||
* DISTINCT_E_FACTORS affects how some E factors are accessed
|
||||
@ -490,6 +540,10 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef NUM_SERVOS
|
||||
#define NUM_SERVOS 0
|
||||
#endif
|
||||
|
||||
#ifndef PREHEAT_1_LABEL
|
||||
#define PREHEAT_1_LABEL "PLA"
|
||||
#endif
|
||||
@ -501,8 +555,12 @@
|
||||
/**
|
||||
* Set a flag for a servo probe (or BLTouch)
|
||||
*/
|
||||
#define HAS_Z_SERVO_PROBE (defined(Z_PROBE_SERVO_NR) && Z_PROBE_SERVO_NR >= 0)
|
||||
#define HAS_SERVO_ANGLES (HAS_Z_SERVO_PROBE || EITHER(SWITCHING_EXTRUDER, SWITCHING_NOZZLE))
|
||||
#if defined(Z_PROBE_SERVO_NR) && Z_PROBE_SERVO_NR >= 0
|
||||
#define HAS_Z_SERVO_PROBE 1
|
||||
#endif
|
||||
#if HAS_Z_SERVO_PROBE || EITHER(SWITCHING_EXTRUDER, SWITCHING_NOZZLE)
|
||||
#define HAS_SERVO_ANGLES 1
|
||||
#endif
|
||||
#if !HAS_SERVO_ANGLES
|
||||
#undef EDITABLE_SERVO_ANGLES
|
||||
#endif
|
||||
@ -510,20 +568,31 @@
|
||||
/**
|
||||
* Set flags for enabled probes
|
||||
*/
|
||||
#define HAS_BED_PROBE (HAS_Z_SERVO_PROBE || ANY(FIX_MOUNTED_PROBE, NOZZLE_AS_PROBE, TOUCH_MI_PROBE, Z_PROBE_ALLEN_KEY, Z_PROBE_SLED, SOLENOID_PROBE, SENSORLESS_PROBING, RACK_AND_PINION_PROBE))
|
||||
#define PROBE_SELECTED (HAS_BED_PROBE || EITHER(PROBE_MANUALLY, MESH_BED_LEVELING))
|
||||
#if ANY(HAS_Z_SERVO_PROBE, FIX_MOUNTED_PROBE, NOZZLE_AS_PROBE, TOUCH_MI_PROBE, Z_PROBE_ALLEN_KEY, Z_PROBE_SLED, SOLENOID_PROBE, SENSORLESS_PROBING, RACK_AND_PINION_PROBE)
|
||||
#define HAS_BED_PROBE 1
|
||||
#endif
|
||||
|
||||
#if HAS_BED_PROBE || EITHER(PROBE_MANUALLY, MESH_BED_LEVELING)
|
||||
#define PROBE_SELECTED 1
|
||||
#endif
|
||||
|
||||
#if HAS_BED_PROBE
|
||||
#define HAS_PROBE_XY_OFFSET DISABLED(NOZZLE_AS_PROBE)
|
||||
#define HAS_CUSTOM_PROBE_PIN DISABLED(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN)
|
||||
#define HOMING_Z_WITH_PROBE (Z_HOME_DIR < 0 && !HAS_CUSTOM_PROBE_PIN)
|
||||
#if DISABLED(NOZZLE_AS_PROBE)
|
||||
#define HAS_PROBE_XY_OFFSET 1
|
||||
#endif
|
||||
#if DISABLED(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN)
|
||||
#define HAS_CUSTOM_PROBE_PIN 1
|
||||
#endif
|
||||
#if Z_HOME_DIR < 0 && !HAS_CUSTOM_PROBE_PIN
|
||||
#define HOMING_Z_WITH_PROBE 1
|
||||
#endif
|
||||
#ifndef Z_PROBE_LOW_POINT
|
||||
#define Z_PROBE_LOW_POINT -5
|
||||
#endif
|
||||
#if ENABLED(Z_PROBE_ALLEN_KEY)
|
||||
#define PROBE_TRIGGERED_WHEN_STOWED_TEST // Extra test for Allen Key Probe
|
||||
#define PROBE_TRIGGERED_WHEN_STOWED_TEST 1 // Extra test for Allen Key Probe
|
||||
#endif
|
||||
#ifdef MULTIPLE_PROBING
|
||||
#if MULTIPLE_PROBING > 1
|
||||
#if EXTRA_PROBING
|
||||
#define TOTAL_PROBING (MULTIPLE_PROBING + EXTRA_PROBING)
|
||||
#else
|
||||
@ -535,26 +604,53 @@
|
||||
#undef Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN
|
||||
#endif
|
||||
|
||||
#ifdef GRID_MAX_POINTS_X
|
||||
#define GRID_MAX_POINTS ((GRID_MAX_POINTS_X) * (GRID_MAX_POINTS_Y))
|
||||
/**
|
||||
* Set granular options based on the specific type of leveling
|
||||
*/
|
||||
#if ENABLED(AUTO_BED_LEVELING_UBL)
|
||||
#undef LCD_BED_LEVELING
|
||||
#if ENABLED(DELTA)
|
||||
#define UBL_SEGMENTED 1
|
||||
#endif
|
||||
#endif
|
||||
#if EITHER(AUTO_BED_LEVELING_LINEAR, AUTO_BED_LEVELING_3POINT)
|
||||
#define ABL_PLANAR 1
|
||||
#endif
|
||||
#if EITHER(AUTO_BED_LEVELING_LINEAR, AUTO_BED_LEVELING_BILINEAR)
|
||||
#define ABL_GRID 1
|
||||
#endif
|
||||
#if ANY(AUTO_BED_LEVELING_LINEAR, AUTO_BED_LEVELING_BILINEAR, AUTO_BED_LEVELING_3POINT)
|
||||
#define HAS_ABL_NOT_UBL 1
|
||||
#endif
|
||||
#if ANY(AUTO_BED_LEVELING_BILINEAR, AUTO_BED_LEVELING_UBL, MESH_BED_LEVELING)
|
||||
#define HAS_MESH 1
|
||||
#endif
|
||||
#if EITHER(AUTO_BED_LEVELING_UBL, AUTO_BED_LEVELING_3POINT)
|
||||
#define NEEDS_THREE_PROBE_POINTS 1
|
||||
#endif
|
||||
#if EITHER(HAS_ABL_NOT_UBL, AUTO_BED_LEVELING_UBL)
|
||||
#define HAS_ABL_OR_UBL 1
|
||||
#if DISABLED(PROBE_MANUALLY)
|
||||
#define HAS_AUTOLEVEL 1
|
||||
#endif
|
||||
#endif
|
||||
#if EITHER(HAS_ABL_OR_UBL, MESH_BED_LEVELING)
|
||||
#define HAS_LEVELING 1
|
||||
#if DISABLED(AUTO_BED_LEVELING_UBL)
|
||||
#define PLANNER_LEVELING 1
|
||||
#endif
|
||||
#endif
|
||||
#if EITHER(HAS_ABL_OR_UBL, Z_MIN_PROBE_REPEATABILITY_TEST)
|
||||
#define HAS_PROBING_PROCEDURE 1
|
||||
#endif
|
||||
#if !HAS_LEVELING
|
||||
#undef RESTORE_LEVELING_AFTER_G28
|
||||
#endif
|
||||
|
||||
#define HAS_EXTRA_ENDSTOPS ANY(X_DUAL_ENDSTOPS, Y_DUAL_ENDSTOPS, Z_MULTI_ENDSTOPS)
|
||||
#define HAS_SOFTWARE_ENDSTOPS EITHER(MIN_SOFTWARE_ENDSTOPS, MAX_SOFTWARE_ENDSTOPS)
|
||||
#define HAS_RESUME_CONTINUE ANY(EXTENSIBLE_UI, NEWPANEL, EMERGENCY_PARSER)
|
||||
#define HAS_COLOR_LEDS ANY(BLINKM, RGB_LED, RGBW_LED, PCA9632, PCA9533, NEOPIXEL_LED)
|
||||
#define HAS_LEDS_OFF_FLAG (BOTH(PRINTER_EVENT_LEDS, SDSUPPORT) && HAS_RESUME_CONTINUE)
|
||||
#define HAS_PRINT_PROGRESS EITHER(SDSUPPORT, LCD_SET_PROGRESS_MANUALLY)
|
||||
#define HAS_PRINT_PROGRESS_PERMYRIAD (HAS_PRINT_PROGRESS && EITHER(PRINT_PROGRESS_SHOW_DECIMALS, SHOW_REMAINING_TIME))
|
||||
#define HAS_SERVICE_INTERVALS (ENABLED(PRINTCOUNTER) && (SERVICE_INTERVAL_1 > 0 || SERVICE_INTERVAL_2 > 0 || SERVICE_INTERVAL_3 > 0))
|
||||
#define HAS_FILAMENT_SENSOR ENABLED(FILAMENT_RUNOUT_SENSOR)
|
||||
|
||||
#define HAS_GAMES ANY(MARLIN_BRICKOUT, MARLIN_INVADERS, MARLIN_SNAKE, MARLIN_MAZE)
|
||||
#define HAS_GAME_MENU (1 < ENABLED(MARLIN_BRICKOUT) + ENABLED(MARLIN_INVADERS) + ENABLED(MARLIN_SNAKE) + ENABLED(MARLIN_MAZE))
|
||||
|
||||
#define IS_SCARA ENABLED(MORGAN_SCARA)
|
||||
#define IS_KINEMATIC (ENABLED(DELTA) || IS_SCARA)
|
||||
#define IS_CARTESIAN !IS_KINEMATIC
|
||||
#ifdef GRID_MAX_POINTS_X
|
||||
#define GRID_MAX_POINTS ((GRID_MAX_POINTS_X) * (GRID_MAX_POINTS_Y))
|
||||
#define GRID_LOOP(A,B) LOOP_L_N(A, GRID_MAX_POINTS_X) LOOP_L_N(B, GRID_MAX_POINTS_Y)
|
||||
#endif
|
||||
|
||||
#ifndef INVERT_X_DIR
|
||||
#define INVERT_X_DIR false
|
||||
@ -573,10 +669,24 @@
|
||||
#define BOOT_MARLIN_LOGO_SMALL
|
||||
#endif
|
||||
|
||||
#define IS_RE_ARM_BOARD MB(RAMPS_14_RE_ARM_EFB, RAMPS_14_RE_ARM_EEB, RAMPS_14_RE_ARM_EFF, RAMPS_14_RE_ARM_EEF, RAMPS_14_RE_ARM_SF)
|
||||
// This flag indicates some kind of jerk storage is needed
|
||||
#if ENABLED(CLASSIC_JERK) || IS_KINEMATIC
|
||||
#define HAS_CLASSIC_JERK 1
|
||||
#endif
|
||||
|
||||
#define HAS_LINEAR_E_JERK (DISABLED(CLASSIC_JERK) && ENABLED(LIN_ADVANCE))
|
||||
// E jerk exists with JD disabled (of course) but also when Linear Advance is disabled on Delta/SCARA
|
||||
#if ENABLED(CLASSIC_JERK) || (IS_KINEMATIC && DISABLED(LIN_ADVANCE))
|
||||
#define HAS_CLASSIC_E_JERK 1
|
||||
#endif
|
||||
|
||||
#ifndef SPI_SPEED
|
||||
#define SPI_SPEED SPI_FULL_SPEED
|
||||
#endif
|
||||
|
||||
/**
|
||||
* This setting is also used by M109 when trying to calculate
|
||||
* a ballpark safe margin to prevent wait-forever situation.
|
||||
*/
|
||||
#ifndef EXTRUDE_MINTEMP
|
||||
#define EXTRUDE_MINTEMP 170
|
||||
#endif
|
||||
|
@ -56,11 +56,66 @@
|
||||
#undef SHOW_TEMP_ADC_VALUES
|
||||
#endif
|
||||
|
||||
#if EITHER(DUAL_X_CARRIAGE, MULTI_NOZZLE_DUPLICATION)
|
||||
#define HAS_DUPLICATION_MODE 1
|
||||
#endif
|
||||
|
||||
#if ENABLED(PRINTCOUNTER) && (SERVICE_INTERVAL_1 > 0 || SERVICE_INTERVAL_2 > 0 || SERVICE_INTERVAL_3 > 0)
|
||||
#define HAS_SERVICE_INTERVALS 1
|
||||
#endif
|
||||
|
||||
#if ENABLED(FILAMENT_RUNOUT_SENSOR)
|
||||
#define HAS_FILAMENT_SENSOR 1
|
||||
#endif
|
||||
|
||||
#if EITHER(SDSUPPORT, LCD_SET_PROGRESS_MANUALLY)
|
||||
#define HAS_PRINT_PROGRESS 1
|
||||
#endif
|
||||
|
||||
#if HAS_PRINT_PROGRESS && EITHER(PRINT_PROGRESS_SHOW_DECIMALS, SHOW_REMAINING_TIME)
|
||||
#define HAS_PRINT_PROGRESS_PERMYRIAD 1
|
||||
#endif
|
||||
|
||||
#if ANY(MARLIN_BRICKOUT, MARLIN_INVADERS, MARLIN_SNAKE, MARLIN_MAZE)
|
||||
#define HAS_GAMES 1
|
||||
#if (1 < ENABLED(MARLIN_BRICKOUT) + ENABLED(MARLIN_INVADERS) + ENABLED(MARLIN_SNAKE) + ENABLED(MARLIN_MAZE))
|
||||
#define HAS_GAME_MENU 1
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if ANY(FWRETRACT, HAS_LEVELING, SKEW_CORRECTION)
|
||||
#define HAS_POSITION_MODIFIERS 1
|
||||
#endif
|
||||
|
||||
#if ANY(X_DUAL_ENDSTOPS, Y_DUAL_ENDSTOPS, Z_MULTI_ENDSTOPS)
|
||||
#define HAS_EXTRA_ENDSTOPS 1
|
||||
#endif
|
||||
#if EITHER(MIN_SOFTWARE_ENDSTOPS, MAX_SOFTWARE_ENDSTOPS)
|
||||
#define HAS_SOFTWARE_ENDSTOPS 1
|
||||
#endif
|
||||
#if ANY(EXTENSIBLE_UI, NEWPANEL, EMERGENCY_PARSER)
|
||||
#define HAS_RESUME_CONTINUE 1
|
||||
#endif
|
||||
|
||||
#if ANY(BLINKM, RGB_LED, RGBW_LED, PCA9632, PCA9533, NEOPIXEL_LED)
|
||||
#define HAS_COLOR_LEDS 1
|
||||
#endif
|
||||
#if ALL(HAS_RESUME_CONTINUE, PRINTER_EVENT_LEDS, SDSUPPORT)
|
||||
#define HAS_LEDS_OFF_FLAG 1
|
||||
#endif
|
||||
|
||||
// Multiple Z steppers
|
||||
#ifndef NUM_Z_STEPPER_DRIVERS
|
||||
#define NUM_Z_STEPPER_DRIVERS 1
|
||||
#endif
|
||||
|
||||
#if ENABLED(Z_STEPPER_ALIGN_KNOWN_STEPPER_POSITIONS)
|
||||
#undef Z_STEPPER_ALIGN_AMP
|
||||
#endif
|
||||
#ifndef Z_STEPPER_ALIGN_AMP
|
||||
#define Z_STEPPER_ALIGN_AMP 1.0
|
||||
#endif
|
||||
|
||||
#define HAS_CUTTER EITHER(SPINDLE_FEATURE, LASER_FEATURE)
|
||||
|
||||
#if !defined(__AVR__) || !defined(USBCON)
|
||||
@ -121,9 +176,6 @@
|
||||
#define LED_CONTROL_MENU
|
||||
#define LED_USER_PRESET_STARTUP
|
||||
#define LED_COLOR_PRESETS
|
||||
#ifndef LED_USER_PRESET_RED
|
||||
#define LED_USER_PRESET_RED 255
|
||||
#endif
|
||||
#ifndef LED_USER_PRESET_GREEN
|
||||
#define LED_USER_PRESET_GREEN 128
|
||||
#endif
|
||||
@ -135,15 +187,106 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Set defaults for unspecified LED user colors
|
||||
#if ENABLED(LED_CONTROL_MENU)
|
||||
#ifndef LED_USER_PRESET_RED
|
||||
#define LED_USER_PRESET_RED 255
|
||||
#endif
|
||||
#ifndef LED_USER_PRESET_GREEN
|
||||
#define LED_USER_PRESET_GREEN 255
|
||||
#endif
|
||||
#ifndef LED_USER_PRESET_BLUE
|
||||
#define LED_USER_PRESET_BLUE 255
|
||||
#endif
|
||||
#ifndef LED_USER_PRESET_WHITE
|
||||
#define LED_USER_PRESET_WHITE 0
|
||||
#endif
|
||||
#ifndef LED_USER_PRESET_BRIGHTNESS
|
||||
#ifdef NEOPIXEL_BRIGHTNESS
|
||||
#define LED_USER_PRESET_BRIGHTNESS NEOPIXEL_BRIGHTNESS
|
||||
#else
|
||||
#define LED_USER_PRESET_BRIGHTNESS 255
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// If platform requires early initialization of watchdog to properly boot
|
||||
#if ENABLED(USE_WATCHDOG) && defined(ARDUINO_ARCH_SAM)
|
||||
#define EARLY_WATCHDOG 1
|
||||
#endif
|
||||
|
||||
// Extensible UI pin mapping for RepRapDiscount
|
||||
#define TOUCH_UI_ULTIPANEL ENABLED(TOUCH_UI_FTDI_EVE) && ANY(AO_EXP1_PINMAP, AO_EXP2_PINMAP, CR10_TFT_PINMAP)
|
||||
#if ENABLED(TOUCH_UI_FTDI_EVE) && ANY(AO_EXP1_PINMAP, AO_EXP2_PINMAP, CR10_TFT_PINMAP)
|
||||
#define TOUCH_UI_ULTIPANEL 1
|
||||
#endif
|
||||
|
||||
// Poll-based jogging for joystick and other devices
|
||||
#if ENABLED(JOYSTICK)
|
||||
#define POLL_JOG
|
||||
#endif
|
||||
|
||||
// G60/G61 Position Save
|
||||
#if SAVED_POSITIONS > 256
|
||||
#error "SAVED_POSITIONS must be an integer from 0 to 256."
|
||||
/**
|
||||
* Driver Timings
|
||||
* NOTE: Driver timing order is longest-to-shortest duration.
|
||||
* Preserve this ordering when adding new drivers.
|
||||
*/
|
||||
|
||||
#ifndef MINIMUM_STEPPER_POST_DIR_DELAY
|
||||
#if HAS_DRIVER(TB6560)
|
||||
#define MINIMUM_STEPPER_POST_DIR_DELAY 15000
|
||||
#elif HAS_DRIVER(TB6600)
|
||||
#define MINIMUM_STEPPER_POST_DIR_DELAY 1500
|
||||
#elif HAS_DRIVER(DRV8825)
|
||||
#define MINIMUM_STEPPER_POST_DIR_DELAY 650
|
||||
#elif HAS_DRIVER(LV8729)
|
||||
#define MINIMUM_STEPPER_POST_DIR_DELAY 500
|
||||
#elif HAS_DRIVER(A5984)
|
||||
#define MINIMUM_STEPPER_POST_DIR_DELAY 400
|
||||
#elif HAS_DRIVER(A4988)
|
||||
#define MINIMUM_STEPPER_POST_DIR_DELAY 200
|
||||
#elif HAS_TRINAMIC_CONFIG || HAS_TRINAMIC_STANDALONE
|
||||
#define MINIMUM_STEPPER_POST_DIR_DELAY 20
|
||||
#else
|
||||
#define MINIMUM_STEPPER_POST_DIR_DELAY 0 // Expect at least 10µS since one Stepper ISR must transpire
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef MINIMUM_STEPPER_PRE_DIR_DELAY
|
||||
#define MINIMUM_STEPPER_PRE_DIR_DELAY MINIMUM_STEPPER_POST_DIR_DELAY
|
||||
#endif
|
||||
|
||||
#ifndef MINIMUM_STEPPER_PULSE
|
||||
#if HAS_DRIVER(TB6560)
|
||||
#define MINIMUM_STEPPER_PULSE 30
|
||||
#elif HAS_DRIVER(TB6600)
|
||||
#define MINIMUM_STEPPER_PULSE 3
|
||||
#elif HAS_DRIVER(DRV8825)
|
||||
#define MINIMUM_STEPPER_PULSE 2
|
||||
#elif HAS_DRIVER(A4988) || HAS_DRIVER(A5984)
|
||||
#define MINIMUM_STEPPER_PULSE 1
|
||||
#elif HAS_TRINAMIC_CONFIG || HAS_TRINAMIC_STANDALONE
|
||||
#define MINIMUM_STEPPER_PULSE 0
|
||||
#elif HAS_DRIVER(LV8729)
|
||||
#define MINIMUM_STEPPER_PULSE 0
|
||||
#else
|
||||
#define MINIMUM_STEPPER_PULSE 2
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef MAXIMUM_STEPPER_RATE
|
||||
#if HAS_DRIVER(TB6560)
|
||||
#define MAXIMUM_STEPPER_RATE 15000
|
||||
#elif HAS_DRIVER(TB6600)
|
||||
#define MAXIMUM_STEPPER_RATE 150000
|
||||
#elif HAS_DRIVER(DRV8825)
|
||||
#define MAXIMUM_STEPPER_RATE 250000
|
||||
#elif HAS_DRIVER(A4988)
|
||||
#define MAXIMUM_STEPPER_RATE 500000
|
||||
#elif HAS_DRIVER(LV8729)
|
||||
#define MAXIMUM_STEPPER_RATE 1000000
|
||||
#elif HAS_TRINAMIC_CONFIG || HAS_TRINAMIC_STANDALONE
|
||||
#define MAXIMUM_STEPPER_RATE 5000000
|
||||
#else
|
||||
#define MAXIMUM_STEPPER_RATE 250000
|
||||
#endif
|
||||
#endif
|
||||
|
@ -30,6 +30,28 @@
|
||||
// Extras for CI testing
|
||||
#endif
|
||||
|
||||
// Linear advance uses Jerk since E is an isolated axis
|
||||
#if DISABLED(CLASSIC_JERK) && ENABLED(LIN_ADVANCE)
|
||||
#define HAS_LINEAR_E_JERK 1
|
||||
#endif
|
||||
|
||||
#if ENABLED(EEPROM_SETTINGS)
|
||||
#if NONE(FLASH_EEPROM_EMULATION, SRAM_EEPROM_EMULATION, SDCARD_EEPROM_EMULATION) && EITHER(I2C_EEPROM, SPI_EEPROM)
|
||||
#define USE_REAL_EEPROM 1
|
||||
#else
|
||||
#define USE_EMULATED_EEPROM 1
|
||||
#endif
|
||||
#if NONE(USE_REAL_EEPROM, FLASH_EEPROM_EMULATION, SRAM_EEPROM_EMULATION)
|
||||
#define SDCARD_EEPROM_EMULATION 1
|
||||
#endif
|
||||
#else
|
||||
#undef I2C_EEPROM
|
||||
#undef SPI_EEPROM
|
||||
#undef SDCARD_EEPROM_EMULATION
|
||||
#undef SRAM_EEPROM_EMULATION
|
||||
#undef FLASH_EEPROM_EMULATION
|
||||
#endif
|
||||
|
||||
#ifdef TEENSYDUINO
|
||||
#undef max
|
||||
#define max(a,b) ((a)>(b)?(a):(b))
|
||||
@ -40,9 +62,6 @@
|
||||
#define NOT_A_PIN 0 // For PINS_DEBUGGING
|
||||
#endif
|
||||
|
||||
#define HAS_CLASSIC_JERK (ENABLED(CLASSIC_JERK) || IS_KINEMATIC)
|
||||
#define HAS_CLASSIC_E_JERK (ENABLED(CLASSIC_JERK) || DISABLED(LIN_ADVANCE))
|
||||
|
||||
/**
|
||||
* Axis lengths and center
|
||||
*/
|
||||
@ -66,13 +85,8 @@
|
||||
// Define center values for future use
|
||||
#define _X_HALF_BED ((X_BED_SIZE) / 2)
|
||||
#define _Y_HALF_BED ((Y_BED_SIZE) / 2)
|
||||
#if ENABLED(BED_CENTER_AT_0_0)
|
||||
#define X_CENTER 0
|
||||
#define Y_CENTER 0
|
||||
#else
|
||||
#define X_CENTER _X_HALF_BED
|
||||
#define Y_CENTER _Y_HALF_BED
|
||||
#endif
|
||||
#define X_CENTER TERN(BED_CENTER_AT_0_0, 0, _X_HALF_BED)
|
||||
#define Y_CENTER TERN(BED_CENTER_AT_0_0, 0, _Y_HALF_BED)
|
||||
|
||||
// Get the linear boundaries of the bed
|
||||
#define X_MIN_BED (X_CENTER - _X_HALF_BED)
|
||||
@ -95,10 +109,18 @@
|
||||
/**
|
||||
* CoreXY, CoreXZ, and CoreYZ - and their reverse
|
||||
*/
|
||||
#define CORE_IS_XY EITHER(COREXY, COREYX)
|
||||
#define CORE_IS_XZ EITHER(COREXZ, COREZX)
|
||||
#define CORE_IS_YZ EITHER(COREYZ, COREZY)
|
||||
#define IS_CORE (CORE_IS_XY || CORE_IS_XZ || CORE_IS_YZ)
|
||||
#if EITHER(COREXY, COREYX)
|
||||
#define CORE_IS_XY 1
|
||||
#endif
|
||||
#if EITHER(COREXZ, COREZX)
|
||||
#define CORE_IS_XZ 1
|
||||
#endif
|
||||
#if EITHER(COREYZ, COREZY)
|
||||
#define CORE_IS_YZ 1
|
||||
#endif
|
||||
#if CORE_IS_XY || CORE_IS_XZ || CORE_IS_YZ
|
||||
#define IS_CORE 1
|
||||
#endif
|
||||
#if IS_CORE
|
||||
#if CORE_IS_XY
|
||||
#define CORE_AXIS_1 A_AXIS
|
||||
@ -113,11 +135,7 @@
|
||||
#define CORE_AXIS_1 B_AXIS
|
||||
#define CORE_AXIS_2 C_AXIS
|
||||
#endif
|
||||
#if ANY(COREYX, COREZX, COREZY)
|
||||
#define CORESIGN(n) (-(n))
|
||||
#else
|
||||
#define CORESIGN(n) (n)
|
||||
#endif
|
||||
#define CORESIGN(n) (ANY(COREYX, COREZX, COREZY) ? (-(n)) : (n))
|
||||
#endif
|
||||
|
||||
/**
|
||||
@ -142,33 +160,23 @@
|
||||
*/
|
||||
#ifdef MANUAL_X_HOME_POS
|
||||
#define X_HOME_POS MANUAL_X_HOME_POS
|
||||
#elif ENABLED(BED_CENTER_AT_0_0)
|
||||
#if ENABLED(DELTA)
|
||||
#define X_HOME_POS 0
|
||||
#else
|
||||
#define X_HOME_POS (X_HOME_DIR < 0 ? X_MIN_POS : X_MAX_POS)
|
||||
#endif
|
||||
#else
|
||||
#if ENABLED(DELTA)
|
||||
#define X_HOME_POS (X_MIN_POS + (X_BED_SIZE) * 0.5)
|
||||
#define X_END_POS (X_HOME_DIR < 0 ? X_MIN_POS : X_MAX_POS)
|
||||
#if ENABLED(BED_CENTER_AT_0_0)
|
||||
#define X_HOME_POS TERN(DELTA, 0, X_END_POS)
|
||||
#else
|
||||
#define X_HOME_POS (X_HOME_DIR < 0 ? X_MIN_POS : X_MAX_POS)
|
||||
#define X_HOME_POS TERN(DELTA, X_MIN_POS + (X_BED_SIZE) * 0.5, X_END_POS)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef MANUAL_Y_HOME_POS
|
||||
#define Y_HOME_POS MANUAL_Y_HOME_POS
|
||||
#elif ENABLED(BED_CENTER_AT_0_0)
|
||||
#if ENABLED(DELTA)
|
||||
#define Y_HOME_POS 0
|
||||
#else
|
||||
#define Y_HOME_POS (Y_HOME_DIR < 0 ? Y_MIN_POS : Y_MAX_POS)
|
||||
#endif
|
||||
#else
|
||||
#if ENABLED(DELTA)
|
||||
#define Y_HOME_POS (Y_MIN_POS + (Y_BED_SIZE) * 0.5)
|
||||
#define Y_END_POS (Y_HOME_DIR < 0 ? Y_MIN_POS : Y_MAX_POS)
|
||||
#if ENABLED(BED_CENTER_AT_0_0)
|
||||
#define Y_HOME_POS TERN(DELTA, 0, Y_END_POS)
|
||||
#else
|
||||
#define Y_HOME_POS (Y_HOME_DIR < 0 ? Y_MIN_POS : Y_MAX_POS)
|
||||
#define Y_HOME_POS TERN(DELTA, Y_MIN_POS + (Y_BED_SIZE) * 0.5, Y_END_POS)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@ -271,7 +279,10 @@
|
||||
#define _LCD_CONTRAST_INIT 17
|
||||
#endif
|
||||
|
||||
#define HAS_LCD_CONTRAST defined(_LCD_CONTRAST_INIT)
|
||||
#ifdef _LCD_CONTRAST_INIT
|
||||
#define HAS_LCD_CONTRAST 1
|
||||
#endif
|
||||
|
||||
#if HAS_LCD_CONTRAST
|
||||
#ifndef LCD_CONTRAST_MIN
|
||||
#ifdef _LCD_CONTRAST_MIN
|
||||
@ -298,10 +309,18 @@
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Override here because this is set in Configuration_adv.h
|
||||
* Override the SD_DETECT_STATE set in Configuration_adv.h
|
||||
*/
|
||||
#if HAS_LCD_MENU && DISABLED(ELB_FULL_GRAPHIC_CONTROLLER) && !(defined(ARDUINO_GRAND_CENTRAL_M4) && SD_CONNECTION_IS(ONBOARD))
|
||||
#undef SD_DETECT_INVERTED
|
||||
#if ENABLED(SDSUPPORT)
|
||||
#if HAS_LCD_MENU && (SD_CONNECTION_IS(LCD) || !defined(SDCARD_CONNECTION))
|
||||
#undef SD_DETECT_STATE
|
||||
#if ENABLED(ELB_FULL_GRAPHIC_CONTROLLER)
|
||||
#define SD_DETECT_STATE HIGH
|
||||
#endif
|
||||
#endif
|
||||
#ifndef SD_DETECT_STATE
|
||||
#define SD_DETECT_STATE LOW
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/**
|
||||
@ -579,99 +598,6 @@
|
||||
HEATER_0_USES_THERMISTOR, HEATER_1_USES_THERMISTOR, HEATER_2_USES_THERMISTOR, HEATER_3_USES_THERMISTOR, \
|
||||
HEATER_4_USES_THERMISTOR, HEATER_5_USES_THERMISTOR, HEATER_6_USES_THERMISTOR, HEATER_7_USES_THERMISTOR )
|
||||
|
||||
/**
|
||||
* Default hotend offsets, if not defined
|
||||
*/
|
||||
#if HAS_HOTEND_OFFSET
|
||||
#ifndef HOTEND_OFFSET_X
|
||||
#define HOTEND_OFFSET_X { 0 } // X offsets for each extruder
|
||||
#endif
|
||||
#ifndef HOTEND_OFFSET_Y
|
||||
#define HOTEND_OFFSET_Y { 0 } // Y offsets for each extruder
|
||||
#endif
|
||||
#ifndef HOTEND_OFFSET_Z
|
||||
#define HOTEND_OFFSET_Z { 0 } // Z offsets for each extruder
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/**
|
||||
* ARRAY_BY_EXTRUDERS based on EXTRUDERS
|
||||
*/
|
||||
#define ARRAY_BY_EXTRUDERS(V...) ARRAY_N(EXTRUDERS, V)
|
||||
#define ARRAY_BY_EXTRUDERS1(v1) ARRAY_BY_EXTRUDERS(v1, v1, v1, v1, v1, v1)
|
||||
|
||||
/**
|
||||
* ARRAY_BY_HOTENDS based on HOTENDS
|
||||
*/
|
||||
#define ARRAY_BY_HOTENDS(V...) ARRAY_N(HOTENDS, V)
|
||||
#define ARRAY_BY_HOTENDS1(v1) ARRAY_BY_HOTENDS(v1, v1, v1, v1, v1, v1)
|
||||
|
||||
/**
|
||||
* Driver Timings
|
||||
* NOTE: Driver timing order is longest-to-shortest duration.
|
||||
* Preserve this ordering when adding new drivers.
|
||||
*/
|
||||
|
||||
#ifndef MINIMUM_STEPPER_POST_DIR_DELAY
|
||||
#if HAS_DRIVER(TB6560)
|
||||
#define MINIMUM_STEPPER_POST_DIR_DELAY 15000
|
||||
#elif HAS_DRIVER(TB6600)
|
||||
#define MINIMUM_STEPPER_POST_DIR_DELAY 1500
|
||||
#elif HAS_DRIVER(DRV8825)
|
||||
#define MINIMUM_STEPPER_POST_DIR_DELAY 650
|
||||
#elif HAS_DRIVER(LV8729)
|
||||
#define MINIMUM_STEPPER_POST_DIR_DELAY 500
|
||||
#elif HAS_DRIVER(A5984)
|
||||
#define MINIMUM_STEPPER_POST_DIR_DELAY 400
|
||||
#elif HAS_DRIVER(A4988)
|
||||
#define MINIMUM_STEPPER_POST_DIR_DELAY 200
|
||||
#elif HAS_TRINAMIC || HAS_TRINAMIC_STANDALONE
|
||||
#define MINIMUM_STEPPER_POST_DIR_DELAY 20
|
||||
#else
|
||||
#define MINIMUM_STEPPER_POST_DIR_DELAY 0 // Expect at least 10µS since one Stepper ISR must transpire
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef MINIMUM_STEPPER_PRE_DIR_DELAY
|
||||
#define MINIMUM_STEPPER_PRE_DIR_DELAY MINIMUM_STEPPER_POST_DIR_DELAY
|
||||
#endif
|
||||
|
||||
#ifndef MINIMUM_STEPPER_PULSE
|
||||
#if HAS_DRIVER(TB6560)
|
||||
#define MINIMUM_STEPPER_PULSE 30
|
||||
#elif HAS_DRIVER(TB6600)
|
||||
#define MINIMUM_STEPPER_PULSE 3
|
||||
#elif HAS_DRIVER(DRV8825)
|
||||
#define MINIMUM_STEPPER_PULSE 2
|
||||
#elif HAS_DRIVER(A4988) || HAS_DRIVER(A5984)
|
||||
#define MINIMUM_STEPPER_PULSE 1
|
||||
#elif HAS_TRINAMIC || HAS_TRINAMIC_STANDALONE
|
||||
#define MINIMUM_STEPPER_PULSE 0
|
||||
#elif HAS_DRIVER(LV8729)
|
||||
#define MINIMUM_STEPPER_PULSE 0
|
||||
#else
|
||||
#define MINIMUM_STEPPER_PULSE 2
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef MAXIMUM_STEPPER_RATE
|
||||
#if HAS_DRIVER(TB6560)
|
||||
#define MAXIMUM_STEPPER_RATE 15000
|
||||
#elif HAS_DRIVER(TB6600)
|
||||
#define MAXIMUM_STEPPER_RATE 150000
|
||||
#elif HAS_DRIVER(DRV8825)
|
||||
#define MAXIMUM_STEPPER_RATE 250000
|
||||
#elif HAS_DRIVER(A4988)
|
||||
#define MAXIMUM_STEPPER_RATE 500000
|
||||
#elif HAS_DRIVER(LV8729)
|
||||
#define MAXIMUM_STEPPER_RATE 1000000
|
||||
#elif HAS_TRINAMIC || HAS_TRINAMIC_STANDALONE
|
||||
#define MAXIMUM_STEPPER_RATE 5000000
|
||||
#else
|
||||
#define MAXIMUM_STEPPER_RATE 250000
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/**
|
||||
* X_DUAL_ENDSTOPS endstop reassignment
|
||||
*/
|
||||
@ -1386,21 +1312,41 @@
|
||||
#define HAS_SOLENOID_7 (PIN_EXISTS(SOL7))
|
||||
|
||||
// Trinamic Stepper Drivers
|
||||
#if HAS_TRINAMIC
|
||||
#define STEALTHCHOP_ENABLED ANY(STEALTHCHOP_XY, STEALTHCHOP_Z, STEALTHCHOP_E)
|
||||
#define USE_SENSORLESS EITHER(SENSORLESS_HOMING, SENSORLESS_PROBING)
|
||||
#if HAS_TRINAMIC_CONFIG
|
||||
#if ANY(STEALTHCHOP_XY, STEALTHCHOP_Z, STEALTHCHOP_E)
|
||||
#define STEALTHCHOP_ENABLED 1
|
||||
#endif
|
||||
#if EITHER(SENSORLESS_HOMING, SENSORLESS_PROBING)
|
||||
#define USE_SENSORLESS 1
|
||||
#endif
|
||||
// Disable Z axis sensorless homing if a probe is used to home the Z axis
|
||||
#if HOMING_Z_WITH_PROBE
|
||||
#undef Z_STALL_SENSITIVITY
|
||||
#endif
|
||||
#define X_SENSORLESS (AXIS_HAS_STALLGUARD(X) && defined(X_STALL_SENSITIVITY))
|
||||
#define X2_SENSORLESS (AXIS_HAS_STALLGUARD(X2) && defined(X2_STALL_SENSITIVITY))
|
||||
#define Y_SENSORLESS (AXIS_HAS_STALLGUARD(Y) && defined(Y_STALL_SENSITIVITY))
|
||||
#define Y2_SENSORLESS (AXIS_HAS_STALLGUARD(Y2) && defined(Y2_STALL_SENSITIVITY))
|
||||
#define Z_SENSORLESS (AXIS_HAS_STALLGUARD(Z) && defined(Z_STALL_SENSITIVITY))
|
||||
#define Z2_SENSORLESS (AXIS_HAS_STALLGUARD(Z2) && defined(Z2_STALL_SENSITIVITY))
|
||||
#define Z3_SENSORLESS (AXIS_HAS_STALLGUARD(Z3) && defined(Z3_STALL_SENSITIVITY))
|
||||
#define Z4_SENSORLESS (AXIS_HAS_STALLGUARD(Z4) && defined(Z4_STALL_SENSITIVITY))
|
||||
#if defined(X_STALL_SENSITIVITY) && AXIS_HAS_STALLGUARD(X)
|
||||
#define X_SENSORLESS 1
|
||||
#endif
|
||||
#if defined(X2_STALL_SENSITIVITY) && AXIS_HAS_STALLGUARD(X2)
|
||||
#define X2_SENSORLESS 1
|
||||
#endif
|
||||
#if defined(Y_STALL_SENSITIVITY) && AXIS_HAS_STALLGUARD(Y)
|
||||
#define Y_SENSORLESS 1
|
||||
#endif
|
||||
#if defined(Y2_STALL_SENSITIVITY) && AXIS_HAS_STALLGUARD(Y2)
|
||||
#define Y2_SENSORLESS 1
|
||||
#endif
|
||||
#if defined(Z_STALL_SENSITIVITY) && AXIS_HAS_STALLGUARD(Z)
|
||||
#define Z_SENSORLESS 1
|
||||
#endif
|
||||
#if defined(Z2_STALL_SENSITIVITY) && AXIS_HAS_STALLGUARD(Z2)
|
||||
#define Z2_SENSORLESS 1
|
||||
#endif
|
||||
#if defined(Z3_STALL_SENSITIVITY) && AXIS_HAS_STALLGUARD(Z3)
|
||||
#define Z3_SENSORLESS 1
|
||||
#endif
|
||||
#if defined(Z4_STALL_SENSITIVITY) && AXIS_HAS_STALLGUARD(Z4)
|
||||
#define Z4_SENSORLESS 1
|
||||
#endif
|
||||
#if ENABLED(SPI_ENDSTOPS)
|
||||
#define X_SPI_SENSORLESS X_SENSORLESS
|
||||
#define Y_SPI_SENSORLESS Y_SENSORLESS
|
||||
@ -1484,23 +1430,48 @@
|
||||
#define HAS_HEATER_BED (PIN_EXISTS(HEATER_BED))
|
||||
|
||||
// Shorthand for common combinations
|
||||
#define HAS_HEATED_BED (HAS_TEMP_BED && HAS_HEATER_BED)
|
||||
#define BED_OR_CHAMBER (HAS_HEATED_BED || HAS_TEMP_CHAMBER)
|
||||
#define HAS_TEMP_SENSOR (HAS_TEMP_HOTEND || BED_OR_CHAMBER || HAS_TEMP_PROBE)
|
||||
#define HAS_HEATED_CHAMBER (HAS_TEMP_CHAMBER && PIN_EXISTS(HEATER_CHAMBER))
|
||||
#if HAS_TEMP_BED && HAS_HEATER_BED
|
||||
#define HAS_HEATED_BED 1
|
||||
#endif
|
||||
#if HAS_HEATED_BED || HAS_TEMP_CHAMBER
|
||||
#define BED_OR_CHAMBER 1
|
||||
#endif
|
||||
#if HAS_TEMP_HOTEND || BED_OR_CHAMBER || HAS_TEMP_PROBE
|
||||
#define HAS_TEMP_SENSOR 1
|
||||
#endif
|
||||
#if HAS_TEMP_CHAMBER && PIN_EXISTS(HEATER_CHAMBER)
|
||||
#define HAS_HEATED_CHAMBER 1
|
||||
#endif
|
||||
|
||||
// PID heating
|
||||
#if !HAS_HEATED_BED
|
||||
#undef PIDTEMPBED
|
||||
#endif
|
||||
#define HAS_PID_HEATING EITHER(PIDTEMP, PIDTEMPBED)
|
||||
#define HAS_PID_FOR_BOTH BOTH(PIDTEMP, PIDTEMPBED)
|
||||
#if EITHER(PIDTEMP, PIDTEMPBED)
|
||||
#define HAS_PID_HEATING 1
|
||||
#endif
|
||||
#if BOTH(PIDTEMP, PIDTEMPBED)
|
||||
#define HAS_PID_FOR_BOTH 1
|
||||
#endif
|
||||
|
||||
// Thermal protection
|
||||
#define HAS_THERMALLY_PROTECTED_BED (HAS_HEATED_BED && ENABLED(THERMAL_PROTECTION_BED))
|
||||
#define WATCH_HOTENDS (ENABLED(THERMAL_PROTECTION_HOTENDS) && WATCH_TEMP_PERIOD > 0)
|
||||
#define WATCH_BED (HAS_THERMALLY_PROTECTED_BED && WATCH_BED_TEMP_PERIOD > 0)
|
||||
#define WATCH_CHAMBER (HAS_HEATED_CHAMBER && ENABLED(THERMAL_PROTECTION_CHAMBER) && WATCH_CHAMBER_TEMP_PERIOD > 0)
|
||||
#if HAS_HEATED_BED && ENABLED(THERMAL_PROTECTION_BED)
|
||||
#define HAS_THERMALLY_PROTECTED_BED 1
|
||||
#endif
|
||||
#if ENABLED(THERMAL_PROTECTION_HOTENDS) && WATCH_TEMP_PERIOD > 0
|
||||
#define WATCH_HOTENDS 1
|
||||
#endif
|
||||
#if HAS_THERMALLY_PROTECTED_BED && WATCH_BED_TEMP_PERIOD > 0
|
||||
#define WATCH_BED 1
|
||||
#endif
|
||||
#if HAS_HEATED_CHAMBER && ENABLED(THERMAL_PROTECTION_CHAMBER) && WATCH_CHAMBER_TEMP_PERIOD > 0
|
||||
#define WATCH_CHAMBER 1
|
||||
#endif
|
||||
#if (ENABLED(THERMAL_PROTECTION_HOTENDS) || !EXTRUDERS) \
|
||||
&& (ENABLED(THERMAL_PROTECTION_BED) || !HAS_HEATED_BED) \
|
||||
&& (ENABLED(THERMAL_PROTECTION_CHAMBER) || !HAS_HEATED_CHAMBER)
|
||||
#define THERMALLY_SAFE 1
|
||||
#endif
|
||||
|
||||
// Auto fans
|
||||
#define HAS_AUTO_FAN_0 (HOTENDS > 0 && PIN_EXISTS(E0_AUTO_FAN))
|
||||
@ -1522,6 +1493,7 @@
|
||||
#if !HAS_TEMP_SENSOR
|
||||
#undef AUTO_REPORT_TEMPERATURES
|
||||
#endif
|
||||
#define HAS_AUTO_REPORTING EITHER(AUTO_REPORT_TEMPERATURES, AUTO_REPORT_SD_STATUS)
|
||||
|
||||
#if !HAS_AUTO_CHAMBER_FAN || AUTO_CHAMBER_IS_E
|
||||
#undef AUTO_POWER_CHAMBER_FAN
|
||||
@ -1550,22 +1522,48 @@
|
||||
#define HAS_FILAMENT_WIDTH_SENSOR (PIN_EXISTS(FILWIDTH))
|
||||
|
||||
// User Interface
|
||||
#define HAS_HOME (PIN_EXISTS(HOME))
|
||||
#define HAS_KILL (PIN_EXISTS(KILL))
|
||||
#define HAS_SUICIDE (PIN_EXISTS(SUICIDE))
|
||||
#define HAS_PHOTOGRAPH (PIN_EXISTS(PHOTOGRAPH))
|
||||
#define HAS_BUZZER (PIN_EXISTS(BEEPER) || EITHER(LCD_USE_I2C_BUZZER, PCA9632_BUZZER))
|
||||
#define USE_BEEPER (HAS_BUZZER && DISABLED(LCD_USE_I2C_BUZZER, PCA9632_BUZZER))
|
||||
#define HAS_CASE_LIGHT (PIN_EXISTS(CASE_LIGHT) && ENABLED(CASE_LIGHT_ENABLE))
|
||||
#if PIN_EXISTS(HOME)
|
||||
#define HAS_HOME 1
|
||||
#endif
|
||||
#if PIN_EXISTS(KILL)
|
||||
#define HAS_KILL 1
|
||||
#endif
|
||||
#if PIN_EXISTS(SUICIDE)
|
||||
#define HAS_SUICIDE 1
|
||||
#endif
|
||||
#if PIN_EXISTS(PHOTOGRAPH)
|
||||
#define HAS_PHOTOGRAPH 1
|
||||
#endif
|
||||
#if PIN_EXISTS(BEEPER) || EITHER(LCD_USE_I2C_BUZZER, PCA9632_BUZZER)
|
||||
#define HAS_BUZZER 1
|
||||
#endif
|
||||
#if HAS_BUZZER && DISABLED(LCD_USE_I2C_BUZZER, PCA9632_BUZZER)
|
||||
#define USE_BEEPER 1
|
||||
#endif
|
||||
#if PIN_EXISTS(CASE_LIGHT) && ENABLED(CASE_LIGHT_ENABLE)
|
||||
#define HAS_CASE_LIGHT 1
|
||||
#endif
|
||||
|
||||
// Digital control
|
||||
#define HAS_STEPPER_RESET (PIN_EXISTS(STEPPER_RESET))
|
||||
#define HAS_DIGIPOTSS (PIN_EXISTS(DIGIPOTSS))
|
||||
#define HAS_MOTOR_CURRENT_PWM ANY_PIN(MOTOR_CURRENT_PWM_X, MOTOR_CURRENT_PWM_Y, MOTOR_CURRENT_PWM_XY, MOTOR_CURRENT_PWM_Z, MOTOR_CURRENT_PWM_E)
|
||||
#if PIN_EXISTS(STEPPER_RESET)
|
||||
#define HAS_STEPPER_RESET 1
|
||||
#endif
|
||||
#if PIN_EXISTS(DIGIPOTSS)
|
||||
#define HAS_DIGIPOTSS 1
|
||||
#endif
|
||||
#if ANY_PIN(MOTOR_CURRENT_PWM_X, MOTOR_CURRENT_PWM_Y, MOTOR_CURRENT_PWM_XY, MOTOR_CURRENT_PWM_Z, MOTOR_CURRENT_PWM_E)
|
||||
#define HAS_MOTOR_CURRENT_PWM 1
|
||||
#endif
|
||||
|
||||
#define HAS_SOME_Z_MICROSTEPS (HAS_Z_MICROSTEPS || HAS_Z2_MICROSTEPS || HAS_Z3_MICROSTEPS || HAS_Z4_MICROSTEPS)
|
||||
#define HAS_SOME_E_MICROSTEPS (HAS_E0_MICROSTEPS || HAS_E1_MICROSTEPS || HAS_E2_MICROSTEPS || HAS_E3_MICROSTEPS || HAS_E4_MICROSTEPS || HAS_E5_MICROSTEPS || HAS_E6_MICROSTEPS || HAS_E7_MICROSTEPS)
|
||||
#define HAS_MICROSTEPS (HAS_X_MICROSTEPS || HAS_X2_MICROSTEPS || HAS_Y_MICROSTEPS || HAS_Y2_MICROSTEPS || HAS_SOME_Z_MICROSTEPS || HAS_SOME_E_MICROSTEPS)
|
||||
#if HAS_Z_MICROSTEPS || HAS_Z2_MICROSTEPS || HAS_Z3_MICROSTEPS || HAS_Z4_MICROSTEPS
|
||||
#define HAS_SOME_Z_MICROSTEPS 1
|
||||
#endif
|
||||
#if HAS_E0_MICROSTEPS || HAS_E1_MICROSTEPS || HAS_E2_MICROSTEPS || HAS_E3_MICROSTEPS || HAS_E4_MICROSTEPS || HAS_E5_MICROSTEPS || HAS_E6_MICROSTEPS || HAS_E7_MICROSTEPS
|
||||
#define HAS_SOME_E_MICROSTEPS 1
|
||||
#endif
|
||||
#if HAS_X_MICROSTEPS || HAS_X2_MICROSTEPS || HAS_Y_MICROSTEPS || HAS_Y2_MICROSTEPS || HAS_SOME_Z_MICROSTEPS || HAS_SOME_E_MICROSTEPS
|
||||
#define HAS_MICROSTEPS 1
|
||||
#endif
|
||||
|
||||
#if HAS_MICROSTEPS
|
||||
|
||||
@ -1618,20 +1616,6 @@
|
||||
|
||||
#endif // HAS_MICROSTEPS
|
||||
|
||||
#if !HAS_TEMP_SENSOR
|
||||
#undef AUTO_REPORT_TEMPERATURES
|
||||
#endif
|
||||
|
||||
#define HAS_AUTO_REPORTING EITHER(AUTO_REPORT_TEMPERATURES, AUTO_REPORT_SD_STATUS)
|
||||
|
||||
/**
|
||||
* This setting is also used by M109 when trying to calculate
|
||||
* a ballpark safe margin to prevent wait-forever situation.
|
||||
*/
|
||||
#ifndef EXTRUDE_MINTEMP
|
||||
#define EXTRUDE_MINTEMP 170
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Heater signal inversion defaults
|
||||
*/
|
||||
@ -1870,26 +1854,6 @@
|
||||
#endif
|
||||
#endif // SKEW_CORRECTION
|
||||
|
||||
/**
|
||||
* Set granular options based on the specific type of leveling
|
||||
*/
|
||||
#define UBL_SEGMENTED BOTH(AUTO_BED_LEVELING_UBL, DELTA)
|
||||
#define ABL_PLANAR EITHER(AUTO_BED_LEVELING_LINEAR, AUTO_BED_LEVELING_3POINT)
|
||||
#define ABL_GRID EITHER(AUTO_BED_LEVELING_LINEAR, AUTO_BED_LEVELING_BILINEAR)
|
||||
#define HAS_ABL_NOT_UBL (ABL_PLANAR || ABL_GRID)
|
||||
#define HAS_ABL_OR_UBL (HAS_ABL_NOT_UBL || ENABLED(AUTO_BED_LEVELING_UBL))
|
||||
#define HAS_LEVELING (HAS_ABL_OR_UBL || ENABLED(MESH_BED_LEVELING))
|
||||
#define HAS_AUTOLEVEL (HAS_ABL_OR_UBL && DISABLED(PROBE_MANUALLY))
|
||||
#define HAS_MESH ANY(AUTO_BED_LEVELING_BILINEAR, AUTO_BED_LEVELING_UBL, MESH_BED_LEVELING)
|
||||
#define PLANNER_LEVELING (HAS_LEVELING && DISABLED(AUTO_BED_LEVELING_UBL))
|
||||
#define HAS_PROBING_PROCEDURE (HAS_ABL_OR_UBL || ENABLED(Z_MIN_PROBE_REPEATABILITY_TEST))
|
||||
#define HAS_POSITION_MODIFIERS (ENABLED(FWRETRACT) || HAS_LEVELING || ENABLED(SKEW_CORRECTION))
|
||||
#define NEEDS_THREE_PROBE_POINTS EITHER(AUTO_BED_LEVELING_UBL, AUTO_BED_LEVELING_3POINT)
|
||||
|
||||
#if ENABLED(AUTO_BED_LEVELING_UBL)
|
||||
#undef LCD_BED_LEVELING
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Heater, Fan, and Probe interactions
|
||||
*/
|
||||
@ -2014,8 +1978,8 @@
|
||||
#undef MESH_MAX_Y
|
||||
#endif
|
||||
|
||||
#if (defined(PROBE_PT_1_X) && defined(PROBE_PT_2_X) && defined(PROBE_PT_3_X) && defined(PROBE_PT_1_Y) && defined(PROBE_PT_2_Y) && defined(PROBE_PT_3_Y))
|
||||
#define HAS_FIXED_3POINT
|
||||
#if defined(PROBE_PT_1_X) && defined(PROBE_PT_2_X) && defined(PROBE_PT_3_X) && defined(PROBE_PT_1_Y) && defined(PROBE_PT_2_Y) && defined(PROBE_PT_3_Y)
|
||||
#define HAS_FIXED_3POINT 1
|
||||
#endif
|
||||
|
||||
/**
|
||||
@ -2053,10 +2017,10 @@
|
||||
* Z_HOMING_HEIGHT / Z_CLEARANCE_BETWEEN_PROBES
|
||||
*/
|
||||
#ifndef Z_HOMING_HEIGHT
|
||||
#ifndef Z_CLEARANCE_BETWEEN_PROBES
|
||||
#define Z_HOMING_HEIGHT 0
|
||||
#else
|
||||
#ifdef Z_CLEARANCE_BETWEEN_PROBES
|
||||
#define Z_HOMING_HEIGHT Z_CLEARANCE_BETWEEN_PROBES
|
||||
#else
|
||||
#define Z_HOMING_HEIGHT 0
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@ -2084,15 +2048,16 @@
|
||||
#endif
|
||||
|
||||
// Updated G92 behavior shifts the workspace
|
||||
#define HAS_POSITION_SHIFT DISABLED(NO_WORKSPACE_OFFSETS)
|
||||
// The home offset also shifts the coordinate space
|
||||
#define HAS_HOME_OFFSET (DISABLED(NO_WORKSPACE_OFFSETS) && IS_CARTESIAN)
|
||||
// The SCARA home offset applies only on G28
|
||||
#define HAS_SCARA_OFFSET (DISABLED(NO_WORKSPACE_OFFSETS) && IS_SCARA)
|
||||
// Cumulative offset to workspace to save some calculation
|
||||
#define HAS_WORKSPACE_OFFSET (HAS_POSITION_SHIFT && HAS_HOME_OFFSET)
|
||||
// M206 sets the home offset for Cartesian machines
|
||||
#define HAS_M206_COMMAND (HAS_HOME_OFFSET && !IS_SCARA)
|
||||
#if DISABLED(NO_WORKSPACE_OFFSETS)
|
||||
#define HAS_POSITION_SHIFT 1
|
||||
#if IS_CARTESIAN
|
||||
#define HAS_HOME_OFFSET 1 // The home offset also shifts the coordinate space
|
||||
#define HAS_WORKSPACE_OFFSET 1 // Cumulative offset to workspace to save some calculation
|
||||
#define HAS_M206_COMMAND 1 // M206 sets the home offset for Cartesian machines
|
||||
#elif IS_SCARA
|
||||
#define HAS_SCARA_OFFSET 1 // The SCARA home offset applies only on G28
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// LCD timeout to status screen default is 15s
|
||||
#ifndef LCD_TIMEOUT_TO_STATUS
|
||||
@ -2115,34 +2080,7 @@
|
||||
#endif
|
||||
|
||||
// Number of VFAT entries used. Each entry has 13 UTF-16 characters
|
||||
#if ENABLED(SCROLL_LONG_FILENAMES)
|
||||
#define MAX_VFAT_ENTRIES (5)
|
||||
#else
|
||||
#define MAX_VFAT_ENTRIES (2)
|
||||
#endif
|
||||
|
||||
// Set defaults for unspecified LED user colors
|
||||
#if ENABLED(LED_CONTROL_MENU)
|
||||
#ifndef LED_USER_PRESET_RED
|
||||
#define LED_USER_PRESET_RED 255
|
||||
#endif
|
||||
#ifndef LED_USER_PRESET_GREEN
|
||||
#define LED_USER_PRESET_GREEN 255
|
||||
#endif
|
||||
#ifndef LED_USER_PRESET_BLUE
|
||||
#define LED_USER_PRESET_BLUE 255
|
||||
#endif
|
||||
#ifndef LED_USER_PRESET_WHITE
|
||||
#define LED_USER_PRESET_WHITE 0
|
||||
#endif
|
||||
#ifndef LED_USER_PRESET_BRIGHTNESS
|
||||
#ifdef NEOPIXEL_BRIGHTNESS
|
||||
#define LED_USER_PRESET_BRIGHTNESS NEOPIXEL_BRIGHTNESS
|
||||
#else
|
||||
#define LED_USER_PRESET_BRIGHTNESS 255
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
#define MAX_VFAT_ENTRIES TERN(SCROLL_LONG_FILENAMES, 5, 2)
|
||||
|
||||
// Nozzle park for Delta
|
||||
#if BOTH(NOZZLE_PARK_FEATURE, DELTA)
|
||||
@ -2154,9 +2092,8 @@
|
||||
// on boards where SD card and LCD display share the same SPI bus
|
||||
// because of a bug in the shared SPI implementation. (See #8122)
|
||||
#if defined(TARGET_LPC1768) && ENABLED(REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER) && (SCK_PIN == LCD_PINS_D4)
|
||||
#define SDCARD_SORT_ALPHA // Keeps one directory level in RAM. Changing
|
||||
// directory levels still glitches the screen,
|
||||
// but the following LCD update cleans it up.
|
||||
#define SDCARD_SORT_ALPHA // Keep one directory level in RAM. Changing directory levels
|
||||
// may still glitch the screen, but LCD updates clean it up.
|
||||
#undef SDSORT_LIMIT
|
||||
#undef SDSORT_USES_RAM
|
||||
#undef SDSORT_USES_STACK
|
||||
@ -2180,31 +2117,24 @@
|
||||
#endif
|
||||
|
||||
// Defined here to catch the above defines
|
||||
#if ENABLED(SDCARD_SORT_ALPHA)
|
||||
#define HAS_FOLDER_SORTING (FOLDER_SORTING || ENABLED(SDSORT_GCODE))
|
||||
#if ENABLED(SDCARD_SORT_ALPHA) && (FOLDER_SORTING || ENABLED(SDSORT_GCODE))
|
||||
#define HAS_FOLDER_SORTING 1
|
||||
#endif
|
||||
|
||||
// If platform requires early initialization of watchdog to properly boot
|
||||
#define EARLY_WATCHDOG (ENABLED(USE_WATCHDOG) && defined(ARDUINO_ARCH_SAM))
|
||||
|
||||
#if HAS_SPI_LCD
|
||||
// Get LCD character width/height, which may be overridden by pins, configs, etc.
|
||||
#ifndef LCD_WIDTH
|
||||
#if HAS_GRAPHICAL_LCD
|
||||
#define LCD_WIDTH 21
|
||||
#elif ENABLED(ULTIPANEL)
|
||||
#define LCD_WIDTH 20
|
||||
#else
|
||||
#define LCD_WIDTH 16
|
||||
#define LCD_WIDTH TERN(ULTIPANEL, 20, 16)
|
||||
#endif
|
||||
#endif
|
||||
#ifndef LCD_HEIGHT
|
||||
#if HAS_GRAPHICAL_LCD
|
||||
#define LCD_HEIGHT 5
|
||||
#elif ENABLED(ULTIPANEL)
|
||||
#define LCD_HEIGHT 4
|
||||
#else
|
||||
#define LCD_HEIGHT 2
|
||||
#define LCD_HEIGHT TERN(ULTIPANEL, 4, 2)
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
@ -2227,10 +2157,3 @@
|
||||
#if !NUM_SERIAL
|
||||
#undef BAUD_RATE_GCODE
|
||||
#endif
|
||||
|
||||
#if ENABLED(Z_STEPPER_ALIGN_KNOWN_STEPPER_POSITIONS)
|
||||
#undef Z_STEPPER_ALIGN_AMP
|
||||
#endif
|
||||
#ifndef Z_STEPPER_ALIGN_AMP
|
||||
#define Z_STEPPER_ALIGN_AMP 1.0
|
||||
#endif
|
||||
|
@ -34,6 +34,37 @@
|
||||
#error "Marlin requires C++11 support (gcc >= 4.7, Arduino IDE >= 1.6.8). Please upgrade your toolchain."
|
||||
#endif
|
||||
|
||||
// Make sure macros aren't borked
|
||||
#define TEST1
|
||||
#define TEST2 1
|
||||
#define TEST3 0
|
||||
#define TEST4 true
|
||||
#if ENABLED(TEST0)
|
||||
#error "ENABLED is borked!"
|
||||
#endif
|
||||
#if DISABLED(TEST1)
|
||||
#error "DISABLED is borked!"
|
||||
#endif
|
||||
#if !ENABLED(TEST2)
|
||||
#error "ENABLED is borked!"
|
||||
#endif
|
||||
#if ENABLED(TEST3)
|
||||
#error "ENABLED is borked!"
|
||||
#endif
|
||||
#if DISABLED(TEST4)
|
||||
#error "DISABLED is borked!"
|
||||
#endif
|
||||
#if !ANY(TEST1, TEST2, TEST3, TEST4) || ANY(TEST0, TEST3)
|
||||
#error "ANY is borked!"
|
||||
#endif
|
||||
#if DISABLED(TEST0, TEST1, TEST2, TEST4)
|
||||
#error "DISABLED is borked!"
|
||||
#endif
|
||||
#undef TEST1
|
||||
#undef TEST2
|
||||
#undef TEST3
|
||||
#undef TEST4
|
||||
|
||||
/**
|
||||
* We try our best to include sanity checks for all changed configuration
|
||||
* directives because users have a tendency to use outdated config files with
|
||||
@ -68,7 +99,9 @@
|
||||
#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_INVERTED. Please update your configuration."
|
||||
#error "SDCARDDETECTINVERTED is now SD_DETECT_STATE (HIGH). Please update your configuration."
|
||||
#elif defined(SD_DETECT_INVERTED)
|
||||
#error "SD_DETECT_INVERTED is now SD_DETECT_STATE (HIGH). Please update your configuration."
|
||||
#elif defined(BTENABLED)
|
||||
#error "BTENABLED is now BLUETOOTH. Please update your configuration."
|
||||
#elif defined(CUSTOM_MENDEL_NAME)
|
||||
@ -450,6 +483,8 @@
|
||||
#error "Z_TRIPLE_ENDSTOPS is now Z_MULTI_ENDSTOPS. Please update Configuration_adv.h."
|
||||
#elif defined(Z_QUAD_ENDSTOPS)
|
||||
#error "Z_QUAD_ENDSTOPS is now Z_MULTI_ENDSTOPS. Please update Configuration_adv.h."
|
||||
#elif defined(DUGS_UI_MOVE_DIS_OPTION)
|
||||
#error "DUGS_UI_MOVE_DIS_OPTION is spelled DGUS_UI_MOVE_DIS_OPTION. Please update Configuration_adv.h."
|
||||
#endif
|
||||
|
||||
/**
|
||||
@ -1237,7 +1272,7 @@ static_assert(Y_MAX_LENGTH >= Y_BED_SIZE, "Movement bounds (Y_MIN_POS, Y_MAX_POS
|
||||
* Require some kind of probe for bed leveling and probe testing
|
||||
*/
|
||||
#if HAS_ABL_NOT_UBL && !PROBE_SELECTED
|
||||
#error "Auto Bed Leveling requires one of these: PROBE_MANUALLY, FIX_MOUNTED_PROBE, NOZZLE_AS_PROBE, BLTOUCH, SOLENOID_PROBE, Z_PROBE_ALLEN_KEY, Z_PROBE_SLED, or a Z Servo."
|
||||
#error "Auto Bed Leveling requires one of these: PROBE_MANUALLY, SENSORLESS_PROBING, BLTOUCH, FIX_MOUNTED_PROBE, NOZZLE_AS_PROBE, TOUCH_MI_PROBE, SOLENOID_PROBE, Z_PROBE_ALLEN_KEY, Z_PROBE_SLED, or a Z Servo."
|
||||
#endif
|
||||
|
||||
#if ENABLED(Z_MIN_PROBE_REPEATABILITY_TEST)
|
||||
@ -2057,6 +2092,8 @@ static_assert(Y_MAX_LENGTH >= Y_BED_SIZE, "Movement bounds (Y_MIN_POS, Y_MAX_POS
|
||||
#error "An SPI driven TMC driver on Z2 requires Z2_CS_PIN."
|
||||
#elif INVALID_TMC_SPI(Z3)
|
||||
#error "An SPI driven TMC driver on Z3 requires Z3_CS_PIN."
|
||||
#elif INVALID_TMC_SPI(Z4)
|
||||
#error "An SPI driven TMC driver on Z4 requires Z4_CS_PIN."
|
||||
#elif INVALID_TMC_SPI(E0)
|
||||
#error "An SPI driven TMC driver on E0 requires E0_CS_PIN."
|
||||
#elif INVALID_TMC_SPI(E1)
|
||||
@ -2094,6 +2131,8 @@ static_assert(Y_MAX_LENGTH >= Y_BED_SIZE, "Movement bounds (Y_MIN_POS, Y_MAX_POS
|
||||
#error "TMC2208 or TMC2209 on Z2 requires Z2_HARDWARE_SERIAL or Z2_SERIAL_(RX|TX)_PIN."
|
||||
#elif INVALID_TMC_UART(Z3)
|
||||
#error "TMC2208 or TMC2209 on Z3 requires Z3_HARDWARE_SERIAL or Z3_SERIAL_(RX|TX)_PIN."
|
||||
#elif INVALID_TMC_UART(Z4)
|
||||
#error "TMC2208 or TMC2209 on Z4 requires Z4_HARDWARE_SERIAL or Z4_SERIAL_(RX|TX)_PIN."
|
||||
#elif INVALID_TMC_UART(E0)
|
||||
#error "TMC2208 or TMC2209 on E0 requires E0_HARDWARE_SERIAL or E0_SERIAL_(RX|TX)_PIN."
|
||||
#elif INVALID_TMC_UART(E1)
|
||||
@ -2131,6 +2170,8 @@ static_assert(Y_MAX_LENGTH >= Y_BED_SIZE, "Movement bounds (Y_MIN_POS, Y_MAX_POS
|
||||
INVALID_TMC_ADDRESS(Z2);
|
||||
#elif AXIS_DRIVER_TYPE_Z3(TMC2209)
|
||||
INVALID_TMC_ADDRESS(Z3);
|
||||
#elif AXIS_DRIVER_TYPE_Z4(TMC2209)
|
||||
INVALID_TMC_ADDRESS(Z4);
|
||||
#elif AXIS_DRIVER_TYPE_E0(TMC2209)
|
||||
INVALID_TMC_ADDRESS(E0);
|
||||
#elif AXIS_DRIVER_TYPE_E1(TMC2209)
|
||||
@ -2150,6 +2191,47 @@ static_assert(Y_MAX_LENGTH >= Y_BED_SIZE, "Movement bounds (Y_MIN_POS, Y_MAX_POS
|
||||
#endif
|
||||
#undef INVALID_TMC_ADDRESS
|
||||
|
||||
#define _TMC_MICROSTEP_IS_VALID(MS) (MS == 0 || MS == 2 || MS == 4 || MS == 8 || MS == 16 || MS == 32 || MS == 64 || MS == 128 || MS == 256)
|
||||
#define TMC_MICROSTEP_IS_VALID(M) (!AXIS_IS_TMC(M) || _TMC_MICROSTEP_IS_VALID(M##_MICROSTEPS))
|
||||
#define INVALID_TMC_MS(ST) static_assert(0, "Invalid " STRINGIFY(ST) "_MICROSTEPS. Valid values are 0, 2, 4, 8, 16, 32, 64, 128, and 256.")
|
||||
|
||||
#if !TMC_MICROSTEP_IS_VALID(X)
|
||||
INVALID_TMC_MS(X);
|
||||
#elif !TMC_MICROSTEP_IS_VALID(Y)
|
||||
INVALID_TMC_MS(Y)
|
||||
#elif !TMC_MICROSTEP_IS_VALID(Z)
|
||||
INVALID_TMC_MS(Z)
|
||||
#elif !TMC_MICROSTEP_IS_VALID(X2)
|
||||
INVALID_TMC_MS(X2);
|
||||
#elif !TMC_MICROSTEP_IS_VALID(Y2)
|
||||
INVALID_TMC_MS(Y2)
|
||||
#elif !TMC_MICROSTEP_IS_VALID(Z2)
|
||||
INVALID_TMC_MS(Z2)
|
||||
#elif !TMC_MICROSTEP_IS_VALID(Z3)
|
||||
INVALID_TMC_MS(Z3)
|
||||
#elif !TMC_MICROSTEP_IS_VALID(Z4)
|
||||
INVALID_TMC_MS(Z4)
|
||||
#elif !TMC_MICROSTEP_IS_VALID(E0)
|
||||
INVALID_TMC_MS(E0)
|
||||
#elif !TMC_MICROSTEP_IS_VALID(E1)
|
||||
INVALID_TMC_MS(E1)
|
||||
#elif !TMC_MICROSTEP_IS_VALID(E2)
|
||||
INVALID_TMC_MS(E2)
|
||||
#elif !TMC_MICROSTEP_IS_VALID(E3)
|
||||
INVALID_TMC_MS(E3)
|
||||
#elif !TMC_MICROSTEP_IS_VALID(E4)
|
||||
INVALID_TMC_MS(E4)
|
||||
#elif !TMC_MICROSTEP_IS_VALID(E5)
|
||||
INVALID_TMC_MS(E5)
|
||||
#elif !TMC_MICROSTEP_IS_VALID(E6)
|
||||
INVALID_TMC_MS(E6)
|
||||
#elif !TMC_MICROSTEP_IS_VALID(E7)
|
||||
INVALID_TMC_MS(E7)
|
||||
#endif
|
||||
#undef INVALID_TMC_MS
|
||||
#undef TMC_MICROSTEP_IS_VALID
|
||||
#undef _TMC_MICROSTEP_IS_VALID
|
||||
|
||||
#if ENABLED(DELTA) && (ENABLED(STEALTHCHOP_XY) != ENABLED(STEALTHCHOP_Z))
|
||||
#error "STEALTHCHOP_XY and STEALTHCHOP_Z must be the same on DELTA."
|
||||
#endif
|
||||
@ -2256,17 +2338,15 @@ static_assert(Y_MAX_LENGTH >= Y_BED_SIZE, "Movement bounds (Y_MIN_POS, Y_MAX_POS
|
||||
#error "STEALTHCHOP requires TMC2130, TMC2160, TMC2208, TMC2209, or TMC5160 stepper drivers."
|
||||
#endif
|
||||
|
||||
/**
|
||||
* TMC SPI Chaining
|
||||
*/
|
||||
#define IN_CHAIN(A) ((A##_CHAIN_POS > 0) && !HAS_L64XX)
|
||||
// TMC SPI Chaining
|
||||
#if IN_CHAIN(X) || IN_CHAIN(Y) || IN_CHAIN(Z) || IN_CHAIN(X2) || IN_CHAIN(Y2) || IN_CHAIN(Z2) || IN_CHAIN(Z3) || IN_CHAIN(E0) || IN_CHAIN(E1) || IN_CHAIN(E2) || IN_CHAIN(E3) || IN_CHAIN(E4) || IN_CHAIN(E5)
|
||||
#if (IN_CHAIN(X) && !PIN_EXISTS(X_CS) ) || (IN_CHAIN(Y) && !PIN_EXISTS(Y_CS) ) \
|
||||
|| (IN_CHAIN(Z) && !PIN_EXISTS(Z_CS) ) || (IN_CHAIN(X2) && !PIN_EXISTS(X2_CS)) \
|
||||
|| (IN_CHAIN(Y2) && !PIN_EXISTS(Y2_CS)) || (IN_CHAIN(Z2) && !PIN_EXISTS(Z2_CS)) \
|
||||
|| (IN_CHAIN(Z3) && !PIN_EXISTS(Z3_CS)) || (IN_CHAIN(E0) && !PIN_EXISTS(E0_CS)) \
|
||||
|| (IN_CHAIN(E1) && !PIN_EXISTS(E1_CS)) || (IN_CHAIN(E2) && !PIN_EXISTS(E2_CS)) \
|
||||
|| (IN_CHAIN(E3) && !PIN_EXISTS(E3_CS)) || (IN_CHAIN(E4) && !PIN_EXISTS(E4_CS)) \
|
||||
|| (IN_CHAIN(E5) && !PIN_EXISTS(E5_CS)) || (IN_CHAIN(E6) && !PIN_EXISTS(E6_CS)) \
|
||||
|| (IN_CHAIN(E7) && !PIN_EXISTS(E7_CS))
|
||||
#if IN_CHAIN(X ) || IN_CHAIN(Y ) || IN_CHAIN(Z ) || IN_CHAIN(X2) || IN_CHAIN(Y2) || IN_CHAIN(Z2) || IN_CHAIN(Z3) || IN_CHAIN(Z4) \
|
||||
|| IN_CHAIN(E0) || IN_CHAIN(E1) || IN_CHAIN(E2) || IN_CHAIN(E3) || IN_CHAIN(E4) || IN_CHAIN(E5) || IN_CHAIN(E6) || IN_CHAIN(E7)
|
||||
#define BAD_CHAIN(A) (IN_CHAIN(A) && !PIN_EXISTS(A##_CS))
|
||||
#if BAD_CHAIN(X ) || BAD_CHAIN(Y ) || BAD_CHAIN(Z ) || BAD_CHAIN(X2) || BAD_CHAIN(Y2) || BAD_CHAIN(Z2) || BAD_CHAIN(Z3) || BAD_CHAIN(Z4) \
|
||||
|| BAD_CHAIN(E0) || BAD_CHAIN(E1) || BAD_CHAIN(E2) || BAD_CHAIN(E3) || BAD_CHAIN(E4) || BAD_CHAIN(E5) || BAD_CHAIN(E6) || BAD_CHAIN(E7)
|
||||
#error "All chained TMC drivers need a CS pin."
|
||||
#else
|
||||
#if IN_CHAIN(X)
|
||||
@ -2300,18 +2380,15 @@ static_assert(Y_MAX_LENGTH >= Y_BED_SIZE, "Movement bounds (Y_MIN_POS, Y_MAX_POS
|
||||
#elif IN_CHAIN(E7)
|
||||
#define CS_COMPARE E7_CS_PIN
|
||||
#endif
|
||||
#if (IN_CHAIN(X) && X_CS_PIN != CS_COMPARE) || (IN_CHAIN(Y) && Y_CS_PIN != CS_COMPARE) \
|
||||
|| (IN_CHAIN(Z) && Z_CS_PIN != CS_COMPARE) || (IN_CHAIN(X2) && X2_CS_PIN != CS_COMPARE) \
|
||||
|| (IN_CHAIN(Y2) && Y2_CS_PIN != CS_COMPARE) || (IN_CHAIN(Z2) && Z2_CS_PIN != CS_COMPARE) \
|
||||
|| (IN_CHAIN(Z3) && Z3_CS_PIN != CS_COMPARE) || (IN_CHAIN(E0) && E0_CS_PIN != CS_COMPARE) \
|
||||
|| (IN_CHAIN(E1) && E1_CS_PIN != CS_COMPARE) || (IN_CHAIN(E2) && E2_CS_PIN != CS_COMPARE) \
|
||||
|| (IN_CHAIN(E3) && E3_CS_PIN != CS_COMPARE) || (IN_CHAIN(E4) && E4_CS_PIN != CS_COMPARE) \
|
||||
|| (IN_CHAIN(E5) && E5_CS_PIN != CS_COMPARE) || (IN_CHAIN(E6) && E6_CS_PIN != CS_COMPARE) \
|
||||
|| (IN_CHAIN(E7) && E7_CS_PIN != CS_COMPARE)
|
||||
#define BAD_CS_PIN(A) (IN_CHAIN(A) && A##_CS_PIN != CS_COMPARE)
|
||||
#if BAD_CS_PIN(X ) || BAD_CS_PIN(Y ) || BAD_CS_PIN(Z ) || BAD_CS_PIN(X2) || BAD_CS_PIN(Y2) || BAD_CS_PIN(Z2) || BAD_CS_PIN(Z3) || BAD_CS_PIN(Z4) \
|
||||
|| BAD_CS_PIN(E0) || BAD_CS_PIN(E1) || BAD_CS_PIN(E2) || BAD_CS_PIN(E3) || BAD_CS_PIN(E4) || BAD_CS_PIN(E5) || BAD_CS_PIN(E6) || BAD_CS_PIN(E7)
|
||||
#error "All chained TMC drivers must use the same CS pin."
|
||||
#endif
|
||||
#undef BAD_CS_PIN
|
||||
#undef CS_COMPARE
|
||||
#endif
|
||||
#undef CS_COMPARE
|
||||
#undef BAD_CHAIN
|
||||
#endif
|
||||
#undef IN_CHAIN
|
||||
|
||||
@ -2432,8 +2509,8 @@ static_assert( _ARR_TEST(3,0) && _ARR_TEST(3,1) && _ARR_TEST(3,2)
|
||||
#error "Z_STEPPER_AUTO_ALIGN requires NUM_Z_STEPPER_DRIVERS greater than 1."
|
||||
#elif !HAS_BED_PROBE
|
||||
#error "Z_STEPPER_AUTO_ALIGN requires a Z-bed probe."
|
||||
#elif ENABLED(Z_STEPPER_ALIGN_KNOWN_STEPPER_POSITIONS) && NUM_Z_STEPPER_DRIVERS != 3
|
||||
#error "Z_STEPPER_ALIGN_KNOWN_STEPPER_POSITIONS requires NUM_Z_STEPPER_DRIVERS to be 3."
|
||||
#elif ENABLED(Z_STEPPER_ALIGN_KNOWN_STEPPER_POSITIONS) && NUM_Z_STEPPER_DRIVERS < 3
|
||||
#error "Z_STEPPER_ALIGN_KNOWN_STEPPER_POSITIONS requires NUM_Z_STEPPER_DRIVERS to be 3 or 4."
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@ -2732,3 +2809,8 @@ static_assert( _ARR_TEST(3,0) && _ARR_TEST(3,1) && _ARR_TEST(3,2)
|
||||
#if HAS_TMC_SPI && ALL(MONITOR_DRIVER_STATUS, SDSUPPORT, USES_SHARED_SPI)
|
||||
#error "MONITOR_DRIVER_STATUS and SDSUPPORT cannot be used together on boards with shared SPI."
|
||||
#endif
|
||||
|
||||
// G60/G61 Position Save
|
||||
#if SAVED_POSITIONS > 256
|
||||
#error "SAVED_POSITIONS must be an integer from 0 to 256."
|
||||
#endif
|
||||
|
@ -42,7 +42,7 @@
|
||||
* version was tagged.
|
||||
*/
|
||||
#ifndef STRING_DISTRIBUTION_DATE
|
||||
#define STRING_DISTRIBUTION_DATE "2020-02-27"
|
||||
#define STRING_DISTRIBUTION_DATE "2020-03-14"
|
||||
#endif
|
||||
|
||||
/**
|
||||
@ -52,7 +52,7 @@
|
||||
* to alert users to major changes.
|
||||
*/
|
||||
|
||||
#define MARLIN_HEX_VERSION 020004
|
||||
#define MARLIN_HEX_VERSION 020005
|
||||
#ifndef REQUIRED_CONFIGURATION_H_VERSION
|
||||
#define REQUIRED_CONFIGURATION_H_VERSION MARLIN_HEX_VERSION
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user