aboutsummaryrefslogtreecommitdiffstats
path: root/marlinfw
diff options
context:
space:
mode:
Diffstat (limited to 'marlinfw')
-rw-r--r--marlinfw/config/Configuration.h66
-rw-r--r--marlinfw/config/Configuration_adv.h376
2 files changed, 346 insertions, 96 deletions
diff --git a/marlinfw/config/Configuration.h b/marlinfw/config/Configuration.h
index 63e37f5..76ce8c7 100644
--- a/marlinfw/config/Configuration.h
+++ b/marlinfw/config/Configuration.h
@@ -143,7 +143,7 @@
// @section extruder
// This defines the number of extruders
-// :[1, 2, 3, 4, 5, 6]
+// :[1, 2, 3, 4, 5, 6, 7, 8]
#define EXTRUDERS 1
// Generally expected filament diameter (1.75, 2.85, 3.0, ...). Used for Volumetric, Filament Width Sensor, etc.
@@ -330,9 +330,9 @@
//#define PSU_DEFAULT_OFF // Keep power off until enabled directly with M80
//#define PSU_POWERUP_DELAY 100 // (ms) Delay for the PSU to warm up to full power
- //#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)
- #define AUTO_POWER_FANS // Turn on PSU if fans need power
+ #define AUTO_POWER_FANS // Turn on PSU if fans need power
#define AUTO_POWER_E_FANS
#define AUTO_POWER_CONTROLLERFAN
#define AUTO_POWER_CHAMBER_FAN
@@ -360,7 +360,8 @@
* -1 : thermocouple with AD595
* 0 : not used
* 1 : 100k thermistor - best choice for EPCOS 100k (4.7k pullup)
- * 331 : (3.3V scaled thermistor 1 table)
+ * 331 : (3.3V scaled thermistor 1 table for MEGA)
+ * 332 : (3.3V scaled thermistor 1 table for DUE)
* 2 : 200k thermistor - ATC Semitec 204GT-2 (4.7k pullup)
* 3 : Mendel-parts thermistor (4.7k pullup)
* 4 : 10k thermistor !! do not use it for a hotend. It gives bad resolution at high temp. !!
@@ -378,7 +379,8 @@
* 13 : 100k Hisens 3950 1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE"
* 15 : 100k thermistor calibration for JGAurora A5 hotend
* 18 : ATC Semitec 204GT-2 (4.7k pullup) Dagoma.Fr - MKS_Base_DKU001327
- * 20 : Pt100 with circuit in the Ultimainboard V2.x
+ * 20 : Pt100 with circuit in the Ultimainboard V2.x with 5v excitation (AVR)
+ * 21 : Pt100 with circuit in the Ultimainboard V2.x with 3.3v excitation (STM32 \ LPC176x....)
* 201 : Pt100 with circuit in Overlord, similar to Ultimainboard V2.x
* 60 : 100k Maker's Tool Works Kapton Bed Thermistor beta=3950
* 61 : 100k Formbot / Vivedino 3950 350C thermistor 4.7k pullup
@@ -411,7 +413,10 @@
#define TEMP_SENSOR_3 0
#define TEMP_SENSOR_4 0
#define TEMP_SENSOR_5 0
+#define TEMP_SENSOR_6 0
+#define TEMP_SENSOR_7 0
#define TEMP_SENSOR_BED 1
+#define TEMP_SENSOR_PROBE 0
#define TEMP_SENSOR_CHAMBER 0
// Dummy thermistor constant temperature readings, for use with 998 and 999
@@ -439,6 +444,8 @@
#define HEATER_3_MINTEMP 5
#define HEATER_4_MINTEMP 5
#define HEATER_5_MINTEMP 5
+#define HEATER_6_MINTEMP 5
+#define HEATER_7_MINTEMP 5
#define BED_MINTEMP 5
// Above this temperature the heater will be switched off.
@@ -450,6 +457,8 @@
#define HEATER_3_MAXTEMP 275
#define HEATER_4_MAXTEMP 275
#define HEATER_5_MAXTEMP 275
+#define HEATER_6_MAXTEMP 275
+#define HEATER_7_MAXTEMP 275
#define BED_MAXTEMP 120
//===========================================================================
@@ -654,12 +663,13 @@
*
* A4988 is assumed for unspecified drivers.
*
- * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
+ * Options: A4988, A5984, DRV8825, LV8729, L6470, L6474, POWERSTEP01,
+ * TB6560, TB6600, TMC2100,
* TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
* TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
* TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE,
* TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
- * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
+ * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'L6474', 'POWERSTEP01', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
*/
//#define X_DRIVER_TYPE A4988
//#define Y_DRIVER_TYPE A4988
@@ -668,12 +678,15 @@
//#define Y2_DRIVER_TYPE A4988
//#define Z2_DRIVER_TYPE A4988
//#define Z3_DRIVER_TYPE A4988
+//#define Z4_DRIVER_TYPE A4988
//#define E0_DRIVER_TYPE A4988
//#define E1_DRIVER_TYPE A4988
//#define E2_DRIVER_TYPE A4988
//#define E3_DRIVER_TYPE A4988
//#define E4_DRIVER_TYPE A4988
//#define E5_DRIVER_TYPE A4988
+//#define E6_DRIVER_TYPE A4988
+//#define E7_DRIVER_TYPE A4988
// Enable this feature if all enabled endstop pins are interrupt-capable.
// This will remove the need to poll the interrupt pins, saving many CPU cycles.
@@ -929,7 +942,8 @@
*/
#define NOZZLE_TO_PROBE_OFFSET { 10, 10, 0 }
-// Certain types of probes need to stay away from edges
+// Most probes should stay away from the edges of the bed, but
+// with NOZZLE_AS_PROBE this can be negative for a wider probing area.
#define MIN_PROBE_EDGE 10
// X and Y axis travel speed (mm/m) between probes
@@ -1039,6 +1053,8 @@
#define INVERT_E3_DIR false
#define INVERT_E4_DIR false
#define INVERT_E5_DIR false
+#define INVERT_E6_DIR false
+#define INVERT_E7_DIR false
// @section homing
@@ -1083,7 +1099,7 @@
#if ENABLED(MIN_SOFTWARE_ENDSTOPS)
#define MIN_SOFTWARE_ENDSTOP_X
#define MIN_SOFTWARE_ENDSTOP_Y
- //#define MIN_SOFTWARE_ENDSTOP_Z -- For figuring out Z-offset (re-enable when done).
+ #define MIN_SOFTWARE_ENDSTOP_Z
#endif
// Max software endstops constrain movement within maximum coordinate bounds
@@ -1426,11 +1442,6 @@
#define BUSY_WHILE_HEATING // Some hosts require "busy" messages even during heating
//
-// M100 Free Memory Watcher
-//
-//#define M100_FREE_MEMORY_WATCHER // Add M100 (Free Memory Watcher) to debug memory usage
-
-//
// G20/G21 Inch mode support
//
//#define INCH_MODE_SUPPORT
@@ -1520,9 +1531,10 @@
// Default number of triangles
#define NOZZLE_CLEAN_TRIANGLES 3
- // Specify positions as { X, Y, Z }
- #define NOZZLE_CLEAN_START_POINT { 30, 30, (Z_MIN_POS + 1) }
- #define NOZZLE_CLEAN_END_POINT { 100, 60, (Z_MIN_POS + 1) }
+ // Specify positions for each tool as { { X, Y, Z }, { X, Y, Z } }
+ // Dual hotend system may use { { -20, (Y_BED_SIZE / 2), (Z_MIN_POS + 1) }, { 420, (Y_BED_SIZE / 2), (Z_MIN_POS + 1) }}
+ #define NOZZLE_CLEAN_START_POINT { { 30, 30, (Z_MIN_POS + 1) } }
+ #define NOZZLE_CLEAN_END_POINT { { 100, 60, (Z_MIN_POS + 1) } }
// Circular pattern radius
#define NOZZLE_CLEAN_CIRCLE_RADIUS 6.5
@@ -1943,10 +1955,11 @@
// FYSETC variant of the MINI12864 graphic controller with SD support
// https://wiki.fysetc.com/Mini12864_Panel/
//
-//#define FYSETC_MINI_12864_X_X // Type C/D/E/F. No tunable RGB Backlight by default
-//#define FYSETC_MINI_12864_1_2 // Type C/D/E/F. Simple RGB Backlight (always on)
-//#define FYSETC_MINI_12864_2_0 // Type A/B. Discreet RGB Backlight
-//#define FYSETC_MINI_12864_2_1 // Type A/B. Neopixel RGB Backlight
+//#define FYSETC_MINI_12864_X_X // Type C/D/E/F. No tunable RGB Backlight by default
+//#define FYSETC_MINI_12864_1_2 // Type C/D/E/F. Simple RGB Backlight (always on)
+//#define FYSETC_MINI_12864_2_0 // Type A/B. Discreet RGB Backlight
+//#define FYSETC_MINI_12864_2_1 // Type A/B. Neopixel RGB Backlight
+//#define FYSETC_GENERIC_12864_1_1 // Larger display with basic ON/OFF backlight.
//
// Factory display for Creality CR-10
@@ -1958,6 +1971,11 @@
//#define CR10_STOCKDISPLAY
//
+// Ender-2 OEM display, a variant of the MKS_MINI_12864
+//
+//#define ENDER2_STOCKDISPLAY
+
+//
// ANET and Tronxy Graphical Controller
//
// Anet 128x64 full graphics lcd with rotary encoder as used on Anet A6
@@ -2025,9 +2043,11 @@
//=============================================================================
//
-// DGUS Touch Display with DWIN OS
+// DGUS Touch Display with DWIN OS. (Choose one.)
//
-//#define DGUS_LCD
+//#define DGUS_LCD_UI_ORIGIN
+//#define DGUS_LCD_UI_FYSETC
+//#define DGUS_LCD_UI_HIPRECY
//
// Touch-screen LCD for Malyan M200 printers
diff --git a/marlinfw/config/Configuration_adv.h b/marlinfw/config/Configuration_adv.h
index e36a525..98f2068 100644
--- a/marlinfw/config/Configuration_adv.h
+++ b/marlinfw/config/Configuration_adv.h
@@ -78,6 +78,18 @@
#define HOTEND5_BETA 3950 // Beta value
#endif
+#if TEMP_SENSOR_6 == 1000
+ #define HOTEND6_PULLUP_RESISTOR_OHMS 4700 // Pullup resistor
+ #define HOTEND6_RESISTANCE_25C_OHMS 100000 // Resistance at 25C
+ #define HOTEND6_BETA 3950 // Beta value
+#endif
+
+#if TEMP_SENSOR_7 == 1000
+ #define HOTEND7_PULLUP_RESISTOR_OHMS 4700 // Pullup resistor
+ #define HOTEND7_RESISTANCE_25C_OHMS 100000 // Resistance at 25C
+ #define HOTEND7_BETA 3950 // Beta value
+#endif
+
#if TEMP_SENSOR_BED == 1000
#define BED_PULLUP_RESISTOR_OHMS 4700 // Pullup resistor
#define BED_RESISTANCE_25C_OHMS 100000 // Resistance at 25C
@@ -165,28 +177,28 @@
* Thermal Protection parameters for the bed are just as above for hotends.
*/
#if ENABLED(THERMAL_PROTECTION_BED)
- #define THERMAL_PROTECTION_BED_PERIOD 20 // Seconds
- #define THERMAL_PROTECTION_BED_HYSTERESIS 2 // Degrees Celsius
+ #define THERMAL_PROTECTION_BED_PERIOD 20 // Seconds
+ #define THERMAL_PROTECTION_BED_HYSTERESIS 2 // Degrees Celsius
/**
* As described above, except for the bed (M140/M190/M303).
*/
- #define WATCH_BED_TEMP_PERIOD 60 // Seconds
- #define WATCH_BED_TEMP_INCREASE 2 // Degrees Celsius
+ #define WATCH_BED_TEMP_PERIOD 60 // Seconds
+ #define WATCH_BED_TEMP_INCREASE 2 // Degrees Celsius
#endif
/**
* Thermal Protection parameters for the heated 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
/**
* Heated chamber watch settings (M141/M191).
*/
- #define WATCH_CHAMBER_TEMP_PERIOD 60 // Seconds
- #define WATCH_CHAMBER_TEMP_INCREASE 2 // Degrees Celsius
+ #define WATCH_CHAMBER_TEMP_PERIOD 60 // Seconds
+ #define WATCH_CHAMBER_TEMP_INCREASE 2 // Degrees Celsius
#endif
#if ENABLED(PIDTEMP)
@@ -368,7 +380,7 @@
* FAST_PWM_FAN_FREQUENCY [undefined by default]
* Set this to your desired frequency.
* If left undefined this defaults to F = F_CPU/(2*255*1)
- * ie F = 31.4 Khz on 16 MHz microcontrollers or F = 39.2 KHz on 20 MHz microcontrollers
+ * i.e., F = 31.4kHz on 16MHz microcontrollers or F = 39.2kHz on 20MHz microcontrollers.
* These defaults are the same as with the old FAST_PWM_FAN implementation - no migration is required
* NOTE: Setting very low frequencies (< 10 Hz) may result in unexpected timer behavior.
*
@@ -479,7 +491,7 @@
//#define X_DUAL_ENDSTOPS
#if ENABLED(X_DUAL_ENDSTOPS)
#define X2_USE_ENDSTOP _XMAX_
- #define X_DUAL_ENDSTOPS_ADJUSTMENT 0
+ #define X2_ENDSTOP_ADJUSTMENT 0
#endif
#endif
@@ -489,27 +501,28 @@
//#define Y_DUAL_ENDSTOPS
#if ENABLED(Y_DUAL_ENDSTOPS)
#define Y2_USE_ENDSTOP _YMAX_
- #define Y_DUAL_ENDSTOPS_ADJUSTMENT 0
+ #define Y2_ENDSTOP_ADJUSTMENT 0
#endif
#endif
-//#define Z_DUAL_STEPPER_DRIVERS
-#if ENABLED(Z_DUAL_STEPPER_DRIVERS)
- //#define Z_DUAL_ENDSTOPS
- #if ENABLED(Z_DUAL_ENDSTOPS)
- #define Z2_USE_ENDSTOP _XMAX_
- #define Z_DUAL_ENDSTOPS_ADJUSTMENT 0
- #endif
-#endif
-
-//#define Z_TRIPLE_STEPPER_DRIVERS
-#if ENABLED(Z_TRIPLE_STEPPER_DRIVERS)
- //#define Z_TRIPLE_ENDSTOPS
- #if ENABLED(Z_TRIPLE_ENDSTOPS)
- #define Z2_USE_ENDSTOP _XMAX_
- #define Z3_USE_ENDSTOP _YMAX_
- #define Z_TRIPLE_ENDSTOPS_ADJUSTMENT2 0
- #define Z_TRIPLE_ENDSTOPS_ADJUSTMENT3 0
+//
+// For Z set the number of stepper drivers
+//
+#define NUM_Z_STEPPER_DRIVERS 1 // (1-4) Z options change based on how many
+
+#if NUM_Z_STEPPER_DRIVERS > 1
+ //#define Z_MULTI_ENDSTOPS
+ #if ENABLED(Z_MULTI_ENDSTOPS)
+ #define Z2_USE_ENDSTOP _XMAX_
+ #define Z2_ENDSTOP_ADJUSTMENT 0
+ #if NUM_Z_STEPPER_DRIVERS >= 3
+ #define Z3_USE_ENDSTOP _YMAX_
+ #define Z3_ENDSTOP_ADJUSTMENT 0
+ #endif
+ #if NUM_Z_STEPPER_DRIVERS >= 4
+ #define Z4_USE_ENDSTOP _ZMAX_
+ #define Z4_ENDSTOP_ADJUSTMENT 0
+ #endif
#endif
#endif
@@ -806,7 +819,7 @@
// probing on a screwhead or hollow washer, probe near the edges.
//#define CALIBRATION_MEASURE_AT_TOP_EDGES
- // Define pin which is read during calibration
+ // Define the pin to read during calibration
#ifndef CALIBRATION_PIN
#define CALIBRATION_PIN -1 // Override in pins.h or set to -1 to use your Z endstop
#define CALIBRATION_PIN_INVERTING false // Set to true to invert the pin
@@ -1244,6 +1257,44 @@
#endif // HAS_GRAPHICAL_LCD
//
+// Additional options for DGUS / DWIN displays
+//
+#if HAS_DGUS_LCD
+ #define DGUS_SERIAL_PORT 2
+ #define DGUS_BAUDRATE 115200
+
+ #define DGUS_RX_BUFFER_SIZE 128
+ #define DGUS_TX_BUFFER_SIZE 48
+ //#define DGUS_SERIAL_STATS_RX_BUFFER_OVERRUNS // Fix Rx overrun situation (Currently only for AVR)
+
+ #define DGUS_UPDATE_INTERVAL_MS 500 // (ms) Interval between automatic screen updates
+ #define BOOTSCREEN_TIMEOUT 3000 // (ms) Duration to display the boot screen
+
+ #if EITHER(DGUS_LCD_UI_FYSETC, DGUS_LCD_UI_HIPRECY)
+ #define DGUS_PRINT_FILENAME // Display the filename during printing
+ #define DGUS_PREHEAT_UI // Display a preheat screen during heatup
+
+ #if ENABLED(DGUS_LCD_UI_FYSETC)
+ //#define DUGS_UI_MOVE_DIS_OPTION // Disabled by default for UI_FYSETC
+ #else
+ #define DUGS_UI_MOVE_DIS_OPTION // Enabled by default for UI_HIPRECY
+ #endif
+
+ #define DGUS_FILAMENT_LOADUNLOAD
+ #if ENABLED(DGUS_FILAMENT_LOADUNLOAD)
+ #define DGUS_FILAMENT_PURGE_LENGTH 10
+ #define DGUS_FILAMENT_LOAD_LENGTH_PER_TIME 0.5 // (mm) Adjust in proportion to DGUS_UPDATE_INTERVAL_MS
+ #endif
+
+ #define DGUS_UI_WAITING // Show a "waiting" screen between some screens
+ #if ENABLED(DGUS_UI_WAITING)
+ #define DGUS_UI_WAITING_STATUS 10
+ #define DGUS_UI_WAITING_STATUS_PERIOD 8 // Increase to slower waiting status looping
+ #endif
+ #endif
+#endif // HAS_DGUS_LCD
+
+//
// Touch UI for the FTDI Embedded Video Engine (EVE)
//
#if ENABLED(TOUCH_UI_FTDI_EVE)
@@ -1341,6 +1392,13 @@
//#define TFT_BTOKMENU_COLOR 0x145F // 00010 100010 11111 Cyan
#endif
+//
+// ADC Button Debounce
+//
+#if HAS_ADC_BUTTONS
+ #define ADC_BUTTON_DEBOUNCE_DELAY 16 // (ms) Increase if buttons bounce or repeat too fast
+#endif
+
// @section safety
/**
@@ -1438,7 +1496,8 @@
* Override MIN_PROBE_EDGE for each side of the build plate
* Useful to get probe points to exact positions on targets or
* to allow leveling to avoid plate clamps on only specific
- * sides of the bed.
+ * sides of the bed. With NOZZLE_AS_PROBE negative values are
+ * allowed, to permit probing outside the bed.
*
* If you are replacing the prior *_PROBE_BED_POSITION options,
* LEFT and FRONT values in most cases will map directly over
@@ -1483,18 +1542,57 @@
#endif
+/**
+ * Thermal Probe Compensation
+ * Probe measurements are adjusted to compensate for temperature distortion.
+ * Use G76 to calibrate this feature. Use M871 to set values manually.
+ * For a more detailed explanation of the process see G76_M871.cpp.
+ */
+#if HAS_BED_PROBE && TEMP_SENSOR_PROBE && TEMP_SENSOR_BED
+ // Enable thermal first layer compensation using bed and probe temperatures
+ #define PROBE_TEMP_COMPENSATION
+
+ // Add additional compensation depending on hotend temperature
+ // Note: this values cannot be calibrated and have to be set manually
+ #if ENABLED(PROBE_TEMP_COMPENSATION)
+ // Max temperature that can be reached by heated bed.
+ // This is required only for the calibration process.
+ #define PTC_MAX_BED_TEMP 110
+
+ // Park position to wait for probe cooldown
+ #define PTC_PARK_POS_X 0.0F
+ #define PTC_PARK_POS_Y 0.0F
+ #define PTC_PARK_POS_Z 100.0F
+
+ // Probe position to probe and wait for probe to reach target temperature
+ #define PTC_PROBE_POS_X 90.0F
+ #define PTC_PROBE_POS_Y 100.0F
+
+ // Enable additional compensation using hotend temperature
+ // Note: this values cannot be calibrated automatically but have to be set manually
+ //#define USE_TEMP_EXT_COMPENSATION
+ #endif
+#endif
+
// @section extras
//
+// G60/G61 Position Save and Return
+//
+//#define SAVED_POSITIONS 1 // Each saved position slot costs 12 bytes
+
+//
// G2/G3 Arc Support
//
-#define ARC_SUPPORT // Disable this feature to save ~3226 bytes
+#define ARC_SUPPORT // Disable this feature to save ~3226 bytes
#if ENABLED(ARC_SUPPORT)
- #define MM_PER_ARC_SEGMENT 1 // Length of each arc segment
- #define MIN_ARC_SEGMENTS 24 // Minimum number of segments in a complete circle
- #define N_ARC_CORRECTION 25 // Number of interpolated segments between corrections
- //#define ARC_P_CIRCLES // Enable the 'P' parameter to specify complete circles
- //#define CNC_WORKSPACE_PLANES // Allow G2/G3 to operate in XY, ZX, or YZ planes
+ #define MM_PER_ARC_SEGMENT 1 // (mm) Length (or minimum length) of each arc segment
+ //#define ARC_SEGMENTS_PER_R 1 // Max segment length, MM_PER = Min
+ #define MIN_ARC_SEGMENTS 24 // Minimum number of segments in a complete circle
+ //#define ARC_SEGMENTS_PER_SEC 50 // Use feedrate to choose segment length (with MM_PER_ARC_SEGMENT as the minimum)
+ #define N_ARC_CORRECTION 25 // Number of interpolated segments between corrections
+ //#define ARC_P_CIRCLES // Enable the 'P' parameter to specify complete circles
+ //#define CNC_WORKSPACE_PLANES // Allow G2/G3 to operate in XY, ZX, or YZ planes
#endif
// Support for G5 with XYZE destination and IJPQ offsets. Requires ~2666 bytes.
@@ -1691,6 +1789,9 @@
// Z raise distance for tool-change, as needed for some extruders
#define TOOLCHANGE_ZRAISE 2 // (mm)
//#define TOOLCHANGE_NO_RETURN // Never return to the previous position on tool-change
+ #if ENABLED(TOOLCHANGE_NO_RETURN)
+ //#define EVENT_GCODE_AFTER_TOOLCHANGE "G12X" // G-code to run after tool-change is complete
+ #endif
// Retract and prime filament on tool-change
//#define TOOLCHANGE_FILAMENT_SWAP
@@ -1754,6 +1855,7 @@
#define FILAMENT_UNLOAD_PURGE_RETRACT 4 // (mm) Unload initial retract length.
#define FILAMENT_UNLOAD_PURGE_DELAY 5000 // (ms) Delay for the filament to cool after retract.
#define FILAMENT_UNLOAD_PURGE_LENGTH 0 // (mm) An unretract is done, then this length is purged.
+ #define FILAMENT_UNLOAD_PURGE_FEEDRATE 25 // (mm/s) feedrate to purge before unload
#define PAUSE_PARK_NOZZLE_TIMEOUT 45 // (seconds) Time limit before the nozzle is turned off for safety.
#define FILAMENT_CHANGE_ALERT_BEEPS 6 // Number of alert beeps to play when a response is needed.
@@ -1818,6 +1920,12 @@
#define Z3_MICROSTEPS 16
#endif
+ #if AXIS_DRIVER_TYPE_Z4(TMC26X)
+ #define Z4_MAX_CURRENT 1000
+ #define Z4_SENSE_RESISTOR 91
+ #define Z4_MICROSTEPS 16
+ #endif
+
#if AXIS_DRIVER_TYPE_E0(TMC26X)
#define E0_MAX_CURRENT 1000
#define E0_SENSE_RESISTOR 91
@@ -1854,6 +1962,18 @@
#define E5_MICROSTEPS 16
#endif
+ #if AXIS_DRIVER_TYPE_E6(TMC26X)
+ #define E6_MAX_CURRENT 1000
+ #define E6_SENSE_RESISTOR 91
+ #define E6_MICROSTEPS 16
+ #endif
+
+ #if AXIS_DRIVER_TYPE_E7(TMC26X)
+ #define E7_MAX_CURRENT 1000
+ #define E7_SENSE_RESISTOR 91
+ #define E7_MICROSTEPS 16
+ #endif
+
#endif // TMC26X
// @section tmc_smart
@@ -1935,6 +2055,14 @@
#define Z3_CHAIN_POS -1
#endif
+ #if AXIS_IS_TMC(Z4)
+ #define Z4_CURRENT 800
+ #define Z4_CURRENT_HOME Z4_CURRENT
+ #define Z4_MICROSTEPS 16
+ #define Z4_RSENSE 0.11
+ #define Z4_CHAIN_POS -1
+ #endif
+
#if AXIS_IS_TMC(E0)
#define E0_CURRENT 650
#define E0_MICROSTEPS 16
@@ -1977,6 +2105,20 @@
#define E5_CHAIN_POS -1
#endif
+ #if AXIS_IS_TMC(E6)
+ #define E6_CURRENT 800
+ #define E6_MICROSTEPS 16
+ #define E6_RSENSE 0.11
+ #define E6_CHAIN_POS -1
+ #endif
+
+ #if AXIS_IS_TMC(E7)
+ #define E7_CURRENT 800
+ #define E7_MICROSTEPS 16
+ #define E7_RSENSE 0.11
+ #define E7_CHAIN_POS -1
+ #endif
+
/**
* Override default SPI pins for TMC2130, TMC2160, TMC2660, TMC5130 and TMC5160 drivers here.
* The default pins can be found in your board's pins file.
@@ -1994,6 +2136,8 @@
//#define E3_CS_PIN -1
//#define E4_CS_PIN -1
//#define E5_CS_PIN -1
+ //#define E6_CS_PIN -1
+ //#define E7_CS_PIN -1
/**
* Software option for SPI driven drivers (TMC2130, TMC2160, TMC2660, TMC5130 and TMC5160).
@@ -2024,12 +2168,15 @@
#define Y2_SLAVE_ADDRESS 0
#define Z2_SLAVE_ADDRESS 0
#define Z3_SLAVE_ADDRESS 0
+ #define Z4_SLAVE_ADDRESS 0
#define E0_SLAVE_ADDRESS 0
#define E1_SLAVE_ADDRESS 0
#define E2_SLAVE_ADDRESS 0
#define E3_SLAVE_ADDRESS 0
#define E4_SLAVE_ADDRESS 0
#define E5_SLAVE_ADDRESS 0
+ #define E6_SLAVE_ADDRESS 0
+ #define E7_SLAVE_ADDRESS 0
/**
* Software enable
@@ -2099,12 +2246,15 @@
#define Z_HYBRID_THRESHOLD 3
#define Z2_HYBRID_THRESHOLD 3
#define Z3_HYBRID_THRESHOLD 3
+ #define Z4_HYBRID_THRESHOLD 3
#define E0_HYBRID_THRESHOLD 30
#define E1_HYBRID_THRESHOLD 30
#define E2_HYBRID_THRESHOLD 30
#define E3_HYBRID_THRESHOLD 30
#define E4_HYBRID_THRESHOLD 30
#define E5_HYBRID_THRESHOLD 30
+ #define E6_HYBRID_THRESHOLD 30
+ #define E7_HYBRID_THRESHOLD 30
/**
* Use StallGuard2 to home / probe X, Y, Z.
@@ -2176,12 +2326,12 @@
#endif // HAS_TRINAMIC
-// @section L6470
+// @section L64XX
/**
- * L6470 Stepper Driver options
+ * L64XX Stepper Driver options
*
- * Arduino-L6470 library (0.7.0 or higher) is required for this stepper driver.
+ * Arduino-L6470 library (0.8.0 or higher) is required.
* https://github.com/ameyer/Arduino-L6470
*
* Requires the following to be defined in your pins_YOUR_BOARD file
@@ -2189,114 +2339,160 @@
* L6470_CHAIN_MISO_PIN
* L6470_CHAIN_MOSI_PIN
* L6470_CHAIN_SS_PIN
- * L6470_RESET_CHAIN_PIN (optional)
+ * ENABLE_RESET_L64XX_CHIPS(Q) where Q is 1 to enable and 0 to reset
*/
-#if HAS_DRIVER(L6470)
- //#define L6470_CHITCHAT // Display additional status info
+#if HAS_L64XX
- #if AXIS_DRIVER_TYPE_X(L6470)
- #define X_MICROSTEPS 128 // Number of microsteps (VALID: 1, 2, 4, 8, 16, 32, 128)
- #define X_OVERCURRENT 2000 // (mA) Current where the driver detects an over current (VALID: 375 x (1 - 16) - 6A max - rounds down)
- #define X_STALLCURRENT 1500 // (mA) Current where the driver detects a stall (VALID: 31.25 * (1-128) - 4A max - rounds down)
- #define X_MAX_VOLTAGE 127 // 0-255, Maximum effective voltage seen by stepper
- #define X_CHAIN_POS -1 // Position in SPI chain. (<=0 : Not in chain. 1 : Nearest MOSI)
- #endif
+ //#define L6470_CHITCHAT // Display additional status info
- #if AXIS_DRIVER_TYPE_X2(L6470)
+ #if AXIS_IS_L64XX(X)
+ #define X_MICROSTEPS 128 // Number of microsteps (VALID: 1, 2, 4, 8, 16, 32, 128) - L6474 max is 16
+ #define X_OVERCURRENT 2000 // (mA) Current where the driver detects an over current
+ // L6470 & L6474 - VALID: 375 x (1 - 16) - 6A max - rounds down
+ // POWERSTEP01: VALID: 1000 x (1 - 32) - 32A max - rounds down
+ #define X_STALLCURRENT 1500 // (mA) Current where the driver detects a stall (VALID: 31.25 * (1-128) - 4A max - rounds down)
+ // L6470 & L6474 - VALID: 31.25 * (1-128) - 4A max - rounds down
+ // POWERSTEP01: VALID: 200 x (1 - 32) - 6.4A max - rounds down
+ // L6474 - STALLCURRENT setting is used to set the nominal (TVAL) current
+ #define X_MAX_VOLTAGE 127 // 0-255, Maximum effective voltage seen by stepper - not used by L6474
+ #define X_CHAIN_POS -1 // Position in SPI chain, 0=Not in chain, 1=Nearest MOSI
+ #define X_SLEW_RATE 1 // 0-3, Slew 0 is slowest, 3 is fastest
+ #endif
+
+ #if AXIS_IS_L64XX(X2)
#define X2_MICROSTEPS 128
#define X2_OVERCURRENT 2000
#define X2_STALLCURRENT 1500
#define X2_MAX_VOLTAGE 127
#define X2_CHAIN_POS -1
+ #define X2_SLEW_RATE 1
#endif
- #if AXIS_DRIVER_TYPE_Y(L6470)
+ #if AXIS_IS_L64XX(Y)
#define Y_MICROSTEPS 128
#define Y_OVERCURRENT 2000
#define Y_STALLCURRENT 1500
#define Y_MAX_VOLTAGE 127
#define Y_CHAIN_POS -1
+ #define Y_SLEW_RATE 1
#endif
- #if AXIS_DRIVER_TYPE_Y2(L6470)
+ #if AXIS_IS_L64XX(Y2)
#define Y2_MICROSTEPS 128
#define Y2_OVERCURRENT 2000
#define Y2_STALLCURRENT 1500
#define Y2_MAX_VOLTAGE 127
#define Y2_CHAIN_POS -1
+ #define Y2_SLEW_RATE 1
#endif
- #if AXIS_DRIVER_TYPE_Z(L6470)
+ #if AXIS_IS_L64XX(Z)
#define Z_MICROSTEPS 128
#define Z_OVERCURRENT 2000
#define Z_STALLCURRENT 1500
#define Z_MAX_VOLTAGE 127
#define Z_CHAIN_POS -1
+ #define Z_SLEW_RATE 1
#endif
- #if AXIS_DRIVER_TYPE_Z2(L6470)
+ #if AXIS_IS_L64XX(Z2)
#define Z2_MICROSTEPS 128
#define Z2_OVERCURRENT 2000
#define Z2_STALLCURRENT 1500
#define Z2_MAX_VOLTAGE 127
#define Z2_CHAIN_POS -1
+ #define Z2_SLEW_RATE 1
#endif
- #if AXIS_DRIVER_TYPE_Z3(L6470)
+ #if AXIS_IS_L64XX(Z3)
#define Z3_MICROSTEPS 128
#define Z3_OVERCURRENT 2000
#define Z3_STALLCURRENT 1500
#define Z3_MAX_VOLTAGE 127
#define Z3_CHAIN_POS -1
+ #define Z3_SLEW_RATE 1
+ #endif
+
+ #if AXIS_IS_L64XX(Z4)
+ #define Z4_MICROSTEPS 128
+ #define Z4_OVERCURRENT 2000
+ #define Z4_STALLCURRENT 1500
+ #define Z4_MAX_VOLTAGE 127
+ #define Z4_CHAIN_POS -1
+ #define Z4_SLEW_RATE 1
#endif
- #if AXIS_DRIVER_TYPE_E0(L6470)
+ #if AXIS_IS_L64XX(E0)
#define E0_MICROSTEPS 128
#define E0_OVERCURRENT 2000
#define E0_STALLCURRENT 1500
#define E0_MAX_VOLTAGE 127
#define E0_CHAIN_POS -1
+ #define E0_SLEW_RATE 1
#endif
- #if AXIS_DRIVER_TYPE_E1(L6470)
+ #if AXIS_IS_L64XX(E1)
#define E1_MICROSTEPS 128
#define E1_OVERCURRENT 2000
#define E1_STALLCURRENT 1500
#define E1_MAX_VOLTAGE 127
#define E1_CHAIN_POS -1
+ #define E1_SLEW_RATE 1
#endif
- #if AXIS_DRIVER_TYPE_E2(L6470)
+ #if AXIS_IS_L64XX(E2)
#define E2_MICROSTEPS 128
#define E2_OVERCURRENT 2000
#define E2_STALLCURRENT 1500
#define E2_MAX_VOLTAGE 127
#define E2_CHAIN_POS -1
+ #define E2_SLEW_RATE 1
#endif
- #if AXIS_DRIVER_TYPE_E3(L6470)
+ #if AXIS_IS_L64XX(E3)
#define E3_MICROSTEPS 128
#define E3_OVERCURRENT 2000
#define E3_STALLCURRENT 1500
#define E3_MAX_VOLTAGE 127
#define E3_CHAIN_POS -1
+ #define E3_SLEW_RATE 1
#endif
- #if AXIS_DRIVER_TYPE_E4(L6470)
+ #if AXIS_IS_L64XX(E4)
#define E4_MICROSTEPS 128
#define E4_OVERCURRENT 2000
#define E4_STALLCURRENT 1500
#define E4_MAX_VOLTAGE 127
#define E4_CHAIN_POS -1
+ #define E4_SLEW_RATE 1
#endif
- #if AXIS_DRIVER_TYPE_E5(L6470)
+ #if AXIS_IS_L64XX(E5)
#define E5_MICROSTEPS 128
#define E5_OVERCURRENT 2000
#define E5_STALLCURRENT 1500
#define E5_MAX_VOLTAGE 127
#define E5_CHAIN_POS -1
+ #define E5_SLEW_RATE 1
+ #endif
+
+ #if AXIS_IS_L64XX(E6)
+ #define E6_MICROSTEPS 128
+ #define E6_OVERCURRENT 2000
+ #define E6_STALLCURRENT 1500
+ #define E6_MAX_VOLTAGE 127
+ #define E6_CHAIN_POS -1
+ #define E6_SLEW_RATE 1
+ #endif
+
+ #if AXIS_IS_L64XX(E7)
+ #define E7_MICROSTEPS 128
+ #define E7_OVERCURRENT 2000
+ #define E7_STALLCURRENT 1500
+ #define E7_MAX_VOLTAGE 127
+ #define E7_CHAIN_POS -1
+ #define E7_SLEW_RATE 1
#endif
/**
@@ -2308,7 +2504,7 @@
* I not present or I0 or I1 - X, Y, Z or E0
* I2 - X2, Y2, Z2 or E1
* I3 - Z3 or E3
- * I4 - E4
+ * I4 - Z4 or E4
* I5 - E5
* M916 - Increase drive level until get thermal warning
* M917 - Find minimum current thresholds
@@ -2322,7 +2518,15 @@
//#define L6470_STOP_ON_ERROR
#endif
-#endif // L6470
+#endif // HAS_L64XX
+
+// @section i2cbus
+
+//
+// I2C Master ID for LPC176x LCD and Digital Current control
+// Does not apply to other peripherals based on the Wire library.
+//
+//#define I2C_MASTER_ID 1 // Set a value from 0 to 2
/**
* TWI/I2C BUS
@@ -2352,10 +2556,10 @@
* echo:i2c-reply: from:99 bytes:5 data:hello
*/
-// @section i2cbus
-
//#define EXPERIMENTAL_I2CBUS
-#define I2C_SLAVE_ADDRESS 0 // Set a value from 8 to 127 to act as a slave
+#if ENABLED(EXPERIMENTAL_I2CBUS)
+ #define I2C_SLAVE_ADDRESS 0 // Set a value from 8 to 127 to act as a slave
+#endif
// @section extras
@@ -2384,6 +2588,20 @@
// Duration to hold the switch or keep CHDK_PIN high
//#define PHOTO_SWITCH_MS 50 // (ms) (M240 D)
+
+ /**
+ * PHOTO_PULSES_US may need adjustment depending on board and camera model.
+ * Pin must be running at 48.4kHz.
+ * Be sure to use a PHOTOGRAPH_PIN which can rise and fall quick enough.
+ * (e.g., MKS SBase temp sensor pin was too slow, so used P1.23 on J8.)
+ *
+ * Example pulse data for Nikon: https://bit.ly/2FKD0Aq
+ * IR Wiring: https://git.io/JvJf7
+ */
+ //#define PHOTO_PULSES_US { 2000, 27850, 400, 1580, 400, 3580, 400 } // (µs) Durations for each 48.4kHz oscillation
+ #ifdef PHOTO_PULSES_US
+ #define PHOTO_PULSE_DELAY_US 13 // (µs) Approximate duration of each HIGH and LOW pulse in the oscillation
+ #endif
#endif
/**
@@ -2723,7 +2941,11 @@
#define JOY_Z_PIN 12 // RAMPS: Suggested pin A12 on AUX2
#define JOY_EN_PIN 44 // RAMPS: Suggested pin D44 on AUX2
- // Use M119 to find reasonable values after connecting your hardware:
+ //#define INVERT_JOY_X // Enable if X direction is reversed
+ //#define INVERT_JOY_Y // Enable if Y direction is reversed
+ //#define INVERT_JOY_Z // Enable if Z direction is reversed
+
+ // Use M119 with JOYSTICK_DEBUG to find reasonable values after connecting:
#define JOY_X_LIMITS { 5600, 8190-100, 8190+100, 10800 } // min, deadzone start, deadzone end, max
#define JOY_Y_LIMITS { 5600, 8250-100, 8250+100, 11000 }
#define JOY_Z_LIMITS { 4800, 8080-100, 8080+100, 11550 }
@@ -2778,12 +3000,15 @@
/**
* WiFi Support (Espressif ESP32 WiFi)
*/
-//#define WIFISUPPORT
-#if ENABLED(WIFISUPPORT)
+//#define WIFISUPPORT // Marlin embedded WiFi managenent
+//#define ESP3D_WIFISUPPORT // ESP3D Library WiFi management (https://github.com/luc-github/ESP3DLib)
+
+#if EITHER(WIFISUPPORT, ESP3D_WIFISUPPORT)
#define WIFI_SSID "Wifi SSID"
#define WIFI_PWD "Wifi Password"
- //#define WEBSUPPORT // Start a webserver with auto-discovery
- //#define OTASUPPORT // Support over-the-air firmware updates
+ //#define WEBSUPPORT // Start a webserver (which may include auto-discovery)
+ //#define OTASUPPORT // Support over-the-air firmware updates
+ //#define WIFI_CUSTOM_COMMAND // Accept feature config commands (e.g., WiFi ESP3D) from the host
#endif
/**
@@ -2855,9 +3080,14 @@
// @section develop
-/**
- * M43 - display pin status, watch pins for changes, watch endstops & toggle LED, Z servo probe test, toggle pins
- */
+//
+// M100 Free Memory Watcher to debug memory usage
+//
+//#define M100_FREE_MEMORY_WATCHER
+
+//
+// M43 - display pin status, toggle pins, watch pins, watch endstops & toggle LED, test servo probe
+//
//#define PINS_DEBUGGING
// Enable Marlin dev mode which adds some special commands