Compare commits

...

42 Commits

Author SHA1 Message Date
InsanityAutomation b7349cbd5d Merge branch 'LulzbotTestBase' into LulzbotUniversalTools 2020-09-16 16:31:41 -04:00
InsanityAutomation c545003696 Update Configuration_adv.h 2020-09-16 16:26:34 -04:00
InsanityAutomation 343207ec9a Fix for platformio bad update 2020-09-15 17:54:08 -04:00
InsanityAutomation fc1ffc0993 Tweaks for MiniV2 broken endstop and gantry calibration position 2020-09-02 19:35:26 -04:00
InsanityAutomation 1ba231df64 Update Configuration_adv.h 2020-08-26 15:11:05 -04:00
InsanityAutomation e9193fb63e Bring over pro tft fixes from main branch 2020-08-24 21:53:57 -04:00
InsanityAutomation 4c016a246c Make thermal timing more forgiving, at least until PID can be better tuned for BMG-M 2020-08-23 18:12:31 -04:00
InsanityAutomation 26be927100 Update Configuration_adv.h 2020-08-23 17:12:17 -04:00
InsanityAutomation e6d8865f40 Adjust PID and currents on tool menu 2020-08-23 16:48:59 -04:00
InsanityAutomation 3344d04d83 Nozzle as proble home offset application to probe points 2020-08-23 16:07:15 -04:00
InsanityAutomation d28b66a672 Allow M206 offsets to apply to z safe home move 2020-08-20 21:53:14 -04:00
InsanityAutomation 562e6aaade Batch 1 2020-08-11 14:32:45 -04:00
InsanityAutomation baf4019ec9 Working for TMC, Digipots 2020-08-09 16:38:39 -04:00
InsanityAutomation 3ce947eb8b Sanity Checks, gcode calls 2020-08-09 12:40:05 -04:00
InsanityAutomation acc5c0feed Add New G34 mode for current adjustable drivers
TODO : Sanity checks, Finish DAC mode, Test on Rambo
2020-08-09 12:40:05 -04:00
InsanityAutomation 9801f4295d Merge branch 'LulzbotUniversalTools' of https://github.com/InsanityAutomation/Marlin into LulzbotUniversalTools 2020-08-09 12:39:05 -04:00
InsanityAutomation c0194ec093 parent 7bd0b1bf62
author InsanityAutomation <d.menzel@insanityautomation.com> 1595647462 -0400
committer InsanityAutomation <d.menzel@insanityautomation.com> 1596991017 -0400

Finish main config
2020-08-09 12:37:24 -04:00
InsanityAutomation 6167a8d1e4 Merge branch 'LulzbotUniversalTools' of https://github.com/InsanityAutomation/Marlin into LulzbotUniversalTools 2020-08-09 12:21:01 -04:00
InsanityAutomation ac65e46038 Update Version.h 2020-08-09 12:20:03 -04:00
InsanityAutomation 83b4f6f87f Update Configuration.h 2020-08-09 12:09:30 -04:00
InsanityAutomation ca0e04ebff Taz6 G34 2020-08-09 12:09:30 -04:00
InsanityAutomation 50bc15b9c5 Fix up pro compilation 2020-08-09 12:09:30 -04:00
InsanityAutomation 28af8a5f27 Update Configuration_adv.h 2020-08-09 12:09:30 -04:00
InsanityAutomation 9abd147440 Finish Configs
A few more files to bring in from lulzbot repo, slow walk to verify all configs, test Bilinear Vs UBL, configure and test dual z stepper for Workhorse and Taz 6
2020-08-09 12:09:08 -04:00
InsanityAutomation e0fa38760f Finish main config 2020-08-09 12:08:16 -04:00
InsanityAutomation a2b8badba9 initial commit 2020-08-09 12:02:10 -04:00
InsanityAutomation 1879cc7248 Bump to head for nozzle wipe PR, final pass base sync config.h 2020-08-09 11:58:52 -04:00
InsanityAutomation 6dd6e22dda Finish Configs
A few more files to bring in from lulzbot repo, slow walk to verify all configs, test Bilinear Vs UBL, configure and test dual z stepper for Workhorse and Taz 6
2020-08-09 11:58:52 -04:00
InsanityAutomation 7bd0b1bf62 initial commit 2020-08-09 11:58:08 -04:00
InsanityAutomation a3f21960d0 Finish main config 2020-08-09 11:58:08 -04:00
InsanityAutomation 89a6e366cd Update Configuration.h 2020-07-28 14:39:39 -04:00
InsanityAutomation a3d41f7e47 Taz6 G34 2020-07-28 13:27:59 -04:00
InsanityAutomation cf27c04ed0 Fix up pro compilation 2020-07-28 12:34:01 -04:00
InsanityAutomation f69180cfe2 Update Configuration_adv.h 2020-07-28 11:52:49 -04:00
InsanityAutomation cdc470a47d Merge branch 'LulzbotUniversalTools' of https://github.com/InsanityAutomation/Marlin into LulzbotUniversalTools 2020-07-28 10:59:45 -04:00
InsanityAutomation 0c0ef22b02 Bump to head for nozzle wipe PR, final pass base sync config.h 2020-07-28 10:59:26 -04:00
InsanityAutomation 1c96c392f1 Finish Configs
A few more files to bring in from lulzbot repo, slow walk to verify all configs, test Bilinear Vs UBL, configure and test dual z stepper for Workhorse and Taz 6
2020-07-28 10:07:30 -04:00
InsanityAutomation 714952f80d Finish main config 2020-07-28 10:07:10 -04:00
InsanityAutomation a9e84791a2 initial commit 2020-07-28 09:43:00 -04:00
InsanityAutomation 42d532106b Finish Configs
A few more files to bring in from lulzbot repo, slow walk to verify all configs, test Bilinear Vs UBL, configure and test dual z stepper for Workhorse and Taz 6
2020-07-25 00:57:48 -04:00
InsanityAutomation d5e2679258 Finish main config 2020-07-24 23:24:22 -04:00
InsanityAutomation 618a8484b0 initial commit 2020-07-24 16:56:39 -04:00
24 changed files with 1222 additions and 1148 deletions
+377 -134
View File
@@ -1,3 +1,11 @@
//#define Mini
//#define MiniV2
//#define Taz6
//#define Workhorse
//#define TazPro
//#define TazDualZ
/** /**
* Marlin 3D Printer Firmware * Marlin 3D Printer Firmware
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
@@ -71,8 +79,8 @@
// @section info // @section info
// Author info of this build printed to the host during boot and M115 // Author info of this build printed to the host during boot and M115
#define STRING_CONFIG_H_AUTHOR "(none, default config)" // Who made the changes. #define STRING_CONFIG_H_AUTHOR "Lulzbot" // Who made the changes.
//#define CUSTOM_VERSION_FILE Version.h // Path from the root directory (no quotes) #define CUSTOM_VERSION_FILE Version.h // Path from the root directory (no quotes)
/** /**
* *** VENDORS PLEASE READ *** * *** VENDORS PLEASE READ ***
@@ -89,7 +97,7 @@
#define SHOW_BOOTSCREEN #define SHOW_BOOTSCREEN
// Show the bitmap in Marlin/_Bootscreen.h on startup. // Show the bitmap in Marlin/_Bootscreen.h on startup.
//#define SHOW_CUSTOM_BOOTSCREEN #define SHOW_CUSTOM_BOOTSCREEN
// Show the bitmap in Marlin/_Statusscreen.h on the status screen. // Show the bitmap in Marlin/_Statusscreen.h on the status screen.
//#define CUSTOM_STATUS_SCREEN_IMAGE //#define CUSTOM_STATUS_SCREEN_IMAGE
@@ -104,7 +112,11 @@
* *
* :[-1, 0, 1, 2, 3, 4, 5, 6, 7] * :[-1, 0, 1, 2, 3, 4, 5, 6, 7]
*/ */
#define SERIAL_PORT 0 #if DISABLED(TazPro)
#define SERIAL_PORT 0
#else
#define SERIAL_PORT -1
#endif
/** /**
* Select a secondary serial port on the board to use for communication with the host. * Select a secondary serial port on the board to use for communication with the host.
@@ -128,11 +140,34 @@
// Choose the name from boards.h that matches your setup // Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD #ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_RAMPS_14_EFB #if ENABLED(Mini)
#define MOTHERBOARD BOARD_MINIRAMBO
#elif ENABLED(MiniV2)
#define MOTHERBOARD BOARD_EINSY_RETRO
#elif ANY(Workhorse, Taz6)
#define MOTHERBOARD BOARD_RAMBO
#elif ENABLED(TazPro)
#define MOTHERBOARD BOARD_ARCHIM2
#endif
#endif #endif
// Name displayed in the LCD "Ready" message and Info menu // Name displayed in the LCD "Ready" message and Info menu
//#define CUSTOM_MACHINE_NAME "3D Printer" #if ENABLED(Mini)
#define CUSTOM_MACHINE_NAME "Mini"
#define MACHINE_UUID "351487b6-ca9a-4c1a-8765-d668b1da6585" // <-- changed
#elif ENABLED(MiniV2)
#define CUSTOM_MACHINE_NAME "Mini 2"
#define MACHINE_UUID "e5502411-d46d-421d-ba3a-a20126d7930f" // <-- changed
#elif ENABLED(Taz6)
#define CUSTOM_MACHINE_NAME "Taz 6"
#define MACHINE_UUID "845f003c-aebd-4e53-a6b9-7d0984fde609" // <-- changed
#elif ENABLED(Workhorse)
#define CUSTOM_MACHINE_NAME "Taz Workhorse"
#define MACHINE_UUID "5ee798fb-4062-4d35-8224-5e846ffb45a5" // <-- changed
#elif ENABLED(TazPro)
#define CUSTOM_MACHINE_NAME "Taz Pro"
#define MACHINE_UUID "a952577d-8722-483a-999d-acdc9e772b7b" // <-- changed
#endif
// Printer's unique ID, used by some programs to differentiate between machines. // Printer's unique ID, used by some programs to differentiate between machines.
// Choose your own or use a service like https://www.uuidgenerator.net/version4 // Choose your own or use a service like https://www.uuidgenerator.net/version4
@@ -142,10 +177,14 @@
// This defines the number of extruders // This defines the number of extruders
// :[0, 1, 2, 3, 4, 5, 6, 7, 8] // :[0, 1, 2, 3, 4, 5, 6, 7, 8]
#define EXTRUDERS 1 #if ENABLED(TazPro)
#define EXTRUDERS 2
#else
#define EXTRUDERS 1
#endif
// Generally expected filament diameter (1.75, 2.85, 3.0, ...). Used for Volumetric, Filament Width Sensor, etc. // Generally expected filament diameter (1.75, 2.85, 3.0, ...). Used for Volumetric, Filament Width Sensor, etc.
#define DEFAULT_NOMINAL_FILAMENT_DIA 1.75 #define DEFAULT_NOMINAL_FILAMENT_DIA 2.85
// For Cyclops or any "multi-extruder" that shares a single nozzle. // For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE //#define SINGLENOZZLE
@@ -197,11 +236,13 @@
#endif #endif
// A dual-nozzle that uses a servomotor to raise/lower one (or both) of the nozzles // A dual-nozzle that uses a servomotor to raise/lower one (or both) of the nozzles
//#define SWITCHING_NOZZLE #if ENABLED(TazPro)
#define SWITCHING_NOZZLE
#endif
#if ENABLED(SWITCHING_NOZZLE) #if ENABLED(SWITCHING_NOZZLE)
#define SWITCHING_NOZZLE_SERVO_NR 0 #define SWITCHING_NOZZLE_SERVO_NR 0
//#define SWITCHING_NOZZLE_E1_SERVO_NR 1 // If two servos are used, the index of the second #define SWITCHING_NOZZLE_E1_SERVO_NR 1 // If two servos are used, the index of the second
#define SWITCHING_NOZZLE_SERVO_ANGLES { 0, 90 } // Angles for E0, E1 (single servo) or lowered/raised (dual servo) #define SWITCHING_NOZZLE_SERVO_ANGLES { 55, 120 } // Angles for E0, E1 (single servo) or lowered/raised (dual servo)
#endif #endif
/** /**
@@ -314,9 +355,9 @@
// Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing). // Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing).
// The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder). // The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder).
// For the other hotends it is their distance from the extruder 0 hotend. // For the other hotends it is their distance from the extruder 0 hotend.
//#define HOTEND_OFFSET_X { 0.0, 20.00 } // (mm) relative X-offset for each nozzle #define HOTEND_OFFSET_X {0.0, 44.576} // <-- changed: (mm) relative X-offset for each nozzle
//#define HOTEND_OFFSET_Y { 0.0, 5.00 } // (mm) relative Y-offset for each nozzle #define HOTEND_OFFSET_Y {0.0, 0.095} // <-- changed: (mm) relative Y-offset for each nozzle
//#define HOTEND_OFFSET_Z { 0.0, 0.00 } // (mm) relative Z-offset for each nozzle #define HOTEND_OFFSET_Z {0.0, 0.005} // <-- changed: (mm) relative Z-offset for each nozzle
// @section machine // @section machine
@@ -416,15 +457,17 @@
* 998 : Dummy Table that ALWAYS reads 25°C or the temperature defined below. * 998 : Dummy Table that ALWAYS reads 25°C or the temperature defined below.
* 999 : Dummy Table that ALWAYS reads 100°C or the temperature defined below. * 999 : Dummy Table that ALWAYS reads 100°C or the temperature defined below.
*/ */
#define TEMP_SENSOR_0 1 #define TEMP_SENSOR_0 5
#define TEMP_SENSOR_1 0 #if ENABLED(TazPro)
#define TEMP_SENSOR_1 5
#endif
#define TEMP_SENSOR_2 0 #define TEMP_SENSOR_2 0
#define TEMP_SENSOR_3 0 #define TEMP_SENSOR_3 0
#define TEMP_SENSOR_4 0 #define TEMP_SENSOR_4 0
#define TEMP_SENSOR_5 0 #define TEMP_SENSOR_5 0
#define TEMP_SENSOR_6 0 #define TEMP_SENSOR_6 0
#define TEMP_SENSOR_7 0 #define TEMP_SENSOR_7 0
#define TEMP_SENSOR_BED 0 #define TEMP_SENSOR_BED 7
#define TEMP_SENSOR_PROBE 0 #define TEMP_SENSOR_PROBE 0
#define TEMP_SENSOR_CHAMBER 0 #define TEMP_SENSOR_CHAMBER 0
@@ -437,13 +480,13 @@
//#define TEMP_SENSOR_1_AS_REDUNDANT //#define TEMP_SENSOR_1_AS_REDUNDANT
#define MAX_REDUNDANT_TEMP_SENSOR_DIFF 10 #define MAX_REDUNDANT_TEMP_SENSOR_DIFF 10
#define TEMP_RESIDENCY_TIME 10 // (seconds) Time to wait for hotend to "settle" in M109 #define TEMP_RESIDENCY_TIME 2 // (seconds) Time to wait for hotend to "settle" in M109
#define TEMP_WINDOW 1 // (°C) Temperature proximity for the "temperature reached" timer #define TEMP_WINDOW 5 // (°C) Temperature proximity for the "temperature reached" timer
#define TEMP_HYSTERESIS 3 // (°C) Temperature proximity considered "close enough" to the target #define TEMP_HYSTERESIS 5 // (°C) Temperature proximity considered "close enough" to the target
#define TEMP_BED_RESIDENCY_TIME 10 // (seconds) Time to wait for bed to "settle" in M190 #define TEMP_BED_RESIDENCY_TIME 3 // (seconds) Time to wait for bed to "settle" in M190
#define TEMP_BED_WINDOW 1 // (°C) Temperature proximity for the "temperature reached" timer #define TEMP_BED_WINDOW 3 // (°C) Temperature proximity for the "temperature reached" timer
#define TEMP_BED_HYSTERESIS 3 // (°C) Temperature proximity considered "close enough" to the target #define TEMP_BED_HYSTERESIS 5 // (°C) Temperature proximity considered "close enough" to the target
// Below this temperature the heater will be switched off // Below this temperature the heater will be switched off
// because it probably indicates a broken thermistor wire. // because it probably indicates a broken thermistor wire.
@@ -460,8 +503,8 @@
// Above this temperature the heater will be switched off. // Above this temperature the heater will be switched off.
// This can protect components from overheating, but NOT from shorts and failures. // This can protect components from overheating, but NOT from shorts and failures.
// (Use MINTEMP for thermistor short/failure protection.) // (Use MINTEMP for thermistor short/failure protection.)
#define HEATER_0_MAXTEMP 275 #define HEATER_0_MAXTEMP 305
#define HEATER_1_MAXTEMP 275 #define HEATER_1_MAXTEMP 305
#define HEATER_2_MAXTEMP 275 #define HEATER_2_MAXTEMP 275
#define HEATER_3_MAXTEMP 275 #define HEATER_3_MAXTEMP 275
#define HEATER_4_MAXTEMP 275 #define HEATER_4_MAXTEMP 275
@@ -482,17 +525,23 @@
#define PID_K1 0.95 // Smoothing factor within any PID loop #define PID_K1 0.95 // Smoothing factor within any PID loop
#if ENABLED(PIDTEMP) #if ENABLED(PIDTEMP)
//#define PID_EDIT_MENU // Add PID editing to the "Advanced Settings" menu. (~700 bytes of PROGMEM) #define PID_EDIT_MENU // Add PID editing to the "Advanced Settings" menu. (~700 bytes of PROGMEM)
//#define PID_AUTOTUNE_MENU // Add PID auto-tuning to the "Advanced Settings" menu. (~250 bytes of PROGMEM) #define PID_AUTOTUNE_MENU // Add PID auto-tuning to the "Advanced Settings" menu. (~250 bytes of PROGMEM)
//#define PID_PARAMS_PER_HOTEND // Uses separate PID parameters for each extruder (useful for mismatched extruders) //#define PID_PARAMS_PER_HOTEND // Uses separate PID parameters for each extruder (useful for mismatched extruders)
// Set/get with gcode: M301 E[extruder number, 0-2] // Set/get with gcode: M301 E[extruder number, 0-2]
// If you are using a pre-configured hotend then you can use one of the value sets by uncommenting it // If you are using a pre-configured hotend then you can use one of the value sets by uncommenting it
// Ultimaker // Taz 6
#define DEFAULT_Kp 22.2 #if ENABLED(Taz6, Mini)
#define DEFAULT_Ki 1.08 #define DEFAULT_Kp 28.79
#define DEFAULT_Kd 114 #define DEFAULT_Ki 1.91
#define DEFAULT_Kd 108.51
#else
#define DEFAULT_Kp 21.0
#define DEFAULT_Ki 1.78
#define DEFAULT_Kd 61.93
#endif
// MakerGear // MakerGear
//#define DEFAULT_Kp 7.0 //#define DEFAULT_Kp 7.0
@@ -523,7 +572,7 @@
* heater. If your configuration is significantly different than this and you don't understand * heater. If your configuration is significantly different than this and you don't understand
* the issues involved, don't use bed PID until someone else verifies that your hardware works. * the issues involved, don't use bed PID until someone else verifies that your hardware works.
*/ */
//#define PIDTEMPBED #define PIDTEMPBED
//#define BED_LIMIT_SWITCHING //#define BED_LIMIT_SWITCHING
@@ -533,7 +582,11 @@
* When set to any value below 255, enables a form of PWM to the bed that acts like a divider * When set to any value below 255, enables a form of PWM to the bed that acts like a divider
* so don't use it unless you are OK with PWM on your bed. (See the comment on enabling PIDTEMPBED) * so don't use it unless you are OK with PWM on your bed. (See the comment on enabling PIDTEMPBED)
*/ */
#define MAX_BED_POWER 255 // limits duty cycle to bed; 255=full current #if ANY(Workhorse, Taz6)
#define MAX_BED_POWER 206 // limits duty cycle to bed; 255=full current
#else
#define MAX_BED_POWER 255 // limits duty cycle to bed; 255=full current
#endif
#if ENABLED(PIDTEMPBED) #if ENABLED(PIDTEMPBED)
//#define MIN_BED_POWER 0 //#define MIN_BED_POWER 0
@@ -541,9 +594,27 @@
//120V 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) //120V 250W silicone heater into 4mm borosilicate (MendelMax 1.5+)
//from FOPDT model - kp=.39 Tp=405 Tdead=66, Tc set to 79.2, aggressive factor of .15 (vs .1, 1, 10) //from FOPDT model - kp=.39 Tp=405 Tdead=66, Tc set to 79.2, aggressive factor of .15 (vs .1, 1, 10)
#define DEFAULT_bedKp 10.00 #if ENABLED(Taz6)
#define DEFAULT_bedKi .023 #define DEFAULT_bedKp 162
#define DEFAULT_bedKd 305.4 #define DEFAULT_bedKi 17
#define DEFAULT_bedKd 378
#elif ENABLED(MiniV2)
#define DEFAULT_bedKp 384.33
#define DEFAULT_bedKi 72.17
#define DEFAULT_bedKd 511.64
#elif ANY(Workhorse, TazPro)
#define DEFAULT_bedKp 286.02
#define DEFAULT_bedKi 54.55
#define DEFAULT_bedKd 374.9
#elif ENABLED(Mini)
#define DEFAULT_bedKp 294
#define DEFAULT_bedKi 65
#define DEFAULT_bedKd 382
#else
#define DEFAULT_bedKp 384.33
#define DEFAULT_bedKi 72.17
#define DEFAULT_bedKd 511.64
#endif
//120V 250W silicone heater into 4mm borosilicate (MendelMax 1.5+) //120V 250W silicone heater into 4mm borosilicate (MendelMax 1.5+)
//from pidautotune //from pidautotune
@@ -572,7 +643,7 @@
* *** IT IS HIGHLY RECOMMENDED TO LEAVE THIS OPTION ENABLED! *** * *** IT IS HIGHLY RECOMMENDED TO LEAVE THIS OPTION ENABLED! ***
*/ */
#define PREVENT_COLD_EXTRUSION #define PREVENT_COLD_EXTRUSION
#define EXTRUDE_MINTEMP 170 #define EXTRUDE_MINTEMP 140
/** /**
* Prevent a single extrusion longer than EXTRUDE_MAXLENGTH. * Prevent a single extrusion longer than EXTRUDE_MAXLENGTH.
@@ -627,11 +698,13 @@
// Almost all printers will be using one per axis. Probes will use one or more of the // Almost all printers will be using one per axis. Probes will use one or more of the
// extra connectors. Leave undefined any used for non-endstop and non-probe purposes. // extra connectors. Leave undefined any used for non-endstop and non-probe purposes.
#define USE_XMIN_PLUG #define USE_XMIN_PLUG
#define USE_YMIN_PLUG #if DISABLED(MiniV2, TazPro)
#define USE_YMIN_PLUG
#endif
#define USE_ZMIN_PLUG #define USE_ZMIN_PLUG
//#define USE_XMAX_PLUG //#define USE_XMAX_PLUG
//#define USE_YMAX_PLUG #define USE_YMAX_PLUG
//#define USE_ZMAX_PLUG #define USE_ZMAX_PLUG
// Enable pullup for all endstops to prevent a floating state // Enable pullup for all endstops to prevent a floating state
#define ENDSTOPPULLUPS #define ENDSTOPPULLUPS
@@ -660,13 +733,29 @@
#endif #endif
// Mechanical endstop with COM to ground and NC to Signal uses "false" here (most common setup). // Mechanical endstop with COM to ground and NC to Signal uses "false" here (most common setup).
#define X_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop. #if ANY(Mini, MiniV2, TazPro)
#define Y_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop. #define X_MIN_ENDSTOP_INVERTING true // Set to true to invert the logic of the endstop.
#define Z_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop. #else
#define X_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
#endif
#if ENABLED(Mini)
#define Y_MIN_ENDSTOP_INVERTING true // Set to true to invert the logic of the endstop.
#else
#define Y_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
#endif
#define Z_MIN_ENDSTOP_INVERTING true // Set to true to invert the logic of the endstop.
#define X_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop. #define X_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
#define Y_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop. #if ANY(Mini, MiniV2, TazPro)
#define Z_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop. #define Y_MAX_ENDSTOP_INVERTING true // Set to true to invert the logic of the endstop.
#define Z_MIN_PROBE_ENDSTOP_INVERTING false // Set to true to invert the logic of the probe. #else
#define Y_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
#endif
#if ENABLED(Mini)
#define Z_MAX_ENDSTOP_INVERTING true // Set to true to invert the logic of the endstop.
#else
#define Z_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
#endif
#define Z_MIN_PROBE_ENDSTOP_INVERTING true // Set to true to invert the logic of the probe.
/** /**
* Stepper Drivers * Stepper Drivers
@@ -684,9 +773,13 @@
* TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_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'] * :['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 #if ANY(TazPro, MiniV2)
//#define Y_DRIVER_TYPE A4988 #define X_DRIVER_TYPE TMC2130
//#define Z_DRIVER_TYPE A4988 #define Y_DRIVER_TYPE TMC2130
#define Z_DRIVER_TYPE TMC2130
#define E0_DRIVER_TYPE TMC2130
#define E1_DRIVER_TYPE TMC2130
#endif
//#define X2_DRIVER_TYPE A4988 //#define X2_DRIVER_TYPE A4988
//#define Y2_DRIVER_TYPE A4988 //#define Y2_DRIVER_TYPE A4988
//#define Z2_DRIVER_TYPE A4988 //#define Z2_DRIVER_TYPE A4988
@@ -717,10 +810,14 @@
* *
* :[2,3,4,5,6,7] * :[2,3,4,5,6,7]
*/ */
//#define ENDSTOP_NOISE_THRESHOLD 2 #if NONE(TazPro, Workhorse, MiniV2)
#define ENDSTOP_NOISE_THRESHOLD 2
#endif
// Check for stuck or disconnected endstops during homing moves. // Check for stuck or disconnected endstops during homing moves.
//#define DETECT_BROKEN_ENDSTOP #if DISABLED(TazPro, MiniV2)
#define DETECT_BROKEN_ENDSTOP
#endif
//============================================================================= //=============================================================================
//============================== Movement Settings ============================ //============================== Movement Settings ============================
@@ -747,18 +844,38 @@
* Override with M92 * Override with M92
* X, Y, Z, E0 [, E1[, E2...]] * X, Y, Z, E0 [, E1[, E2...]]
*/ */
#define DEFAULT_AXIS_STEPS_PER_UNIT { 80, 80, 4000, 500 }
#if ENABLED(Mini)
#define DEFAULT_AXIS_STEPS_PER_UNIT { 100, 100, 1600, 833 }
#elif ENABLED(MiniV2)
#define DEFAULT_AXIS_STEPS_PER_UNIT { 100, 100, 200, 420 }
#elif ENABLED(Taz6)
#define DEFAULT_AXIS_STEPS_PER_UNIT { 100, 100, 1600, 830 }
#elif ANY(Workhorse, TazPro)
#define DEFAULT_AXIS_STEPS_PER_UNIT { 100, 100, 500, 420 }
#endif
/** /**
* Default Max Feed Rate (mm/s) * Default Max Feed Rate (mm/s)
* Override with M203 * Override with M203
* X, Y, Z, E0 [, E1[, E2...]] * X, Y, Z, E0 [, E1[, E2...]]
*/ */
#define DEFAULT_MAX_FEEDRATE { 300, 300, 5, 25 }
//#define LIMITED_MAX_FR_EDITING // Limit edit via M203 or LCD to DEFAULT_MAX_FEEDRATE * 2 #if ENABLED(Mini)
#define Z_FEEDRATE 5
#elif ENABLED(MiniV2)
#define Z_FEEDRATE 300
#elif ENABLED(Taz6)
#define Z_FEEDRATE 5
#elif ANY(Workhorse, TazPro)
#define Z_FEEDRATE 30
#endif
#define DEFAULT_MAX_FEEDRATE { 300, 300, Z_FEEDRATE, 40 }
#define LIMITED_MAX_FR_EDITING // Limit edit via M203 or LCD to DEFAULT_MAX_FEEDRATE * 2
#if ENABLED(LIMITED_MAX_FR_EDITING) #if ENABLED(LIMITED_MAX_FR_EDITING)
#define MAX_FEEDRATE_EDIT_VALUES { 600, 600, 10, 50 } // ...or, set your own edit limits //#define MAX_FEEDRATE_EDIT_VALUES { 600, 600, 10, 50 } // ...or, set your own edit limits
#endif #endif
/** /**
@@ -767,11 +884,11 @@
* Override with M201 * Override with M201
* X, Y, Z, E0 [, E1[, E2...]] * X, Y, Z, E0 [, E1[, E2...]]
*/ */
#define DEFAULT_MAX_ACCELERATION { 3000, 3000, 100, 10000 } #define DEFAULT_MAX_ACCELERATION { 9000, 9000, 100, 9000 }
//#define LIMITED_MAX_ACCEL_EDITING // Limit edit via M201 or LCD to DEFAULT_MAX_ACCELERATION * 2 #define LIMITED_MAX_ACCEL_EDITING // Limit edit via M201 or LCD to DEFAULT_MAX_ACCELERATION * 2
#if ENABLED(LIMITED_MAX_ACCEL_EDITING) #if ENABLED(LIMITED_MAX_ACCEL_EDITING)
#define MAX_ACCEL_EDIT_VALUES { 6000, 6000, 200, 20000 } // ...or, set your own edit limits //#define MAX_ACCEL_EDIT_VALUES { 6000, 6000, 200, 20000 } // ...or, set your own edit limits
#endif #endif
/** /**
@@ -782,9 +899,14 @@
* M204 R Retract Acceleration * M204 R Retract Acceleration
* M204 T Travel Acceleration * M204 T Travel Acceleration
*/ */
#define DEFAULT_ACCELERATION 3000 // X, Y, Z and E acceleration for printing moves #if ANY(Mini, MiniV2)
#define DEFAULT_ACCELERATION 2000 // X, Y, Z and E acceleration for printing moves
#define DEFAULT_TRAVEL_ACCELERATION 2000 // X, Y, Z acceleration for travel (non printing) moves
#else
#define DEFAULT_ACCELERATION 500 // X, Y, Z and E acceleration for printing moves
#define DEFAULT_TRAVEL_ACCELERATION 500 // X, Y, Z acceleration for travel (non printing) moves
#endif
#define DEFAULT_RETRACT_ACCELERATION 3000 // E acceleration for retracts #define DEFAULT_RETRACT_ACCELERATION 3000 // E acceleration for retracts
#define DEFAULT_TRAVEL_ACCELERATION 3000 // X, Y, Z acceleration for travel (non printing) moves
/** /**
* Default Jerk limits (mm/s) * Default Jerk limits (mm/s)
@@ -794,11 +916,16 @@
* When changing speed and direction, if the difference is less than the * When changing speed and direction, if the difference is less than the
* value set here, it may happen instantaneously. * value set here, it may happen instantaneously.
*/ */
//#define CLASSIC_JERK #define CLASSIC_JERK
#if ENABLED(CLASSIC_JERK) #if ENABLED(CLASSIC_JERK)
#define DEFAULT_XJERK 10.0 #if ANY(Mini, MiniV2)
#define DEFAULT_YJERK 10.0 #define DEFAULT_XJERK 12.0
#define DEFAULT_ZJERK 0.3 #define DEFAULT_YJERK 12.0
#else
#define DEFAULT_XJERK 8.0
#define DEFAULT_YJERK 8.0
#endif
#define DEFAULT_ZJERK 0.4
//#define TRAVEL_EXTRA_XYJERK 0.0 // Additional jerk allowance for all travel moves //#define TRAVEL_EXTRA_XYJERK 0.0 // Additional jerk allowance for all travel moves
@@ -808,7 +935,7 @@
#endif #endif
#endif #endif
#define DEFAULT_EJERK 5.0 // May be used by Linear Advance #define DEFAULT_EJERK 10.0 // May be used by Linear Advance
/** /**
* Junction Deviation Factor * Junction Deviation Factor
@@ -847,7 +974,9 @@
* The probe replaces the Z-MIN endstop and is used for Z homing. * The probe replaces the Z-MIN endstop and is used for Z homing.
* (Automatically enables USE_PROBE_FOR_Z_HOMING.) * (Automatically enables USE_PROBE_FOR_Z_HOMING.)
*/ */
#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN #if DISABLED(Taz6)
#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN
#endif
// Force the use of the probe for Z-axis homing // Force the use of the probe for Z-axis homing
//#define USE_PROBE_FOR_Z_HOMING //#define USE_PROBE_FOR_Z_HOMING
@@ -868,7 +997,9 @@
* - normally-open switches to 5V and D32. * - normally-open switches to 5V and D32.
* *
*/ */
//#define Z_MIN_PROBE_PIN 32 // Pin 32 is the RAMPS default #if ENABLED(Taz6)
#define Z_MIN_PROBE_PIN SERVO0_PIN // Pin 32 is the RAMPS default
#endif
/** /**
* Probe Type * Probe Type
@@ -895,7 +1026,7 @@
* Use the nozzle as the probe, as with a conductive * Use the nozzle as the probe, as with a conductive
* nozzle system or a piezo-electric smart effector. * nozzle system or a piezo-electric smart effector.
*/ */
//#define NOZZLE_AS_PROBE #define NOZZLE_AS_PROBE
/** /**
* Z Servo Probe, such as an endstop switch on a rotating arm. * Z Servo Probe, such as an endstop switch on a rotating arm.
@@ -993,20 +1124,29 @@
* | [-] | * | [-] |
* O-- FRONT --+ * O-- FRONT --+
*/ */
#define NOZZLE_TO_PROBE_OFFSET { 10, 10, 0 } #if ENABLED(MiniV2)
#define NOZZLE_TO_PROBE_OFFSET { 0, 0, -1.1 }
#elif ENABLED(Mini)
#define NOZZLE_TO_PROBE_OFFSET { 0, 0, -1.375 }
#elif ANY(Taz6, Workhorse)
#define NOZZLE_TO_PROBE_OFFSET { 0, 0, -1.2 }
#elif ENABLED(TazPro)
#define NOZZLE_TO_PROBE_OFFSET { 0, 0, -1.102 }
#endif
// Most probes should stay away from the edges of the bed, but // 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. // with NOZZLE_AS_PROBE this can be negative for a wider probing area.
#define PROBING_MARGIN 10 #define PROBING_MARGIN 0
// X and Y axis travel speed (mm/m) between probes // X and Y axis travel speed (mm/m) between probes
#define XY_PROBE_SPEED 8000 #define XY_PROBE_SPEED 6000
// Feedrate (mm/m) for the first approach when double-probing (MULTIPLE_PROBING == 2) // Feedrate (mm/m) for the first approach when double-probing (MULTIPLE_PROBING == 2)
#define Z_PROBE_SPEED_FAST HOMING_FEEDRATE_Z #define Z_PROBE_SPEED_FAST 480
// Feedrate (mm/m) for the "accurate" probe of each point // Feedrate (mm/m) for the "accurate" probe of each point
#define Z_PROBE_SPEED_SLOW (Z_PROBE_SPEED_FAST / 2) #define Z_PROBE_SPEED_SLOW 60
/** /**
* Multiple Probing * Multiple Probing
@@ -1017,7 +1157,7 @@
* A total of 2 does fast/slow probes with a weighted average. * A total of 2 does fast/slow probes with a weighted average.
* A total of 3 or more adds more slow probes, taking the average. * A total of 3 or more adds more slow probes, taking the average.
*/ */
//#define MULTIPLE_PROBING 2 #define MULTIPLE_PROBING 2
//#define EXTRA_PROBING 1 //#define EXTRA_PROBING 1
/** /**
@@ -1034,16 +1174,16 @@
* Example: `M851 Z-5` with a CLEARANCE of 4 => 9mm from bed to nozzle. * Example: `M851 Z-5` with a CLEARANCE of 4 => 9mm from bed to nozzle.
* But: `M851 Z+1` with a CLEARANCE of 2 => 2mm from bed to nozzle. * But: `M851 Z+1` with a CLEARANCE of 2 => 2mm from bed to nozzle.
*/ */
#define Z_CLEARANCE_DEPLOY_PROBE 10 // Z Clearance for Deploy/Stow #define Z_CLEARANCE_DEPLOY_PROBE 5 // Z Clearance for Deploy/Stow
#define Z_CLEARANCE_BETWEEN_PROBES 5 // Z Clearance between probe points #define Z_CLEARANCE_BETWEEN_PROBES 5 // Z Clearance between probe points
#define Z_CLEARANCE_MULTI_PROBE 5 // Z Clearance between multiple probes #define Z_CLEARANCE_MULTI_PROBE 5 // Z Clearance between multiple probes
//#define Z_AFTER_PROBING 5 // Z position after probing is done //#define Z_AFTER_PROBING 5 // Z position after probing is done
#define Z_PROBE_LOW_POINT -2 // Farthest distance below the trigger-point to go before stopping #define Z_PROBE_LOW_POINT -3 // Farthest distance below the trigger-point to go before stopping
// For M851 give a range for adjusting the Z probe offset // For M851 give a range for adjusting the Z probe offset
#define Z_PROBE_OFFSET_RANGE_MIN -20 #define Z_PROBE_OFFSET_RANGE_MIN -3
#define Z_PROBE_OFFSET_RANGE_MAX 20 #define Z_PROBE_OFFSET_RANGE_MAX 5
// Enable the M48 repeatability test to test probe accuracy // Enable the M48 repeatability test to test probe accuracy
//#define Z_MIN_PROBE_REPEATABILITY_TEST //#define Z_MIN_PROBE_REPEATABILITY_TEST
@@ -1093,15 +1233,19 @@
// @section machine // @section machine
// Invert the stepper direction. Change (or reverse the motor connector) if an axis goes the wrong way. // Invert the stepper direction. Change (or reverse the motor connector) if an axis goes the wrong way.
#define INVERT_X_DIR false #if ENABLED(Workhorse)
#define INVERT_X_DIR true
#else
#define INVERT_X_DIR false
#endif
#define INVERT_Y_DIR true #define INVERT_Y_DIR true
#define INVERT_Z_DIR false #define INVERT_Z_DIR false
// @section extruder // @section extruder
// For direct drive extruder v9 set to true, for geared extruder set to false. // For direct drive extruder v9 set to true, for geared extruder set to false.
#define INVERT_E0_DIR false #define INVERT_E0_DIR true
#define INVERT_E1_DIR false #define INVERT_E1_DIR true
#define INVERT_E2_DIR false #define INVERT_E2_DIR false
#define INVERT_E3_DIR false #define INVERT_E3_DIR false
#define INVERT_E4_DIR false #define INVERT_E4_DIR false
@@ -1115,7 +1259,7 @@
//#define UNKNOWN_Z_NO_RAISE // Don't raise Z (lower the bed) if Z is "unknown." For beds that fall when Z is powered off. //#define UNKNOWN_Z_NO_RAISE // Don't raise Z (lower the bed) if Z is "unknown." For beds that fall when Z is powered off.
//#define Z_HOMING_HEIGHT 4 // (mm) Minimal Z height before homing (G28) for Z clearance above the bed, clamps, ... #define Z_HOMING_HEIGHT 5 // (mm) Minimal Z height before homing (G28) for Z clearance above the bed, clamps, ...
// Be sure to have this much clearance over your Z_MAX_POS to prevent grinding. // Be sure to have this much clearance over your Z_MAX_POS to prevent grinding.
//#define Z_AFTER_HOMING 10 // (mm) Height to move to after homing Z //#define Z_AFTER_HOMING 10 // (mm) Height to move to after homing Z
@@ -1123,22 +1267,78 @@
// Direction of endstops when homing; 1=MAX, -1=MIN // Direction of endstops when homing; 1=MAX, -1=MIN
// :[-1,1] // :[-1,1]
#define X_HOME_DIR -1 #define X_HOME_DIR -1
#define Y_HOME_DIR -1 #if ENABLED(Workhorse)
#define Z_HOME_DIR -1 #define Y_HOME_DIR -1
#else
#define Y_HOME_DIR 1
#endif
#if ANY(Mini, MiniV2, TazPro, Workhorse)
#define Z_HOME_DIR 1
#else
#define Z_HOME_DIR -1
#endif
// @section machine // @section machine
// The size of the print bed // The size of the print bed
#define X_BED_SIZE 200
#define Y_BED_SIZE 200
// Travel limits (mm) after homing, corresponding to endstop positions. #if ENABLED(Mini)
#define X_MIN_POS 0 #define X_BED_SIZE 155.8 // <-- changed
#define Y_MIN_POS 0 #define Y_BED_SIZE 155.8 // <-- changed
#define Z_MIN_POS 0
#define X_MAX_POS X_BED_SIZE // Travel limits (mm) after homing, corresponding to endstop positions.
#define Y_MAX_POS Y_BED_SIZE #define X_MIN_POS 0.0 // <-- changed
#define Z_MAX_POS 200 #define Y_MIN_POS -8.0 // <-- changed
#define Z_MIN_POS -5 // <-- changed
#define X_MAX_POS 165.8 // <-- changed
#define Y_MAX_POS 196.0 // <-- changed
#define Z_MAX_POS 159 // <-- changed
#elif ENABLED(MiniV2)
#define X_BED_SIZE 157 // <-- changed
#define Y_BED_SIZE 157 // <-- changed
// Travel limits (mm) after homing, corresponding to endstop positions.
#define X_MIN_POS -3 // <-- changed
#define Y_MIN_POS -5 // <-- changed
#define Z_MIN_POS 0
#define X_MAX_POS 173 // <-- changed
#define Y_MAX_POS 192 // <-- changed
#define Z_MAX_POS 183 // <-- changed
#elif ENABLED(Taz6)
#define X_BED_SIZE 281.4
#define Y_BED_SIZE 281.4
// Travel limits (mm) after homing, corresponding to endstop positions.
#define X_MIN_POS -20.1
#define Y_MIN_POS -20.1
#define Z_MIN_POS 0
#define X_MAX_POS 301.5
#define Y_MAX_POS 304.5
#define Z_MAX_POS 270
#elif ENABLED(Workhorse)
#define X_BED_SIZE 280 // <-- changed
#define Y_BED_SIZE 280 // <-- changed
// Travel limits (mm) after homing, corresponding to endstop positions.
#define X_MIN_POS -50 // <-- changed
#define Y_MIN_POS -17 // <-- changed
#define Z_MIN_POS -2 // <-- changed
#define X_MAX_POS 295 // <-- changed
#define Y_MAX_POS 308 // <-- changed
#define Z_MAX_POS 299 // <-- changed
#elif ENABLED(TazPro)
#define X_BED_SIZE 280 // <-- changed
#define Y_BED_SIZE 280 // <-- changed
// Travel limits (mm) after homing, corresponding to endstop positions.
#define X_MIN_POS -27 // <-- changed
#define Y_MIN_POS -36 // <-- changed
#define Z_MIN_POS -9 // <-- changed
#define X_MAX_POS 299 // <-- changed
#define Y_MAX_POS 292 // <-- changed
#define Z_MAX_POS 292 // <-- changed
#endif
/** /**
* Software Endstops * Software Endstops
@@ -1176,27 +1376,29 @@
* RAMPS-based boards use SERVO3_PIN for the first runout sensor. * RAMPS-based boards use SERVO3_PIN for the first runout sensor.
* For other boards you may need to define FIL_RUNOUT_PIN, FIL_RUNOUT2_PIN, etc. * For other boards you may need to define FIL_RUNOUT_PIN, FIL_RUNOUT2_PIN, etc.
*/ */
//#define FILAMENT_RUNOUT_SENSOR #if ENABLED(TazPro)
#define FILAMENT_RUNOUT_SENSOR
#endif
#if ENABLED(FILAMENT_RUNOUT_SENSOR) #if ENABLED(FILAMENT_RUNOUT_SENSOR)
#define NUM_RUNOUT_SENSORS 1 // Number of sensors, up to one per extruder. Define a FIL_RUNOUT#_PIN for each. #define NUM_RUNOUT_SENSORS 2 // Number of sensors, up to one per extruder. Define a FIL_RUNOUT#_PIN for each.
#define FIL_RUNOUT_STATE LOW // Pin state indicating that filament is NOT present. #define FIL_RUNOUT_STATE LOW // Pin state indicating that filament is NOT present.
#define FIL_RUNOUT_PULLUP // Use internal pullup for filament runout pins. #define FIL_RUNOUT_PULLUP // Use internal pullup for filament runout pins.
//#define FIL_RUNOUT_PULLDOWN // Use internal pulldown for filament runout pins. //#define FIL_RUNOUT_PULLDOWN // Use internal pulldown for filament runout pins.
// Set one or more commands to execute on filament runout. // Set one or more commands to execute on filament runout.
// (After 'M412 H' Marlin will ask the host to handle the process.) // (After 'M412 H' Marlin will ask the host to handle the process.)
#define FILAMENT_RUNOUT_SCRIPT "M600" #define FILAMENT_RUNOUT_SCRIPT "M25P2"
// After a runout is detected, continue printing this length of filament // After a runout is detected, continue printing this length of filament
// before executing the runout script. Useful for a sensor at the end of // before executing the runout script. Useful for a sensor at the end of
// a feed tube. Requires 4 bytes SRAM per sensor, plus 4 bytes overhead. // a feed tube. Requires 4 bytes SRAM per sensor, plus 4 bytes overhead.
//#define FILAMENT_RUNOUT_DISTANCE_MM 25 #define FILAMENT_RUNOUT_DISTANCE_MM 14
#ifdef FILAMENT_RUNOUT_DISTANCE_MM #ifdef FILAMENT_RUNOUT_DISTANCE_MM
// Enable this option to use an encoder disc that toggles the runout pin // Enable this option to use an encoder disc that toggles the runout pin
// as the filament moves. (Be sure to set FILAMENT_RUNOUT_DISTANCE_MM // as the filament moves. (Be sure to set FILAMENT_RUNOUT_DISTANCE_MM
// large enough to avoid false positives.) // large enough to avoid false positives.)
//#define FILAMENT_MOTION_SENSOR #define FILAMENT_MOTION_SENSOR
#endif #endif
#endif #endif
@@ -1240,7 +1442,7 @@
*/ */
//#define AUTO_BED_LEVELING_3POINT //#define AUTO_BED_LEVELING_3POINT
//#define AUTO_BED_LEVELING_LINEAR //#define AUTO_BED_LEVELING_LINEAR
//#define AUTO_BED_LEVELING_BILINEAR #define AUTO_BED_LEVELING_BILINEAR
//#define AUTO_BED_LEVELING_UBL //#define AUTO_BED_LEVELING_UBL
//#define MESH_BED_LEVELING //#define MESH_BED_LEVELING
@@ -1248,14 +1450,14 @@
* Normally G28 leaves leveling disabled on completion. Enable * Normally G28 leaves leveling disabled on completion. Enable
* this option to have G28 restore the prior leveling state. * this option to have G28 restore the prior leveling state.
*/ */
//#define RESTORE_LEVELING_AFTER_G28 #define RESTORE_LEVELING_AFTER_G28
/** /**
* Enable detailed logging of G28, G29, M48, etc. * Enable detailed logging of G28, G29, M48, etc.
* Turn on with the command 'M111 S32'. * Turn on with the command 'M111 S32'.
* NOTE: Requires a lot of PROGMEM! * NOTE: Requires a lot of PROGMEM!
*/ */
//#define DEBUG_LEVELING_FEATURE #define DEBUG_LEVELING_FEATURE
#if ANY(MESH_BED_LEVELING, AUTO_BED_LEVELING_BILINEAR, AUTO_BED_LEVELING_UBL) #if ANY(MESH_BED_LEVELING, AUTO_BED_LEVELING_BILINEAR, AUTO_BED_LEVELING_UBL)
// Gradually reduce leveling correction until a set height is reached, // Gradually reduce leveling correction until a set height is reached,
@@ -1287,12 +1489,13 @@
#if EITHER(AUTO_BED_LEVELING_LINEAR, AUTO_BED_LEVELING_BILINEAR) #if EITHER(AUTO_BED_LEVELING_LINEAR, AUTO_BED_LEVELING_BILINEAR)
// Set the number of grid points per dimension. // Set the number of grid points per dimension.
#define GRID_MAX_POINTS_X 3 #define GRID_MAX_POINTS_X 2
#define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X #define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X
// Probe along the Y axis, advancing X after each column // Probe along the Y axis, advancing X after each column
//#define PROBE_Y_FIRST #if ANY(Mini, MiniV2)
#define PROBE_Y_FIRST
#endif
#if ENABLED(AUTO_BED_LEVELING_BILINEAR) #if ENABLED(AUTO_BED_LEVELING_BILINEAR)
// Beyond the probed grid, continue the implied tilt? // Beyond the probed grid, continue the implied tilt?
@@ -1319,8 +1522,8 @@
//#define MESH_EDIT_GFX_OVERLAY // Display a graphics overlay while editing the mesh //#define MESH_EDIT_GFX_OVERLAY // Display a graphics overlay while editing the mesh
#define MESH_INSET 1 // Set Mesh bounds as an inset region of the bed #define MESH_INSET 0 // Set Mesh bounds as an inset region of the bed
#define GRID_MAX_POINTS_X 10 // Don't use more than 15 points per axis, implementation limited. #define GRID_MAX_POINTS_X 2 // Don't use more than 15 points per axis, implementation limited.
#define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X #define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X
#define UBL_MESH_EDIT_MOVES_Z // Sophisticated users prefer no movement of nozzle #define UBL_MESH_EDIT_MOVES_Z // Sophisticated users prefer no movement of nozzle
@@ -1391,16 +1594,24 @@
// - Move the Z probe (or nozzle) to a defined XY point before Z Homing. // - Move the Z probe (or nozzle) to a defined XY point before Z Homing.
// - Prevent Z homing when the Z probe is outside bed area. // - Prevent Z homing when the Z probe is outside bed area.
// //
//#define Z_SAFE_HOMING #if ENABLED(Taz6)
#define Z_SAFE_HOMING
#endif
#if ENABLED(Z_SAFE_HOMING) #if ENABLED(Z_SAFE_HOMING)
#define Z_SAFE_HOMING_X_POINT X_CENTER // X point for Z homing #define Z_SAFE_HOMING_X_POINT -19 // X point for Z homing
#define Z_SAFE_HOMING_Y_POINT Y_CENTER // Y point for Z homing #define Z_SAFE_HOMING_Y_POINT 258 // Y point for Z homing
#endif #endif
// Homing speeds (mm/m) // Homing speeds (mm/m)
#define HOMING_FEEDRATE_XY (50*60) #define HOMING_FEEDRATE_XY (50*60)
#define HOMING_FEEDRATE_Z (4*60) #if ENABLED(MiniV2)
#define HOMING_FEEDRATE_Z 2400
#elif ENABLED(Workhorse)
#define HOMING_FEEDRATE_Z 1800
#else
#define HOMING_FEEDRATE_Z (4*60)
#endif
// Validate that endstops are triggered on homing moves // Validate that endstops are triggered on homing moves
#define VALIDATE_HOMING_ENDSTOPS #define VALIDATE_HOMING_ENDSTOPS
@@ -1477,12 +1688,12 @@
* M501 - Read settings from EEPROM. (i.e., Throw away unsaved changes) * M501 - Read settings from EEPROM. (i.e., Throw away unsaved changes)
* M502 - Revert settings to "factory" defaults. (Follow with M500 to init the EEPROM.) * M502 - Revert settings to "factory" defaults. (Follow with M500 to init the EEPROM.)
*/ */
//#define EEPROM_SETTINGS // Persistent storage with M500 and M501 #define EEPROM_SETTINGS // Persistent storage with M500 and M501
//#define DISABLE_M503 // Saves ~2700 bytes of PROGMEM. Disable for release! //#define DISABLE_M503 // Saves ~2700 bytes of PROGMEM. Disable for release!
#define EEPROM_CHITCHAT // Give feedback on EEPROM commands. Disable to save PROGMEM. #define EEPROM_CHITCHAT // Give feedback on EEPROM commands. Disable to save PROGMEM.
#define EEPROM_BOOT_SILENT // Keep M503 quiet and only give errors during first load #define EEPROM_BOOT_SILENT // Keep M503 quiet and only give errors during first load
#if ENABLED(EEPROM_SETTINGS) #if ENABLED(EEPROM_SETTINGS)
//#define EEPROM_AUTO_INIT // Init EEPROM automatically on any errors. #define EEPROM_AUTO_INIT // Init EEPROM automatically on any errors.
#endif #endif
// //
@@ -1509,12 +1720,12 @@
// Preheat Constants // Preheat Constants
#define PREHEAT_1_LABEL "PLA" #define PREHEAT_1_LABEL "PLA"
#define PREHEAT_1_TEMP_HOTEND 180 #define PREHEAT_1_TEMP_HOTEND 190
#define PREHEAT_1_TEMP_BED 70 #define PREHEAT_1_TEMP_BED 65
#define PREHEAT_1_FAN_SPEED 0 // Value from 0 to 255 #define PREHEAT_1_FAN_SPEED 0 // Value from 0 to 255
#define PREHEAT_2_LABEL "ABS" #define PREHEAT_2_LABEL "ABS"
#define PREHEAT_2_TEMP_HOTEND 240 #define PREHEAT_2_TEMP_HOTEND 245
#define PREHEAT_2_TEMP_BED 110 #define PREHEAT_2_TEMP_BED 110
#define PREHEAT_2_FAN_SPEED 0 // Value from 0 to 255 #define PREHEAT_2_FAN_SPEED 0 // Value from 0 to 255
@@ -1529,11 +1740,11 @@
* P1 Raise the nozzle always to Z-park height. * P1 Raise the nozzle always to Z-park height.
* P2 Raise the nozzle by Z-park amount, limited to Z_MAX_POS. * P2 Raise the nozzle by Z-park amount, limited to Z_MAX_POS.
*/ */
//#define NOZZLE_PARK_FEATURE #define NOZZLE_PARK_FEATURE
#if ENABLED(NOZZLE_PARK_FEATURE) #if ENABLED(NOZZLE_PARK_FEATURE)
// Specify a park position as { X, Y, Z_raise } // Specify a park position as { X, Y, Z_raise }
#define NOZZLE_PARK_POINT { (X_MIN_POS + 10), (Y_MAX_POS - 10), 20 } #define NOZZLE_PARK_POINT { X_CENTER, (Y_MAX_POS - 5), 5 }
//#define NOZZLE_PARK_X_ONLY // X move only is required to park //#define NOZZLE_PARK_X_ONLY // X move only is required to park
//#define NOZZLE_PARK_Y_ONLY // Y move only is required to park //#define NOZZLE_PARK_Y_ONLY // Y move only is required to park
#define NOZZLE_PARK_Z_RAISE_MIN 2 // (mm) Always raise Z by at least this distance #define NOZZLE_PARK_Z_RAISE_MIN 2 // (mm) Always raise Z by at least this distance
@@ -1579,9 +1790,11 @@
* Attention: EXPERIMENTAL. G-code arguments may change. * Attention: EXPERIMENTAL. G-code arguments may change.
* *
*/ */
//#define NOZZLE_CLEAN_FEATURE #define NOZZLE_CLEAN_FEATURE
#if ENABLED(NOZZLE_CLEAN_FEATURE) #if ENABLED(NOZZLE_CLEAN_FEATURE)
#define CLEAN_SCRIPT "M117 Hot end heating...\nM104 S170\nG28 O1\nM117 Wiping nozzle\nT0\nG1 X-17 Y25 Z10 F4000\nM109 R170\nG1 Z1\nM114\nG1 X-17 Y25\nG1 X-17 Y95\nG1 X-17 Y25\nG1 X-17 Y95\nG1 X-17 Y25\nG1 X-17 Y95\nG1 X-17 Y25\nG1 X-17 Y95\nG1 X-17 Y25\nG1 X-17 Y95\nG1 X-17 Y25\nG1 X-17 Y95\nG1 Z15\nM400\nM106 S255\nG0 X-10.0 Y-9.0M109 R160\nM107"
// Default number of pattern repetitions // Default number of pattern repetitions
#define NOZZLE_CLEAN_STROKES 12 #define NOZZLE_CLEAN_STROKES 12
@@ -1590,8 +1803,13 @@
// Specify positions for each tool as { { X, Y, Z }, { X, Y, Z } } // 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) }} // 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) } } #if ANY(Mini, MiniV2)
#define NOZZLE_CLEAN_END_POINT { { 100, 60, (Z_MIN_POS + 1) } } #define NOZZLE_CLEAN_START_POINT { 45, 175, 0 }
#define NOZZLE_CLEAN_END_POINT { 115, 175, 0 }
#else
#define NOZZLE_CLEAN_START_POINT { -17, 95, 1 }
#define NOZZLE_CLEAN_END_POINT { -17, 25, 1 }
#endif
// Circular pattern radius // Circular pattern radius
#define NOZZLE_CLEAN_CIRCLE_RADIUS 6.5 #define NOZZLE_CLEAN_CIRCLE_RADIUS 6.5
@@ -1601,13 +1819,23 @@
#define NOZZLE_CLEAN_CIRCLE_MIDDLE NOZZLE_CLEAN_START_POINT #define NOZZLE_CLEAN_CIRCLE_MIDDLE NOZZLE_CLEAN_START_POINT
// Move the nozzle to the initial position after cleaning // Move the nozzle to the initial position after cleaning
#define NOZZLE_CLEAN_GOBACK //#define NOZZLE_CLEAN_GOBACK
// Enable for a purge/clean station that's always at the gantry height (thus no Z move) // Enable for a purge/clean station that's always at the gantry height (thus no Z move)
//#define NOZZLE_CLEAN_NO_Z //#define NOZZLE_CLEAN_NO_Z
// Explicit wipe G-code script applies to a G12 with no arguments. // Explicit wipe G-code script applies to a G12 with no arguments.
//#define WIPE_SEQUENCE_COMMANDS "G1 X-17 Y25 Z10 F4000\nG1 Z1\nM114\nG1 X-17 Y25\nG1 X-17 Y95\nG1 X-17 Y25\nG1 X-17 Y95\nG1 X-17 Y25\nG1 X-17 Y95\nG1 X-17 Y25\nG1 X-17 Y95\nG1 X-17 Y25\nG1 X-17 Y95\nG1 X-17 Y25\nG1 X-17 Y95\nG1 Z15\nM400\nG0 X-10.0 Y-9.0" #if ENABLED(MiniV2)
#define WIPE_SEQUENCE_COMMANDS "M117 Hot end heating...\nM104 S170\nG28 O1\nM117 Wiping nozzle\nT0\nG1 X115 Y175 Z10 F4000\nM109 R170\nG1 Z1\nM114\nG1 X115 Y175\nG1 X45 Y175\nG1 X115 Y175\nG1 X45 Y175\nG1 X115 Y175\nG1 X45 Y175\nG1 X115 Y175\nG1 X45 Y175\nG1 X115 Y175\nG1 X45 Y175\nG1 X115 Y175\nG1 X45 Y175\nG1 Z15\nM400\nM106 S255\nG0 X-3.0 Y168.8M109 R160\nM107"
#elif ENABLED(Mini)
#define WIPE_SEQUENCE_COMMANDS "M117 Hot end heating...\nM104 S170\nG28 O1\nM117 Wiping nozzle\nT0\nG1 X115 Y175 Z10 F4000\nM109 R170\nG1 Z1\nM114\nG1 X115 Y175\nG1 X45 Y175\nG1 X115 Y175\nG1 X45 Y175\nG1 X115 Y175\nG1 X45 Y175\nG1 X115 Y175\nG1 X45 Y175\nG1 X115 Y175\nG1 X45 Y175\nG1 X115 Y175\nG1 X45 Y175\nG1 Z15\nM400\nM106 S255\nG0 X0.0 Y168.8M109 R160\nM107"
#elif ENABLED(Taz6)
#define WIPE_SEQUENCE_COMMANDS "M117 Hot end heating...\nM104 S170\nG28 O1\nM117 Wiping nozzle\nT0\nG1 X-17 Y25 Z10 F4000\nM109 R170\nG1 Z1\nM114\nG1 X-17 Y25\nG1 X-17 Y95\nG1 X-17 Y25\nG1 X-17 Y95\nG1 X-17 Y25\nG1 X-17 Y95\nG1 X-17 Y25\nG1 X-17 Y95\nG1 X-17 Y25\nG1 X-17 Y95\nG1 X-17 Y25\nG1 X-17 Y95\nG1 Z15\nM400\nM106 S255\nG0 X-10 Y-9M109 R160\nM107"
#elif ENABLED(Workhorse)
#define WIPE_SEQUENCE_COMMANDS "M117 Hot end heating...\nM104 S170\nG28 O1\nM117 Wiping nozzle\nT0\nG1 X-17 Y25 Z10 F4000\nM109 R170\nG1 Z1\nM114\nG1 X-17 Y25\nG1 X-17 Y95\nG1 X-17 Y25\nG1 X-17 Y95\nG1 X-17 Y25\nG1 X-17 Y95\nG1 X-17 Y25\nG1 X-17 Y95\nG1 X-17 Y25\nG1 X-17 Y95\nG1 X-17 Y25\nG1 X-17 Y95\nG1 Z15\nM400\nM106 S255\nG0 X-10.0 Y-9.0M109 R160\nM107"
#elif ENABLED(TazPro)
#define WIPE_SEQUENCE_COMMANDS "M117 Hot end heating...\nM104 S170 T0\nM104 S170 T1\nG28 O1\nM117 Wiping nozzle\nT0\nG1 X-17 Y25 Z10 F4000\nM109 R170 T0\nM109 R170 T1\nG1 Z1\nM114\nG1 X-17 Y25\nG1 X-17 Y95\nG1 X-17 Y25\nG1 X-17 Y95\nG1 X-17 Y25\nG1 X-17 Y95\nG1 X-17 Y25\nG1 X-17 Y95\nG1 X-17 Y25\nG1 X-17 Y95\nG1 X-17 Y25\nG1 X-17 Y95\nG1 Z15\nM400\nG0 X150 F5000\nT1\nG1 X297 Y25 Z10 F4000\nM109 R170 T0\nM109 R170 T1\nG1 Z1\nM114\nG1 X297 Y25\nG1 X297 Y95\nG1 X297 Y25\nG1 X297 Y95\nG1 X297 Y25\nG1 X297 Y95\nG1 X297 Y25\nG1 X297 Y95\nG1 X297 Y25\nG1 X297 Y95\nG1 X297 Y25\nG1 X297 Y95\nG1 Z15\nM400\nM106 S255 \nG0 X150 F5000\nT0\nM106 S255\nG0 X-10.0 Y-9.0M109 R160 T0\nM109 R160 T1\nM107"
#endif
#endif #endif
@@ -1640,7 +1868,7 @@
* *
* View the current statistics with M78. * View the current statistics with M78.
*/ */
//#define PRINTCOUNTER #define PRINTCOUNTER
/** /**
* Password * Password
@@ -1729,7 +1957,7 @@
* you must uncomment the following option or it won't work. * you must uncomment the following option or it won't work.
* *
*/ */
//#define SDSUPPORT #define SDSUPPORT
/** /**
* SD CARD: SPI SPEED * SD CARD: SPI SPEED
@@ -1740,6 +1968,9 @@
//#define SPI_SPEED SPI_HALF_SPEED //#define SPI_SPEED SPI_HALF_SPEED
//#define SPI_SPEED SPI_QUARTER_SPEED //#define SPI_SPEED SPI_QUARTER_SPEED
//#define SPI_SPEED SPI_EIGHTH_SPEED //#define SPI_SPEED SPI_EIGHTH_SPEED
#if ENABLED(TazPro)
#define SPI_SPEED SPI_SIXTEENTH_SPEED
#endif
/** /**
* SD CARD: ENABLE CRC * SD CARD: ENABLE CRC
@@ -1763,7 +1994,7 @@
// This option overrides the default number of encoder pulses needed to // This option overrides the default number of encoder pulses needed to
// produce one step. Should be increased for high-resolution encoders. // produce one step. Should be increased for high-resolution encoders.
// //
//#define ENCODER_PULSES_PER_STEP 4 #define ENCODER_PULSES_PER_STEP 2
// //
// Use this option to override the number of step signals required to // Use this option to override the number of step signals required to
@@ -1786,7 +2017,9 @@
// //
// Set this option if CLOCKWISE causes values to DECREASE // Set this option if CLOCKWISE causes values to DECREASE
// //
//#define REVERSE_ENCODER_DIRECTION #if ENABLED(MiniV2)
#define REVERSE_ENCODER_DIRECTION
#endif
// //
// This option reverses the encoder direction for navigating LCD menus. // This option reverses the encoder direction for navigating LCD menus.
@@ -1809,7 +2042,7 @@
// //
// Add individual axis homing items (Home X, Home Y, and Home Z) to the LCD menu. // Add individual axis homing items (Home X, Home Y, and Home Z) to the LCD menu.
// //
//#define INDIVIDUAL_AXIS_HOMING_MENU #define INDIVIDUAL_AXIS_HOMING_MENU
// //
// SPEAKER/BUZZER // SPEAKER/BUZZER
@@ -1982,7 +2215,9 @@
// RepRapDiscount FULL GRAPHIC Smart Controller // RepRapDiscount FULL GRAPHIC Smart Controller
// https://reprap.org/wiki/RepRapDiscount_Full_Graphic_Smart_Controller // https://reprap.org/wiki/RepRapDiscount_Full_Graphic_Smart_Controller
// //
//#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER #if DISABLED(TazPro)
#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER
#endif
// //
// ReprapWorld Graphical LCD // ReprapWorld Graphical LCD
@@ -2172,7 +2407,9 @@
// Touch UI for FTDI EVE (FT800/FT810) displays // Touch UI for FTDI EVE (FT800/FT810) displays
// See Configuration_adv.h for all configuration options. // See Configuration_adv.h for all configuration options.
// //
//#define TOUCH_UI_FTDI_EVE #if ENABLED(TazPro)
#define TOUCH_UI_FTDI_EVE
#endif
// //
// Touch-screen LCD for Anycubic printers // Touch-screen LCD for Anycubic printers
@@ -2275,19 +2512,23 @@
// @section extras // @section extras
// Increase the FAN PWM frequency. Removes the PWM noise but increases heating in the FET/Arduino // Increase the FAN PWM frequency. Removes the PWM noise but increases heating in the FET/Arduino
//#define FAST_PWM_FAN #if ANY(Mini, MiniV2, Taz6, Workhorse)
#define FAST_PWM_FAN
#endif
// Use software PWM to drive the fan, as for the heaters. This uses a very low frequency // Use software PWM to drive the fan, as for the heaters. This uses a very low frequency
// which is not as annoying as with the hardware PWM. On the other hand, if this frequency // which is not as annoying as with the hardware PWM. On the other hand, if this frequency
// is too low, you should also increment SOFT_PWM_SCALE. // is too low, you should also increment SOFT_PWM_SCALE.
//#define FAN_SOFT_PWM #if ENABLED(TazPro)
#define FAN_SOFT_PWM
#endif
// Incrementing this by 1 will double the software PWM frequency, // Incrementing this by 1 will double the software PWM frequency,
// affecting heaters, and the fan if FAN_SOFT_PWM is enabled. // affecting heaters, and the fan if FAN_SOFT_PWM is enabled.
// However, control resolution will be halved for each increment; // However, control resolution will be halved for each increment;
// at zero value, there are 128 effective control positions. // at zero value, there are 128 effective control positions.
// :[0,1,2,3,4,5,6,7] // :[0,1,2,3,4,5,6,7]
#define SOFT_PWM_SCALE 0 #define SOFT_PWM_SCALE 4
// If SOFT_PWM_SCALE is set to a value higher than 0, dithering can // If SOFT_PWM_SCALE is set to a value higher than 0, dithering can
// be used to mitigate the associated resolution loss. If enabled, // be used to mitigate the associated resolution loss. If enabled,
@@ -2391,12 +2632,14 @@
* Set this manually if there are extra servos needing manual control. * Set this manually if there are extra servos needing manual control.
* Leave undefined or set to 0 to entirely disable the servo subsystem. * Leave undefined or set to 0 to entirely disable the servo subsystem.
*/ */
//#define NUM_SERVOS 3 // Servo index starts with 0 for M280 command #if ENABLED(TazPro)
#define NUM_SERVOS 2 // Servo index starts with 0 for M280 command
#endif
// (ms) Delay before the next move will start, to give the servo time to reach its target angle. // (ms) Delay before the next move will start, to give the servo time to reach its target angle.
// 300ms is a good value but you can try less delay. // 300ms is a good value but you can try less delay.
// If the servo can't reach the requested position, increase it. // If the servo can't reach the requested position, increase it.
#define SERVO_DELAY { 300 } #define SERVO_DELAY { 300, 300 }
// Only power servos during movement, otherwise leave off to prevent jitter // Only power servos during movement, otherwise leave off to prevent jitter
//#define DEACTIVATE_SERVOS_AFTER_MOVE //#define DEACTIVATE_SERVOS_AFTER_MOVE
+315 -150
View File
@@ -162,12 +162,12 @@
* THERMAL_PROTECTION_HYSTERESIS and/or THERMAL_PROTECTION_PERIOD * THERMAL_PROTECTION_HYSTERESIS and/or THERMAL_PROTECTION_PERIOD
*/ */
#if ENABLED(THERMAL_PROTECTION_HOTENDS) #if ENABLED(THERMAL_PROTECTION_HOTENDS)
#define THERMAL_PROTECTION_PERIOD 40 // Seconds #define THERMAL_PROTECTION_PERIOD 15 // Seconds
#define THERMAL_PROTECTION_HYSTERESIS 4 // Degrees Celsius #define THERMAL_PROTECTION_HYSTERESIS 30 // Degrees Celsius
//#define ADAPTIVE_FAN_SLOWING // Slow part cooling fan if temperature drops #define ADAPTIVE_FAN_SLOWING // Slow part cooling fan if temperature drops
#if BOTH(ADAPTIVE_FAN_SLOWING, PIDTEMP) #if BOTH(ADAPTIVE_FAN_SLOWING, PIDTEMP)
//#define NO_FAN_SLOWING_IN_PID_TUNING // Don't slow fan speed during M303 #define NO_FAN_SLOWING_IN_PID_TUNING // Don't slow fan speed during M303
#endif #endif
/** /**
@@ -182,16 +182,16 @@
* and/or decrease WATCH_TEMP_INCREASE. WATCH_TEMP_INCREASE should not be set * and/or decrease WATCH_TEMP_INCREASE. WATCH_TEMP_INCREASE should not be set
* below 2. * below 2.
*/ */
#define WATCH_TEMP_PERIOD 20 // Seconds #define WATCH_TEMP_PERIOD 50 // Seconds
#define WATCH_TEMP_INCREASE 2 // Degrees Celsius #define WATCH_TEMP_INCREASE 5 // Degrees Celsius
#endif #endif
/** /**
* Thermal Protection parameters for the bed are just as above for hotends. * Thermal Protection parameters for the bed are just as above for hotends.
*/ */
#if ENABLED(THERMAL_PROTECTION_BED) #if ENABLED(THERMAL_PROTECTION_BED)
#define THERMAL_PROTECTION_BED_PERIOD 20 // Seconds #define THERMAL_PROTECTION_BED_PERIOD 15 // Seconds
#define THERMAL_PROTECTION_BED_HYSTERESIS 2 // Degrees Celsius #define THERMAL_PROTECTION_BED_HYSTERESIS 10 // Degrees Celsius
/** /**
* As described above, except for the bed (M140/M190/M303). * As described above, except for the bed (M140/M190/M303).
@@ -347,10 +347,10 @@
* Hotend Idle Timeout * Hotend Idle Timeout
* Prevent filament in the nozzle from charring and causing a critical jam. * Prevent filament in the nozzle from charring and causing a critical jam.
*/ */
//#define HOTEND_IDLE_TIMEOUT #define HOTEND_IDLE_TIMEOUT
#if ENABLED(HOTEND_IDLE_TIMEOUT) #if ENABLED(HOTEND_IDLE_TIMEOUT)
#define HOTEND_IDLE_TIMEOUT_SEC (5*60) // (seconds) Time without extruder movement to trigger protection #define HOTEND_IDLE_TIMEOUT_SEC (15*60) // (seconds) Time without extruder movement to trigger protection
#define HOTEND_IDLE_MIN_TRIGGER 180 // (°C) Minimum temperature to enable hotend protection #define HOTEND_IDLE_MIN_TRIGGER 160 // (°C) Minimum temperature to enable hotend protection
#define HOTEND_IDLE_NOZZLE_TARGET 0 // (°C) Safe temperature for the nozzle after timeout #define HOTEND_IDLE_NOZZLE_TARGET 0 // (°C) Safe temperature for the nozzle after timeout
#define HOTEND_IDLE_BED_TARGET 0 // (°C) Safe temperature for the bed after timeout #define HOTEND_IDLE_BED_TARGET 0 // (°C) Safe temperature for the bed after timeout
#endif #endif
@@ -371,16 +371,22 @@
* The fan turns on automatically whenever any driver is enabled and turns * The fan turns on automatically whenever any driver is enabled and turns
* off (or reduces to idle speed) shortly after drivers are turned off. * off (or reduces to idle speed) shortly after drivers are turned off.
*/ */
//#define USE_CONTROLLER_FAN #define USE_CONTROLLER_FAN
#if ENABLED(USE_CONTROLLER_FAN) #if ENABLED(USE_CONTROLLER_FAN)
//#define CONTROLLER_FAN_PIN -1 // Set a custom pin for the controller fan #if ANY(Mini, MiniV2, TazPro)
#define CONTROLLER_FAN_PIN FAN1_PIN // Set a custom pin for the controller fan
#else
#define CONTROLLER_FAN_PIN FAN2_PIN // Set a custom pin for the controller fan
#endif
//#define CONTROLLER_FAN_USE_Z_ONLY // With this option only the Z axis is considered //#define CONTROLLER_FAN_USE_Z_ONLY // With this option only the Z axis is considered
//#define CONTROLLER_FAN_IGNORE_Z // Ignore Z stepper. Useful when stepper timeout is disabled. #if ENABLED(MiniV2)
#define CONTROLLER_FAN_IGNORE_Z // Ignore Z stepper. Useful when stepper timeout is disabled.
#endif
#define CONTROLLERFAN_SPEED_MIN 0 // (0-255) Minimum speed. (If set below this value the fan is turned off.) #define CONTROLLERFAN_SPEED_MIN 0 // (0-255) Minimum speed. (If set below this value the fan is turned off.)
#define CONTROLLERFAN_SPEED_ACTIVE 255 // (0-255) Active speed, used when any motor is enabled #define CONTROLLERFAN_SPEED_ACTIVE 255 // (0-255) Active speed, used when any motor is enabled
#define CONTROLLERFAN_SPEED_IDLE 0 // (0-255) Idle speed, used when motors are disabled #define CONTROLLERFAN_SPEED_IDLE 120 // (0-255) Idle speed, used when motors are disabled
#define CONTROLLERFAN_IDLE_TIME 60 // (seconds) Extra time to keep the fan running after disabling motors #define CONTROLLERFAN_IDLE_TIME 60 // (seconds) Extra time to keep the fan running after disabling motors
//#define CONTROLLER_FAN_EDITABLE // Enable M710 configurable settings #define CONTROLLER_FAN_EDITABLE // Enable M710 configurable settings
#if ENABLED(CONTROLLER_FAN_EDITABLE) #if ENABLED(CONTROLLER_FAN_EDITABLE)
#define CONTROLLER_FAN_MENU // Enable the Controller Fan submenu #define CONTROLLER_FAN_MENU // Enable the Controller Fan submenu
#endif #endif
@@ -389,7 +395,7 @@
// When first starting the main fan, run it at full speed for the // When first starting the main fan, run it at full speed for the
// given number of milliseconds. This gets the fan spinning reliably // given number of milliseconds. This gets the fan spinning reliably
// before setting a PWM value. (Does not work with software PWM for fan on Sanguinololu) // before setting a PWM value. (Does not work with software PWM for fan on Sanguinololu)
//#define FAN_KICKSTART_TIME 100 #define FAN_KICKSTART_TIME 100
// Some coolers may require a non-zero "off" state. // Some coolers may require a non-zero "off" state.
//#define FAN_OFF_PWM 1 //#define FAN_OFF_PWM 1
@@ -406,7 +412,7 @@
* *
* Define one or both of these to override the default 0-255 range. * Define one or both of these to override the default 0-255 range.
*/ */
//#define FAN_MIN_PWM 50 #define FAN_MIN_PWM 70
//#define FAN_MAX_PWM 128 //#define FAN_MAX_PWM 128
/** /**
@@ -432,7 +438,7 @@
* USE_OCR2A_AS_TOP sacrifices duty cycle control resolution to achieve this broader range of frequencies. * USE_OCR2A_AS_TOP sacrifices duty cycle control resolution to achieve this broader range of frequencies.
*/ */
#if ENABLED(FAST_PWM_FAN) #if ENABLED(FAST_PWM_FAN)
//#define FAST_PWM_FAN_FREQUENCY 31400 #define FAST_PWM_FAN_FREQUENCY 122
//#define USE_OCR2A_AS_TOP //#define USE_OCR2A_AS_TOP
#endif #endif
@@ -498,7 +504,7 @@
// If you want endstops to stay on (by default) even when not homing // If you want endstops to stay on (by default) even when not homing
// enable this option. Override at any time with M120, M121. // enable this option. Override at any time with M120, M121.
//#define ENDSTOPS_ALWAYS_ON_DEFAULT #define ENDSTOPS_ALWAYS_ON_DEFAULT
// @section extras // @section extras
@@ -549,7 +555,11 @@
// //
// For Z set the number of stepper drivers // For Z set the number of stepper drivers
// //
#define NUM_Z_STEPPER_DRIVERS 1 // (1-4) Z options change based on how many #if ENABLED(TazDualZ)
#define NUM_Z_STEPPER_DRIVERS 2 // (1-4) Z options change based on how many
#else
#define NUM_Z_STEPPER_DRIVERS 1 // (1-4) Z options change based on how many
#endif
#if NUM_Z_STEPPER_DRIVERS > 1 #if NUM_Z_STEPPER_DRIVERS > 1
//#define Z_MULTI_ENDSTOPS //#define Z_MULTI_ENDSTOPS
@@ -627,14 +637,15 @@
* the position of the toolhead relative to the workspace. * the position of the toolhead relative to the workspace.
*/ */
//#define SENSORLESS_BACKOFF_MM { 2, 2 } // (mm) Backoff from endstops before sensorless homing #if ANY(MiniV2, TazPro)
#define SENSORLESS_BACKOFF_MM { 4, 4 } // (mm) Backoff from endstops before sensorless homing
#else
#define HOMING_BACKOFF_POST_MM { 2, 2, 16 } // (mm) Backoff from endstops after homing
#define QUICK_HOME // If G28 contains XY do a diagonal move first
#endif
#define HOMING_BUMP_MM { 5, 5, 2 } // (mm) Backoff from endstops after first bump #define HOMING_BUMP_MM { 5, 5, 2 } // (mm) Backoff from endstops after first bump
#define HOMING_BUMP_DIVISOR { 2, 2, 4 } // Re-Bump Speed Divisor (Divides the Homing Feedrate) #define HOMING_BUMP_DIVISOR { 2, 2, 4 } // Re-Bump Speed Divisor (Divides the Homing Feedrate)
//#define HOMING_BACKOFF_POST_MM { 2, 2, 2 } // (mm) Backoff from endstops after homing
//#define QUICK_HOME // If G28 contains XY do a diagonal move first
//#define HOME_Y_BEFORE_X // If G28 contains XY home Y before X //#define HOME_Y_BEFORE_X // If G28 contains XY home Y before X
//#define CODEPENDENT_XY_HOMING // If X/Y can't home without homing Y/X first //#define CODEPENDENT_XY_HOMING // If X/Y can't home without homing Y/X first
@@ -713,12 +724,14 @@
* Z Steppers Auto-Alignment * Z Steppers Auto-Alignment
* Add the G34 command to align multiple Z steppers using a bed probe. * Add the G34 command to align multiple Z steppers using a bed probe.
*/ */
//#define Z_STEPPER_AUTO_ALIGN #if ENABLED(TazDualZ)
#define Z_STEPPER_AUTO_ALIGN
#endif
#if ENABLED(Z_STEPPER_AUTO_ALIGN) #if ENABLED(Z_STEPPER_AUTO_ALIGN)
// Define probe X and Y positions for Z1, Z2 [, Z3 [, Z4]] // Define probe X and Y positions for Z1, Z2 [, Z3 [, Z4]]
// If not defined, probe limits will be used. // If not defined, probe limits will be used.
// Override with 'M422 S<index> X<pos> Y<pos>' // Override with 'M422 S<index> X<pos> Y<pos>'
//#define Z_STEPPER_ALIGN_XY { { 10, 190 }, { 100, 10 }, { 190, 190 } } #define Z_STEPPER_ALIGN_XY { { -10, -9 }, { (X_BED_SIZE + 8), -9 } }
/** /**
* Orientation for the automatically-calculated probe positions. * Orientation for the automatically-calculated probe positions.
@@ -768,6 +781,37 @@
#define HOME_AFTER_G34 #define HOME_AFTER_G34
#endif #endif
/**
* Modern replacement for the Prusa TMC_Z_CALIBRATION
* Adds capability to work with any adjustable current drivers
* Implements as G34 as M915 is deprecated
*/
#define MECHANICAL_GANTRY_CALIBRATION
#if ENABLED(MECHANICAL_GANTRY_CALIBRATION)
#if ENABLED(Mini)
#define GANTRY_CALIBRATION_CURRENT 900 // Default calibration current in ma - PWM
#elif ANY(Taz6, Workhorse)
#define GANTRY_CALIBRATION_CURRENT 120 // Default calibration current in ma - DIGIPOTSS
#elif ANY(MiniV2, TazPro)
#define GANTRY_CALIBRATION_CURRENT 600 // Default calibration current in ma - TMC
#endif
#define GANTRY_CALIBRATION_EXTRA_HEIGHT 15 // Extra distance in mm past Z_###_POS to move
#if ENABLED(MiniV2)
#define GANTRY_CALIBRATION_DIRECTION 0 // Set to 1 for Max or 0 for min
#else
#define GANTRY_CALIBRATION_DIRECTION 1 // Set to 1 for Max or 0 for min
#endif
#define GANTRY_CALIBRATION_FEEDRATE 500 // Feedrate for correction move
#define GANTRY_CALIBRATION_SAFE_POSITION {X_CENTER, Y_MIN} // Safe position for nozzle
#define GANTRY_CALIBRATION_XY_PARK_FEEDRATE 3000 // XY Park Feedrate - MMM
//#define GANTRY_CALIBRATION_COMMANDS_PRE ""
//#define GANTRY_CALIBRATION_COMMANDS_POST "G28"
#endif
// //
// Add the G35 command to read bed corners to help adjust screws. Requires a bed probe. // Add the G35 command to read bed corners to help adjust screws. Requires a bed probe.
// //
@@ -814,16 +858,20 @@
* Set DISABLE_INACTIVE_? 'true' to shut down axis steppers after an idle period. * Set DISABLE_INACTIVE_? 'true' to shut down axis steppers after an idle period.
* The Deactive Time can be overridden with M18 and M84. Set to 0 for No Timeout. * The Deactive Time can be overridden with M18 and M84. Set to 0 for No Timeout.
*/ */
#define DEFAULT_STEPPER_DEACTIVE_TIME 120 #define DEFAULT_STEPPER_DEACTIVE_TIME 240
#define DISABLE_INACTIVE_X true #define DISABLE_INACTIVE_X true
#define DISABLE_INACTIVE_Y true #define DISABLE_INACTIVE_Y true
#define DISABLE_INACTIVE_Z true // Set 'false' if the nozzle could fall onto your printed part! #if ANY(TazPro, MiniV2)
#define DISABLE_INACTIVE_Z true // Set to false if the nozzle will fall down on your printed part when print has finished.
#endif
#define DISABLE_INACTIVE_E true #define DISABLE_INACTIVE_E true
// If the Nozzle or Bed falls when the Z stepper is disabled, set its resting position here. // If the Nozzle or Bed falls when the Z stepper is disabled, set its resting position here.
//#define Z_AFTER_DEACTIVATE Z_HOME_POS //#define Z_AFTER_DEACTIVATE Z_HOME_POS
//#define HOME_AFTER_DEACTIVATE // Require rehoming after steppers are deactivated #if ANY(TazPro,MiniV2)
#define HOME_AFTER_DEACTIVATE // Require rehoming after steppers are deactivated
#endif
// Minimum time that a segment needs to take as the buffer gets emptied // Minimum time that a segment needs to take as the buffer gets emptied
#define DEFAULT_MINSEGMENTTIME 20000 // (µs) Set with M205 B. #define DEFAULT_MINSEGMENTTIME 20000 // (µs) Set with M205 B.
@@ -859,19 +907,23 @@
// Backlash Compensation // Backlash Compensation
// Adds extra movement to axes on direction-changes to account for backlash. // Adds extra movement to axes on direction-changes to account for backlash.
// //
//#define BACKLASH_COMPENSATION #define BACKLASH_COMPENSATION
#if ENABLED(BACKLASH_COMPENSATION) #if ENABLED(BACKLASH_COMPENSATION)
// Define values for backlash distance and correction. // Define values for backlash distance and correction.
// If BACKLASH_GCODE is enabled these values are the defaults. // If BACKLASH_GCODE is enabled these values are the defaults.
#define BACKLASH_DISTANCE_MM { 0, 0, 0 } // (mm) #if ENABLED(TazPro)
#define BACKLASH_CORRECTION 0.0 // 0.0 = no correction; 1.0 = full correction #define BACKLASH_DISTANCE_MM {0.252, 0.183, 0.075} // <-- changed: (mm)
#define BACKLASH_CORRECTION 1.0 // <-- changed: 0.0 = no correction; 1.0 = full correction
#else
#define BACKLASH_DISTANCE_MM { 0, 0, 0 } // (mm)
#define BACKLASH_CORRECTION 0.0 // 0.0 = no correction; 1.0 = full correction
#endif
// Set BACKLASH_SMOOTHING_MM to spread backlash correction over multiple segments // Set BACKLASH_SMOOTHING_MM to spread backlash correction over multiple segments
// to reduce print artifacts. (Enabling this is costly in memory and computation!) // to reduce print artifacts. (Enabling this is costly in memory and computation!)
//#define BACKLASH_SMOOTHING_MM 3 // (mm) #define BACKLASH_SMOOTHING_MM 3 // (mm)
// Add runtime configuration and tuning of backlash values (M425) // Add runtime configuration and tuning of backlash values (M425)
//#define BACKLASH_GCODE #define BACKLASH_GCODE
#if ENABLED(BACKLASH_GCODE) #if ENABLED(BACKLASH_GCODE)
// Measure the Z backlash when probing (G29) and set with "M425 Z" // Measure the Z backlash when probing (G29) and set with "M425 Z"
@@ -901,7 +953,7 @@
* Note: HOTEND_OFFSET and CALIBRATION_OBJECT_CENTER must be set to within * Note: HOTEND_OFFSET and CALIBRATION_OBJECT_CENTER must be set to within
* ±5mm of true values for G425 to succeed. * ±5mm of true values for G425 to succeed.
*/ */
//#define CALIBRATION_GCODE #define CALIBRATION_GCODE
#if ENABLED(CALIBRATION_GCODE) #if ENABLED(CALIBRATION_GCODE)
//#define CALIBRATION_SCRIPT_PRE "M117 Starting Auto-Calibration\nT0\nG28\nG12\nM117 Calibrating..." //#define CALIBRATION_SCRIPT_PRE "M117 Starting Auto-Calibration\nT0\nG28\nG12\nM117 Calibrating..."
@@ -921,15 +973,47 @@
//#define CALIBRATION_REPORTING //#define CALIBRATION_REPORTING
// The true location and dimension the cube/bolt/washer on the bed. // The true location and dimension the cube/bolt/washer on the bed.
#define CALIBRATION_OBJECT_CENTER { 264.0, -22.0, -2.0 } // mm #if ENABLED(Mini)
#define CALIBRATION_OBJECT_DIMENSIONS { 10.0, 10.0, 10.0 } // mm #define CALIBRATION_OBJECT_CENTER {169.5, 171.3, 0} // <-- changed: mm
#define CALIBRATION_OBJECT_DIMENSIONS {22.0, 22.0, 1.5} // <-- changed: mm
// Comment out any sides which are unreachable by the probe. For best // Comment out any sides which are unreachable by the probe. For best
// auto-calibration results, all sides must be reachable. // auto-calibration results, all sides must be reachable.
#define CALIBRATION_MEASURE_RIGHT //#define CALIBRATION_MEASURE_RIGHT // <-- changed
#define CALIBRATION_MEASURE_FRONT #define CALIBRATION_MEASURE_FRONT
#define CALIBRATION_MEASURE_LEFT #define CALIBRATION_MEASURE_LEFT
#define CALIBRATION_MEASURE_BACK //#define CALIBRATION_MEASURE_BACK
#elif ENABLED(MiniV2)
#define CALIBRATION_OBJECT_CENTER {169.5, 171.3, 0} // <-- changed: mm
#define CALIBRATION_OBJECT_DIMENSIONS {22.0, 22.0, 1.5} // <-- changed: mm
// Comment out any sides which are unreachable by the probe. For best
// auto-calibration results, all sides must be reachable.
//#define CALIBRATION_MEASURE_RIGHT // <-- changed
#define CALIBRATION_MEASURE_FRONT
#define CALIBRATION_MEASURE_LEFT
//#define CALIBRATION_MEASURE_BACK // <-- changed
#elif ENABLED(Taz6)
#define CALIBRATION_OBJECT_CENTER { 264.0, -22.0, -2.0 } // mm
#define CALIBRATION_OBJECT_DIMENSIONS { 10.0, 10.0, 10.0 } // mm
// Comment out any sides which are unreachable by the probe. For best
// auto-calibration results, all sides must be reachable.
#define CALIBRATION_MEASURE_RIGHT
#define CALIBRATION_MEASURE_FRONT
#define CALIBRATION_MEASURE_LEFT
#define CALIBRATION_MEASURE_BACK
#elif ANY(Workhorse, TazPro)
#define CALIBRATION_OBJECT_CENTER {261.0, -22.0, -2.0} // <-- changed: mm
#define CALIBRATION_OBJECT_DIMENSIONS {10.0, 10.0, 10.0} // <-- changed: mm
// Comment out any sides which are unreachable by the probe. For best
// auto-calibration results, all sides must be reachable.
#define CALIBRATION_MEASURE_RIGHT
#define CALIBRATION_MEASURE_FRONT // <-- changed
#define CALIBRATION_MEASURE_LEFT
#define CALIBRATION_MEASURE_BACK
#endif
// Probing at the exact top center only works if the center is flat. If // Probing at the exact top center only works if the center is flat. If
// probing on a screwhead or hollow washer, probe near the edges. // probing on a screwhead or hollow washer, probe near the edges.
@@ -986,8 +1070,13 @@
* M908 - BQ_ZUM_MEGA_3D, RAMBO, PRINTRBOARD_REVF, RIGIDBOARD_V2 & SCOOVO_X9H * M908 - BQ_ZUM_MEGA_3D, RAMBO, PRINTRBOARD_REVF, RIGIDBOARD_V2 & SCOOVO_X9H
* M909, M910 & LCD - only PRINTRBOARD_REVF & RIGIDBOARD_V2 * M909, M910 & LCD - only PRINTRBOARD_REVF & RIGIDBOARD_V2
*/ */
//#define PWM_MOTOR_CURRENT { 1300, 1300, 1250 } // Values in milliamps #if ENABLED(Mini)
//#define DIGIPOT_MOTOR_CURRENT { 135,135,135,135,135 } // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A) #define PWM_MOTOR_CURRENT {1300, 1630, 1250} // Values in milliamps
#elif ENABLED(Taz6)
#define DIGIPOT_MOTOR_CURRENT { 175,175,200,135,135 } // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A)
#elif ENABLED(Workhorse)
#define DIGIPOT_MOTOR_CURRENT {175, 175, 180, 177, 177} // <-- changed: Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A)
#endif
//#define DAC_MOTOR_CURRENT_DEFAULT { 70, 80, 90, 80 } // Default drive percent - X, Y, Z, E axis //#define DAC_MOTOR_CURRENT_DEFAULT { 70, 80, 90, 80 } // Default drive percent - X, Y, Z, E axis
/** /**
@@ -1050,13 +1139,13 @@
#if HAS_LCD_MENU #if HAS_LCD_MENU
// Include a page of printer information in the LCD Main Menu // Include a page of printer information in the LCD Main Menu
//#define LCD_INFO_MENU #define LCD_INFO_MENU
#if ENABLED(LCD_INFO_MENU) #if ENABLED(LCD_INFO_MENU)
//#define LCD_PRINTER_INFO_IS_BOOTSCREEN // Show bootscreen(s) instead of Printer Info pages #define LCD_PRINTER_INFO_IS_BOOTSCREEN // Show bootscreen(s) instead of Printer Info pages
#endif #endif
// BACK menu items keep the highlight at the top // BACK menu items keep the highlight at the top
//#define TURBO_BACK_MENU_ITEM #define TURBO_BACK_MENU_ITEM
/** /**
* LED Control Menu * LED Control Menu
@@ -1078,7 +1167,7 @@
#endif // HAS_LCD_MENU #endif // HAS_LCD_MENU
// Scroll a longer status message into view // Scroll a longer status message into view
//#define STATUS_MESSAGE_SCROLLING #define STATUS_MESSAGE_SCROLLING
// On the Info Screen, display XY with one decimal place when possible // On the Info Screen, display XY with one decimal place when possible
//#define LCD_DECIMAL_SMALL_XY //#define LCD_DECIMAL_SMALL_XY
@@ -1087,7 +1176,7 @@
//#define LCD_TIMEOUT_TO_STATUS 15000 //#define LCD_TIMEOUT_TO_STATUS 15000
// Add an 'M73' G-code to set the current percentage // Add an 'M73' G-code to set the current percentage
//#define LCD_SET_PROGRESS_MANUALLY #define LCD_SET_PROGRESS_MANUALLY
// Show the E position (filament used) during printing // Show the E position (filament used) during printing
//#define LCD_SHOW_E_TOTAL //#define LCD_SHOW_E_TOTAL
@@ -1151,7 +1240,7 @@
* an option on the LCD screen to continue the print from the last-known * an option on the LCD screen to continue the print from the last-known
* point in the file. * point in the file.
*/ */
//#define POWER_LOSS_RECOVERY #define POWER_LOSS_RECOVERY
#if ENABLED(POWER_LOSS_RECOVERY) #if ENABLED(POWER_LOSS_RECOVERY)
#define PLR_ENABLED_DEFAULT false // Power Loss Recovery enabled by default. (Set with 'M413 Sn' & M500) #define PLR_ENABLED_DEFAULT false // Power Loss Recovery enabled by default. (Set with 'M413 Sn' & M500)
//#define BACKUP_POWER_SUPPLY // Backup power / UPS to move the steppers on power loss //#define BACKUP_POWER_SUPPLY // Backup power / UPS to move the steppers on power loss
@@ -1206,10 +1295,10 @@
#endif #endif
// This allows hosts to request long names for files and folders with M33 // This allows hosts to request long names for files and folders with M33
//#define LONG_FILENAME_HOST_SUPPORT #define LONG_FILENAME_HOST_SUPPORT
// Enable this option to scroll long filenames in the SD card menu // Enable this option to scroll long filenames in the SD card menu
//#define SCROLL_LONG_FILENAMES #define SCROLL_LONG_FILENAMES
// Leave the heaters on after Stop Print (not recommended!) // Leave the heaters on after Stop Print (not recommended!)
//#define SD_ABORT_NO_COOLDOWN //#define SD_ABORT_NO_COOLDOWN
@@ -1231,7 +1320,7 @@
/** /**
* Auto-report SdCard status with M27 S<seconds> * Auto-report SdCard status with M27 S<seconds>
*/ */
//#define AUTO_REPORT_SD_STATUS #define AUTO_REPORT_SD_STATUS
/** /**
* Support for USB thumb drives using an Arduino USB Host Shield or * Support for USB thumb drives using an Arduino USB Host Shield or
@@ -1247,7 +1336,9 @@
* *
* [1] On AVR an interrupt-capable pin is best for UHS3 compatibility. * [1] On AVR an interrupt-capable pin is best for UHS3 compatibility.
*/ */
//#define USB_FLASH_DRIVE_SUPPORT #if ENABLED(TazPro)
#define USB_FLASH_DRIVE_SUPPORT
#endif
#if ENABLED(USB_FLASH_DRIVE_SUPPORT) #if ENABLED(USB_FLASH_DRIVE_SUPPORT)
#define USB_CS_PIN SDSS #define USB_CS_PIN SDSS
#define USB_INTR_PIN SD_DETECT_PIN #define USB_INTR_PIN SD_DETECT_PIN
@@ -1332,7 +1423,7 @@
// A smaller font may be used on the Info Screen. Costs 2300 bytes of PROGMEM. // A smaller font may be used on the Info Screen. Costs 2300 bytes of PROGMEM.
// Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese. // Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese.
//#define USE_SMALL_INFOFONT #define USE_SMALL_INFOFONT
// Swap the CW/CCW indicators in the graphics overlay // Swap the CW/CCW indicators in the graphics overlay
//#define OVERLAY_GFX_REVERSE //#define OVERLAY_GFX_REVERSE
@@ -1376,7 +1467,7 @@
//#define STATUS_ALT_FAN_BITMAP // Use the alternative fan bitmap //#define STATUS_ALT_FAN_BITMAP // Use the alternative fan bitmap
//#define STATUS_FAN_FRAMES 3 // :[0,1,2,3,4] Number of fan animation frames //#define STATUS_FAN_FRAMES 3 // :[0,1,2,3,4] Number of fan animation frames
//#define STATUS_HEAT_PERCENT // Show heating in a progress bar //#define STATUS_HEAT_PERCENT // Show heating in a progress bar
//#define BOOT_MARLIN_LOGO_SMALL // Show a smaller Marlin logo on the Boot Screen (saving 399 bytes of flash) #define BOOT_MARLIN_LOGO_SMALL // Show a smaller Marlin logo on the Boot Screen (saving 399 bytes of flash)
//#define BOOT_MARLIN_LOGO_ANIMATED // Animated Marlin logo. Costs ~3260 (or ~940) bytes of PROGMEM. //#define BOOT_MARLIN_LOGO_ANIMATED // Animated Marlin logo. Costs ~3260 (or ~940) bytes of PROGMEM.
// Frivolous Game Options // Frivolous Game Options
@@ -1433,17 +1524,17 @@
//#define LCD_4DSYSTEMS_4DLCD_FT843 // 4D Systems 4.3" (480x272) //#define LCD_4DSYSTEMS_4DLCD_FT843 // 4D Systems 4.3" (480x272)
//#define LCD_HAOYU_FT800CB // Haoyu with 4.3" or 5" (480x272) //#define LCD_HAOYU_FT800CB // Haoyu with 4.3" or 5" (480x272)
//#define LCD_HAOYU_FT810CB // Haoyu with 5" (800x480) //#define LCD_HAOYU_FT810CB // Haoyu with 5" (800x480)
//#define LCD_ALEPHOBJECTS_CLCD_UI // Aleph Objects Color LCD UI #define LCD_ALEPHOBJECTS_CLCD_UI // Aleph Objects Color LCD UI
//#define LCD_FYSETC_TFT81050 // FYSETC with 5" (800x480) //#define LCD_FYSETC_TFT81050 // FYSETC with 5" (800x480)
// Correct the resolution if not using the stock TFT panel. // Correct the resolution if not using the stock TFT panel.
//#define TOUCH_UI_320x240 //#define TOUCH_UI_320x240
//#define TOUCH_UI_480x272 //#define TOUCH_UI_480x272
//#define TOUCH_UI_800x480 #define TOUCH_UI_800x480
// Mappings for boards with a standard RepRapDiscount Display connector // Mappings for boards with a standard RepRapDiscount Display connector
//#define AO_EXP1_PINMAP // AlephObjects CLCD UI EXP1 mapping //#define AO_EXP1_PINMAP // AlephObjects CLCD UI EXP1 mapping
//#define AO_EXP2_PINMAP // AlephObjects CLCD UI EXP2 mapping #define AO_EXP2_PINMAP // AlephObjects CLCD UI EXP2 mapping
//#define CR10_TFT_PINMAP // Rudolph Riedel's CR10 pin mapping //#define CR10_TFT_PINMAP // Rudolph Riedel's CR10 pin mapping
//#define S6_TFT_PINMAP // FYSETC S6 pin mapping //#define S6_TFT_PINMAP // FYSETC S6 pin mapping
//#define F6_TFT_PINMAP // FYSETC F6 pin mapping //#define F6_TFT_PINMAP // FYSETC F6 pin mapping
@@ -1467,12 +1558,12 @@
// is supported on the FT800. The FT810 and beyond also support // is supported on the FT800. The FT810 and beyond also support
// portrait and mirrored orientations. // portrait and mirrored orientations.
//#define TOUCH_UI_INVERTED //#define TOUCH_UI_INVERTED
//#define TOUCH_UI_PORTRAIT #define TOUCH_UI_PORTRAIT
//#define TOUCH_UI_MIRRORED //#define TOUCH_UI_MIRRORED
// UTF8 processing and rendering. // UTF8 processing and rendering.
// Unsupported characters are shown as '?'. // Unsupported characters are shown as '?'.
//#define TOUCH_UI_USE_UTF8 #define TOUCH_UI_USE_UTF8
#if ENABLED(TOUCH_UI_USE_UTF8) #if ENABLED(TOUCH_UI_USE_UTF8)
// Western accents support. These accented characters use // Western accents support. These accented characters use
// combined bitmaps and require relatively little storage. // combined bitmaps and require relatively little storage.
@@ -1480,8 +1571,8 @@
#if ENABLED(TOUCH_UI_UTF8_WESTERN_CHARSET) #if ENABLED(TOUCH_UI_UTF8_WESTERN_CHARSET)
// Additional character groups. These characters require // Additional character groups. These characters require
// full bitmaps and take up considerable storage: // full bitmaps and take up considerable storage:
//#define TOUCH_UI_UTF8_SUPERSCRIPTS // ¹ ² ³ #define TOUCH_UI_UTF8_SUPERSCRIPTS // ¹ ² ³
//#define TOUCH_UI_UTF8_COPYRIGHT // © ® #define TOUCH_UI_UTF8_COPYRIGHT // © ®
//#define TOUCH_UI_UTF8_GERMANIC // ß //#define TOUCH_UI_UTF8_GERMANIC // ß
//#define TOUCH_UI_UTF8_SCANDINAVIAN // Æ Ð Ø Þ æ ð ø þ //#define TOUCH_UI_UTF8_SCANDINAVIAN // Æ Ð Ø Þ æ ð ø þ
//#define TOUCH_UI_UTF8_PUNCTUATION // « » ¿ ¡ //#define TOUCH_UI_UTF8_PUNCTUATION // « » ¿ ¡
@@ -1511,7 +1602,7 @@
//#define TOUCH_UI_DEBUG //#define TOUCH_UI_DEBUG
// Developer menu (accessed by touching "About Printer" copyright text) // Developer menu (accessed by touching "About Printer" copyright text)
//#define TOUCH_UI_DEVELOPER_MENU #define TOUCH_UI_DEVELOPER_MENU
#endif #endif
// //
@@ -1559,21 +1650,21 @@
* *
* Warning: Does not respect endstops! * Warning: Does not respect endstops!
*/ */
//#define BABYSTEPPING #define BABYSTEPPING
#if ENABLED(BABYSTEPPING) #if ENABLED(BABYSTEPPING)
//#define INTEGRATED_BABYSTEPPING // EXPERIMENTAL integration of babystepping into the Stepper ISR #define INTEGRATED_BABYSTEPPING // EXPERIMENTAL integration of babystepping into the Stepper ISR
//#define BABYSTEP_WITHOUT_HOMING //#define BABYSTEP_WITHOUT_HOMING
//#define BABYSTEP_XY // Also enable X/Y Babystepping. Not supported on DELTA! //#define BABYSTEP_XY // Also enable X/Y Babystepping. Not supported on DELTA!
#define BABYSTEP_INVERT_Z false // Change if Z babysteps should go the other way #define BABYSTEP_INVERT_Z false // Change if Z babysteps should go the other way
//#define BABYSTEP_MILLIMETER_UNITS // Specify BABYSTEP_MULTIPLICATOR_(XY|Z) in mm instead of micro-steps //#define BABYSTEP_MILLIMETER_UNITS // Specify BABYSTEP_MULTIPLICATOR_(XY|Z) in mm instead of micro-steps
#define BABYSTEP_MULTIPLICATOR_Z 1 // (steps or mm) Steps or millimeter distance for each Z babystep #define BABYSTEP_MULTIPLICATOR_Z 10 // (steps or mm) Steps or millimeter distance for each Z babystep
#define BABYSTEP_MULTIPLICATOR_XY 1 // (steps or mm) Steps or millimeter distance for each XY babystep #define BABYSTEP_MULTIPLICATOR_XY 1 // (steps or mm) Steps or millimeter distance for each XY babystep
//#define DOUBLECLICK_FOR_Z_BABYSTEPPING // Double-click on the Status Screen for Z Babystepping. #define DOUBLECLICK_FOR_Z_BABYSTEPPING // Double-click on the Status Screen for Z Babystepping.
#if ENABLED(DOUBLECLICK_FOR_Z_BABYSTEPPING) #if ENABLED(DOUBLECLICK_FOR_Z_BABYSTEPPING)
#define DOUBLECLICK_MAX_INTERVAL 1250 // Maximum interval between clicks, in milliseconds. #define DOUBLECLICK_MAX_INTERVAL 1250 // Maximum interval between clicks, in milliseconds.
// Note: Extra time may be added to mitigate controller latency. // Note: Extra time may be added to mitigate controller latency.
//#define BABYSTEP_ALWAYS_AVAILABLE // Allow babystepping at all times (not just during movement). #define BABYSTEP_ALWAYS_AVAILABLE // Allow babystepping at all times (not just during movement).
//#define MOVE_Z_WHEN_IDLE // Jump to the move Z menu on doubleclick when printer is idle. //#define MOVE_Z_WHEN_IDLE // Jump to the move Z menu on doubleclick when printer is idle.
#if ENABLED(MOVE_Z_WHEN_IDLE) #if ENABLED(MOVE_Z_WHEN_IDLE)
#define MOVE_Z_IDLE_MULTIPLICATOR 1 // Multiply 1mm by this factor for the move step size. #define MOVE_Z_IDLE_MULTIPLICATOR 1 // Multiply 1mm by this factor for the move step size.
@@ -1582,10 +1673,12 @@
//#define BABYSTEP_DISPLAY_TOTAL // Display total babysteps since last G28 //#define BABYSTEP_DISPLAY_TOTAL // Display total babysteps since last G28
//#define BABYSTEP_ZPROBE_OFFSET // Combine M851 Z and Babystepping #define BABYSTEP_ZPROBE_OFFSET // Combine M851 Z and Babystepping
#if ENABLED(BABYSTEP_ZPROBE_OFFSET) #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
//#define BABYSTEP_HOTEND_Z_OFFSET // For multiple hotends, babystep relative Z offsets //#define BABYSTEP_HOTEND_Z_OFFSET // For multiple hotends, babystep relative Z offsets
//#define BABYSTEP_ZPROBE_GFX_OVERLAY // Enable graphical overlay on Z-offset editor #if DISABLED(TazPro)
#define BABYSTEP_ZPROBE_GFX_OVERLAY // Enable graphical overlay on Z-offset editor
#endif
#endif #endif
#endif #endif
@@ -1606,10 +1699,10 @@
* *
* See https://marlinfw.org/docs/features/lin_advance.html for full instructions. * See https://marlinfw.org/docs/features/lin_advance.html for full instructions.
*/ */
//#define LIN_ADVANCE #define LIN_ADVANCE
#if ENABLED(LIN_ADVANCE) #if ENABLED(LIN_ADVANCE)
//#define EXTRA_LIN_ADVANCE_K // Enable for second linear advance constants //#define EXTRA_LIN_ADVANCE_K // Enable for second linear advance constants
#define LIN_ADVANCE_K 0.22 // Unit: mm compression per 1mm/s extruder speed #define LIN_ADVANCE_K 0.0 // Unit: mm compression per 1mm/s extruder speed
//#define LA_DEBUG // If enabled, this will generate debug information output over USB. //#define LA_DEBUG // If enabled, this will generate debug information output over USB.
//#define EXPERIMENTAL_SCURVE // Enable this option to permit S-Curve Acceleration //#define EXPERIMENTAL_SCURVE // Enable this option to permit S-Curve Acceleration
#endif #endif
@@ -1649,10 +1742,27 @@
* the probe to be unable to reach any points. * the probe to be unable to reach any points.
*/ */
#if PROBE_SELECTED && !IS_KINEMATIC #if PROBE_SELECTED && !IS_KINEMATIC
//#define PROBING_MARGIN_LEFT PROBING_MARGIN #if ENABLED(Mini)
//#define PROBING_MARGIN_RIGHT PROBING_MARGIN #define PROBING_MARGIN_LEFT 0.0 // <-- changed
//#define PROBING_MARGIN_FRONT PROBING_MARGIN #define PROBING_MARGIN_RIGHT -8.0 // <-- changed
//#define PROBING_MARGIN_BACK PROBING_MARGIN #define PROBING_MARGIN_FRONT -4.0 // <-- changed
#define PROBING_MARGIN_BACK -13.0 // <-- changed
#elif ENABLED(MiniV2)
#define PROBING_MARGIN_LEFT -3.0 // <-- changed
#define PROBING_MARGIN_RIGHT -6.8 // <-- changed
#define PROBING_MARGIN_FRONT -4.0 // <-- changed
#define PROBING_MARGIN_BACK -11.8 // <-- changed
#elif ENABLED(Taz6)
#define PROBING_MARGIN_LEFT -10.0 // <-- changed
#define PROBING_MARGIN_RIGHT -8.0 // <-- changed
#define PROBING_MARGIN_FRONT -9.0 // <-- changed
#define PROBING_MARGIN_BACK -11.1 // <-- changed
#elif ANY(Workhorse, TazPro)
#define PROBING_MARGIN_LEFT -10.0 // <-- changed
#define PROBING_MARGIN_RIGHT -9.4 // <-- changed
#define PROBING_MARGIN_FRONT -9.0 // <-- changed
#define PROBING_MARGIN_BACK -12.5 // <-- changed
#endif
#endif #endif
#if EITHER(MESH_BED_LEVELING, AUTO_BED_LEVELING_UBL) #if EITHER(MESH_BED_LEVELING, AUTO_BED_LEVELING_UBL)
@@ -1667,7 +1777,7 @@
* Repeatedly attempt G29 leveling until it succeeds. * Repeatedly attempt G29 leveling until it succeeds.
* Stop after G29_MAX_RETRIES attempts. * Stop after G29_MAX_RETRIES attempts.
*/ */
//#define G29_RETRY_AND_RECOVER #define G29_RETRY_AND_RECOVER
#if ENABLED(G29_RETRY_AND_RECOVER) #if ENABLED(G29_RETRY_AND_RECOVER)
#define G29_MAX_RETRIES 3 #define G29_MAX_RETRIES 3
#define G29_HALT_ON_FAILURE #define G29_HALT_ON_FAILURE
@@ -1675,9 +1785,20 @@
* Specify the GCODE commands that will be executed when leveling succeeds, * Specify the GCODE commands that will be executed when leveling succeeds,
* between attempts, and after the maximum number of retries have been tried. * between attempts, and after the maximum number of retries have been tried.
*/ */
#define G29_SUCCESS_COMMANDS "M117 Bed leveling done." #define G29_SUCCESS_COMMANDS "M117 Probe successful" // <-- changed
#define G29_RECOVER_COMMANDS "M117 Probe failed. Rewiping.\nG28\nG12 P0 S12 T0" #if ENABLED(Mini)
#define G29_FAILURE_COMMANDS "M117 Bed leveling failed.\nG0 Z10\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nG4 S1" #define G29_RECOVER_COMMANDS "M121\nG0 Z10\nG28 X0 Y0\nG12\nM109 R160\nM400\nM117 Probing bed" // <-- changed
#elif ENABLED(MiniV2)
#define G29_RECOVER_COMMANDS "M104 S170\nG28\nG0 X150 F9999\nG0 Z5 F6000\nG91\nM211 S0\nM400\nM906 Z600\nG0 Z-15 F500\nG0 Z5 F500\nM400\nG90\nM906 Z960\nM211 S1\nG28 Z0\nG28\nG12\nM109 R160\nM400\nM117 Probing bed" // <-- changed
#elif ENABLED(Taz6)
#define G29_RECOVER_COMMANDS "G0 Z10\nG12\nM109 R160\nM400\nM117 Probing bed" // <-- changed
#elif ENABLED(Workhorse)
#define G29_RECOVER_COMMANDS "M104 S170\nG0 X150 F9999\nG28 Z0\nG28\nG12\nM109 R160\nM400\nM117 Probing bed" // <-- changed
#elif ENABLED( TazPro)
#define G29_RECOVER_COMMANDS "M104 S170 T0\nM104 S170 T1\nG0 X150 F9999\nG28 Z0\nG28\nG12\nM109 R160\nM400\nM117 Probing bed" // <-- changed
#endif
#define G29_FAILURE_COMMANDS "M117 Bed leveling failed.\nG0 Z10\nG0 E0\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nM300 P50 S0\nM300 P25 S880\nG4 S1" // <-- changed
#endif #endif
@@ -1864,7 +1985,7 @@
// For debug-echo: 128 bytes for the optimal speed. // For debug-echo: 128 bytes for the optimal speed.
// Other output doesn't need to be that speedy. // Other output doesn't need to be that speedy.
// :[0, 2, 4, 8, 16, 32, 64, 128, 256] // :[0, 2, 4, 8, 16, 32, 64, 128, 256]
#define TX_BUFFER_SIZE 0 #define TX_BUFFER_SIZE 32
// Host Receive Buffer Size // Host Receive Buffer Size
// Without XON/XOFF flow control (see SERIAL_XON_XOFF below) 32 bytes should be enough. // Without XON/XOFF flow control (see SERIAL_XON_XOFF below) 32 bytes should be enough.
@@ -1899,7 +2020,7 @@
* Currently handles M108, M112, M410, M876 * Currently handles M108, M112, M410, M876
* NOTE: Not yet implemented for all platforms. * NOTE: Not yet implemented for all platforms.
*/ */
//#define EMERGENCY_PARSER #define EMERGENCY_PARSER
// Bad Serial-connections can miss a received command by sending an 'ok' // Bad Serial-connections can miss a received command by sending an 'ok'
// Therefore some clients abort after 30 seconds in a timeout. // Therefore some clients abort after 30 seconds in a timeout.
@@ -1908,7 +2029,7 @@
//#define NO_TIMEOUTS 1000 // Milliseconds //#define NO_TIMEOUTS 1000 // Milliseconds
// Some clients will have this feature soon. This could make the NO_TIMEOUTS unnecessary. // Some clients will have this feature soon. This could make the NO_TIMEOUTS unnecessary.
//#define ADVANCED_OK #define ADVANCED_OK
// Printrun may have trouble receiving long strings all at once. // Printrun may have trouble receiving long strings all at once.
// This option inserts short delays between lines of serial output. // This option inserts short delays between lines of serial output.
@@ -1943,7 +2064,7 @@
* Note that M207 / M208 / M209 settings are saved to EEPROM. * Note that M207 / M208 / M209 settings are saved to EEPROM.
* *
*/ */
//#define FWRETRACT #define FWRETRACT
#if ENABLED(FWRETRACT) #if ENABLED(FWRETRACT)
#define FWRETRACT_AUTORETRACT // Override slicer retractions #define FWRETRACT_AUTORETRACT // Override slicer retractions
#if ENABLED(FWRETRACT_AUTORETRACT) #if ENABLED(FWRETRACT_AUTORETRACT)
@@ -2043,14 +2164,14 @@
* Requires NOZZLE_PARK_FEATURE. * Requires NOZZLE_PARK_FEATURE.
* This feature is required for the default FILAMENT_RUNOUT_SCRIPT. * This feature is required for the default FILAMENT_RUNOUT_SCRIPT.
*/ */
//#define ADVANCED_PAUSE_FEATURE #define ADVANCED_PAUSE_FEATURE
#if ENABLED(ADVANCED_PAUSE_FEATURE) #if ENABLED(ADVANCED_PAUSE_FEATURE)
#define PAUSE_PARK_RETRACT_FEEDRATE 60 // (mm/s) Initial retract feedrate. #define PAUSE_PARK_RETRACT_FEEDRATE 10 // (mm/s) Initial retract feedrate.
#define PAUSE_PARK_RETRACT_LENGTH 2 // (mm) Initial retract. #define PAUSE_PARK_RETRACT_LENGTH 2 // (mm) Initial retract.
// This short retract is done immediately, before parking the nozzle. // This short retract is done immediately, before parking the nozzle.
#define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // (mm/s) Unload filament feedrate. This can be pretty fast. #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 5 // (mm/s) Unload filament feedrate. This can be pretty fast.
#define FILAMENT_CHANGE_UNLOAD_ACCEL 25 // (mm/s^2) Lower acceleration may allow a faster feedrate. #define FILAMENT_CHANGE_UNLOAD_ACCEL 25 // (mm/s^2) Lower acceleration may allow a faster feedrate.
#define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // (mm) The length of filament for a complete unload. #define FILAMENT_CHANGE_UNLOAD_LENGTH 80 // (mm) The length of filament for a complete unload.
// For Bowden, the full length of the tube and nozzle. // For Bowden, the full length of the tube and nozzle.
// For direct drive, the full length of the nozzle. // For direct drive, the full length of the nozzle.
// Set to 0 for manual unloading. // Set to 0 for manual unloading.
@@ -2059,7 +2180,7 @@
// 0 to disable start loading and skip to fast load only // 0 to disable start loading and skip to fast load only
#define FILAMENT_CHANGE_FAST_LOAD_FEEDRATE 6 // (mm/s) Load filament feedrate. This can be pretty fast. #define FILAMENT_CHANGE_FAST_LOAD_FEEDRATE 6 // (mm/s) Load filament feedrate. This can be pretty fast.
#define FILAMENT_CHANGE_FAST_LOAD_ACCEL 25 // (mm/s^2) Lower acceleration may allow a faster feedrate. #define FILAMENT_CHANGE_FAST_LOAD_ACCEL 25 // (mm/s^2) Lower acceleration may allow a faster feedrate.
#define FILAMENT_CHANGE_FAST_LOAD_LENGTH 0 // (mm) Load length of filament, from extruder gear to nozzle. #define FILAMENT_CHANGE_FAST_LOAD_LENGTH 40 // (mm) Load length of filament, from extruder gear to nozzle.
// For Bowden, the full length of the tube and nozzle. // For Bowden, the full length of the tube and nozzle.
// For direct drive, the full length of the nozzle. // For direct drive, the full length of the nozzle.
//#define ADVANCED_PAUSE_CONTINUOUS_PURGE // Purge continuously up to the purge length until interrupted. //#define ADVANCED_PAUSE_CONTINUOUS_PURGE // Purge continuously up to the purge length until interrupted.
@@ -2072,20 +2193,20 @@
//#define ADVANCED_PAUSE_FANS_PAUSE // Turn off print-cooling fans while the machine is paused. //#define ADVANCED_PAUSE_FANS_PAUSE // Turn off print-cooling fans while the machine is paused.
// Filament Unload does a Retract, Delay, and Purge first: // Filament Unload does a Retract, Delay, and Purge first:
#define FILAMENT_UNLOAD_PURGE_RETRACT 13 // (mm) Unload initial retract length. #define FILAMENT_UNLOAD_PURGE_RETRACT 5 // (mm) Unload initial retract length.
#define FILAMENT_UNLOAD_PURGE_DELAY 5000 // (ms) Delay for the filament to cool after retract. #define FILAMENT_UNLOAD_PURGE_DELAY 1500 // (ms) Delay for the filament to cool after retract.
#define FILAMENT_UNLOAD_PURGE_LENGTH 8 // (mm) An unretract is done, then this length is purged. #define FILAMENT_UNLOAD_PURGE_LENGTH 8 // (mm) An unretract is done, then this length is purged.
#define FILAMENT_UNLOAD_PURGE_FEEDRATE 25 // (mm/s) feedrate to purge before unload #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 PAUSE_PARK_NOZZLE_TIMEOUT 180 // (seconds) Time limit before the nozzle is turned off for safety.
#define FILAMENT_CHANGE_ALERT_BEEPS 10 // Number of alert beeps to play when a response is needed. #define FILAMENT_CHANGE_ALERT_BEEPS 2 // Number of alert beeps to play when a response is needed.
#define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable for XYZ steppers to stay powered on during filament change. #define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable for XYZ steppers to stay powered on during filament change.
//#define PARK_HEAD_ON_PAUSE // Park the nozzle during pause and filament change. #define PARK_HEAD_ON_PAUSE // Park the nozzle during pause and filament change.
//#define HOME_BEFORE_FILAMENT_CHANGE // If needed, home before parking for filament change #define HOME_BEFORE_FILAMENT_CHANGE // If needed, home before parking for filament change
//#define FILAMENT_LOAD_UNLOAD_GCODES // Add M701/M702 Load/Unload G-codes, plus Load/Unload in the LCD Prepare menu. #define FILAMENT_LOAD_UNLOAD_GCODES // Add M701/M702 Load/Unload G-codes, plus Load/Unload in the LCD Prepare menu.
//#define FILAMENT_UNLOAD_ALL_EXTRUDERS // Allow M702 to unload all extruders above a minimum target temp (as set by M302) #define FILAMENT_UNLOAD_ALL_EXTRUDERS // Allow M702 to unload all extruders above a minimum target temp (as set by M302)
#endif #endif
// @section tmc // @section tmc
@@ -2220,10 +2341,10 @@
#define INTERPOLATE true // Interpolate X/Y/Z_MICROSTEPS to 256 #define INTERPOLATE true // Interpolate X/Y/Z_MICROSTEPS to 256
#if AXIS_IS_TMC(X) #if AXIS_IS_TMC(X)
#define X_CURRENT 800 // (mA) RMS current. Multiply by 1.414 for peak current. #define X_CURRENT 975 // (mA) RMS current. Multiply by 1.414 for peak current.
#define X_CURRENT_HOME X_CURRENT // (mA) RMS current for sensorless homing #define X_CURRENT_HOME X_CURRENT // (mA) RMS current for sensorless homing
#define X_MICROSTEPS 16 // 0..256 #define X_MICROSTEPS 16 // 0..256
#define X_RSENSE 0.11 #define X_RSENSE 0.12
#define X_CHAIN_POS -1 // <=0 : Not chained. 1 : MCU MOSI connected. 2 : Next in chain, ... #define X_CHAIN_POS -1 // <=0 : Not chained. 1 : MCU MOSI connected. 2 : Next in chain, ...
#endif #endif
@@ -2236,10 +2357,10 @@
#endif #endif
#if AXIS_IS_TMC(Y) #if AXIS_IS_TMC(Y)
#define Y_CURRENT 800 #define Y_CURRENT 975
#define Y_CURRENT_HOME Y_CURRENT #define Y_CURRENT_HOME Y_CURRENT
#define Y_MICROSTEPS 16 #define Y_MICROSTEPS 16
#define Y_RSENSE 0.11 #define Y_RSENSE 0.12
#define Y_CHAIN_POS -1 #define Y_CHAIN_POS -1
#endif #endif
@@ -2252,10 +2373,14 @@
#endif #endif
#if AXIS_IS_TMC(Z) #if AXIS_IS_TMC(Z)
#define Z_CURRENT 800 #define Z_CURRENT 975
#define Z_CURRENT_HOME Z_CURRENT #define Z_CURRENT_HOME Z_CURRENT
#define Z_MICROSTEPS 16 #if ENABLED(MiniV2)
#define Z_RSENSE 0.11 #define Z_MICROSTEPS 32
#else
#define Z_MICROSTEPS 16
#endif
#define Z_RSENSE 0.12
#define Z_CHAIN_POS -1 #define Z_CHAIN_POS -1
#endif #endif
@@ -2284,16 +2409,16 @@
#endif #endif
#if AXIS_IS_TMC(E0) #if AXIS_IS_TMC(E0)
#define E0_CURRENT 800 #define E0_CURRENT 960
#define E0_MICROSTEPS 16 #define E0_MICROSTEPS 16
#define E0_RSENSE 0.11 #define E0_RSENSE 0.12
#define E0_CHAIN_POS -1 #define E0_CHAIN_POS -1
#endif #endif
#if AXIS_IS_TMC(E1) #if AXIS_IS_TMC(E1)
#define E1_CURRENT 800 #define E1_CURRENT 960
#define E1_MICROSTEPS 16 #define E1_MICROSTEPS 16
#define E1_RSENSE 0.11 #define E1_RSENSE 0.12
#define E1_CHAIN_POS -1 #define E1_CHAIN_POS -1
#endif #endif
@@ -2364,7 +2489,9 @@
* The default SW SPI pins are defined the respective pins files, * The default SW SPI pins are defined the respective pins files,
* but you can override or define them here. * but you can override or define them here.
*/ */
//#define TMC_USE_SW_SPI #if ENABLED(TazPro)
#define TMC_USE_SW_SPI
#endif
//#define TMC_SW_MOSI -1 //#define TMC_SW_MOSI -1
//#define TMC_SW_MISO -1 //#define TMC_SW_MISO -1
//#define TMC_SW_SCK -1 //#define TMC_SW_SCK -1
@@ -2411,9 +2538,9 @@
* Use Trinamic's ultra quiet stepping mode. * Use Trinamic's ultra quiet stepping mode.
* When disabled, Marlin will use spreadCycle stepping mode. * When disabled, Marlin will use spreadCycle stepping mode.
*/ */
#define STEALTHCHOP_XY //#define STEALTHCHOP_XY
#define STEALTHCHOP_Z #define STEALTHCHOP_Z
#define STEALTHCHOP_E //#define STEALTHCHOP_E
/** /**
* Optimize spreadCycle chopper parameters by using predefined parameter sets * Optimize spreadCycle chopper parameters by using predefined parameter sets
@@ -2430,7 +2557,7 @@
* Define you own with * Define you own with
* { <off_time[1..15]>, <hysteresis_end[-3..12]>, hysteresis_start[1..8] } * { <off_time[1..15]>, <hysteresis_end[-3..12]>, hysteresis_start[1..8] }
*/ */
#define CHOPPER_TIMING CHOPPER_DEFAULT_12V #define CHOPPER_TIMING {3, -2, 6}
/** /**
* Monitor Trinamic drivers * Monitor Trinamic drivers
@@ -2443,7 +2570,7 @@
* M912 - Clear stepper driver overtemperature pre-warn condition flag. * M912 - Clear stepper driver overtemperature pre-warn condition flag.
* M122 - Report driver parameters (Requires TMC_DEBUG) * M122 - Report driver parameters (Requires TMC_DEBUG)
*/ */
//#define MONITOR_DRIVER_STATUS #define MONITOR_DRIVER_STATUS
#if ENABLED(MONITOR_DRIVER_STATUS) #if ENABLED(MONITOR_DRIVER_STATUS)
#define CURRENT_STEP_DOWN 50 // [mA] #define CURRENT_STEP_DOWN 50 // [mA]
@@ -2500,14 +2627,21 @@
* IMPROVE_HOMING_RELIABILITY tunes acceleration and jerk when * IMPROVE_HOMING_RELIABILITY tunes acceleration and jerk when
* homing and adds a guard period for endstop triggering. * homing and adds a guard period for endstop triggering.
*/ */
//#define SENSORLESS_HOMING // StallGuard capable drivers only #define SENSORLESS_HOMING // StallGuard capable drivers only
#if EITHER(SENSORLESS_HOMING, SENSORLESS_PROBING) #if EITHER(SENSORLESS_HOMING, SENSORLESS_PROBING)
// TMC2209: 0...255. TMC2130: -64...63 // TMC2209: 0...255. TMC2130: -64...63
#define X_STALL_SENSITIVITY 8 #if ENABLED(TazPro)
#define X2_STALL_SENSITIVITY X_STALL_SENSITIVITY #define X_STALL_SENSITIVITY 6
#define Y_STALL_SENSITIVITY 8 #define X2_STALL_SENSITIVITY X_STALL_SENSITIVITY
#define Y2_STALL_SENSITIVITY Y_STALL_SENSITIVITY #define Y_STALL_SENSITIVITY 5
#define Y2_STALL_SENSITIVITY Y_STALL_SENSITIVITY
#else
#define X_STALL_SENSITIVITY 4
#define X2_STALL_SENSITIVITY X_STALL_SENSITIVITY
#define Y_STALL_SENSITIVITY 4
#define Y2_STALL_SENSITIVITY Y_STALL_SENSITIVITY
#endif
//#define Z_STALL_SENSITIVITY 8 //#define Z_STALL_SENSITIVITY 8
//#define Z2_STALL_SENSITIVITY Z_STALL_SENSITIVITY //#define Z2_STALL_SENSITIVITY Z_STALL_SENSITIVITY
//#define Z3_STALL_SENSITIVITY Z_STALL_SENSITIVITY //#define Z3_STALL_SENSITIVITY Z_STALL_SENSITIVITY
@@ -2551,8 +2685,13 @@
* stepperY.intpol(0); \ * stepperY.intpol(0); \
* } * }
*/ */
#define TMC_ADV() { } #if ENABLED(MiniV2)
#define TMC_ADV() {stepperX.toff(1);stepperX.hstrt(4);stepperX.hend(0);stepperX.tbl(1);stepperY.toff(1);stepperY.hstrt(4);stepperY.hend(0);stepperY.tbl(1);stepperZ.toff(1);stepperZ.hstrt(0);stepperZ.hend(0);stepperZ.tbl(1);stepperE0.toff(1);stepperE0.hstrt(0);stepperE0.hend(0);stepperE0.tbl(1);stepperX.shaft(1);stepperX.semin(1);stepperX.semax(3);stepperY.shaft(1);stepperY.semin(1);stepperY.semax(3);stepperZ.shaft(1);stepperZ.semin(1);stepperZ.semax(3);stepperE0.shaft(1);stepperE0.semin(1);stepperE0.semax(3);} // <-- changed
#elif ENABLED(TazPro)
#define TMC_ADV() {stepperX.shaft(0);stepperX.semin(1);stepperX.semax(3);stepperY.shaft(0);stepperY.semin(1);stepperY.semax(3);stepperZ.shaft(0);stepperZ.semin(1);stepperZ.semax(3);stepperE0.shaft(0);stepperE0.semin(1);stepperE0.semax(3);stepperE1.shaft(0);stepperE1.semin(1);stepperE1.semax(3);} // <-- changed
#else
#define TMC_ADV() { }
#endif
#endif // HAS_TRINAMIC_CONFIG #endif // HAS_TRINAMIC_CONFIG
// @section L64XX // @section L64XX
@@ -3113,7 +3252,7 @@
//#define NO_WORKSPACE_OFFSETS //#define NO_WORKSPACE_OFFSETS
// Extra options for the M114 "Current Position" report // Extra options for the M114 "Current Position" report
//#define M114_DETAIL // Use 'M114` for details to check planner calculations #define M114_DETAIL // Use 'M114` for details to check planner calculations
//#define M114_REALTIME // Real current position based on forward kinematics //#define M114_REALTIME // Real current position based on forward kinematics
//#define M114_LEGACY // M114 used to synchronize on every call. Enable if needed. //#define M114_LEGACY // M114 used to synchronize on every call. Enable if needed.
@@ -3178,27 +3317,51 @@
/** /**
* User-defined menu items that execute custom GCode * User-defined menu items that execute custom GCode
*/ */
//#define CUSTOM_USER_MENUS #if DISABLED(TazPro)
#define CUSTOM_USER_MENUS
#endif
#if ENABLED(CUSTOM_USER_MENUS) #if ENABLED(CUSTOM_USER_MENUS)
//#define CUSTOM_USER_MENU_TITLE "Custom Commands" #define CUSTOM_USER_MENU_TITLE "Tool Heads"
#define USER_SCRIPT_DONE "M117 User Script Done" #define USER_SCRIPT_DONE "M117 Tool Changed"
#define USER_SCRIPT_AUDIBLE_FEEDBACK #define USER_SCRIPT_AUDIBLE_FEEDBACK
//#define USER_SCRIPT_RETURN // Return to status screen after a script //#define USER_SCRIPT_RETURN // Return to status screen after a script
#define USER_DESC_1 "Home & UBL Info" #if ANY(Taz6, Mini)
#define USER_GCODE_1 "G28\nG29 W" #define DEFAULT_PID "P28.79I1.91D108.51"
#else
#define DEFAULT_PID "P21.0I1.78D61.93"
#endif
#define USER_DESC_2 "Preheat for " PREHEAT_1_LABEL #if ANY(Taz6, Workhorse)
#define USER_GCODE_2 "M140 S" STRINGIFY(PREHEAT_1_TEMP_BED) "\nM104 S" STRINGIFY(PREHEAT_1_TEMP_HOTEND) #define E_CURRENT_Aero "150"
#define E_CURRENT_Std "135"
#define E_CURRENT_Moar "135"
#define E_CURRENT_BMG "150"
#elif ENABLED(Mini)
#define E_CURRENT_Aero "1300"
#define E_CURRENT_Std "1350"
#define E_CURRENT_Moar "1250"
#define E_CURRENT_BMG "1350"
#else
#define E_CURRENT_Aero "1100"
#define E_CURRENT_Std "960"
#define E_CURRENT_Moar "960"
#define E_CURRENT_BMG "1100"
#endif
#define USER_DESC_3 "Preheat for " PREHEAT_2_LABEL #define USER_DESC_1 "Aerostruder"
#define USER_GCODE_3 "M140 S" STRINGIFY(PREHEAT_2_TEMP_BED) "\nM104 S" STRINGIFY(PREHEAT_2_TEMP_HOTEND) #define USER_GCODE_1 "M92E420\nM206X0Y0\nM301" DEFAULT_PID "\nM907E" E_CURRENT_Aero "\nM500"
#define USER_DESC_4 "Heat Bed/Home/Level" #define USER_DESC_2 "Moarstruder"
#define USER_GCODE_4 "M140 S" STRINGIFY(PREHEAT_2_TEMP_BED) "\nG28\nG29" #define USER_GCODE_2 "M92E819\nM206X0Y0\nM301" DEFAULT_PID "\nM907E" E_CURRENT_Moar "\nM500"
#define USER_DESC_5 "Home & Info" #if NONE(Workhorse, MiniV2)
#define USER_GCODE_5 "G28\nM503" #define USER_DESC_3 "Standard"
#define USER_GCODE_3 "M92E814\nM206X0Y0\nM301" DEFAULT_PID "\nM907E" E_CURRENT_Std "\nM500"
#endif
#define USER_DESC_4 "Mosquito BMG-M"
#define USER_GCODE_4 "M92E415\nM206X-5Y-12\nM301P148.07I26.58D206.21\nM907E" E_CURRENT_BMG "\nM500"
#endif #endif
/** /**
@@ -3215,9 +3378,9 @@
* Host Prompt Support enables Marlin to use the host for user prompts so * Host Prompt Support enables Marlin to use the host for user prompts so
* filament runout and other processes can be managed from the host side. * filament runout and other processes can be managed from the host side.
*/ */
//#define HOST_ACTION_COMMANDS #define HOST_ACTION_COMMANDS
#if ENABLED(HOST_ACTION_COMMANDS) #if ENABLED(HOST_ACTION_COMMANDS)
//#define HOST_PROMPT_SUPPORT #define HOST_PROMPT_SUPPORT
#endif #endif
/** /**
@@ -3225,7 +3388,7 @@
* *
* Implement M486 to allow Marlin to skip objects * Implement M486 to allow Marlin to skip objects
*/ */
//#define CANCEL_OBJECTS #define CANCEL_OBJECTS
/** /**
* I2C position encoders for closed loop control. * I2C position encoders for closed loop control.
@@ -3310,21 +3473,23 @@
/** /**
* Analog Joystick(s) * Analog Joystick(s)
*/ */
//#define JOYSTICK #if ENABLED(TazPro)
#define JOYSTICK
#endif
#if ENABLED(JOYSTICK) #if ENABLED(JOYSTICK)
#define JOY_X_PIN 5 // RAMPS: Suggested pin A5 on AUX2 #define JOY_X_PIN -1 // RAMPS: Suggested pin A5 on AUX2
#define JOY_Y_PIN 10 // RAMPS: Suggested pin A10 on AUX2 #define JOY_Y_PIN -1 // RAMPS: Suggested pin A10 on AUX2
#define JOY_Z_PIN 12 // RAMPS: Suggested pin A12 on AUX2 #define JOY_Z_PIN -1 // RAMPS: Suggested pin A12 on AUX2
#define JOY_EN_PIN 44 // RAMPS: Suggested pin D44 on AUX2 #define JOY_EN_PIN -1 // RAMPS: Suggested pin D44 on AUX2
//#define INVERT_JOY_X // Enable if X direction is reversed //#define INVERT_JOY_X // Enable if X direction is reversed
//#define INVERT_JOY_Y // Enable if Y direction is reversed //#define INVERT_JOY_Y // Enable if Y direction is reversed
//#define INVERT_JOY_Z // Enable if Z direction is reversed //#define INVERT_JOY_Z // Enable if Z direction is reversed
// Use M119 with JOYSTICK_DEBUG to find reasonable values after connecting: // 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_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_Y_LIMITS { 5600, 8250-100, 8250+100, 11000 }
#define JOY_Z_LIMITS { 4800, 8080-100, 8080+100, 11550 } //#define JOY_Z_LIMITS { 4800, 8080-100, 8080+100, 11550 }
#endif #endif
/** /**
+8 -6
View File
@@ -28,20 +28,20 @@
/** /**
* Marlin release version identifier * Marlin release version identifier
*/ */
//#define SHORT_BUILD_VERSION "bugfix-2.0.x" #define SHORT_BUILD_VERSION "LulzbotUnified - 2.0.6"
/** /**
* Verbose version identifier which should contain a reference to the location * Verbose version identifier which should contain a reference to the location
* from where the binary was downloaded or the source code was compiled. * from where the binary was downloaded or the source code was compiled.
*/ */
//#define DETAILED_BUILD_VERSION SHORT_BUILD_VERSION #define DETAILED_BUILD_VERSION SHORT_BUILD_VERSION " Rev2"
/** /**
* The STRING_DISTRIBUTION_DATE represents when the binary file was built, * The STRING_DISTRIBUTION_DATE represents when the binary file was built,
* here we define this default string as the date where the latest release * here we define this default string as the date where the latest release
* version was tagged. * version was tagged.
*/ */
//#define STRING_DISTRIBUTION_DATE "2019-07-10" #define STRING_DISTRIBUTION_DATE "2020-08-09"
/** /**
* Defines a generic printer name to be output to the LCD after booting Marlin. * Defines a generic printer name to be output to the LCD after booting Marlin.
@@ -71,6 +71,8 @@
* Set the vendor info the serial USB interface, if changable * Set the vendor info the serial USB interface, if changable
* Currently only supported by DUE platform * Currently only supported by DUE platform
*/ */
//#define USB_DEVICE_VENDOR_ID 0x0000 #if ENABLED(TazPro)
//#define USB_DEVICE_PRODUCT_ID 0x0000 #define USB_DEVICE_VENDOR_ID 0x27b1 // <-- changed
//#define USB_DEVICE_MANUFACTURE_NAME WEBSITE_URL #define USB_DEVICE_PRODUCT_ID 0x0001 // <-- changed
#endif
//#define USB_DEVICE_MANUFACTURE_NAME WEBSITE_URL
+103
View File
@@ -0,0 +1,103 @@
/**
* Marlin 3D Printer Firmware
* Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
/**
* Custom Bitmap for splashscreen
*
* You may use one of the following tools to generate the C++ bitmap array from
* a black and white image:
*
* - http://www.marlinfw.org/tools/u8glib/converter.html
* - http://www.digole.com/tools/PicturetoC_Hex_converter.php
*/
#include <avr/pgmspace.h>
#define CUSTOM_BOOTSCREEN_TIMEOUT 2500
#define CUSTOM_BOOTSCREEN_BMPWIDTH 60
#define CUSTOM_BOOTSCREEN_BMPHEIGHT 64
const unsigned char custom_start_bmp[574] PROGMEM = {
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0xc, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0xc, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x12, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x23, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x21, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x4c, 0x80, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x5e, 0x80, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x92, 0x40, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0xa1, 0x40, 0x0, 0x0, 0x0,
0x0, 0x0, 0x1, 0x21, 0x20, 0x0, 0x0, 0x0,
0x0, 0x0, 0x2, 0x7f, 0x90, 0x0, 0x0, 0x0,
0x0, 0x0, 0x2, 0x0, 0x10, 0x0, 0x0, 0x0,
0x0, 0x0, 0x7, 0xff, 0xf8, 0x0, 0x0, 0x0,
0x0, 0x0, 0x4, 0x0, 0x8, 0x0, 0x0, 0x0,
0x0, 0x0, 0x8, 0x0, 0x4, 0x0, 0x0, 0x0,
0x0, 0x0, 0x8, 0x0, 0x6, 0x0, 0x0, 0x0,
0x0, 0x0, 0x10, 0x0, 0x2, 0x0, 0x0, 0x0,
0x0, 0x0, 0x30, 0x1e, 0x1, 0x0, 0x0, 0x0,
0x0, 0x0, 0x20, 0x7f, 0x81, 0x0, 0x0, 0x0,
0x0, 0x0, 0x41, 0xff, 0xe0, 0x80, 0x0, 0x0,
0x0, 0x0, 0x43, 0xfc, 0xf0, 0x80, 0x0, 0x0,
0x0, 0x0, 0x87, 0x3b, 0x78, 0x40, 0x0, 0x0,
0x0, 0x1, 0x8e, 0xdb, 0xfc, 0x60, 0x0, 0x0,
0x0, 0x1, 0xf, 0xeb, 0xcc, 0x20, 0x0, 0x0,
0x0, 0x2, 0x1f, 0xed, 0xb6, 0x10, 0x0, 0x0,
0x0, 0x2, 0x1f, 0xde, 0xb6, 0x10, 0x0, 0x0,
0x0, 0x4, 0x39, 0xcd, 0x7f, 0x8, 0x0, 0x0,
0x0, 0x4, 0x36, 0xe0, 0xff, 0x8, 0x0, 0x0,
0x0, 0x8, 0x7e, 0xc0, 0xbb, 0x84, 0x0, 0x0,
0x0, 0x18, 0x7f, 0x0, 0x5d, 0x86, 0x0, 0x0,
0x0, 0x10, 0x7f, 0xc0, 0xed, 0x82, 0x0, 0x0,
0x0, 0x20, 0x3c, 0xc0, 0x73, 0x1, 0x0, 0x0,
0x0, 0x20, 0x3b, 0x33, 0x7f, 0x1, 0x0, 0x0,
0x0, 0x70, 0x1b, 0xe7, 0x7e, 0x3, 0x80, 0x0,
0x0, 0xc8, 0x1d, 0xee, 0xde, 0x4, 0xc0, 0x0,
0x0, 0x88, 0xf, 0xde, 0xdc, 0x4, 0x40, 0x0,
0x1, 0x24, 0xf, 0xdf, 0x3c, 0x9, 0x20, 0x0,
0x1, 0x26, 0x7, 0xdb, 0xf8, 0x19, 0x20, 0x0,
0x2, 0x72, 0x3, 0xe7, 0xf0, 0x13, 0x90, 0x0,
0x2, 0x51, 0x1, 0xff, 0xe0, 0x22, 0x90, 0x0,
0x4, 0x89, 0x0, 0x7f, 0x80, 0x24, 0x48, 0x0,
0x9, 0x4, 0x80, 0x1e, 0x0, 0x48, 0x24, 0x0,
0xb, 0xfe, 0x40, 0x0, 0x0, 0xdf, 0xf4, 0x0,
0x10, 0x0, 0x40, 0x0, 0x0, 0x80, 0x2, 0x0,
0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x10, 0x22, 0x10, 0x3c, 0x3c, 0xe, 0x1f, 0x0,
0x10, 0x22, 0x10, 0x4, 0x22, 0x11, 0x4, 0x0,
0x10, 0x22, 0x10, 0x8, 0x22, 0x11, 0x4, 0x0,
0x10, 0x22, 0x10, 0x8, 0x3c, 0x11, 0x4, 0x0,
0x10, 0x22, 0x10, 0x10, 0x22, 0x11, 0x4, 0x0,
0x10, 0x22, 0x10, 0x20, 0x22, 0x11, 0x4, 0x0,
0x1e, 0x1c, 0x1e, 0x3c, 0x3c, 0xe, 0x4, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0
};
@@ -1548,6 +1548,9 @@
* numbers for those locations should be 0. * numbers for those locations should be 0.
*/ */
#ifdef VALIDATE_MESH_TILT #ifdef VALIDATE_MESH_TILT
#if ENABLED(Z_SAFE_HOMING)
constexpr xy_float_t safe_homing_xy = { Z_SAFE_HOMING_X_POINT , Z_SAFE_HOMING_Y_POINT };
#endif
auto d_from = []{ DEBUG_ECHOPGM("D from "); }; auto d_from = []{ DEBUG_ECHOPGM("D from "); };
auto normed = [&](const xy_pos_t &pos, const float &zadd) { auto normed = [&](const xy_pos_t &pos, const float &zadd) {
return normal.x * pos.x + normal.y * pos.y + zadd; return normal.x * pos.x + normal.y * pos.y + zadd;
+10 -6
View File
@@ -285,8 +285,8 @@ G29_TYPE GcodeSuite::G29() {
G29_RETURN(false); G29_RETURN(false);
} }
const float rx = RAW_X_POSITION(parser.linearval('X', NAN)), const float rx = (parser.linearval('X', NAN)),
ry = RAW_Y_POSITION(parser.linearval('Y', NAN)); ry = (parser.linearval('Y', NAN));
int8_t i = parser.byteval('I', -1), j = parser.byteval('J', -1); int8_t i = parser.byteval('I', -1), j = parser.byteval('J', -1);
if (!isnan(rx) && !isnan(ry)) { if (!isnan(rx) && !isnan(ry)) {
@@ -377,16 +377,20 @@ G29_TYPE GcodeSuite::G29() {
} }
else { else {
probe_position_lf.set( probe_position_lf.set(
parser.seenval('L') ? RAW_X_POSITION(parser.value_linear_units()) : x_min, parser.seenval('L') ? (parser.value_linear_units()) : x_min,
parser.seenval('F') ? RAW_Y_POSITION(parser.value_linear_units()) : y_min parser.seenval('F') ? (parser.value_linear_units()) : y_min
); );
probe_position_rb.set( probe_position_rb.set(
parser.seenval('R') ? RAW_X_POSITION(parser.value_linear_units()) : x_max, parser.seenval('R') ? (parser.value_linear_units()) : x_max,
parser.seenval('B') ? RAW_Y_POSITION(parser.value_linear_units()) : y_max parser.seenval('B') ? (parser.value_linear_units()) : y_max
); );
} }
if (!probe.good_bounds(probe_position_lf, probe_position_rb)) { if (!probe.good_bounds(probe_position_lf, probe_position_rb)) {
if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPAIR("Left : ", probe_position_lf.x);
if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPAIR("Right : ", probe_position_rb.x);
if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPAIR("Front : ", probe_position_lf.y);
if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPAIR("Back : ", probe_position_rb.y);
SERIAL_ECHOLNPGM("? (L,R,F,B) out of bounds."); SERIAL_ECHOLNPGM("? (L,R,F,B) out of bounds.");
G29_RETURN(false); G29_RETURN(false);
} }
+6 -4
View File
@@ -119,20 +119,22 @@
// Disallow Z homing if X or Y homing is needed // Disallow Z homing if X or Y homing is needed
if (axis_unhomed_error(_BV(X_AXIS) | _BV(Y_AXIS))) return; if (axis_unhomed_error(_BV(X_AXIS) | _BV(Y_AXIS))) return;
sync_plan_position(); sync_plan_position();
/** /**
* Move the Z probe (or just the nozzle) to the safe homing point * Move the Z probe (or just the nozzle) to the safe homing point
* (Z is already at the right height) * (Z is already at the right height)
*/ */
destination.set(safe_homing_xy, current_position.z); //update_workspace_offset(X_AXIS);
//update_workspace_offset(Y_AXIS);
destination.set((xy_float_t){ Z_SAFE_HOMING_X_POINT - home_offset[X_AXIS], Z_SAFE_HOMING_Y_POINT - home_offset[Y_AXIS] }, current_position.z);
//destination.set((xy_float_t){ Z_SAFE_HOMING_X_POINT, Z_SAFE_HOMING_Y_POINT }, current_position.z);
TERN_(HOMING_Z_WITH_PROBE, destination -= probe.offset_xy); TERN_(HOMING_Z_WITH_PROBE, destination -= probe.offset_xy);
if (position_is_reachable(destination)) { if (DEBUGGING(LEVELING)) DEBUG_POS("home_z_safely", destination);
if (DEBUGGING(LEVELING)) DEBUG_POS("home_z_safely", destination); if (position_is_reachable(destination)) {
// This causes the carriage on Dual X to unpark // This causes the carriage on Dual X to unpark
TERN_(DUAL_X_CARRIAGE, active_extruder_parked = false); TERN_(DUAL_X_CARRIAGE, active_extruder_parked = false);
+164 -15
View File
@@ -22,31 +22,32 @@
#include "../../inc/MarlinConfig.h" #include "../../inc/MarlinConfig.h"
#if ENABLED(Z_STEPPER_AUTO_ALIGN)
#include "../../feature/z_stepper_align.h"
#include "../gcode.h" #include "../gcode.h"
#include "../../module/planner.h" #include "../../module/planner.h"
#include "../../module/stepper.h" #include "../../module/stepper.h"
#include "../../module/motion.h" #include "../../module/motion.h"
#include "../../module/probe.h" #include "../../module/probe.h"
#include "../../module/endstops.h"
#if HAS_MULTI_HOTEND
#include "../../module/tool_change.h"
#endif
#if HAS_LEVELING #if HAS_LEVELING
#include "../../feature/bedlevel/bedlevel.h" #include "../../feature/bedlevel/bedlevel.h"
#endif #endif
#define DEBUG_OUT ENABLED(DEBUG_LEVELING_FEATURE)
#include "../../core/debug_out.h"
#if ENABLED(Z_STEPPER_AUTO_ALIGN)
#include "../../feature/z_stepper_align.h"
#if HAS_MULTI_HOTEND
#include "../../module/tool_change.h"
#endif
#if ENABLED(Z_STEPPER_ALIGN_KNOWN_STEPPER_POSITIONS) #if ENABLED(Z_STEPPER_ALIGN_KNOWN_STEPPER_POSITIONS)
#include "../../libs/least_squares_fit.h" #include "../../libs/least_squares_fit.h"
#endif #endif
#define DEBUG_OUT ENABLED(DEBUG_LEVELING_FEATURE)
#include "../../core/debug_out.h"
/** /**
* G34: Z-Stepper automatic alignment * G34: Z-Stepper automatic alignment
* *
@@ -169,6 +170,7 @@ void GcodeSuite::G34() {
if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("> probing all positions."); if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("> probing all positions.");
SERIAL_ECHOLNPAIR("\nITERATION: ", int(iteration + 1)); SERIAL_ECHOLNPAIR("\nITERATION: ", int(iteration + 1));
ui.set_status("\nITERATION: ", int(iteration + 1));
// Initialize minimum value // Initialize minimum value
z_measured_min = 100000.0f; z_measured_min = 100000.0f;
@@ -190,7 +192,8 @@ void GcodeSuite::G34() {
// current_position.z has been manually altered in the "dirty trick" above. // current_position.z has been manually altered in the "dirty trick" above.
const float z_probed_height = probe.probe_at_point(z_stepper_align.xy[iprobe], raise_after, 0, true, false); const float z_probed_height = probe.probe_at_point(z_stepper_align.xy[iprobe], raise_after, 0, true, false);
if (isnan(z_probed_height)) { if (isnan(z_probed_height)) {
SERIAL_ECHOLNPGM("Probing failed."); SERIAL_ECHOLNPGM(MSG_LCD_PROBING_FAILED);
ui.set_status_P(MSG_LCD_PROBING_FAILED)
err_break = true; err_break = true;
break; break;
} }
@@ -249,6 +252,13 @@ void GcodeSuite::G34() {
, " Z3-Z1=", ABS(z_measured[2] - z_measured[0]) , " Z3-Z1=", ABS(z_measured[2] - z_measured[0])
#endif #endif
); );
ui.set_status("\n"
"DIFFERENCE Z1-Z2=", ABS(z_measured[0] - z_measured[1])
#if NUM_Z_STEPPER_DRIVERS == 3
, " Z2-Z3=", ABS(z_measured[1] - z_measured[2])
, " Z3-Z1=", ABS(z_measured[2] - z_measured[0])
#endif
);
#if ENABLED(Z_STEPPER_ALIGN_KNOWN_STEPPER_POSITIONS) #if ENABLED(Z_STEPPER_ALIGN_KNOWN_STEPPER_POSITIONS)
// Check if the applied corrections go in the correct direction. // Check if the applied corrections go in the correct direction.
@@ -267,7 +277,8 @@ void GcodeSuite::G34() {
// If it's getting worse, stop and throw an error // If it's getting worse, stop and throw an error
if (last_z_align_level_indicator < z_align_level_indicator * 0.7f) { if (last_z_align_level_indicator < z_align_level_indicator * 0.7f) {
SERIAL_ECHOLNPGM("Decreasing accuracy detected."); SERIAL_ECHOLNPGM(DECREASING_ACCURACY);
ui.set_status_P(DECREASING_ACCURACY);
err_break = true; err_break = true;
break; break;
} }
@@ -291,7 +302,8 @@ void GcodeSuite::G34() {
// Check for less accuracy compared to last move // Check for less accuracy compared to last move
if (last_z_align_move[zstepper] < z_align_abs * 0.7f) { if (last_z_align_move[zstepper] < z_align_abs * 0.7f) {
SERIAL_ECHOLNPGM("Decreasing accuracy detected."); SERIAL_ECHOLNPGM(DECREASING_ACCURACY);
ui.set_status_P(DECREASING_ACCURACY);
if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPAIR("> Z", int(zstepper + 1), " last_z_align_move = ", last_z_align_move[zstepper]); if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPAIR("> Z", int(zstepper + 1), " last_z_align_move = ", last_z_align_move[zstepper]);
if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPAIR("> Z", int(zstepper + 1), " z_align_abs = ", z_align_abs); if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPAIR("> Z", int(zstepper + 1), " z_align_abs = ", z_align_abs);
adjustment_reverse = !adjustment_reverse; adjustment_reverse = !adjustment_reverse;
@@ -329,7 +341,11 @@ void GcodeSuite::G34() {
if (err_break) break; if (err_break) break;
if (success_break) { SERIAL_ECHOLNPGM("Target accuracy achieved."); break; } if (success_break) {
SERIAL_ECHOLNPGM("Target accuracy achieved.");
ui.set_status_P(PGM_P("Target accuracy achieved."));
break;
}
} // for (iteration) } // for (iteration)
@@ -469,4 +485,137 @@ void GcodeSuite::M422() {
pos_dest[position_index] = pos; pos_dest[position_index] = pos;
} }
#elif ENABLED(MECHANICAL_GANTRY_CALIBRATION)
void GcodeSuite::G34() {
if (axis_unhomed_error()) return;
TEMPORARY_SOFT_ENDSTOP_STATE(false);
TEMPORARY_BED_LEVELING_STATE(false);
TemporaryGlobalEndstopsState unlock_z(false);
#ifdef GANTRY_CALIBRATION_COMMANDS_PRE
gcode.process_subcommands_now_P(PSTR(GANTRY_CALIBRATION_COMMANDS_PRE));
#endif
if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("Sub Commands Processed");
if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("Parking XY");
// Move XY to safe position
#ifdef GANTRY_CALIBRATION_SAFE_POSITION
xy_pos_t safe_pos = GANTRY_CALIBRATION_SAFE_POSITION;
current_position[X_AXIS] = safe_pos[X_AXIS];
current_position[Y_AXIS] = safe_pos[Y_AXIS];
do_blocking_move_to(current_position, MMM_TO_MMS(GANTRY_CALIBRATION_XY_PARK_FEEDRATE));
planner.synchronize();
#endif
if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("Setting Z Pounce");
const uint16_t move_distance = parser.intval('Z', GANTRY_CALIBRATION_EXTRA_HEIGHT);
// Move Z to pounce position
#if GANTRY_CALIBRATION_DIRECTION == 1
current_position[Z_AXIS] = (Z_MAX_POS - move_distance);
#else
current_position[Z_AXIS] = (Z_MIN_POS + move_distance);
#endif
do_blocking_move_to(current_position, MMM_TO_MMS(HOMING_FEEDRATE_Z));
planner.synchronize();
if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("Reducing Current");
// Store current motor settings, then apply reduced value
#if HAS_DIGIPOTSS
const uint16_t target_current = parser.intval('S', GANTRY_CALIBRATION_CURRENT);
const uint32_t previous_current = stepper.motor_current_setting[Z_AXIS];
stepper.digipot_current(Z_AXIS, target_current);
#elif HAS_MOTOR_CURRENT_PWM
const uint16_t target_current = parser.intval('S', GANTRY_CALIBRATION_CURRENT);
const uint32_t previous_current = stepper.motor_current_setting[Z_AXIS];
stepper.digipot_current(1, target_current);
#elif DAC_STEPPER_CURRENT
const float target_current = parser.floatval('S', GANTRY_CALIBRATION_CURRENT);
const float previous_current = dac_amps(Z_AXIS, target_current);
dac_current_raw(Z_AXIS, target_current);
#elif ENABLED(HAS_I2C_DIGIPOT)
const uint16_t target_current = parser.intval('S', GANTRY_CALIBRATION_CURRENT);
previous_current = dac_amps(Z_AXIS);
digipot_i2c_set_current(Z_AXIS, target_current)
#elif HAS_TRINAMIC_CONFIG
const uint16_t target_current = parser.intval('S', GANTRY_CALIBRATION_CURRENT);
static uint16_t previous_current_arr[NUM_Z_STEPPER_DRIVERS];
#if AXIS_IS_TMC(Z)
previous_current_arr[0] = stepperZ.getMilliamps();
stepperZ.rms_current(target_current);
#endif
#if AXIS_IS_TMC(Z2)
previous_current_arr[1] = stepperZ2.getMilliamps();
stepperZ2.rms_current(target_current);
#endif
#if AXIS_IS_TMC(Z3)
previous_current_arr[2] = stepperZ3.getMilliamps();
stepperZ3.rms_current(target_current);
#endif
#if AXIS_IS_TMC(Z4)
previous_current_arr[3] = stepperZ4.getMilliamps();
stepperZ4.rms_current(target_current);
#endif
#endif
if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("Final Z Move");
// Do Final Z move to adjust
#if GANTRY_CALIBRATION_DIRECTION == 1
current_position[Z_AXIS] = (Z_MAX_POS + move_distance);
#else
current_position[Z_AXIS] = (Z_MIN_POS - move_distance);
#endif
do_blocking_move_to(current_position, MMM_TO_MMS(GANTRY_CALIBRATION_FEEDRATE));
planner.synchronize();
if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("Z Backoff");
// Back off end plate, back to normal motion range
#if GANTRY_CALIBRATION_DIRECTION == 1
current_position[Z_AXIS] = (Z_MAX_POS - move_distance);
#else
current_position[Z_AXIS] = (Z_MIN_POS + move_distance);
#endif
do_blocking_move_to(current_position, MMM_TO_MMS(GANTRY_CALIBRATION_FEEDRATE));
planner.synchronize();
if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("Restore Current");
// Reset current to original values
#if HAS_DIGIPOTSS
stepper.digipot_current(Z_AXIS, previous_current);
#elif HAS_MOTOR_CURRENT_PWM
stepper.digipot_current(1, previous_current);
#elif DAC_STEPPER_CURRENT
dac_current_raw(Z_AXIS, previous_current);
#elif ENABLED(HAS_I2C_DIGIPOT)
digipot_i2c_set_current(Z_AXIS, previous_current)
#elif HAS_TRINAMIC_CONFIG
#if AXIS_IS_TMC(Z)
stepperZ.rms_current(previous_current_arr[0]);
#endif
#if AXIS_IS_TMC(Z2)
stepperZ2.rms_current(previous_current_arr[1]);
#endif
#if AXIS_IS_TMC(Z3)
stepperZ3.rms_current(previous_current_arr[2]);
#endif
#if AXIS_IS_TMC(Z4)
stepperZ4.rms_current(previous_current_arr[3]);
#endif
#endif
if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("Running Post Commands");
#ifdef GANTRY_CALIBRATION_COMMANDS_POST
gcode.process_subcommands_now_P(PSTR(GANTRY_CALIBRATION_COMMANDS_POST));
#endif
}
#endif // Z_STEPPER_AUTO_ALIGN #endif // Z_STEPPER_AUTO_ALIGN
+1 -1
View File
@@ -335,7 +335,7 @@ void GcodeSuite::process_parsed_command(const bool no_ok/*=false*/) {
case 33: G33(); break; // G33: Delta Auto-Calibration case 33: G33(); break; // G33: Delta Auto-Calibration
#endif #endif
#if ENABLED(Z_STEPPER_AUTO_ALIGN) #if ANY(Z_STEPPER_AUTO_ALIGN, MECHANICAL_GANTRY_CALIBRATION)
case 34: G34(); break; // G34: Z Stepper automatic alignment using probe case 34: G34(); break; // G34: Z Stepper automatic alignment using probe
#endif #endif
+3 -2
View File
@@ -462,11 +462,12 @@ private:
TERN_(DELTA_AUTO_CALIBRATION, static void G33()); TERN_(DELTA_AUTO_CALIBRATION, static void G33());
#if ENABLED(Z_STEPPER_AUTO_ALIGN) #if ANY(Z_STEPPER_AUTO_ALIGN, MECHANICAL_GANTRY_CALIBRATION)
static void G34(); static void G34();
static void M422();
#endif #endif
TERN_(Z_STEPPER_AUTO_ALIGN, static void M422());
TERN_(ASSISTED_TRAMMING, static void G35()); TERN_(ASSISTED_TRAMMING, static void G35());
TERN_(G38_PROBE_TARGET, static void G38(const int8_t subcode)); TERN_(G38_PROBE_TARGET, static void G38(const int8_t subcode));
+6
View File
@@ -41,6 +41,12 @@ void GcodeSuite::M206() {
if (parser.seen(XYZ_CHAR(i))) if (parser.seen(XYZ_CHAR(i)))
set_home_offset((AxisEnum)i, parser.value_linear_units()); set_home_offset((AxisEnum)i, parser.value_linear_units());
if (!parser.seen_any()) {
SERIAL_ECHOLNPAIR("M206X : ", home_offset[X_AXIS]);
SERIAL_ECHOLNPAIR("M206Y : ", home_offset[Y_AXIS]);
SERIAL_ECHOLNPAIR("M206Z : ", home_offset[Z_AXIS]);
}
#if ENABLED(MORGAN_SCARA) #if ENABLED(MORGAN_SCARA)
if (parser.seen('T')) set_home_offset(A_AXIS, parser.value_float()); // Theta if (parser.seen('T')) set_home_offset(A_AXIS, parser.value_float()); // Theta
if (parser.seen('P')) set_home_offset(B_AXIS, parser.value_float()); // Psi if (parser.seen('P')) set_home_offset(B_AXIS, parser.value_float()); // Psi
+23 -1
View File
@@ -426,7 +426,7 @@
#elif defined(CHAMBER_HEATER_PIN) #elif defined(CHAMBER_HEATER_PIN)
#error "CHAMBER_HEATER_PIN is now HEATER_CHAMBER_PIN. Please update your configuration and/or pins." #error "CHAMBER_HEATER_PIN is now HEATER_CHAMBER_PIN. Please update your configuration and/or pins."
#elif defined(TMC_Z_CALIBRATION) #elif defined(TMC_Z_CALIBRATION)
#error "TMC_Z_CALIBRATION has been deprecated in favor of Z_STEPPER_AUTO_ALIGN. Please update your configuration." #error "TMC_Z_CALIBRATION has been deprecated in favor of MECHANICAL_GANTRY_CALIBRATION. Please update your configuration."
#elif defined(Z_MIN_PROBE_ENDSTOP) #elif defined(Z_MIN_PROBE_ENDSTOP)
#error "Z_MIN_PROBE_ENDSTOP is no longer required. Please remove it from Configuration.h." #error "Z_MIN_PROBE_ENDSTOP is no longer required. Please remove it from Configuration.h."
#elif defined(DUAL_NOZZLE_DUPLICATION_MODE) #elif defined(DUAL_NOZZLE_DUPLICATION_MODE)
@@ -2711,6 +2711,28 @@ static_assert( _ARR_TEST(3,0) && _ARR_TEST(3,1) && _ARR_TEST(3,2)
#endif #endif
#endif #endif
#if ENABLED(MECHANICAL_GANTRY_CALIBRATION)
#if NONE(DAC_STEPPER_CURRENT, HAS_DIGIPOTSS, DAC_STEPPER_CURRENT, HAS_TRINAMIC_CONFIG, HAS_MOTOR_CURRENT_PWM)
#error "It is highly reccomended to have adjustable current drivers to prevent damage. Disable this line to continue anyway."
#else
#ifndef GANTRY_CALIBRATION_CURRENT
#error "MECHANICAL_GANTRY_CALIBRATION Requires GANTRY_CALIBRATION_CURRENT to be set."
#endif
#ifndef GANTRY_CALIBRATION_EXTRA_HEIGHT
#error "MECHANICAL_GANTRY_CALIBRATION Requires GANTRY_CALIBRATION_EXTRA_HEIGHT to be set."
#endif
#ifndef GANTRY_CALIBRATION_DIRECTION
#error "MECHANICAL_GANTRY_CALIBRATION Requires GANTRY_CALIBRATION_DIRECTION to be set."
#endif
#ifndef GANTRY_CALIBRATION_FEEDRATE
#error "MECHANICAL_GANTRY_CALIBRATION Requires GANTRY_CALIBRATION_FEEDRATE to be set."
#endif
#endif
#if defined(GANTRY_CALIBRATION_SAFE_POSITION) && !defined(GANTRY_CALIBRATION_XY_PARK_FEEDRATE)
#error "GANTRY_CALIBRATION_SAFE_POSITION Requires GANTRY_CALIBRATION_XY_PARK_FEEDRATE to be set."
#endif
#endif
#if ENABLED(PRINTCOUNTER) && DISABLED(EEPROM_SETTINGS) #if ENABLED(PRINTCOUNTER) && DISABLED(EEPROM_SETTINGS)
#error "PRINTCOUNTER requires EEPROM_SETTINGS. Please update your Configuration." #error "PRINTCOUNTER requires EEPROM_SETTINGS. Please update your Configuration."
#endif #endif
@@ -32,9 +32,9 @@
#ifdef SHOW_CUSTOM_BOOTSCREEN #ifdef SHOW_CUSTOM_BOOTSCREEN
#ifdef TOUCH_UI_PORTRAIT #ifdef TOUCH_UI_PORTRAIT
#include "../theme/_bootscreen_portrait.h" #include "../theme/bootscreen_logo_portrait.h"
#else #else
#include "../theme/_bootscreen_landscape.h" #include "../theme/bootscreen_landscape.h"
#endif #endif
#else #else
#ifdef TOUCH_UI_PORTRAIT #ifdef TOUCH_UI_PORTRAIT
@@ -38,7 +38,7 @@ bool ConfirmAutoCalibrationDialogBox::onTouchEnd(uint8_t tag) {
switch (tag) { switch (tag) {
case 1: case 1:
GOTO_SCREEN(StatusScreen); GOTO_SCREEN(StatusScreen);
injectCommands_P(PSTR(CALIBRATION_COMMANDS)); injectCommands_P(PSTR("G425"));
return true; return true;
default: default:
return DialogBoxBaseClass::onTouchEnd(tag); return DialogBoxBaseClass::onTouchEnd(tag);
File diff suppressed because one or more lines are too long
+1
View File
@@ -67,6 +67,7 @@ namespace Language_en {
PROGMEM Language_Str MSG_AUTO_HOME_Z = _UxGT("Home Z"); PROGMEM Language_Str MSG_AUTO_HOME_Z = _UxGT("Home Z");
PROGMEM Language_Str MSG_AUTO_Z_ALIGN = _UxGT("Auto Z-Align"); PROGMEM Language_Str MSG_AUTO_Z_ALIGN = _UxGT("Auto Z-Align");
PROGMEM Language_Str MSG_ASSISTED_TRAMMING = _UxGT("Assisted Tramming"); PROGMEM Language_Str MSG_ASSISTED_TRAMMING = _UxGT("Assisted Tramming");
PROGMEM Language_Str DECREASING_ACCURACY = _UxGT("Decreasing accuracy detected.");
PROGMEM Language_Str MSG_LEVEL_BED_HOMING = _UxGT("Homing XYZ"); PROGMEM Language_Str MSG_LEVEL_BED_HOMING = _UxGT("Homing XYZ");
PROGMEM Language_Str MSG_LEVEL_BED_WAITING = _UxGT("Click to Begin"); PROGMEM Language_Str MSG_LEVEL_BED_WAITING = _UxGT("Click to Begin");
PROGMEM Language_Str MSG_LEVEL_BED_NEXT_POINT = _UxGT("Next Point"); PROGMEM Language_Str MSG_LEVEL_BED_NEXT_POINT = _UxGT("Next Point");
+1 -1
View File
@@ -340,7 +340,7 @@ void menu_motion() {
// //
// Auto Z-Align // Auto Z-Align
// //
#if ENABLED(Z_STEPPER_AUTO_ALIGN) #if ANY(Z_STEPPER_AUTO_ALIGN, MECHANICAL_GANTRY_CALIBRATION)
GCODES_ITEM(MSG_AUTO_Z_ALIGN, PSTR("G34")); GCODES_ITEM(MSG_AUTO_Z_ALIGN, PSTR("G34"));
#endif #endif
-4
View File
@@ -78,10 +78,6 @@ extern xyz_pos_t cartes;
#define XY_PROBE_FEEDRATE_MM_S PLANNER_XY_FEEDRATE() #define XY_PROBE_FEEDRATE_MM_S PLANNER_XY_FEEDRATE()
#endif #endif
#if ENABLED(Z_SAFE_HOMING)
constexpr xy_float_t safe_homing_xy = { Z_SAFE_HOMING_X_POINT, Z_SAFE_HOMING_Y_POINT };
#endif
/** /**
* Feed rates are often configured with mm/m * Feed rates are often configured with mm/m
* but the planner and stepper like mm/s units. * but the planner and stepper like mm/s units.
+12
View File
@@ -153,6 +153,9 @@ public:
#else #else
_MAX((X_MIN_BED) + (PROBING_MARGIN_LEFT), (X_MIN_POS) + offset_xy.x) _MAX((X_MIN_BED) + (PROBING_MARGIN_LEFT), (X_MIN_POS) + offset_xy.x)
#endif #endif
#if ENABLED(NOZZLE_AS_PROBE)
- home_offset[X_AXIS]
#endif
); );
} }
static inline float max_x() { static inline float max_x() {
@@ -162,6 +165,9 @@ public:
#else #else
_MIN((X_MAX_BED) - (PROBING_MARGIN_RIGHT), (X_MAX_POS) + offset_xy.x) _MIN((X_MAX_BED) - (PROBING_MARGIN_RIGHT), (X_MAX_POS) + offset_xy.x)
#endif #endif
#if ENABLED(NOZZLE_AS_PROBE)
- home_offset[X_AXIS]
#endif
); );
} }
static inline float min_y() { static inline float min_y() {
@@ -171,6 +177,9 @@ public:
#else #else
_MAX((Y_MIN_BED) + (PROBING_MARGIN_FRONT), (Y_MIN_POS) + offset_xy.y) _MAX((Y_MIN_BED) + (PROBING_MARGIN_FRONT), (Y_MIN_POS) + offset_xy.y)
#endif #endif
#if ENABLED(NOZZLE_AS_PROBE)
- home_offset[Y_AXIS]
#endif
); );
} }
static inline float max_y() { static inline float max_y() {
@@ -180,6 +189,9 @@ public:
#else #else
_MIN((Y_MAX_BED) - (PROBING_MARGIN_BACK), (Y_MAX_POS) + offset_xy.y) _MIN((Y_MAX_BED) - (PROBING_MARGIN_BACK), (Y_MAX_POS) + offset_xy.y)
#endif #endif
#if ENABLED(NOZZLE_AS_PROBE)
- home_offset[Y_AXIS]
#endif
); );
} }
+28 -5
View File
@@ -37,7 +37,7 @@
*/ */
// Change EEPROM version if the structure changes // Change EEPROM version if the structure changes
#define EEPROM_VERSION "V81" #define EEPROM_VERSION "V82"
#define EEPROM_OFFSET 100 #define EEPROM_OFFSET 100
// Check the integrity of data offsets. // Check the integrity of data offsets.
@@ -363,7 +363,11 @@ typedef struct SettingsDataStruct {
// //
// HAS_MOTOR_CURRENT_PWM // HAS_MOTOR_CURRENT_PWM
// //
uint32_t motor_current_setting[3]; // M907 X Z E #if HAS_DIGIPOTSS
uint32_t motor_current_setting[COUNT(stepper.motor_current_setting)];
#else
uint32_t motor_current_setting[3]; // M907 X Z E
#endif
// //
// CNC_COORDINATE_SYSTEMS // CNC_COORDINATE_SYSTEMS
@@ -1269,7 +1273,7 @@ void MarlinSettings::postprocess() {
{ {
_FIELD_TEST(motor_current_setting); _FIELD_TEST(motor_current_setting);
#if HAS_MOTOR_CURRENT_PWM #if HAS_MOTOR_CURRENT_PWM || HAS_DIGIPOTSS
EEPROM_WRITE(stepper.motor_current_setting); EEPROM_WRITE(stepper.motor_current_setting);
#else #else
const uint32_t no_current[3] = { 0 }; const uint32_t no_current[3] = { 0 };
@@ -2100,10 +2104,14 @@ void MarlinSettings::postprocess() {
// Motor Current PWM // Motor Current PWM
// //
{ {
uint32_t motor_current_setting[3]; #if HAS_DIGIPOTSS
uint32_t motor_current_setting[] = DIGIPOT_MOTOR_CURRENT;
#else
uint32_t motor_current_setting[3]; // M907 X Z E
#endif
_FIELD_TEST(motor_current_setting); _FIELD_TEST(motor_current_setting);
EEPROM_READ(motor_current_setting); EEPROM_READ(motor_current_setting);
#if HAS_MOTOR_CURRENT_PWM #if HAS_MOTOR_CURRENT_PWM || HAS_DIGIPOTSS
if (!validating) if (!validating)
COPY(stepper.motor_current_setting, motor_current_setting); COPY(stepper.motor_current_setting, motor_current_setting);
#endif #endif
@@ -2786,6 +2794,14 @@ void MarlinSettings::reset() {
stepper.digipot_current(q, (stepper.motor_current_setting[q] = tmp_motor_current_setting[q])); stepper.digipot_current(q, (stepper.motor_current_setting[q] = tmp_motor_current_setting[q]));
#endif #endif
//
// DIGIPOTS
//
#if HAS_DIGIPOTSS
static constexpr uint32_t tmp_motor_current_setting[] = DIGIPOT_MOTOR_CURRENT;
LOOP_L_N(q, COUNT(tmp_motor_current_setting))
stepper.digipot_current(q, tmp_motor_current_setting[q]);
#endif
// //
// CNC Coordinate System // CNC Coordinate System
// //
@@ -3693,6 +3709,13 @@ void MarlinSettings::reset() {
, SP_Z_STR, stepper.motor_current_setting[1] , SP_Z_STR, stepper.motor_current_setting[1]
, SP_E_STR, stepper.motor_current_setting[2] , SP_E_STR, stepper.motor_current_setting[2]
); );
#elif HASDIGIPOTSS
CONFIG_ECHO_HEADING("Stepper motor currents:");
CONFIG_ECHO_START();
LOOP_L_N(q, COUNT(stepper.motor_current_setting)) {
SERIAL_ECHOPAIR_P( "M907 ", axis_codes[q]);
SERIAL_ECHOLN_P(stepper.motor_current_setting[q]);
}
#endif #endif
/** /**
+11 -10
View File
@@ -83,7 +83,7 @@ Stepper stepper; // Singleton
#define BABYSTEPPING_EXTRA_DIR_WAIT #define BABYSTEPPING_EXTRA_DIR_WAIT
#if HAS_MOTOR_CURRENT_PWM #if HAS_MOTOR_CURRENT_PWM || HAS_DIGIPOTSS
bool Stepper::initialized; // = false bool Stepper::initialized; // = false
#endif #endif
@@ -144,6 +144,9 @@ Stepper stepper; // Singleton
#if HAS_MOTOR_CURRENT_PWM #if HAS_MOTOR_CURRENT_PWM
uint32_t Stepper::motor_current_setting[3]; // Initialized by settings.load() uint32_t Stepper::motor_current_setting[3]; // Initialized by settings.load()
#elif HAS_DIGIPOTSS
constexpr uint32_t digipot_count[] = DIGIPOT_MOTOR_CURRENT;
uint32_t Stepper::motor_current_setting[COUNT(digipot_count)]; // Initialized by settings.load()
#endif #endif
// private: // private:
@@ -2591,7 +2594,7 @@ void Stepper::init() {
set_directions(); set_directions();
#if HAS_DIGIPOTSS || HAS_MOTOR_CURRENT_PWM #if HAS_DIGIPOTSS || HAS_MOTOR_CURRENT_PWM
TERN_(HAS_MOTOR_CURRENT_PWM, initialized = true); initialized = true;
digipot_init(); digipot_init();
#endif #endif
} }
@@ -2965,18 +2968,18 @@ void Stepper::report_positions() {
#if HAS_DIGIPOTSS || HAS_MOTOR_CURRENT_PWM #if HAS_DIGIPOTSS || HAS_MOTOR_CURRENT_PWM
void Stepper::digipot_current(const uint8_t driver, const int16_t current) { void Stepper::digipot_current(const uint8_t driver, const int16_t current) {
if (WITHIN(driver, 0, COUNT(motor_current_setting) - 1))
motor_current_setting[driver] = current; // update motor_current_setting
if (!initialized) return;
#if HAS_DIGIPOTSS #if HAS_DIGIPOTSS
const uint8_t digipot_ch[] = DIGIPOT_CHANNELS; const uint8_t digipot_ch[] = DIGIPOT_CHANNELS;
digitalPotWrite(digipot_ch[driver], current); digitalPotWrite(digipot_ch[driver], current);
#elif HAS_MOTOR_CURRENT_PWM #elif HAS_MOTOR_CURRENT_PWM
if (!initialized) return;
if (WITHIN(driver, 0, COUNT(motor_current_setting) - 1))
motor_current_setting[driver] = current; // update motor_current_setting
#define _WRITE_CURRENT_PWM(P) analogWrite(pin_t(MOTOR_CURRENT_PWM_## P ##_PIN), 255L * current / (MOTOR_CURRENT_PWM_RANGE)) #define _WRITE_CURRENT_PWM(P) analogWrite(pin_t(MOTOR_CURRENT_PWM_## P ##_PIN), 255L * current / (MOTOR_CURRENT_PWM_RANGE))
switch (driver) { switch (driver) {
@@ -3015,14 +3018,12 @@ void Stepper::report_positions() {
#if HAS_DIGIPOTSS #if HAS_DIGIPOTSS
static const uint8_t digipot_motor_current[] = DIGIPOT_MOTOR_CURRENT;
SPI.begin(); SPI.begin();
SET_OUTPUT(DIGIPOTSS_PIN); SET_OUTPUT(DIGIPOTSS_PIN);
LOOP_L_N(i, COUNT(digipot_motor_current)) { LOOP_L_N(i, COUNT(motor_current_setting)) {
//digitalPotWrite(digipot_ch[i], digipot_motor_current[i]); //digitalPotWrite(digipot_ch[i], digipot_motor_current[i]);
digipot_current(i, digipot_motor_current[i]); digipot_current(i, motor_current_setting[i]);
} }
#elif HAS_MOTOR_CURRENT_PWM #elif HAS_MOTOR_CURRENT_PWM
+6 -2
View File
@@ -249,8 +249,12 @@ class Stepper {
#ifndef PWM_MOTOR_CURRENT #ifndef PWM_MOTOR_CURRENT
#define PWM_MOTOR_CURRENT DEFAULT_PWM_MOTOR_CURRENT #define PWM_MOTOR_CURRENT DEFAULT_PWM_MOTOR_CURRENT
#endif #endif
static uint32_t motor_current_setting[3];
static bool initialized; static bool initialized;
static uint32_t motor_current_setting[3];
#elif HAS_DIGIPOTSS
static bool initialized;
static constexpr uint32_t digipot_count[] = DIGIPOT_MOTOR_CURRENT;
static uint32_t motor_current_setting[COUNT(digipot_count)]; // Initialized by settings.load()
#endif #endif
private: private:
@@ -587,7 +591,7 @@ class Stepper {
static int32_t _eval_bezier_curve(const uint32_t curr_step); static int32_t _eval_bezier_curve(const uint32_t curr_step);
#endif #endif
#if HAS_DIGIPOTSS || HAS_MOTOR_CURRENT_PWM #if HAS_MOTOR_CURRENT_PWM || HAS_DIGIPOTSS
static void digipot_init(); static void digipot_init();
#endif #endif
@@ -9,10 +9,33 @@ try:
import configparser import configparser
except ImportError: except ImportError:
import ConfigParser as configparser import ConfigParser as configparser
from platformio.managers.package import PackageManager try:
# PIO < 4.4
from platformio.managers.package import PackageManager
except ImportError:
# PIO >= 4.4
from platformio.package.meta import PackageSpec as PackageManager
Import("env") Import("env")
#print(env.Dump())
try:
verbose = int(env.GetProjectOption('custom_verbose'))
except:
verbose = 0
def blab(str):
if verbose:
print(str)
def parse_pkg_uri(spec):
if PackageManager.__name__ == 'PackageSpec':
return PackageManager(spec).name
else:
name, _, _ = PackageManager.parse_pkg_uri(spec)
return name
FEATURE_CONFIG = {} FEATURE_CONFIG = {}
def add_to_feat_cnf(feature, flines): def add_to_feat_cnf(feature, flines):
@@ -56,7 +79,7 @@ def get_all_known_libs():
if not 'lib_deps' in feat: if not 'lib_deps' in feat:
continue continue
for dep in feat['lib_deps']: for dep in feat['lib_deps']:
name, _, _ = PackageManager.parse_pkg_uri(dep) name = parse_pkg_uri(dep)
known_libs.append(name) known_libs.append(name)
return known_libs return known_libs
@@ -64,7 +87,7 @@ def get_all_env_libs():
env_libs = [] env_libs = []
lib_deps = env.GetProjectOption('lib_deps') lib_deps = env.GetProjectOption('lib_deps')
for dep in lib_deps: for dep in lib_deps:
name, _, _ = PackageManager.parse_pkg_uri(dep) name = parse_pkg_uri(dep)
env_libs.append(name) env_libs.append(name)
return env_libs return env_libs
@@ -79,7 +102,8 @@ def force_ignore_unused_libs():
known_libs = get_all_known_libs() known_libs = get_all_known_libs()
diff = (list(set(known_libs) - set(env_libs))) diff = (list(set(known_libs) - set(env_libs)))
lib_ignore = env.GetProjectOption('lib_ignore') + diff lib_ignore = env.GetProjectOption('lib_ignore') + diff
print("Ignore libraries:", lib_ignore) if verbose:
print("Ignore libraries:", lib_ignore)
set_env_field('lib_ignore', lib_ignore) set_env_field('lib_ignore', lib_ignore)
def apply_features_config(): def apply_features_config():
@@ -91,25 +115,25 @@ def apply_features_config():
feat = FEATURE_CONFIG[feature] feat = FEATURE_CONFIG[feature]
if 'lib_deps' in feat and len(feat['lib_deps']): if 'lib_deps' in feat and len(feat['lib_deps']):
print("Adding lib_deps for %s... " % feature) blab("Adding lib_deps for %s... " % feature)
# feat to add # feat to add
deps_to_add = {} deps_to_add = {}
for dep in feat['lib_deps']: for dep in feat['lib_deps']:
name, _, _ = PackageManager.parse_pkg_uri(dep) name = parse_pkg_uri(dep)
deps_to_add[name] = dep deps_to_add[name] = dep
# Does the env already have the dependency? # Does the env already have the dependency?
deps = env.GetProjectOption('lib_deps') deps = env.GetProjectOption('lib_deps')
for dep in deps: for dep in deps:
name, _, _ = PackageManager.parse_pkg_uri(dep) name = parse_pkg_uri(dep)
if name in deps_to_add: if name in deps_to_add:
del deps_to_add[name] del deps_to_add[name]
# Are there any libraries that should be ignored? # Are there any libraries that should be ignored?
lib_ignore = env.GetProjectOption('lib_ignore') lib_ignore = env.GetProjectOption('lib_ignore')
for dep in deps: for dep in deps:
name, _, _ = PackageManager.parse_pkg_uri(dep) name = parse_pkg_uri(dep)
if name in deps_to_add: if name in deps_to_add:
del deps_to_add[name] del deps_to_add[name]
@@ -119,11 +143,11 @@ def apply_features_config():
set_env_field('lib_deps', deps + list(deps_to_add.values())) set_env_field('lib_deps', deps + list(deps_to_add.values()))
if 'extra_scripts' in feat: if 'extra_scripts' in feat:
print("Running extra_scripts for %s... " % feature) blab("Running extra_scripts for %s... " % feature)
env.SConscript(feat['extra_scripts'], exports="env") env.SConscript(feat['extra_scripts'], exports="env")
if 'src_filter' in feat: if 'src_filter' in feat:
print("Adding src_filter for %s... " % feature) blab("Adding src_filter for %s... " % feature)
src_filter = ' '.join(env.GetProjectOption('src_filter')) src_filter = ' '.join(env.GetProjectOption('src_filter'))
# first we need to remove the references to the same folder # first we need to remove the references to the same folder
my_srcs = re.findall( r'[+-](<.*?>)', feat['src_filter']) my_srcs = re.findall( r'[+-](<.*?>)', feat['src_filter'])
@@ -137,7 +161,7 @@ def apply_features_config():
env.Replace(SRC_FILTER=src_filter) env.Replace(SRC_FILTER=src_filter)
if 'lib_ignore' in feat: if 'lib_ignore' in feat:
print("Adding lib_ignore for %s... " % feature) blab("Adding lib_ignore for %s... " % feature)
lib_ignore = env.GetProjectOption('lib_ignore') + [feat['lib_ignore']] lib_ignore = env.GetProjectOption('lib_ignore') + [feat['lib_ignore']]
set_env_field('lib_ignore', lib_ignore) set_env_field('lib_ignore', lib_ignore)
@@ -147,41 +171,49 @@ def apply_features_config():
ENV_BUILD_PATH = os.path.join(env.Dictionary('PROJECT_BUILD_DIR'), env['PIOENV']) ENV_BUILD_PATH = os.path.join(env.Dictionary('PROJECT_BUILD_DIR'), env['PIOENV'])
GCC_PATH_CACHE = os.path.join(ENV_BUILD_PATH, ".gcc_path") GCC_PATH_CACHE = os.path.join(ENV_BUILD_PATH, ".gcc_path")
def search_compiler(): def search_compiler():
try:
filepath = env.GetProjectOption('custom_gcc')
blab('Getting compiler from env')
return filepath
except:
pass
if os.path.exists(GCC_PATH_CACHE): if os.path.exists(GCC_PATH_CACHE):
print('Getting g++ path from cache') blab('Getting g++ path from cache')
with open(GCC_PATH_CACHE, 'r') as f: with open(GCC_PATH_CACHE, 'r') as f:
return f.read() return f.read()
# PlatformIO inserts the toolchain bin folder on the front of the $PATH
# Find the current platform compiler by searching the $PATH # Find the current platform compiler by searching the $PATH
# which will be in a platformio toolchain bin folder
path_regex = re.escape(env['PROJECT_PACKAGES_DIR'])
gcc = "g++"
if env['PLATFORM'] == 'win32': if env['PLATFORM'] == 'win32':
path_separator = ';' path_separator = ';'
path_regex = re.escape(env['PROJECT_PACKAGES_DIR']) + r'.*\\bin' path_regex += r'.*\\bin'
gcc = "g++.exe" gcc += ".exe"
else: else:
path_separator = ':' path_separator = ':'
path_regex = re.escape(env['PROJECT_PACKAGES_DIR']) + r'.*/bin' path_regex += r'/.+/bin'
gcc = "g++"
# Search for the compiler # Search for the compiler
for path in env['ENV']['PATH'].split(path_separator): for pathdir in env['ENV']['PATH'].split(path_separator):
if not re.search(path_regex, path, re.IGNORECASE): if not re.search(path_regex, pathdir, re.IGNORECASE):
continue continue
for file in os.listdir(path): for filepath in os.listdir(pathdir):
if not file.endswith(gcc): if not filepath.endswith(gcc):
continue continue
# Cache the g++ path to no search always # Cache the g++ path to no search always
if os.path.exists(ENV_BUILD_PATH): if os.path.exists(ENV_BUILD_PATH):
print('Caching g++ for current env') blab('Caching g++ for current env')
with open(GCC_PATH_CACHE, 'w+') as f: with open(GCC_PATH_CACHE, 'w+') as f:
f.write(file) f.write(filepath)
return file return filepath
file = env.get('CXX') filepath = env.get('CXX')
print("Couldn't find a compiler! Fallback to", file) blab("Couldn't find a compiler! Fallback to %s" % filepath)
return file return filepath
# #
# Use the compiler to get a list of all enabled features # Use the compiler to get a list of all enabled features
@@ -191,7 +223,6 @@ def load_marlin_features():
return return
# Process defines # Process defines
#print(env.Dump())
build_flags = env.get('BUILD_FLAGS') build_flags = env.get('BUILD_FLAGS')
build_flags = env.ParseFlagsExtended(build_flags) build_flags = env.ParseFlagsExtended(build_flags)
@@ -209,7 +240,7 @@ def load_marlin_features():
cmd += ['-w -dM -E -x c++ buildroot/share/PlatformIO/scripts/common-dependencies.h'] cmd += ['-w -dM -E -x c++ buildroot/share/PlatformIO/scripts/common-dependencies.h']
cmd = ' '.join(cmd) cmd = ' '.join(cmd)
print(cmd) blab(cmd)
define_list = subprocess.check_output(cmd, shell=True).splitlines() define_list = subprocess.check_output(cmd, shell=True).splitlines()
marlin_features = {} marlin_features = {}
for define in define_list: for define in define_list:
+27 -775
View File
@@ -18,7 +18,11 @@
[platformio] [platformio]
src_dir = Marlin src_dir = Marlin
boards_dir = buildroot/share/PlatformIO/boards boards_dir = buildroot/share/PlatformIO/boards
default_envs = mega2560 default_envs = Mini
MiniV2
Taz6
Workhorse
TazPro
include_dir = Marlin include_dir = Marlin
# #
@@ -291,6 +295,7 @@ EXT_SOLENOID|MANUAL_SOLENOID_CONTROL = src_filter=+<src/feature/solenoid.cpp>
HAS_CUTTER = src_filter=+<src/feature/spindle_laser.cpp> +<src/gcode/control/M3-M5.cpp> HAS_CUTTER = src_filter=+<src/feature/spindle_laser.cpp> +<src/gcode/control/M3-M5.cpp>
EXPERIMENTAL_I2CBUS = src_filter=+<src/feature/twibus.cpp> +<src/gcode/feature/i2c> EXPERIMENTAL_I2CBUS = src_filter=+<src/feature/twibus.cpp> +<src/gcode/feature/i2c>
Z_STEPPER_AUTO_ALIGN = src_filter=+<src/feature/z_stepper_align.cpp> +<src/gcode/calibrate/G34_M422.cpp> Z_STEPPER_AUTO_ALIGN = src_filter=+<src/feature/z_stepper_align.cpp> +<src/gcode/calibrate/G34_M422.cpp>
MECHANICAL_GANTRY_CALIBRATION = src_filter=+<src/gcode/calibrate/G34_M422.cpp>
G26_MESH_VALIDATION = src_filter=+<src/gcode/bedlevel/G26.cpp> G26_MESH_VALIDATION = src_filter=+<src/gcode/bedlevel/G26.cpp>
ASSISTED_TRAMMING = src_filter=+<src/gcode/bedlevel/G35.cpp> ASSISTED_TRAMMING = src_filter=+<src/gcode/bedlevel/G35.cpp>
HAS_MESH = src_filter=+<src/gcode/bedlevel/G42.cpp> HAS_MESH = src_filter=+<src/gcode/bedlevel/G42.cpp>
@@ -410,124 +415,48 @@ platform = atmelavr
extends = common_avr8 extends = common_avr8
board = megaatmega2560 board = megaatmega2560
# #
# ATmega1280 # Lulzbot Mini
# #
[env:mega1280] [env:Mini]
platform = atmelavr platform = atmelavr
extends = common_avr8 extends = common_avr8
board = megaatmega1280 build_flags = ${common.build_flags} -DMini
board = megaatmega2560
# #
# MightyBoard ATmega2560 (MegaCore 100 pin boards variants) # Lulzbot Mini V2
# #
[env:MightyBoard1280] [env:MiniV2]
platform = atmelavr platform = atmelavr
extends = common_avr8 extends = common_avr8
board = ATmega1280 build_flags = ${common.build_flags} -DMiniV2
upload_speed = 57600 board = megaatmega2560
# #
# MightyBoard ATmega2560 (MegaCore 100 pin boards variants) # Taz 6
# #
[env:MightyBoard2560] [env:Taz6]
platform = atmelavr platform = atmelavr
extends = common_avr8 extends = common_avr8
board = ATmega2560 build_flags = ${common.build_flags} -DTaz6
upload_protocol = wiring board = megaatmega2560
upload_speed = 57600
board_upload.maximum_size = 253952
# #
# RAMBo # Taz Workhorse
# #
[env:rambo] [env:Workhorse]
platform = atmelavr platform = atmelavr
extends = common_avr8 extends = common_avr8
board = reprap_rambo build_flags = ${common.build_flags} -DWorkhorse
board = megaatmega2560
# [env:TazPro]
# FYSETC F6 V1.3 platform = ${common_DUE_archim.platform}
# build_flags = ${common.build_flags} -DARDUINO_SAM_ARCHIM -DARDUINO_ARCH_SAM -D__SAM3X8E__ -DUSBCON -DTazPro
[env:FYSETC_F6_13] extends = common_DUE_archim
platform = atmelavr
extends = common_avr8
board = fysetc_f6_13
#
# FYSETC F6 V1.4
#
[env:FYSETC_F6_14]
platform = atmelavr
extends = common_avr8
board = fysetc_f6_14
#
# Sanguinololu (ATmega644p)
#
[env:sanguino644p]
platform = atmelavr
extends = common_avr8
board = sanguino_atmega644p
#
# Sanguinololu (ATmega1284p)
#
[env:sanguino1284p]
platform = atmelavr
extends = common_avr8
board = sanguino_atmega1284p
board_upload.maximum_size = 126976
#
# Melzi and clones (ATmega1284p)
#
[env:melzi]
platform = atmelavr
extends = common_avr8
board = sanguino_atmega1284p
upload_speed = 57600
board_upload.maximum_size = 126976
#
# Melzi and clones (Optiboot bootloader)
#
[env:melzi_optiboot]
platform = atmelavr
extends = common_avr8
board = sanguino_atmega1284p
upload_speed = 115200
#
# Melzi and clones (Zonestar Melzi2 with tuned flags)
#
[env:melzi_optimized]
platform = atmelavr
extends = env:melzi_optiboot
build_flags = ${common.build_flags} -fno-tree-scev-cprop -fno-split-wide-types -Wl,--relax -mcall-prologues
build_unflags = -g -ggdb
#
# AT90USB1286 boards using CDC bootloader
# - BRAINWAVE
# - BRAINWAVE_PRO
# - SAV_MKI
# - TEENSYLU
#
[env:at90usb1286_cdc]
platform = teensy
extends = common_avr8
board = at90usb1286
#
# AT90USB1286 boards using DFU bootloader
# - PrintrBoard
# - PrintrBoard Rev.F
# - ? 5DPRINT ?
#
[env:at90usb1286_dfu]
platform = teensy
extends = env:at90usb1286_cdc
################################# #################################
# # # #
@@ -580,683 +509,6 @@ platform = ${common_DUE_archim.platform}
extends = common_DUE_archim extends = common_DUE_archim
build_flags = ${common_DUE_archim.build_flags} -funwind-tables -mpoke-function-name build_flags = ${common_DUE_archim.build_flags} -funwind-tables -mpoke-function-name
#################################
# #
# SAMD51 Architecture #
# #
#################################
#
# Adafruit Grand Central M4 (Atmel SAMD51P20A ARM Cortex-M4)
#
[env:SAMD51_grandcentral_m4]
platform = atmelsam
board = adafruit_grandcentral_m4
build_flags = ${common.build_flags} -std=gnu++17
build_unflags = -std=gnu++11
src_filter = ${common.default_src_filter} +<src/HAL/SAMD51>
lib_deps = ${common.lib_deps}
SoftwareSerialM
Adafruit SPIFlash
custom_marlin.SDSUPPORT = SdFat - Adafruit Fork
debug_tool = jlink
#################################
# #
# LPC176x Architecture #
# #
#################################
#
# NXP LPC176x ARM Cortex-M3
#
[common_LPC]
platform = https://github.com/p3p/pio-nxplpc-arduino-lpc176x/archive/0.1.3.zip
board = nxp_lpc1768
lib_ldf_mode = off
lib_compat_mode = strict
extra_scripts = ${common.extra_scripts}
Marlin/src/HAL/LPC1768/upload_extra_script.py
src_filter = ${common.default_src_filter} +<src/HAL/LPC1768>
lib_deps = ${common.lib_deps}
Servo
custom_marlin.USES_LIQUIDCRYSTAL = LiquidCrystal@1.0.0
custom_marlin.NEOPIXEL_LED = Adafruit NeoPixel=https://github.com/p3p/Adafruit_NeoPixel/archive/1.5.0.zip
build_flags = ${common.build_flags} -DU8G_HAL_LINKS -IMarlin/src/HAL/LPC1768/include -IMarlin/src/HAL/LPC1768/u8g
# debug options for backtrace
#-funwind-tables
#-mpoke-function-name
#
# NXP LPC176x ARM Cortex-M3
#
[env:LPC1768]
platform = ${common_LPC.platform}
extends = common_LPC
board = nxp_lpc1768
[env:LPC1769]
platform = ${common_LPC.platform}
extends = common_LPC
board = nxp_lpc1769
#################################
# #
# STM32 Architecture #
# #
#################################
#
# HAL/STM32 Base Environment values
#
[common_stm32]
platform = ststm32@~6.1.0
platform_packages = framework-arduinoststm32@>=4.10700,<4.10800
lib_ignore = SoftwareSerial
build_flags = ${common.build_flags}
-IMarlin/src/HAL/STM32 -std=gnu++14
-DUSBCON -DUSBD_USE_CDC
-DUSBD_VID=0x0483
-DTIM_IRQ_PRIO=13
build_unflags = -std=gnu++11
src_filter = ${common.default_src_filter} +<src/HAL/STM32>
#
# HAL/STM32F1 Common Environment values
#
[common_stm32f1]
platform = ${common_stm32.platform}
build_flags = !python Marlin/src/HAL/STM32F1/build_flags.py
${common.build_flags} -std=gnu++14 -DHAVE_SW_SERIAL
build_unflags = -std=gnu11 -std=gnu++11
src_filter = ${common.default_src_filter} +<src/HAL/STM32F1>
lib_ignore = SPI
lib_deps = ${common.lib_deps}
SoftwareSerialM
#
# STM32F103RC
#
[env:STM32F103RC]
platform = ${common_stm32f1.platform}
extends = common_stm32f1
board = genericSTM32F103RC
platform_packages = tool-stm32duino
monitor_speed = 115200
#
# MEEB_3DP (STM32F103RCT6 with 512K)
#
[env:STM32F103RC_meeb]
platform = ${common_stm32f1.platform}
extends = common_stm32f1
board = MEEB_3DP
platform_packages = tool-stm32duino
build_flags = ${common_stm32f1.build_flags}
-DDEBUG_LEVEL=0
-DSS_TIMER=4
-DSTM32_FLASH_SIZE=512
-DHSE_VALUE=12000000U
-DUSE_USB_COMPOSITE
-DVECT_TAB_OFFSET=0x2000
-DGENERIC_BOOTLOADER
extra_scripts = ${common.extra_scripts}
pre:buildroot/share/PlatformIO/scripts/STM32F1_create_variant.py
buildroot/share/PlatformIO/scripts/STM32F103RC_MEEB_3DP.py
lib_deps = ${common.lib_deps}
SoftwareSerialM
USBComposite for STM32F1@0.91
custom_marlin.NEOPIXEL_LED = Adafruit NeoPixel=https://github.com/ccccmagicboy/Adafruit_NeoPixel#meeb_3dp_use
debug_tool = stlink
upload_protocol = dfu
#
# STM32F103RC_fysetc
#
[env:STM32F103RC_fysetc]
platform = ${common_stm32f1.platform}
extends = env:STM32F103RC
extra_scripts = ${common.extra_scripts}
buildroot/share/PlatformIO/scripts/STM32F103RC_fysetc.py
build_flags = ${common_stm32f1.build_flags} -DDEBUG_LEVEL=0
lib_ldf_mode = chain
debug_tool = stlink
upload_protocol = serial
#
# BigTree SKR Mini V1.1 / SKR mini E3 / SKR E3 DIP (STM32F103RCT6 ARM Cortex-M3)
#
# STM32F103RC_btt ............. RCT6 with 256K
# STM32F103RC_btt_USB ......... RCT6 with 256K (USB mass storage)
# STM32F103RC_btt_512K ........ RCT6 with 512K
# STM32F103RC_btt_512K_USB .... RCT6 with 512K (USB mass storage)
#
[env:STM32F103RC_btt]
platform = ${common_stm32f1.platform}
extends = env:STM32F103RC
extra_scripts = ${common.extra_scripts}
buildroot/share/PlatformIO/scripts/STM32F103RC_SKR_MINI.py
build_flags = ${common_stm32f1.build_flags}
-DDEBUG_LEVEL=0 -DSS_TIMER=4
monitor_speed = 115200
[env:STM32F103RC_btt_USB]
platform = ${common_stm32f1.platform}
extends = env:STM32F103RC_btt
build_flags = ${env:STM32F103RC_btt.build_flags} -DUSE_USB_COMPOSITE
lib_deps = ${env:STM32F103RC_btt.lib_deps}
USBComposite for STM32F1@0.91
[env:STM32F103RC_btt_512K]
platform = ${common_stm32f1.platform}
extends = env:STM32F103RC_btt
board_upload.maximum_size=524288
build_flags = ${env:STM32F103RC_btt.build_flags} -DSTM32_FLASH_SIZE=512
[env:STM32F103RC_btt_512K_USB]
platform = ${common_stm32f1.platform}
extends = env:STM32F103RC_btt_512K
build_flags = ${env:STM32F103RC_btt_512K.build_flags} -DUSE_USB_COMPOSITE
lib_deps = ${env:STM32F103RC_btt_512K.lib_deps}
USBComposite for STM32F1@0.91
#
# STM32F103RE
#
[env:STM32F103RE]
platform = ${common_stm32f1.platform}
extends = common_stm32f1
board = genericSTM32F103RE
platform_packages = tool-stm32duino
monitor_speed = 115200
#
# STM32F103RE_btt ............. RET6
# STM32F103RE_btt_USB ......... RET6 (USB mass storage)
#
[env:STM32F103RE_btt]
platform = ${common_stm32f1.platform}
extends = env:STM32F103RE
extra_scripts = ${common.extra_scripts}
buildroot/share/PlatformIO/scripts/STM32F103RE_SKR_E3_DIP.py
build_flags = ${common_stm32f1.build_flags} -DDEBUG_LEVEL=0 -DSS_TIMER=4
debug_tool = stlink
upload_protocol = stlink
[env:STM32F103RE_btt_USB]
platform = ${common_stm32f1.platform}
extends = env:STM32F103RE_btt
build_flags = ${env:STM32F103RE_btt.build_flags} -DUSE_USB_COMPOSITE
lib_deps = ${common_stm32f1.lib_deps}
USBComposite for STM32F1@0.91
#
# STM32F4 with STM32GENERIC
#
[env:STM32F4]
platform = ${common_stm32.platform}
board = disco_f407vg
build_flags = ${common.build_flags} -DUSE_STM32GENERIC -DSTM32GENERIC -DSTM32F4 -DMENU_USB_SERIAL -DMENU_SERIAL=SerialUSB -DHAL_IWDG_MODULE_ENABLED
src_filter = ${common.default_src_filter} +<src/HAL/STM32_F4_F7> -<src/HAL/STM32_F4_F7/STM32F7>
#
# STM32F7 with STM32GENERIC
#
[env:STM32F7]
platform = ${common_stm32.platform}
board = remram_v1
build_flags = ${common.build_flags} -DUSE_STM32GENERIC -DSTM32GENERIC -DSTM32F7 -DMENU_USB_SERIAL -DMENU_SERIAL=SerialUSB -DHAL_IWDG_MODULE_ENABLED
src_filter = ${common.default_src_filter} +<src/HAL/STM32_F4_F7> -<src/HAL/STM32_F4_F7/STM32F4>
#
# ARMED (STM32)
#
[env:ARMED]
platform = ${common_stm32.platform}
extends = common_stm32
board = armed_v1
build_flags = ${common_stm32.build_flags}
'-DUSB_PRODUCT="ARMED_V1"'
-O2 -ffreestanding -fsigned-char -fno-move-loop-invariants -fno-strict-aliasing
#
# Geeetech GTM32 (STM32F103VET6)
#
[env:STM32F103VE_GTM32]
platform = ${common_stm32f1.platform}
extends = common_stm32f1
board = genericSTM32F103VE
build_flags = ${common_stm32f1.build_flags}
-ffunction-sections -fdata-sections -nostdlib -MMD
-DMCU_STM32F103VE -DARDUINO_GENERIC_STM32F103V -DARDUINO_ARCH_STM32F1 -DBOARD_generic_stm32f103v
-DDEBUG_LEVEL=DEBUG_NONE -DCONFIG_MAPLE_MINI_NO_DISABLE_DEBUG=1 -DVECT_TAB_ADDR=0x8000000
-DERROR_LED_PORT=GPIOE -DERROR_LED_PIN=6
upload_protocol = serial
#
# Longer 3D board in Alfawise U20 (STM32F103VET6)
#
[env:STM32F103VE_longer]
platform = ${common_stm32f1.platform}
extends = common_stm32f1
board = genericSTM32F103VE
extra_scripts = ${common.extra_scripts}
buildroot/share/PlatformIO/scripts/STM32F103VE_longer.py
build_flags = ${common_stm32f1.build_flags}
-DMCU_STM32F103VE -DSTM32F1xx -USERIAL_USB -DU20 -DTS_V12
build_unflags = ${common_stm32f1.build_unflags}
-DCONFIG_MAPLE_MINI_NO_DISABLE_DEBUG=1 -DERROR_LED_PORT=GPIOE -DERROR_LED_PIN=6
lib_ignore = ${common_stm32f1.lib_ignore}
#
# MKS Robin Mini (STM32F103VET6)
#
[env:mks_robin_mini]
platform = ${common_stm32f1.platform}
extends = common_stm32f1
board = genericSTM32F103VE
extra_scripts = ${common.extra_scripts}
buildroot/share/PlatformIO/scripts/mks_robin_mini.py
build_flags = ${common_stm32f1.build_flags}
-DMCU_STM32F103VE
#
# MKS Robin Nano (STM32F103VET6)
# v1.2 - Emulated Graphical 128x64 (DOGM) UI and LVGL UI
# v2.0 - LVGL UI
#
[env:mks_robin_nano35]
platform = ${common_stm32f1.platform}
extends = common_stm32f1
board = genericSTM32F103VE
platform_packages = tool-stm32duino
extra_scripts = ${common.extra_scripts}
buildroot/share/PlatformIO/scripts/mks_robin_nano35.py
build_flags = ${common_stm32f1.build_flags}
-DMCU_STM32F103VE -DSS_TIMER=4
debug_tool = jlink
upload_protocol = jlink
#
# MKS Robin (STM32F103ZET6)
#
[env:mks_robin]
platform = ${common_stm32f1.platform}
extends = common_stm32f1
board = genericSTM32F103ZE
extra_scripts = ${common.extra_scripts}
buildroot/share/PlatformIO/scripts/mks_robin.py
build_flags = ${common_stm32f1.build_flags}
-DSS_TIMER=4 -DSTM32_XL_DENSITY
# MKS Robin (STM32F103ZET6)
# Uses HAL STM32 to support Marlin UI for TFT screen with optional touch panel
#
[env:mks_robin_stm32]
platform = ${common_stm32.platform}
extends = common_stm32
board = genericSTM32F103ZE
board_build.core = stm32
board_build.variant = MARLIN_F103Zx
board_build.ldscript = ldscript.ld
board_build.offset = 0x7000
board_build.firmware = Robin.bin
build_flags = ${common_stm32.build_flags}
-DENABLE_HWSERIAL3 -DTRANSFER_CLOCK_DIV=8
build_unflags = ${common_stm32.build_unflags}
-DUSBCON -DUSBD_USE_CDC
extra_scripts = ${common.extra_scripts}
pre:buildroot/share/PlatformIO/scripts/generic_create_variant.py
buildroot/share/PlatformIO/scripts/stm32_bootloader.py
buildroot/share/PlatformIO/scripts/mks_encrypt.py
lib_deps =
#
# MKS Robin Pro (STM32F103ZET6)
#
[env:mks_robin_pro]
platform = ${common_stm32f1.platform}
extends = env:mks_robin
extra_scripts = ${common.extra_scripts}
buildroot/share/PlatformIO/scripts/mks_robin_pro.py
#
# TRIGORILLA PRO (STM32F103ZET6)
#
[env:trigorilla_pro]
platform = ${common_stm32f1.platform}
extends = env:mks_robin
extra_scripts = ${common.extra_scripts}
#
# MKS Robin E3D (STM32F103RCT6) and
# MKS Robin E3 with TMC2209
#
[env:mks_robin_e3]
platform = ${common_stm32f1.platform}
extends = common_stm32f1
board = genericSTM32F103RC
platform_packages = tool-stm32duino
extra_scripts = ${common.extra_scripts}
buildroot/share/PlatformIO/scripts/mks_robin_e3.py
build_flags = ${common_stm32f1.build_flags}
-DDEBUG_LEVEL=0 -DSS_TIMER=4
#
# MKS Robin Lite/Lite2 (STM32F103RCT6)
#
[env:mks_robin_lite]
platform = ${common_stm32f1.platform}
extends = common_stm32f1
board = genericSTM32F103RC
extra_scripts = ${common.extra_scripts}
buildroot/share/PlatformIO/scripts/mks_robin_lite.py
#
# MKS ROBIN LITE3 (STM32F103RCT6)
#
[env:mks_robin_lite3]
platform = ${common_stm32f1.platform}
extends = common_stm32f1
board = genericSTM32F103RC
extra_scripts = ${common.extra_scripts}
buildroot/share/PlatformIO/scripts/mks_robin_lite3.py
#
# JGAurora A5S A1 (STM32F103ZET6)
#
[env:jgaurora_a5s_a1]
platform = ${common_stm32f1.platform}
extends = common_stm32f1
board = genericSTM32F103ZE
extra_scripts = ${common.extra_scripts}
buildroot/share/PlatformIO/scripts/jgaurora_a5s_a1_with_bootloader.py
build_flags = ${common_stm32f1.build_flags}
-DSTM32F1xx -DSTM32_XL_DENSITY
#
# Malyan M200 (STM32F103CB)
#
[env:STM32F103CB_malyan]
platform = ${common_stm32f1.platform}
extends = common_stm32f1
board = malyanM200
build_flags = ${common_stm32f1.build_flags}
-DMCU_STM32F103CB -D__STM32F1__=1 -std=c++1y -DSERIAL_USB -ffunction-sections -fdata-sections
-Wl,--gc-sections -DDEBUG_LEVEL=0 -D__MARLIN_FIRMWARE__
lib_ignore = ${common_stm32f1.lib_ignore}
SoftwareSerialM
#
# Malyan M200 v2 (STM32F070RB)
#
[env:STM32F070RB_malyan]
platform = ${common_stm32.platform}
extends = common_stm32
board = malyanM200v2
build_flags = ${common_stm32.build_flags} -DSTM32F0xx -DUSB_PRODUCT=\"STM32F070RB\" -DHAL_PCD_MODULE_ENABLED
-O2 -ffreestanding -fsigned-char -fno-move-loop-invariants -fno-strict-aliasing -std=gnu11 -std=gnu++11
-DCUSTOM_STARTUP_FILE
lib_ignore = SoftwareSerial
#
# Malyan M300 (STM32F070CB)
#
[env:malyan_M300]
platform = ststm32@>=6.1.0,<6.2.0
board = malyanm300_f070cb
build_flags = ${common.build_flags}
-DUSBCON -DUSBD_VID=0x0483 "-DUSB_MANUFACTURER=\"Unknown\"" "-DUSB_PRODUCT=\"MALYAN_M300\""
-DHAL_PCD_MODULE_ENABLED -DUSBD_USE_CDC -DDISABLE_GENERIC_SERIALUSB -DHAL_UART_MODULE_ENABLED
src_filter = ${common.default_src_filter} +<src/HAL/STM32>
#
# Chitu boards like Tronxy X5s (STM32F103ZET6)
#
[env:chitu_f103]
platform = ${common_stm32f1.platform}
extends = common_stm32f1
board = CHITU_F103
extra_scripts = pre:buildroot/share/PlatformIO/scripts/common-dependencies.py
pre:buildroot/share/PlatformIO/scripts/STM32F1_create_variant.py
buildroot/share/PlatformIO/scripts/chitu_crypt.py
build_flags = ${common_stm32f1.build_flags}
-DSTM32F1xx -DSTM32_XL_DENSITY
build_unflags = ${common_stm32f1.build_unflags}
-DCONFIG_MAPLE_MINI_NO_DISABLE_DEBUG= -DERROR_LED_PORT=GPIOE -DERROR_LED_PIN=6
#
# Some Chitu V5 boards have a problem with GPIO init.
# Use this target if G28 or G29 are always failing.
#
[env:chitu_v5_gpio_init]
platform = ${common_stm32f1.platform}
extends = env:chitu_f103
build_flags = ${env:chitu_f103.build_flags} -DCHITU_V5_Z_MIN_BUGFIX
#
# Creality (STM32F103RET6)
#
[env:STM32F103RET6_creality]
platform = ${common_stm32f1.platform}
extends = common_stm32f1
board = genericSTM32F103RC
build_flags = !python Marlin/src/HAL/STM32F1/build_flags.py
${common.build_flags} -std=gnu++14 -DSTM32_XL_DENSITY -DTEMP_TIMER_CHAN=4
extra_scripts = ${common.extra_scripts}
pre:buildroot/share/PlatformIO/scripts/random-bin.py
buildroot/share/PlatformIO/scripts/creality.py
lib_ignore = ${common_stm32f1.lib_ignore}
debug_tool = jlink
upload_protocol = jlink
monitor_speed = 115200
#
# STM32F401VE
# 'STEVAL-3DP001V1' STM32F401VE board - https://www.st.com/en/evaluation-tools/steval-3dp001v1.html
#
[env:STM32F401VE_STEVAL]
platform = ${common_stm32.platform}
extends = common_stm32
board = STEVAL_STM32F401VE
build_flags = ${common_stm32.build_flags}
-DTARGET_STM32F4 -DARDUINO_STEVAL -DSTM32F401xE
-DUSB_PRODUCT=\"STEVAL_F401VE\"
-DDISABLE_GENERIC_SERIALUSB -DUSBD_USE_CDC_COMPOSITE -DUSE_USB_FS
extra_scripts = ${common.extra_scripts}
pre:buildroot/share/PlatformIO/scripts/generic_create_variant.py
buildroot/share/PlatformIO/scripts/STEVAL__F401XX.py
lib_ignore = SoftwareSerial
#
# FLYF407ZG
#
[env:FLYF407ZG]
platform = ${common_stm32.platform}
extends = common_stm32
board = FLYF407ZG
build_flags = ${common_stm32.build_flags}
-DSTM32F4 -DUSB_PRODUCT=\"STM32F407ZG\"
-DTARGET_STM32F4 -DVECT_TAB_OFFSET=0x8000
extra_scripts = ${common.extra_scripts}
pre:buildroot/share/PlatformIO/scripts/generic_create_variant.py
#
# FYSETC S6 (STM32F446VET6 ARM Cortex-M4)
#
[env:FYSETC_S6]
platform = ${common_stm32.platform}
extends = common_stm32
platform_packages = ${common_stm32.platform_packages}
tool-stm32duino
board = fysetc_s6
build_flags = ${common_stm32.build_flags}
-DTARGET_STM32F4 -DVECT_TAB_OFFSET=0x10000
-DHAL_PCD_MODULE_ENABLED '-DUSB_PRODUCT="FYSETC_S6"'
extra_scripts = ${common.extra_scripts}
pre:buildroot/share/PlatformIO/scripts/fysetc_STM32S6.py
debug_tool = stlink
upload_protocol = dfu
upload_command = dfu-util -a 0 -s 0x08010000:leave -D "$SOURCE"
#
# STM32F407VET6 with RAMPS-like shield
# 'Black' STM32F407VET6 board - https://wiki.stm32duino.com/index.php?title=STM32F407
# Shield - https://github.com/jmz52/Hardware
#
[env:STM32F407VE_black]
platform = ${common_stm32.platform}
extends = common_stm32
board = blackSTM32F407VET6
build_flags = ${common_stm32.build_flags}
-DTARGET_STM32F4 -DARDUINO_BLACK_F407VE
-DUSB_PRODUCT=\"BLACK_F407VE\"
-DUSBD_USE_CDC_COMPOSITE -DUSE_USB_FS
extra_scripts = ${common.extra_scripts}
pre:buildroot/share/PlatformIO/scripts/generic_create_variant.py
lib_ignore = SoftwareSerial
#
# BigTreeTech SKR Pro (STM32F407ZGT6 ARM Cortex-M4)
#
[env:BIGTREE_SKR_PRO]
platform = ${common_stm32.platform}
extends = common_stm32
board = BigTree_SKR_Pro
build_flags = ${common_stm32.build_flags}
-DUSB_PRODUCT=\"STM32F407ZG\"
-DTARGET_STM32F4 -DSTM32F407_5ZX -DVECT_TAB_OFFSET=0x8000
extra_scripts = ${common.extra_scripts}
pre:buildroot/share/PlatformIO/scripts/generic_create_variant.py
#upload_protocol = stlink
#upload_command = "$PROJECT_PACKAGES_DIR/tool-stm32duino/stlink/ST-LINK_CLI.exe" -c SWD -P "$BUILD_DIR/firmware.bin" 0x8008000 -Rst -Run
debug_tool = stlink
debug_init_break =
#
# Bigtreetech GTR V1.0 (STM32F407IGT6 ARM Cortex-M4)
#
[env:BIGTREE_GTR_V1_0]
platform = ststm32@>=5.7.0,<6.2.0
extends = common_stm32
board = BigTree_GTR_v1
extra_scripts = ${common.extra_scripts}
pre:buildroot/share/PlatformIO/scripts/generic_create_variant.py
build_flags = ${common_stm32.build_flags}
-DUSB_PRODUCT=\"STM32F407IG\"
-DTARGET_STM32F4 -DSTM32F407IX -DVECT_TAB_OFFSET=0x8000
#
# BigTreeTech BTT002 V1.0 (STM32F407VGT6 ARM Cortex-M4)
#
[env:BIGTREE_BTT002]
platform = ${common_stm32.platform}
extends = common_stm32
board = BigTree_Btt002
build_flags = ${common_stm32.build_flags}
-DUSB_PRODUCT=\"STM32F407VG\"
-DTARGET_STM32F4 -DSTM32F407_5VX -DVECT_TAB_OFFSET=0x8000
-DHAVE_HWSERIAL2
-DHAVE_HWSERIAL3
-DPIN_SERIAL2_RX=PD_6
-DPIN_SERIAL2_TX=PD_5
extra_scripts = ${common.extra_scripts}
pre:buildroot/share/PlatformIO/scripts/generic_create_variant.py
#
# Lerdge base
#
[lerdge_common]
platform = ${common_stm32.platform}
extends = common_stm32
board = LERDGE
board_build.offset = 0x10000
extra_scripts = ${common.extra_scripts}
pre:buildroot/share/PlatformIO/scripts/copy_marlin_variant_to_framework.py
buildroot/share/PlatformIO/scripts/stm32_bootloader.py
buildroot/share/PlatformIO/scripts/lerdge.py
build_flags = ${common_stm32.build_flags}
-DSTM32F4 -DSTM32F4xx -DTARGET_STM32F4
-DDISABLE_GENERIC_SERIALUSB -DARDUINO_ARCH_STM32 -DARDUINO_LERDGE
-DTRANSFER_CLOCK_DIV=8 -DHAL_SRAM_MODULE_ENABLED
build_unflags = ${common_stm32.build_unflags} -DUSBCON -DUSBD_USE_CDC -DUSBD_VID=0x0483
#
# Lerdge X
#
[env:LERDGEX]
extends = lerdge_common
board_build.firmware = Lerdge_X_firmware_force.bin
#
# Lerdge S
#
[env:LERDGES]
extends = lerdge_common
board_build.firmware = Lerdge_firmware_force.bin
#
# Lerdge K
#
[env:LERDGEK]
extends = lerdge_common
board_build.firmware = Lerdge_K_firmware_force.bin
build_flags = ${lerdge_common.build_flags}
-DLERDGEK
#
# RUMBA32
#
[env:rumba32]
platform = ${common_stm32.platform}
extends = common_stm32
build_flags = ${common_stm32.build_flags}
-Os
"-DUSB_PRODUCT=\"RUMBA32\""
-DHAL_PCD_MODULE_ENABLED
-DDISABLE_GENERIC_SERIALUSB
-DHAL_UART_MODULE_ENABLED
board = rumba32_f446ve
upload_protocol = dfu
monitor_speed = 500000
#################################
# #
# Other Architectures #
# #
#################################
#
# Espressif ESP32
#
[env:esp32]
platform = espressif32@1.11.2
board = esp32dev
build_flags = ${common.build_flags} -DCORE_DEBUG_LEVEL=0
src_filter = ${common.default_src_filter} +<src/HAL/ESP32>
upload_speed = 115200
#upload_port = marlinesp.local
#board_build.flash_mode = qio
#
# Teensy 3.1 / 3.2 (ARM Cortex-M4)
#
[env:teensy31]
platform = teensy
board = teensy31
src_filter = ${common.default_src_filter} +<src/HAL/TEENSY31_32>
#
# Teensy 3.5 / 3.6 (ARM Cortex-M4)
#
[env:teensy35]
platform = teensy
board = teensy35
src_filter = ${common.default_src_filter} +<src/HAL/TEENSY35_36>
# #
# Native # Native
# No supported Arduino libraries, base Marlin only # No supported Arduino libraries, base Marlin only