Compare commits
113 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| e9dda85ddd | |||
| beea1f1d14 | |||
| a9072b00e8 | |||
| 4e41ff32e1 | |||
| cf137cb73a | |||
| d5cc11d996 | |||
| a530446b62 | |||
| d62a631467 | |||
| d6c3f45bda | |||
| 81760d6818 | |||
| 282f90c1b3 | |||
| 5de9fc556f | |||
| 3482e9632c | |||
| a6493e0cc8 | |||
| a08a7b3459 | |||
| bd4936330b | |||
| 4bb33a0cb9 | |||
| 83e38b3625 | |||
| 5b7bb3ea64 | |||
| f0b115a999 | |||
| cebed347f5 | |||
| a66b22c4f1 | |||
| fadaa2db09 | |||
| f8954ca79b | |||
| 4a3f69ad6d | |||
| 4bf13bea42 | |||
| 3a6bd6920e | |||
| 70ef7978b4 | |||
| 37bc552f3b | |||
| e310f20279 | |||
| 4708635f4f | |||
| f5d5b0a881 | |||
| 30f5dd339d | |||
| 556d716919 | |||
| 76afd5afc1 | |||
| 5c3bc2194a | |||
| 763cd7c5f2 | |||
| 11046b23a9 | |||
| 36b72926f3 | |||
| b35e16b1d8 | |||
| 767c87810b | |||
| 52b6c45451 | |||
| df5d08aec0 | |||
| 8c61606691 | |||
| e70bd3c785 | |||
| 83cc983276 | |||
| bbb8275d66 | |||
| 2afc2f268a | |||
| aa44542f76 | |||
| 248648708f | |||
| e2c0150fa8 | |||
| 4ef5372151 | |||
| a923771611 | |||
| 74ffa0cc3e | |||
| f2d585ac7f | |||
| 80cfdb182c | |||
| 39463268fb | |||
| a7b3989bca | |||
| 829212d76a | |||
| 0de4a70203 | |||
| febfb3218e | |||
| 4da46c5dd2 | |||
| 353ede8208 | |||
| 09de5e76a7 | |||
| 73b6ba8fe3 | |||
| 72b09fe4cb | |||
| e5ad13a8e2 | |||
| b122e46adb | |||
| 1a5866f5c6 | |||
| c7e62b33d1 | |||
| 1916d4e27f | |||
| ce55a7bd9b | |||
| 540120f863 | |||
| b99a26d6ab | |||
| 6528109176 | |||
| b94a0d036c | |||
| 7634ffe8e5 | |||
| 8bae8bbf7a | |||
| 5ce013f414 | |||
| da4a374b49 | |||
| 81b13456b1 | |||
| ee35fb07b0 | |||
| 99c991755a | |||
| a96ae85d88 | |||
| 45b9680c57 | |||
| 83cbed8527 | |||
| d36d9cb506 | |||
| 9e6981ea60 | |||
| 2c6f8a30f3 | |||
| 17a5a1f97d | |||
| a0815deb9a | |||
| 76a7ab6893 | |||
| 7cd56a57f9 | |||
| 56e2b60e6d | |||
| 8c15a093fd | |||
| 7901eb97ad | |||
| 7aaba66d4d | |||
| 5f0b9d429f | |||
| d34b62eafa | |||
| 3743980192 | |||
| 41d53a15f2 | |||
| f234fbf87f | |||
| 5c728d1fb1 | |||
| 162ea81894 | |||
| 97b9fe83ee | |||
| 9953230550 | |||
| 80bd10025b | |||
| 0876bcd027 | |||
| 3d7ac162fb | |||
| 68a2459808 | |||
| 21fddc1cc8 | |||
| 528a1ad3e0 | |||
| dabe374983 |
@@ -0,0 +1,48 @@
|
||||
#
|
||||
# ci-validate-boards.yml
|
||||
# Validate boards.h to make sure it's all set up correctly
|
||||
#
|
||||
|
||||
name: CI - Validate boards.h
|
||||
|
||||
# We can do the on: section as two items, one for pull requests and one for pushes...
|
||||
on:
|
||||
pull_request:
|
||||
branches:
|
||||
- bugfix-2.1.x
|
||||
paths:
|
||||
- 'Marlin/src/core/boards.h'
|
||||
push:
|
||||
branches:
|
||||
- bugfix-2.1.x
|
||||
paths:
|
||||
- 'Marlin/src/core/boards.h'
|
||||
|
||||
jobs:
|
||||
validate_pins_files:
|
||||
name: Validate boards.h
|
||||
if: github.repository == 'MarlinFirmware/Marlin'
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Check out the PR
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Cache pip
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: ~/.cache/pip
|
||||
key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-pip-
|
||||
|
||||
- name: Select Python 3.9
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: '3.9'
|
||||
architecture: 'x64'
|
||||
|
||||
- name: Validate core/boards.h
|
||||
run: |
|
||||
make validate-boards -j
|
||||
@@ -1,27 +0,0 @@
|
||||
#
|
||||
# update-base-configs.yml
|
||||
# Generate new base config files if needed
|
||||
#
|
||||
|
||||
name: Update Base Configs
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: '0 */6 * * *'
|
||||
|
||||
jobs:
|
||||
bump_date:
|
||||
name: Update Base Configs
|
||||
if: github.repository == 'MarlinFirmware/Marlin'
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
|
||||
- name: Checkout bugfix-2.1.x
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
ref: bugfix-2.1.x
|
||||
|
||||
- name: Update Base Configs
|
||||
run: make base-configs
|
||||
@@ -0,0 +1,16 @@
|
||||
/**
|
||||
* Marlin-specific settings for Zed
|
||||
*
|
||||
* For a full list of overridable settings, and general information on folder-specific settings,
|
||||
* see the documentation: https://zed.dev/docs/configuring-zed#settings-files
|
||||
*/
|
||||
{
|
||||
"languages": {
|
||||
"C": {
|
||||
"enable_language_server": false
|
||||
},
|
||||
"C++": {
|
||||
"enable_language_server": false
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -6,10 +6,10 @@ UNIT_TEST_CONFIG ?= default
|
||||
|
||||
help:
|
||||
@echo "Tasks for local development:"
|
||||
@echo "make marlin : Build marlin for the configured board"
|
||||
@echo "make marlin : Build Marlin for the configured board"
|
||||
@echo "make format-pins -j : Reformat all pins files (-j for parallel execution)"
|
||||
@echo "make validate-pins -j : Validate all pins files, fails if any require reformatting"
|
||||
@echo "make base-configs : Regenerate the base configs in Marlin/src/inc"
|
||||
@echo "make validate-boards -j : Validate boards.h and pins.h for standards compliance"
|
||||
@echo "make tests-single-ci : Run a single test from inside the CI"
|
||||
@echo "make tests-single-local : Run a single test locally"
|
||||
@echo "make tests-single-local-docker : Run a single test locally, using docker"
|
||||
@@ -104,8 +104,10 @@ validate-pins: format-pins
|
||||
@echo "Validating pins files"
|
||||
@git diff --exit-code || (git status && echo "\nError: Pins files are not formatted correctly. Run \"make format-pins\" to fix.\n" && exit 1)
|
||||
|
||||
base-configs:
|
||||
@echo "Generating base configs"
|
||||
@python $(SCRIPTS_DIR)/makeBaseConfigs.py 2>/dev/null \
|
||||
&& git add Marlin/src/inc/BaseConfiguration.h Marlin/src/inc/BaseConfiguration_adv.h \
|
||||
&& git commit -m "[cron] Update Base Configurations"
|
||||
BOARDS_FILE := Marlin/src/core/boards.h
|
||||
|
||||
.PHONY: validate-boards
|
||||
|
||||
validate-boards:
|
||||
@echo "Validating boards.h file"
|
||||
@python $(SCRIPTS_DIR)/validate_boards.py $(BOARDS_FILE) || (echo "\nError: boards.h file is not valid. Please check and correct it.\n" && exit 1)
|
||||
|
||||
+47
-4
@@ -61,7 +61,7 @@
|
||||
// @section info
|
||||
|
||||
// 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 "(none, default config)" // Original author or contributor.
|
||||
//#define CUSTOM_VERSION_FILE Version.h // Path from the root directory (no quotes)
|
||||
|
||||
// @section machine
|
||||
@@ -802,6 +802,40 @@
|
||||
//#define BED_LIMIT_SWITCHING // Keep the bed temperature within BED_HYSTERESIS of the target
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Peltier Bed - Heating and Cooling
|
||||
*
|
||||
* A Peltier device transfers heat from one side to the other in proportion to the amount of
|
||||
* current flowing through the device and the direction of current flow. So the same device
|
||||
* can both heat and cool.
|
||||
*
|
||||
* When "cooling" in addition to rejecting the heat transferred from the hot side to the cold
|
||||
* side, the dissipated power (voltage * current) must also be rejected. Be sure to set up a
|
||||
* fan that can be powered in sync with the Peltier unit.
|
||||
*
|
||||
* This feature is only set up to run in bang-bang mode because Peltiers don't handle PWM
|
||||
* well without filter circuitry.
|
||||
*
|
||||
* Since existing 3D printers are made to handle relatively high current for the heated bed,
|
||||
* we can use the heated bed power pins to control the Peltier power using the same G-codes
|
||||
* as the heated bed (M140, M190, etc.).
|
||||
*
|
||||
* A second GPIO pin is required to control current direction.
|
||||
* Two configurations are possible: Relay and H-Bridge
|
||||
*
|
||||
* (At this time only relay is supported. H-bridge requires 4 MOS switches configured in H-Bridge.)
|
||||
*
|
||||
* Power is handled by the bang-bang control loop: 0 or 255.
|
||||
* Cooling applications are more common than heating, so the pin states are commonly:
|
||||
* LOW = Heating = Relay Energized
|
||||
* HIGH = Cooling = Relay in "Normal" state
|
||||
*/
|
||||
//#define PELTIER_BED
|
||||
#if ENABLED(PELTIER_BED)
|
||||
#define PELTIER_DIR_PIN -1 // Relay control pin for Peltier
|
||||
#define PELTIER_DIR_HEAT_STATE LOW // The relay pin state that causes the Peltier to heat
|
||||
#endif
|
||||
|
||||
// Add 'M190 R T' for more gradual M190 R bed cooling.
|
||||
//#define BED_ANNEALING_GCODE
|
||||
|
||||
@@ -1610,7 +1644,8 @@
|
||||
// with NOZZLE_AS_PROBE this can be negative for a wider probing area.
|
||||
#define PROBING_MARGIN 10
|
||||
|
||||
// X and Y axis travel speed (mm/min) between probes
|
||||
// X and Y axis travel speed (mm/min) between probes.
|
||||
// Leave undefined to use the average of the current XY homing feedrate.
|
||||
#define XY_PROBE_FEEDRATE (133*60)
|
||||
|
||||
// Feedrate (mm/min) for the first approach when double-probing (MULTIPLE_PROBING == 2)
|
||||
@@ -1679,8 +1714,8 @@
|
||||
* probe Z Offset set with NOZZLE_TO_PROBE_OFFSET, M851, or the LCD.
|
||||
* Only integer values >= 1 are valid here.
|
||||
*
|
||||
* 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.
|
||||
* 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.
|
||||
*/
|
||||
#define Z_CLEARANCE_DEPLOY_PROBE 10 // (mm) Z Clearance for Deploy/Stow
|
||||
#define Z_CLEARANCE_BETWEEN_PROBES 5 // (mm) Z Clearance between probe points
|
||||
@@ -2304,6 +2339,9 @@
|
||||
// Homing speeds (linear=mm/min, rotational=°/min)
|
||||
#define HOMING_FEEDRATE_MM_M { (50*60), (50*60), (4*60) }
|
||||
|
||||
// Edit homing feedrates with M210 and MarlinUI menu items
|
||||
//#define EDITABLE_HOMING_FEEDRATE
|
||||
|
||||
// Validate that endstops are triggered on homing moves
|
||||
#define VALIDATE_HOMING_ENDSTOPS
|
||||
|
||||
@@ -3244,6 +3282,11 @@
|
||||
//
|
||||
//#define ANYCUBIC_LCD_VYPER
|
||||
|
||||
//
|
||||
// Sovol SV-06 Resistive Touch Screen
|
||||
//
|
||||
//#define SOVOL_SV06_RTS
|
||||
|
||||
//
|
||||
// 320x240 Nextion 2.8" serial TFT Resistive Touch Screen NX3224T028
|
||||
//
|
||||
|
||||
+114
-117
@@ -203,7 +203,7 @@
|
||||
//
|
||||
#if DISABLED(PIDTEMPBED)
|
||||
#define BED_CHECK_INTERVAL 5000 // (ms) Interval between checks in bang-bang control
|
||||
#if ENABLED(BED_LIMIT_SWITCHING)
|
||||
#if ANY(BED_LIMIT_SWITCHING, PELTIER_BED)
|
||||
#define BED_HYSTERESIS 2 // (°C) Only set the relevant heater state when ABS(T-target) > BED_HYSTERESIS
|
||||
#endif
|
||||
#endif
|
||||
@@ -591,6 +591,8 @@
|
||||
// Use TEMP_SENSOR_SOC as a trigger for enabling the controller fan
|
||||
//#define CONTROLLER_FAN_MIN_SOC_TEMP 40 // (°C) Turn on the fan if the SoC reaches this temperature
|
||||
|
||||
#define CONTROLLER_FAN_BED_HEATING // Turn on the fan when heating the bed
|
||||
|
||||
//#define CONTROLLER_FAN_EDITABLE // Enable M710 configurable settings
|
||||
#if ENABLED(CONTROLLER_FAN_EDITABLE)
|
||||
#define CONTROLLER_FAN_MENU // Enable the Controller Fan submenu
|
||||
@@ -1082,9 +1084,11 @@
|
||||
#define HOME_AFTER_G34
|
||||
#endif
|
||||
|
||||
//
|
||||
// Add the G35 command to read bed corners to help adjust screws. Requires a bed probe.
|
||||
//
|
||||
/**
|
||||
* Assisted Tramming
|
||||
*
|
||||
* Add the G35 command to measure bed corners and help adjust screws. Requires a bed probe.
|
||||
*/
|
||||
//#define ASSISTED_TRAMMING
|
||||
#if ENABLED(ASSISTED_TRAMMING)
|
||||
|
||||
@@ -1105,19 +1109,22 @@
|
||||
//#define ASSISTED_TRAMMING_WAIT_POSITION { X_CENTER, Y_CENTER, 30 } // Move the nozzle out of the way for adjustment
|
||||
|
||||
/**
|
||||
* Screw thread:
|
||||
* M3: 30 = Clockwise, 31 = Counter-Clockwise
|
||||
* M4: 40 = Clockwise, 41 = Counter-Clockwise
|
||||
* M5: 50 = Clockwise, 51 = Counter-Clockwise
|
||||
* Screw Thread. Use one of the following defines:
|
||||
*
|
||||
* M3_CW = M3 Clockwise, M3_CCW = M3 Counter-Clockwise
|
||||
* M4_CW = M4 Clockwise, M4_CCW = M4 Counter-Clockwise
|
||||
* M5_CW = M5 Clockwise, M5_CCW = M5 Counter-Clockwise
|
||||
*
|
||||
* :{'M3_CW':'M3 Clockwise','M3_CCW':'M3 Counter-Clockwise','M4_CW':'M4 Clockwise','M4_CCW':'M4 Counter-Clockwise','M5_CW':'M5 Clockwise','M5_CCW':'M5 Counter-Clockwise'}
|
||||
*/
|
||||
#define TRAMMING_SCREW_THREAD 30
|
||||
#define TRAMMING_SCREW_THREAD M3_CW
|
||||
|
||||
#endif
|
||||
|
||||
// @section motion control
|
||||
|
||||
/**
|
||||
* Fixed-time-based Motion Control -- EXPERIMENTAL
|
||||
* Fixed-time-based Motion Control -- BETA FEATURE
|
||||
* Enable/disable and set parameters with G-code M493.
|
||||
* See ft_types.h for named values used by FTM options.
|
||||
*/
|
||||
@@ -1130,7 +1137,7 @@
|
||||
#define FTM_SHAPING_DEFAULT_FREQ_X 37.0f // (Hz) Default peak frequency used by input shapers
|
||||
#define FTM_SHAPING_DEFAULT_FREQ_Y 37.0f // (Hz) Default peak frequency used by input shapers
|
||||
#define FTM_LINEAR_ADV_DEFAULT_ENA false // Default linear advance enable (true) or disable (false)
|
||||
#define FTM_LINEAR_ADV_DEFAULT_K 0 // Default linear advance gain, integer value. (Acceleration-based scaling factor.)
|
||||
#define FTM_LINEAR_ADV_DEFAULT_K 0.0f // Default linear advance gain. (Acceleration-based scaling factor.)
|
||||
#define FTM_SHAPING_ZETA_X 0.1f // Zeta used by input shapers for X axis
|
||||
#define FTM_SHAPING_ZETA_Y 0.1f // Zeta used by input shapers for Y axis
|
||||
|
||||
@@ -1181,7 +1188,7 @@
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Input Shaping -- EXPERIMENTAL
|
||||
* Input Shaping
|
||||
*
|
||||
* Zero Vibration (ZV) Input Shaping for X and/or Y movements.
|
||||
*
|
||||
@@ -1490,8 +1497,17 @@
|
||||
#define FEEDRATE_CHANGE_BEEP_FREQUENCY 440
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Probe Offset Wizard
|
||||
* Add a Probe Z Offset calibration option to the LCD menu.
|
||||
* Use this helper to get a perfect 'M851 Z' probe offset.
|
||||
* When launched this powerful wizard:
|
||||
* - Measures the bed height at the configured position with the probe.
|
||||
* - Moves the nozzle to the same position for a "paper" measurement.
|
||||
* - The difference is used to set the probe Z offset.
|
||||
*/
|
||||
#if HAS_BED_PROBE && ANY(HAS_MARLINUI_MENU, HAS_TFT_LVGL_UI)
|
||||
//#define PROBE_OFFSET_WIZARD // Add a Probe Z Offset calibration option to the LCD menu
|
||||
//#define PROBE_OFFSET_WIZARD
|
||||
#if ENABLED(PROBE_OFFSET_WIZARD)
|
||||
/**
|
||||
* Enable to init the Probe Z-Offset when starting the Wizard.
|
||||
@@ -1508,6 +1524,10 @@
|
||||
#if HAS_MARLINUI_MENU
|
||||
|
||||
#if HAS_BED_PROBE
|
||||
|
||||
// Show Deploy / Stow Probe options in the Motion menu.
|
||||
#define PROBE_DEPLOY_STOW_MENU
|
||||
|
||||
// Add calibration in the Probe Offsets menu to compensate for X-axis twist.
|
||||
//#define X_AXIS_TWIST_COMPENSATION
|
||||
#if ENABLED(X_AXIS_TWIST_COMPENSATION)
|
||||
@@ -1522,8 +1542,6 @@
|
||||
#define XATC_Z_OFFSETS { 0, 0, 0 } // Z offsets for X axis sample points
|
||||
#endif
|
||||
|
||||
// Show Deploy / Stow Probe options in the Motion menu.
|
||||
#define PROBE_DEPLOY_STOW_MENU
|
||||
#endif
|
||||
|
||||
// Include a page of printer information in the LCD Main Menu
|
||||
@@ -2560,7 +2578,7 @@
|
||||
|
||||
/**
|
||||
* Minimum stepper driver pulse width (in ns)
|
||||
* If undefined, these defaults (from Conditionals_adv.h) apply:
|
||||
* If undefined, these defaults (from Conditionals-4-adv.h) apply:
|
||||
* 100 : Minimum for TMC2xxx stepper drivers
|
||||
* 500 : Minimum for LV8729
|
||||
* 1000 : Minimum for A4988 and A5984 stepper drivers
|
||||
@@ -2574,7 +2592,7 @@
|
||||
|
||||
/**
|
||||
* Maximum stepping rate (in Hz) the stepper driver allows
|
||||
* If undefined, these defaults (from Conditionals_adv.h) apply:
|
||||
* If undefined, these defaults (from Conditionals-4-adv.h) apply:
|
||||
* 5000000 : Maximum for TMC2xxx stepper drivers
|
||||
* 1000000 : Maximum for LV8729 stepper driver
|
||||
* 500000 : Maximum for A4988 stepper driver
|
||||
@@ -2708,7 +2726,7 @@
|
||||
|
||||
/**
|
||||
* Set the number of proportional font spaces required to fill up a typical character space.
|
||||
* This can help to better align the output of commands like `G29 O` Mesh Output.
|
||||
* This can help to better align the output of commands like 'G29 O' Mesh Output.
|
||||
*
|
||||
* For clients that use a fixed-width font (like OctoPrint), leave this set to 1.0.
|
||||
* Otherwise, adjust according to your client and font.
|
||||
@@ -4389,93 +4407,56 @@
|
||||
//#define E_MUX0_PIN 40 // Always Required
|
||||
//#define E_MUX1_PIN 42 // Needed for 3 to 8 inputs
|
||||
//#define E_MUX2_PIN 44 // Needed for 5 to 8 inputs
|
||||
|
||||
#elif HAS_PRUSA_MMU2 || HAS_PRUSA_MMU3
|
||||
// Common settings for MMU2/MMU2S/MMU3
|
||||
// Serial port used for communication with MMU2/MMU2S/MMU3.
|
||||
#define MMU2_SERIAL_PORT 2
|
||||
#define MMU_SERIAL_PORT 2
|
||||
#define MMU_BAUD 115200
|
||||
|
||||
// Use hardware reset for MMU if a pin is defined for it
|
||||
//#define MMU2_RST_PIN 23
|
||||
//#define MMU_RST_PIN 23 // Define this pin to use Hardware Reset for MMU2/MMU2S/MMU3
|
||||
|
||||
//#define MMU_MENUS // Add an LCD menu for MMU2/MMU2S/MMU3
|
||||
|
||||
//#define MMU_DEBUG // Write debug info to serial output
|
||||
|
||||
// Options pertaining to MMU2 and MMU2S
|
||||
#if HAS_PRUSA_MMU2
|
||||
// Enable if the MMU2 has 12V stepper motors (MMU2 Firmware 1.0.2 and up)
|
||||
//#define MMU2_MODE_12V
|
||||
|
||||
// Settings for filament load / unload from the LCD menu.
|
||||
// This is for Průša MK3-style extruders. Customize for your hardware.
|
||||
#define MMU2_FILAMENTCHANGE_EJECT_FEED 80.0
|
||||
|
||||
// G-code to execute when MMU2 F.I.N.D.A. probe detects filament runout
|
||||
#define MMU2_FILAMENT_RUNOUT_SCRIPT "M600"
|
||||
#endif
|
||||
|
||||
// Add an LCD menu for MMU2/MMU2S/MMU3
|
||||
//#define MMU_MENUS
|
||||
// MMU2 sequences use mm/min. Not compatible with MMU3, which use mm/sec.
|
||||
#define MMU2_LOAD_TO_NOZZLE_SEQUENCE \
|
||||
{ 4.4, 871 }, \
|
||||
{ 10.0, 1393 }, \
|
||||
{ 4.4, 871 }, \
|
||||
{ 10.0, 198 }
|
||||
|
||||
// Settings for filament load / unload from the LCD menu.
|
||||
// This is for Průša MK3-style extruders. Customize for your hardware.
|
||||
#define MMU2_FILAMENTCHANGE_EJECT_FEED 80.0
|
||||
#define MMU2_RAMMING_SEQUENCE \
|
||||
{ 1.0, 1000 }, \
|
||||
{ 1.0, 1500 }, \
|
||||
{ 2.0, 2000 }, \
|
||||
{ 1.5, 3000 }, \
|
||||
{ 2.5, 4000 }, \
|
||||
{ -15.0, 5000 }, \
|
||||
{ -14.0, 1200 }, \
|
||||
{ -6.0, 600 }, \
|
||||
{ 10.0, 700 }, \
|
||||
{ -10.0, 400 }, \
|
||||
{ -50.0, 2000 }
|
||||
|
||||
#endif // HAS_PRUSA_MMU2
|
||||
|
||||
/**
|
||||
* ------------
|
||||
* MMU2 / MMU2S
|
||||
* ------------
|
||||
* MMU2 sequences use mm/min. Not compatible with MMU3 (see below).
|
||||
* #define MMU2_LOAD_TO_NOZZLE_SEQUENCE \
|
||||
* { 4.4, 871 }, \
|
||||
* { 10.0, 1393 }, \
|
||||
* { 4.4, 871 }, \
|
||||
* { 10.0, 198 }
|
||||
*/
|
||||
|
||||
/* #define MMU2_RAMMING_SEQUENCE \
|
||||
* { 1.0, 1000 }, \
|
||||
* { 1.0, 1500 }, \
|
||||
* { 2.0, 2000 }, \
|
||||
* { 1.5, 3000 }, \
|
||||
* { 2.5, 4000 }, \
|
||||
* { -15.0, 5000 }, \
|
||||
* { -14.0, 1200 }, \
|
||||
* { -6.0, 600 }, \
|
||||
* { 10.0, 700 }, \
|
||||
* { -10.0, 400 }, \
|
||||
* { -50.0, 2000 }
|
||||
*/
|
||||
|
||||
/**
|
||||
* ----
|
||||
* MMU3
|
||||
* ----
|
||||
* These values are compatible with MMU3 as they are defined in mm/s
|
||||
*/
|
||||
|
||||
#define MMU2_EXTRUDER_PTFE_LENGTH 42.3 // (mm)
|
||||
#define MMU2_EXTRUDER_HEATBREAK_LENGTH 17.7 // (mm)
|
||||
|
||||
#define MMU2_LOAD_TO_NOZZLE_SEQUENCE \
|
||||
{ MMU2_EXTRUDER_PTFE_LENGTH, MMM_TO_MMS(810) }, /* (13.5 mm/s) Fast load ahead of heatbreak */ \
|
||||
{ MMU2_EXTRUDER_HEATBREAK_LENGTH, MMM_TO_MMS(198) } // ( 3.3 mm/s) Slow load after heatbreak
|
||||
|
||||
#define MMU2_RAMMING_SEQUENCE \
|
||||
{ 0.2816, MMM_TO_MMS(1339.0) }, \
|
||||
{ 0.3051, MMM_TO_MMS(1451.0) }, \
|
||||
{ 0.3453, MMM_TO_MMS(1642.0) }, \
|
||||
{ 0.3990, MMM_TO_MMS(1897.0) }, \
|
||||
{ 0.4761, MMM_TO_MMS(2264.0) }, \
|
||||
{ 0.5767, MMM_TO_MMS(2742.0) }, \
|
||||
{ 0.5691, MMM_TO_MMS(3220.0) }, \
|
||||
{ 0.1081, MMM_TO_MMS(3220.0) }, \
|
||||
{ 0.7644, MMM_TO_MMS(3635.0) }, \
|
||||
{ 0.8248, MMM_TO_MMS(3921.0) }, \
|
||||
{ 0.8483, MMM_TO_MMS(4033.0) }, \
|
||||
{ -15.0, MMM_TO_MMS(6000.0) }, \
|
||||
{ -24.5, MMM_TO_MMS(1200.0) }, \
|
||||
{ -7.0, MMM_TO_MMS( 600.0) }, \
|
||||
{ -3.5, MMM_TO_MMS( 360.0) }, \
|
||||
{ 20.0, MMM_TO_MMS( 454.0) }, \
|
||||
{ -20.0, MMM_TO_MMS( 303.0) }, \
|
||||
{ -35.0, MMM_TO_MMS(2000.0) }
|
||||
|
||||
/**
|
||||
* Using a sensor like the MMU2S
|
||||
* This mode requires a MK3S extruder with a sensor at the extruder idler, like the MMU2S.
|
||||
* Options pertaining to MMU2S devices
|
||||
* Requires the MK3S extruder with a sensor at the extruder idler, like the MMU2S.
|
||||
* See https://help.prusa3d.com/guide/3b-mk3s-mk2-5s-extruder-upgrade_41560#42048, step 11
|
||||
*/
|
||||
#if HAS_PRUSA_MMU2S
|
||||
@@ -4516,14 +4497,9 @@
|
||||
|
||||
// MMU3 settings
|
||||
|
||||
#define MMU2_MAX_RETRIES 3 // Number of retries (total time = timeout*retries)
|
||||
#define MMU3_HAS_CUTTER // Enable cutter related functionality
|
||||
|
||||
// Nominal distance from the extruder gear to the nozzle tip is 87mm
|
||||
// However, some slipping may occur and we need separate distances for
|
||||
// LoadToNozzle and ToolChange.
|
||||
// - +5mm seemed good for LoadToNozzle,
|
||||
// - but too much (made blobs) for a ToolChange
|
||||
#define MMU2_LOAD_TO_NOZZLE_LENGTH 87.0 + 5.0
|
||||
#define MMU3_MAX_RETRIES 3 // Number of retries (total time = timeout*retries)
|
||||
|
||||
// As discussed with our PrusaSlicer profile specialist
|
||||
// - ToolChange shall not try to push filament into the very tip of the nozzle
|
||||
@@ -4532,28 +4508,26 @@
|
||||
// Beware - this value is used to initialize the MMU logic layer - it will be sent to the MMU upon line up (written into its 8bit register 0x0b)
|
||||
// However - in the G-code we can get a request to set the extra load distance at runtime to something else (M708 A0xb Xsomething).
|
||||
// The printer intercepts such a call and sets its extra load distance to match the new value as well.
|
||||
#define MMU2_FILAMENT_SENSOR_POSITION 0 // (mm)
|
||||
#define MMU2_LOAD_DISTANCE_PAST_GEARS 5 // (mm)
|
||||
#define MMU2_TOOL_CHANGE_LOAD_LENGTH MMU2_FILAMENT_SENSOR_POSITION + MMU2_LOAD_DISTANCE_PAST_GEARS // (mm)
|
||||
#define MMU3_FILAMENT_SENSOR_E_POSITION 0 // (mm)
|
||||
#define _MMU3_LOAD_DISTANCE_PAST_GEARS 5 // (mm)
|
||||
#define MMU3_TOOL_CHANGE_LOAD_LENGTH (MMU3_FILAMENT_SENSOR_E_POSITION + _MMU3_LOAD_DISTANCE_PAST_GEARS) // (mm)
|
||||
|
||||
#define MMU2_LOAD_TO_NOZZLE_FEED_RATE 20.0 // (mm/s)
|
||||
#define MMU2_UNLOAD_TO_FINDA_FEED_RATE 120.0 // (mm/s)
|
||||
#define MMU3_LOAD_TO_NOZZLE_FEED_RATE 20.0 // (mm/s)
|
||||
|
||||
#define MMU2_VERIFY_LOAD_TO_NOZZLE_FEED_RATE 50.0 // (mm/s)
|
||||
#define MMU2_VERIFY_LOAD_TO_NOZZLE_TWEAK -5.0 // (mm) Amount to adjust the length for verifying load-to-nozzle
|
||||
#define MMU3_VERIFY_LOAD_TO_NOZZLE_FEED_RATE 50.0 // (mm/s)
|
||||
#define _MMU3_VERIFY_LOAD_TO_NOZZLE_TWEAK -5.0 // (mm) Amount to adjust the length for verifying load-to-nozzle
|
||||
|
||||
// The first thing the MMU does is initialize its axis.
|
||||
// Meanwhile the E-motor will unload 20mm of filament in about 1 second.
|
||||
#define MMU2_RETRY_UNLOAD_TO_FINDA_LENGTH 80.0 // (mm)
|
||||
#define MMU2_RETRY_UNLOAD_TO_FINDA_FEED_RATE 80.0 // (mm/s)
|
||||
#define MMU3_RETRY_UNLOAD_TO_FINDA_LENGTH 80.0 // (mm)
|
||||
#define MMU3_RETRY_UNLOAD_TO_FINDA_FEED_RATE 80.0 // (mm/s)
|
||||
|
||||
// After loading a new filament, the printer will extrude this length of filament
|
||||
// then retract to the original position. This is used to check if the filament sensor
|
||||
// reading flickers or filament is jammed.
|
||||
#define MMU2_CHECK_FILAMENT_PRESENCE_EXTRUSION_LENGTH (MMU2_EXTRUDER_PTFE_LENGTH + MMU2_EXTRUDER_HEATBREAK_LENGTH + MMU2_VERIFY_LOAD_TO_NOZZLE_TWEAK + MMU2_FILAMENT_SENSOR_POSITION) // (mm)
|
||||
|
||||
#define MMU_HAS_CUTTER // Enable cutter related functionalities
|
||||
//#define MMU_FORCE_STEALTH_MODE // Force stealth mode and disable menu item
|
||||
#define _MMU_EXTRUDER_PTFE_LENGTH 42.3 // (mm)
|
||||
#define _MMU_EXTRUDER_HEATBREAK_LENGTH 17.7 // (mm)
|
||||
#define MMU3_CHECK_FILAMENT_PRESENCE_EXTRUSION_LENGTH (MMU3_FILAMENT_SENSOR_E_POSITION + _MMU_EXTRUDER_PTFE_LENGTH + _MMU_EXTRUDER_HEATBREAK_LENGTH + _MMU3_VERIFY_LOAD_TO_NOZZLE_TWEAK) // (mm)
|
||||
|
||||
/**
|
||||
* SpoolJoin Consumes All Filament -- EXPERIMENTAL
|
||||
@@ -4571,12 +4545,37 @@
|
||||
* sensor is triggered through the gears) and the end of the PTFE tube and
|
||||
* can cause filament load issues.
|
||||
*/
|
||||
//#define MMU_SPOOL_JOIN_CONSUMES_ALL_FILAMENT
|
||||
//#define MMU3_SPOOL_JOIN_CONSUMES_ALL_FILAMENT
|
||||
|
||||
#else
|
||||
// MMU3 sequences use mm/sec. Not compatible with MMU2 which use mm/min.
|
||||
#define MMU3_LOAD_TO_NOZZLE_SEQUENCE \
|
||||
{ _MMU_EXTRUDER_PTFE_LENGTH, MMM_TO_MMS(810) }, /* (13.5 mm/s) Fast load ahead of heatbreak */ \
|
||||
{ _MMU_EXTRUDER_HEATBREAK_LENGTH, MMM_TO_MMS(198) } /* ( 3.3 mm/s) Slow load after heatbreak */
|
||||
|
||||
#define MMU3_RAMMING_SEQUENCE \
|
||||
{ 0.2816, MMM_TO_MMS(1339.0) }, \
|
||||
{ 0.3051, MMM_TO_MMS(1451.0) }, \
|
||||
{ 0.3453, MMM_TO_MMS(1642.0) }, \
|
||||
{ 0.3990, MMM_TO_MMS(1897.0) }, \
|
||||
{ 0.4761, MMM_TO_MMS(2264.0) }, \
|
||||
{ 0.5767, MMM_TO_MMS(2742.0) }, \
|
||||
{ 0.5691, MMM_TO_MMS(3220.0) }, \
|
||||
{ 0.1081, MMM_TO_MMS(3220.0) }, \
|
||||
{ 0.7644, MMM_TO_MMS(3635.0) }, \
|
||||
{ 0.8248, MMM_TO_MMS(3921.0) }, \
|
||||
{ 0.8483, MMM_TO_MMS(4033.0) }, \
|
||||
{ -15.0, MMM_TO_MMS(6000.0) }, \
|
||||
{ -24.5, MMM_TO_MMS(1200.0) }, \
|
||||
{ -7.0, MMM_TO_MMS( 600.0) }, \
|
||||
{ -3.5, MMM_TO_MMS( 360.0) }, \
|
||||
{ 20.0, MMM_TO_MMS( 454.0) }, \
|
||||
{ -20.0, MMM_TO_MMS( 303.0) }, \
|
||||
{ -35.0, MMM_TO_MMS(2000.0) }
|
||||
|
||||
#else // MMU2 (not MMU2S)
|
||||
|
||||
/**
|
||||
* MMU1 Extruder Sensor
|
||||
* MMU2 Extruder Sensor
|
||||
*
|
||||
* Support for a Průša (or other) IR Sensor to detect filament near the extruder
|
||||
* and make loading more reliable. Suitable for an extruder equipped with a filament
|
||||
@@ -4586,15 +4585,13 @@
|
||||
* move up to the gears. If no filament is detected, the MMU2 can make some more attempts.
|
||||
* If all attempts fail, a filament runout will be triggered.
|
||||
*/
|
||||
//#define MMU_EXTRUDER_SENSOR
|
||||
#if ENABLED(MMU_EXTRUDER_SENSOR)
|
||||
#define MMU_LOADING_ATTEMPTS_NR 5 // max. number of attempts to load filament if first load fail
|
||||
//#define MMU2_EXTRUDER_SENSOR
|
||||
#if ENABLED(MMU2_EXTRUDER_SENSOR)
|
||||
#define MMU2_LOADING_ATTEMPTS_NR 5 // Number of times to try loading filament before failure
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
//#define MMU2_DEBUG // Write debug info to serial output
|
||||
|
||||
#endif // HAS_PRUSA_MMU2 || HAS_PRUSA_MMU3
|
||||
|
||||
/**
|
||||
|
||||
+108
-77
@@ -187,6 +187,17 @@ else ifeq ($(HARDWARE_MOTHERBOARD),1033)
|
||||
# RAMPS Plus 3DYMY (Power outputs: Spindle, Controller Fan)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1034)
|
||||
|
||||
# RAMPS 1.6+ (Power outputs: Hotend, Fan, Bed)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1035)
|
||||
# RAMPS 1.6+ (Power outputs: Hotend0, Hotend1, Bed)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1036)
|
||||
# RAMPS 1.6+ (Power outputs: Hotend, Fan0, Fan1)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1037)
|
||||
# RAMPS 1.6+ (Power outputs: Hotend0, Hotend1, Fan)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1038)
|
||||
# RAMPS 1.6+ (Power outputs: Spindle, Controller Fan)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1039)
|
||||
|
||||
#
|
||||
# RAMPS Derivatives - ATmega1280, ATmega2560
|
||||
#
|
||||
@@ -221,108 +232,113 @@ else ifeq ($(HARDWARE_MOTHERBOARD),1112)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1113)
|
||||
# BigTreeTech or BIQU KFB2.0
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1114)
|
||||
# zrib V2.0 (Chinese RAMPS replica)
|
||||
# Zonestar zrib V2.0 (Chinese RAMPS replica)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1115)
|
||||
# zrib V5.2 (Chinese RAMPS replica)
|
||||
# Zonestar zrib V5.2 (Chinese RAMPS replica)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1116)
|
||||
# Felix 2.0+ Electronics Board (RAMPS like)
|
||||
# Zonestar zrib V5.3 (Chinese RAMPS replica)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1117)
|
||||
# Invent-A-Part RigidBoard
|
||||
# Felix 2.0+ Electronics Board (RAMPS like)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1118)
|
||||
# Invent-A-Part RigidBoard V2
|
||||
# Invent-A-Part RigidBoard
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1119)
|
||||
# Sainsmart 2-in-1 board
|
||||
# Invent-A-Part RigidBoard V2
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1120)
|
||||
# Ultimaker
|
||||
# Sainsmart 2-in-1 board
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1121)
|
||||
# Ultimaker (Older electronics. Pre 1.5.4. This is rare)
|
||||
# Ultimaker
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1122)
|
||||
# Ultimaker (Older electronics. Pre 1.5.4. This is rare)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1123)
|
||||
MCU ?= atmega1280
|
||||
PROG_MCU ?= m1280
|
||||
# Azteeg X3
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1123)
|
||||
# Azteeg X3 Pro
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1124)
|
||||
# Ultimainboard 2.x (Uses TEMP_SENSOR 20)
|
||||
# Azteeg X3 Pro
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1125)
|
||||
# Rumba
|
||||
# Ultimainboard 2.x (Uses TEMP_SENSOR 20)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1126)
|
||||
# Raise3D N series Rumba derivative
|
||||
# Rumba
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1127)
|
||||
# Rapide Lite 200 (v1, low-cost RUMBA clone with drv)
|
||||
# Raise3D N series Rumba derivative
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1128)
|
||||
# Formbot T-Rex 2 Plus
|
||||
# Rapide Lite 200 (v1, low-cost RUMBA clone with drv)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1129)
|
||||
# Formbot T-Rex 3
|
||||
# Formbot T-Rex 2 Plus
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1130)
|
||||
# Formbot Raptor
|
||||
# Formbot T-Rex 3
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1131)
|
||||
# Formbot Raptor 2
|
||||
# Formbot Raptor
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1132)
|
||||
# bq ZUM Mega 3D
|
||||
# Formbot Raptor 2
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1133)
|
||||
# MakeBoard Mini v2.1.2 by MicroMake
|
||||
# bq ZUM Mega 3D
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1134)
|
||||
# TriGorilla Anycubic version 1.3-based on RAMPS EFB
|
||||
# MakeBoard Mini v2.1.2 by MicroMake
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1135)
|
||||
# ... Ver 1.4
|
||||
# TriGorilla Anycubic version 1.3-based on RAMPS EFB
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1136)
|
||||
# ... Rev 1.1 (new servo pin order)
|
||||
# ... Ver 1.4
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1137)
|
||||
# Creality: Ender-4, CR-8
|
||||
# ... Rev 1.1 (new servo pin order)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1138)
|
||||
# Creality: CR10S, CR20, CR-X
|
||||
# Creality: Ender-4, CR-8
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1139)
|
||||
# Dagoma F5
|
||||
# Creality: CR10S, CR20, CR-X
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1140)
|
||||
# FYSETC F6 1.3
|
||||
# Dagoma F5
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1141)
|
||||
# FYSETC F6 1.4
|
||||
# Dagoma D6 (as found in the Dagoma DiscoUltimate V2 TMC)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1142)
|
||||
# Wanhao Duplicator i3 Plus
|
||||
# FYSETC F6 1.3
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1143)
|
||||
# VORON Design
|
||||
# FYSETC F6 1.4
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1144)
|
||||
# Tronxy TRONXY-V3-1.0
|
||||
# Wanhao Duplicator i3 Plus
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1145)
|
||||
# Z-Bolt X Series
|
||||
# VORON Design
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1146)
|
||||
# TT OSCAR
|
||||
# Tronxy TRONXY-V3-1.0
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1147)
|
||||
# Overlord/Overlord Pro
|
||||
# Z-Bolt X Series
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1148)
|
||||
# ADIMLab Gantry v1
|
||||
# TT OSCAR
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1149)
|
||||
# ADIMLab Gantry v2
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1150)
|
||||
# BIQU Tango V1
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1151)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1150)
|
||||
# MKS GEN L V2
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1152)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1151)
|
||||
# MKS GEN L V2.1
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1153)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1152)
|
||||
# Copymaster 3D
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1154)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1153)
|
||||
# Ortur 4
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1155)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1154)
|
||||
# Tenlog D3 Hero IDEX printer
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1155)
|
||||
# Tenlog D3, D5, D6 IDEX Printer
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1156)
|
||||
# Tenlog D3,5,6 Pro IDEX printers
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1157)
|
||||
# Ramps S 1.2 by Sakul.cz (Power outputs: Hotend0, Hotend1, Fan, Bed)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1158)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1157)
|
||||
# Ramps S 1.2 by Sakul.cz (Power outputs: Hotend0, Hotend1, Hotend2, Bed)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1159)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1158)
|
||||
# Ramps S 1.2 by Sakul.cz (Power outputs: Hotend, Fan0, Fan1, Bed)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1160)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1159)
|
||||
# Longer LK1 PRO / Alfawise U20 Pro (PRO version)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1161)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1160)
|
||||
# Longer LKx PRO / Alfawise Uxx Pro (PRO version)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1162)
|
||||
# Zonestar zrib V5.3 (Chinese RAMPS replica)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1163)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1161)
|
||||
# Pxmalion Core I3
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1162)
|
||||
# Panowin Cutlass (as found in the Panowin F1)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1163)
|
||||
# Kodama Bardo V1.x (as found in the Kodama Trinus)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1164)
|
||||
# XTLW MFF V1.0
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1165)
|
||||
# XTLW MFF V2.0
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1166)
|
||||
|
||||
|
||||
#
|
||||
# RAMBo and derivatives
|
||||
@@ -340,7 +356,7 @@ else ifeq ($(HARDWARE_MOTHERBOARD),1203)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1204)
|
||||
# abee Scoovo X9H
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1205)
|
||||
# Rambo ThinkerV2
|
||||
# ThinkerV2
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1206)
|
||||
|
||||
#
|
||||
@@ -383,30 +399,40 @@ else ifeq ($(HARDWARE_MOTHERBOARD),1315)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1316)
|
||||
# Geeetech GT2560 Rev B for A10(M/T/D)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1317)
|
||||
# Geeetech GT2560 Rev B for A10(M/T/D)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1318)
|
||||
# Geeetech GT2560 Rev B for Mecreator2
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1318)
|
||||
# Geeetech GT2560 Rev B for A20(M/T/D)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1319)
|
||||
# Geeetech GT2560 Rev B for A20(M/T/D)
|
||||
# Geeetech GT2560 Rev B for A10(M/T/D)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1320)
|
||||
# Einstart retrofit
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1321)
|
||||
# Wanhao 0ne+ i3 Mini
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1322)
|
||||
# Leapfrog Xeed 2015
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1323)
|
||||
# PICA Shield (original version)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1324)
|
||||
# PICA Shield (rev C or later)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1325)
|
||||
# Intamsys 4.0 (Funmat HT)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1326)
|
||||
# Malyan M180 Mainboard Version 2 (no display function, direct G-code only)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1327)
|
||||
# Geeetech GT2560 Rev B for A20(M/T/D)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1321)
|
||||
# Einstart retrofit
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1322)
|
||||
# Wanhao 0ne+ i3 Mini
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1323)
|
||||
# Overlord/Overlord Pro
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1324)
|
||||
# ADIMLab Gantry v1
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1325)
|
||||
# ADIMLab Gantry v2
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1326)
|
||||
# Leapfrog Xeed 2015
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1327)
|
||||
# PICA Shield (original version)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1328)
|
||||
# Mega controller & Protoneer CNC Shield V3.00
|
||||
# PICA Shield (rev C or later)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1329)
|
||||
# Intamsys 4.0 (Funmat HT)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1330)
|
||||
# Malyan M180 Mainboard Version 2 (no display function, direct G-code only)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1331)
|
||||
# Mega controller & Protoneer CNC Shield V3.00
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1332)
|
||||
# WEEDO 62A board (TINA2, Monoprice Cadet, etc.)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1333)
|
||||
# Geeetech GT2560 V4.1B for A10(M/T/D)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1334)
|
||||
|
||||
#
|
||||
# ATmega1281, ATmega2561
|
||||
@@ -440,7 +466,7 @@ else ifeq ($(HARDWARE_MOTHERBOARD),1502)
|
||||
HARDWARE_VARIANT ?= Sanguino
|
||||
MCU ?= atmega644p
|
||||
PROG_MCU ?= m644p
|
||||
# Melzi V2.0
|
||||
# Melzi V2
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1503)
|
||||
HARDWARE_VARIANT ?= Sanguino
|
||||
MCU ?= atmega1284p
|
||||
@@ -450,36 +476,41 @@ else ifeq ($(HARDWARE_MOTHERBOARD),1504)
|
||||
HARDWARE_VARIANT ?= Sanguino
|
||||
MCU ?= atmega1284p
|
||||
PROG_MCU ?= m1284p
|
||||
# Melzi Creality3D board (for CR-10 etc)
|
||||
# Melzi Creality3D (for CR-10 etc)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1505)
|
||||
HARDWARE_VARIANT ?= Sanguino
|
||||
MCU ?= atmega1284p
|
||||
PROG_MCU ?= m1284p
|
||||
# Melzi Malyan M150 board
|
||||
# Melzi Creality3D (for Ender-2)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1506)
|
||||
HARDWARE_VARIANT ?= Sanguino
|
||||
MCU ?= atmega1284p
|
||||
PROG_MCU ?= m1284p
|
||||
# Tronxy X5S
|
||||
# Melzi Malyan M150
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1507)
|
||||
HARDWARE_VARIANT ?= Sanguino
|
||||
MCU ?= atmega1284p
|
||||
PROG_MCU ?= m1284p
|
||||
# STB V1.1
|
||||
# Tronxy X5S
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1508)
|
||||
HARDWARE_VARIANT ?= Sanguino
|
||||
MCU ?= atmega1284p
|
||||
PROG_MCU ?= m1284p
|
||||
# Azteeg X1
|
||||
# STB V1.1
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1509)
|
||||
HARDWARE_VARIANT ?= Sanguino
|
||||
MCU ?= atmega1284p
|
||||
PROG_MCU ?= m1284p
|
||||
# Anet 1.0 (Melzi clone)
|
||||
# Azteeg X1
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1510)
|
||||
HARDWARE_VARIANT ?= Sanguino
|
||||
MCU ?= atmega1284p
|
||||
PROG_MCU ?= m1284p
|
||||
# Anet 1.0 (Melzi clone)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1511)
|
||||
HARDWARE_VARIANT ?= Sanguino
|
||||
MCU ?= atmega1284p
|
||||
PROG_MCU ?= m1284p
|
||||
# ZoneStar ZMIB V2
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1511)
|
||||
HARDWARE_VARIANT ?= Sanguino
|
||||
|
||||
+1
-1
@@ -41,7 +41,7 @@
|
||||
* here we define this default string as the date where the latest release
|
||||
* version was tagged.
|
||||
*/
|
||||
//#define STRING_DISTRIBUTION_DATE "2024-08-29"
|
||||
//#define STRING_DISTRIBUTION_DATE "2024-10-17"
|
||||
|
||||
/**
|
||||
* Defines a generic printer name to be output to the LCD after booting Marlin.
|
||||
|
||||
@@ -129,11 +129,11 @@ typedef Servo hal_servo_t;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef MMU2_SERIAL_PORT
|
||||
#if !WITHIN(MMU2_SERIAL_PORT, 0, 3)
|
||||
#error "MMU2_SERIAL_PORT must be from 0 to 3"
|
||||
#ifdef MMU_SERIAL_PORT
|
||||
#if !WITHIN(MMU_SERIAL_PORT, 0, 3)
|
||||
#error "MMU_SERIAL_PORT must be from 0 to 3"
|
||||
#endif
|
||||
#define MMU2_SERIAL mmuSerial
|
||||
#define MMU_SERIAL mmuSerial
|
||||
#endif
|
||||
|
||||
#ifdef LCD_SERIAL_PORT
|
||||
|
||||
@@ -601,20 +601,20 @@ MSerialT1 customizedSerial1(MSerialT1::HasEmergencyParser);
|
||||
|
||||
#endif // SERIAL_PORT_3
|
||||
|
||||
#ifdef MMU2_SERIAL_PORT
|
||||
#ifdef MMU_SERIAL_PORT
|
||||
|
||||
ISR(SERIAL_REGNAME(USART, MMU2_SERIAL_PORT, _RX_vect)) {
|
||||
MarlinSerial<MMU2SerialCfg<MMU2_SERIAL_PORT>>::store_rxd_char();
|
||||
ISR(SERIAL_REGNAME(USART, MMU_SERIAL_PORT, _RX_vect)) {
|
||||
MarlinSerial<MMU2SerialCfg<MMU_SERIAL_PORT>>::store_rxd_char();
|
||||
}
|
||||
|
||||
ISR(SERIAL_REGNAME(USART, MMU2_SERIAL_PORT, _UDRE_vect)) {
|
||||
MarlinSerial<MMU2SerialCfg<MMU2_SERIAL_PORT>>::_tx_udr_empty_irq();
|
||||
ISR(SERIAL_REGNAME(USART, MMU_SERIAL_PORT, _UDRE_vect)) {
|
||||
MarlinSerial<MMU2SerialCfg<MMU_SERIAL_PORT>>::_tx_udr_empty_irq();
|
||||
}
|
||||
|
||||
template class MarlinSerial< MMU2SerialCfg<MMU2_SERIAL_PORT> >;
|
||||
template class MarlinSerial< MMU2SerialCfg<MMU_SERIAL_PORT> >;
|
||||
MSerialMMU2 mmuSerial(MSerialMMU2::HasEmergencyParser);
|
||||
|
||||
#endif // MMU2_SERIAL_PORT
|
||||
#endif // MMU_SERIAL_PORT
|
||||
|
||||
#ifdef LCD_SERIAL_PORT
|
||||
|
||||
|
||||
@@ -246,7 +246,7 @@
|
||||
|
||||
#endif // !USBCON
|
||||
|
||||
#ifdef MMU2_SERIAL_PORT
|
||||
#ifdef MMU_SERIAL_PORT
|
||||
template <uint8_t serial>
|
||||
struct MMU2SerialCfg {
|
||||
static constexpr int PORT = serial;
|
||||
@@ -260,7 +260,7 @@
|
||||
static constexpr bool RX_OVERRUNS = false;
|
||||
};
|
||||
|
||||
typedef Serial1Class< MarlinSerial< MMU2SerialCfg<MMU2_SERIAL_PORT> > > MSerialMMU2;
|
||||
typedef Serial1Class< MarlinSerial< MMU2SerialCfg<MMU_SERIAL_PORT> > > MSerialMMU2;
|
||||
extern MSerialMMU2 mmuSerial;
|
||||
#endif
|
||||
|
||||
|
||||
@@ -81,11 +81,11 @@ extern DefaultSerial4 MSerial3;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef MMU2_SERIAL_PORT
|
||||
#if WITHIN(MMU2_SERIAL_PORT, 0, 3)
|
||||
#define MMU2_SERIAL MSERIAL(MMU2_SERIAL_PORT)
|
||||
#ifdef MMU_SERIAL_PORT
|
||||
#if WITHIN(MMU_SERIAL_PORT, 0, 3)
|
||||
#define MMU_SERIAL MSERIAL(MMU_SERIAL_PORT)
|
||||
#else
|
||||
#error "MMU2_SERIAL_PORT must be from 0 to 3."
|
||||
#error "MMU_SERIAL_PORT must be from 0 to 3."
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@ void sd_mmc_spi_mem_init() {
|
||||
}
|
||||
|
||||
inline bool media_ready() {
|
||||
return IS_SD_INSERTED() && !IS_SD_PRINTING() && !IS_SD_FILE_OPEN() && card.isMounted();
|
||||
return IS_SD_MOUNTED() && IS_SD_INSERTED() && !IS_SD_FILE_OPEN() && !IS_SD_PRINTING();
|
||||
}
|
||||
|
||||
bool sd_mmc_spi_unload(bool) { return true; }
|
||||
@@ -32,14 +32,14 @@ Ctrl_status sd_mmc_spi_test_unit_ready() {
|
||||
#ifdef DISABLE_DUE_SD_MMC
|
||||
return CTRL_NO_PRESENT;
|
||||
#endif
|
||||
if (!media_ready()) return CTRL_NO_PRESENT;
|
||||
if (sd_mmc_spi_removal()) return CTRL_NO_PRESENT;
|
||||
return CTRL_GOOD;
|
||||
}
|
||||
|
||||
// NOTE: This function is defined as returning the address of the last block
|
||||
// in the card, which is cardSize() - 1
|
||||
Ctrl_status sd_mmc_spi_read_capacity(uint32_t *nb_sector) {
|
||||
if (!media_ready()) return CTRL_NO_PRESENT;
|
||||
if (sd_mmc_spi_removal()) return CTRL_NO_PRESENT;
|
||||
*nb_sector = card.diskIODriver()->cardSize() - 1;
|
||||
return CTRL_GOOD;
|
||||
}
|
||||
@@ -61,7 +61,7 @@ Ctrl_status sd_mmc_spi_usb_read_10(uint32_t addr, uint16_t nb_sector) {
|
||||
#ifdef DISABLE_DUE_SD_MMC
|
||||
return CTRL_NO_PRESENT;
|
||||
#endif
|
||||
if (!media_ready()) return CTRL_NO_PRESENT;
|
||||
if (sd_mmc_spi_removal()) return CTRL_NO_PRESENT;
|
||||
|
||||
#ifdef DEBUG_MMC
|
||||
{
|
||||
@@ -100,7 +100,7 @@ Ctrl_status sd_mmc_spi_usb_write_10(uint32_t addr, uint16_t nb_sector) {
|
||||
#ifdef DISABLE_DUE_SD_MMC
|
||||
return CTRL_NO_PRESENT;
|
||||
#endif
|
||||
if (!media_ready()) return CTRL_NO_PRESENT;
|
||||
if (sd_mmc_spi_removal()) return CTRL_NO_PRESENT;
|
||||
|
||||
#ifdef DEBUG_MMC
|
||||
{
|
||||
|
||||
@@ -209,16 +209,17 @@ int MarlinHAL::freeMemory() { return ESP.getFreeHeap(); }
|
||||
// ADC
|
||||
// ------------------------
|
||||
|
||||
#define ADC1_CHANNEL(pin) ADC1_GPIO ## pin ## _CHANNEL
|
||||
|
||||
// https://docs.espressif.com/projects/esp-idf/en/release-v4.4/esp32/api-reference/peripherals/adc.html
|
||||
adc1_channel_t get_channel(int pin) {
|
||||
switch (pin) {
|
||||
case 39: return ADC1_CHANNEL(39);
|
||||
case 36: return ADC1_CHANNEL(36);
|
||||
case 35: return ADC1_CHANNEL(35);
|
||||
case 34: return ADC1_CHANNEL(34);
|
||||
case 33: return ADC1_CHANNEL(33);
|
||||
case 32: return ADC1_CHANNEL(32);
|
||||
case 39: return ADC1_CHANNEL_3;
|
||||
case 36: return ADC1_CHANNEL_0;
|
||||
case 35: return ADC1_CHANNEL_7;
|
||||
case 34: return ADC1_CHANNEL_6;
|
||||
case 33: return ADC1_CHANNEL_5;
|
||||
case 32: return ADC1_CHANNEL_4;
|
||||
case 37: return ADC1_CHANNEL_1;
|
||||
case 38: return ADC1_CHANNEL_2;
|
||||
}
|
||||
return ADC1_CHANNEL_MAX;
|
||||
}
|
||||
|
||||
@@ -90,7 +90,7 @@ void HAL_timer_start(const uint8_t timer_num, const uint32_t frequency) {
|
||||
config.counter_en = TIMER_PAUSE;
|
||||
config.alarm_en = TIMER_ALARM_EN;
|
||||
config.intr_type = TIMER_INTR_LEVEL;
|
||||
config.auto_reload = true;
|
||||
config.auto_reload = TIMER_AUTORELOAD_EN;
|
||||
|
||||
// Select and initialize the timer
|
||||
timer_init(timer.group, timer.idx, &config);
|
||||
|
||||
@@ -94,8 +94,10 @@
|
||||
#error "SERIAL_DMA requires USART_RX_DMA_SUPPORT to be enabled in the arduino core."
|
||||
#endif
|
||||
|
||||
// USART_RX_DMA_SUPPORT does not implement core_hook_usart_rx_irq, which is required for the emergency parser
|
||||
#if ENABLED(EMERGENCY_PARSER)
|
||||
// Before arduino core version 1.2.0, USART_RX_DMA_SUPPORT did not implement
|
||||
// core_hook_usart_rx_irq, which is required for the emergency parser.
|
||||
// With 1.2.0, this was fixed (see https://github.com/shadow578/framework-arduino-hc32f46x/pull/25).
|
||||
#if ENABLED(EMERGENCY_PARSER) && ARDUINO_CORE_VERSION_INT < GET_VERSION_INT(1, 2, 0)
|
||||
#error "EMERGENCY_PARSER is not supported with SERIAL_DMA. Please disable either SERIAL_DMA or EMERGENCY_PARSER."
|
||||
#endif
|
||||
|
||||
|
||||
@@ -82,13 +82,13 @@ extern DefaultSerial1 USBSerial;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef MMU2_SERIAL_PORT
|
||||
#if MMU2_SERIAL_PORT == -1
|
||||
#define MMU2_SERIAL USBSerial
|
||||
#elif WITHIN(MMU2_SERIAL_PORT, 0, 3)
|
||||
#define MMU2_SERIAL MSERIAL(MMU2_SERIAL_PORT)
|
||||
#ifdef MMU_SERIAL_PORT
|
||||
#if MMU_SERIAL_PORT == -1
|
||||
#define MMU_SERIAL USBSerial
|
||||
#elif WITHIN(MMU_SERIAL_PORT, 0, 3)
|
||||
#define MMU_SERIAL MSERIAL(MMU_SERIAL_PORT)
|
||||
#else
|
||||
#error "MMU2_SERIAL_PORT must be from 0 to 3. You can also use -1 if the board supports Native USB."
|
||||
#error "MMU_SERIAL_PORT must be from 0 to 3. You can also use -1 if the board supports Native USB."
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
@@ -87,11 +87,11 @@ extern MSerialT serial_stream_3;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef MMU2_SERIAL_PORT
|
||||
#if WITHIN(MMU2_SERIAL_PORT, 0, 3)
|
||||
#define MMU2_SERIAL MSERIAL(MMU2_SERIAL_PORT)
|
||||
#ifdef MMU_SERIAL_PORT
|
||||
#if WITHIN(MMU_SERIAL_PORT, 0, 3)
|
||||
#define MMU_SERIAL MSERIAL(MMU_SERIAL_PORT)
|
||||
#else
|
||||
#error "MMU2_SERIAL_PORT must be from 0 to 3. Please update your configuration."
|
||||
#error "MMU_SERIAL_PORT must be from 0 to 3. Please update your configuration."
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
@@ -69,13 +69,13 @@ extern DefaultSerial3 MSerial1;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef MMU2_SERIAL_PORT
|
||||
#if WITHIN(MMU2_SERIAL_PORT, 0, 1)
|
||||
#define MMU2_SERIAL MSERIAL(SERIAL_PORT)
|
||||
#elif MMU2_SERIAL_PORT == -1
|
||||
#define MMU2_SERIAL MSerialUSB
|
||||
#ifdef MMU_SERIAL_PORT
|
||||
#if WITHIN(MMU_SERIAL_PORT, 0, 1)
|
||||
#define MMU_SERIAL MSERIAL(SERIAL_PORT)
|
||||
#elif MMU_SERIAL_PORT == -1
|
||||
#define MMU_SERIAL MSerialUSB
|
||||
#else
|
||||
#error "MMU2_SERIAL_PORT must be -1 (Native USB only)."
|
||||
#error "MMU_SERIAL_PORT must be -1 (Native USB only)."
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
@@ -79,13 +79,13 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef MMU2_SERIAL_PORT
|
||||
#if MMU2_SERIAL_PORT == -1
|
||||
#define MMU2_SERIAL MSerial0
|
||||
#elif WITHIN(MMU2_SERIAL_PORT, 0, 3)
|
||||
#define MMU2_SERIAL MSERIAL(MMU2_SERIAL_PORT)
|
||||
#ifdef MMU_SERIAL_PORT
|
||||
#if MMU_SERIAL_PORT == -1
|
||||
#define MMU_SERIAL MSerial0
|
||||
#elif WITHIN(MMU_SERIAL_PORT, 0, 3)
|
||||
#define MMU_SERIAL MSERIAL(MMU_SERIAL_PORT)
|
||||
#else
|
||||
#error "MMU2_SERIAL_PORT must be from 0 to 3. You can also use -1 if the board supports Native USB."
|
||||
#error "MMU_SERIAL_PORT must be from 0 to 3. You can also use -1 if the board supports Native USB."
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
@@ -90,15 +90,15 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef MMU2_SERIAL_PORT
|
||||
#if WITHIN(MMU2_SERIAL_PORT, 1, 9)
|
||||
#define MMU2_SERIAL MSERIAL(MMU2_SERIAL_PORT)
|
||||
#ifdef MMU_SERIAL_PORT
|
||||
#if WITHIN(MMU_SERIAL_PORT, 1, 9)
|
||||
#define MMU_SERIAL MSERIAL(MMU_SERIAL_PORT)
|
||||
#elif !defined(USBCON)
|
||||
#error "MMU2_SERIAL_PORT must be from 1 to 9."
|
||||
#elif MMU2_SERIAL_PORT == -1
|
||||
#define MMU2_SERIAL MSerialUSB
|
||||
#error "MMU_SERIAL_PORT must be from 1 to 9."
|
||||
#elif MMU_SERIAL_PORT == -1
|
||||
#define MMU_SERIAL MSerialUSB
|
||||
#else
|
||||
#error "MMU2_SERIAL_PORT must be from 1 to 9, or -1 for Native USB."
|
||||
#error "MMU_SERIAL_PORT must be from 1 to 9, or -1 for Native USB."
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
@@ -238,7 +238,7 @@ void HAL_SD_MspInit(SD_HandleTypeDef *hsd) {
|
||||
hdma_sdio.Init.MemInc = DMA_MINC_ENABLE;
|
||||
hdma_sdio.Init.PeriphDataAlignment = DMA_PDATAALIGN_WORD;
|
||||
hdma_sdio.Init.MemDataAlignment = DMA_MDATAALIGN_WORD;
|
||||
hdma_sdio.Init.Priority = DMA_PRIORITY_LOW;
|
||||
hdma_sdio.Init.Priority = DMA_PRIORITY_MEDIUM;
|
||||
__HAL_LINKDMA(&hsd, hdmarx, hdma_sdio);
|
||||
__HAL_LINKDMA(&hsd, hdmatx, hdma_sdio);
|
||||
|
||||
|
||||
@@ -182,6 +182,7 @@ void TFT_FSMC::transmitDMA(uint32_t memoryIncrease, uint16_t *data, uint16_t cou
|
||||
DMAtx.Init.PeriphInc = memoryIncrease;
|
||||
HAL_DMA_Init(&DMAtx);
|
||||
HAL_DMA_Start(&DMAtx, (uint32_t)data, (uint32_t)&(LCD->RAM), count);
|
||||
TERN_(TFT_SHARED_IO, while (isBusy()));
|
||||
}
|
||||
|
||||
void TFT_FSMC::transmit(uint32_t memoryIncrease, uint16_t *data, uint16_t count) {
|
||||
|
||||
@@ -337,7 +337,7 @@ void TFT_SPI::transmitDMA(uint32_t memoryIncrease, uint16_t *data, uint16_t coun
|
||||
SET_BIT(SPIx.Instance->CR2, SPI_CR2_TXDMAEN); // Enable Tx DMA Request
|
||||
#endif
|
||||
|
||||
TERN_(TFT_SHARED_IO, while (isBusy()) { /* nada */ });
|
||||
TERN_(TFT_SHARED_IO, while (isBusy()));
|
||||
}
|
||||
|
||||
void TFT_SPI::transmit(uint32_t memoryIncrease, uint16_t *data, uint16_t count) {
|
||||
|
||||
@@ -118,14 +118,14 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef MMU2_SERIAL_PORT
|
||||
#if MMU2_SERIAL_PORT == -1
|
||||
#define MMU2_SERIAL UsbSerial
|
||||
#elif WITHIN(MMU2_SERIAL_PORT, 1, NUM_UARTS)
|
||||
#define MMU2_SERIAL MSERIAL(MMU2_SERIAL_PORT)
|
||||
#ifdef MMU_SERIAL_PORT
|
||||
#if MMU_SERIAL_PORT == -1
|
||||
#define MMU_SERIAL UsbSerial
|
||||
#elif WITHIN(MMU_SERIAL_PORT, 1, NUM_UARTS)
|
||||
#define MMU_SERIAL MSERIAL(MMU_SERIAL_PORT)
|
||||
#else
|
||||
#define MMU2_SERIAL MSERIAL(1) // dummy port
|
||||
static_assert(false, "MMU2_SERIAL_PORT must be from 1 to " STRINGIFY(NUM_UARTS) ". You can also use -1 if the board supports Native USB.")
|
||||
#define MMU_SERIAL MSERIAL(1) // dummy port
|
||||
static_assert(false, "MMU_SERIAL_PORT must be from 1 to " STRINGIFY(NUM_UARTS) ". You can also use -1 if the board supports Native USB.")
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
@@ -79,6 +79,8 @@
|
||||
#include "lcd/e3v2/creality/dwin.h"
|
||||
#elif ENABLED(DWIN_CREALITY_LCD_JYERSUI)
|
||||
#include "lcd/e3v2/jyersui/dwin.h"
|
||||
#elif ENABLED(SOVOL_SV06_RTS)
|
||||
#include "lcd/sovol_rts/sovol_rts.h"
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -230,8 +232,8 @@
|
||||
#endif
|
||||
|
||||
#if HAS_PRUSA_MMU3
|
||||
#include "feature/mmu3/mmu2.h"
|
||||
#include "feature/mmu3/mmu2_reporting.h"
|
||||
#include "feature/mmu3/mmu3.h"
|
||||
#include "feature/mmu3/mmu3_reporting.h"
|
||||
#include "feature/mmu3/SpoolJoin.h"
|
||||
#elif HAS_PRUSA_MMU2
|
||||
#include "feature/mmu/mmu2.h"
|
||||
@@ -276,7 +278,7 @@ bool wait_for_heatup = false;
|
||||
|
||||
// For M0/M1, this flag may be cleared (by M108) to exit the wait-for-user loop
|
||||
#if HAS_RESUME_CONTINUE
|
||||
bool wait_for_user; // = false;
|
||||
bool wait_for_user; // = false
|
||||
|
||||
void wait_for_user_response(millis_t ms/*=0*/, const bool no_sleep/*=false*/) {
|
||||
UNUSED(no_sleep);
|
||||
@@ -825,7 +827,11 @@ void idle(const bool no_stepper_sleep/*=false*/) {
|
||||
TERN_(HAS_BEEPER, buzzer.tick());
|
||||
|
||||
// Handle UI input / draw events
|
||||
ui.update();
|
||||
#if ENABLED(SOVOL_SV06_RTS)
|
||||
RTS_Update();
|
||||
#else
|
||||
ui.update();
|
||||
#endif
|
||||
|
||||
// Run i2c Position Encoders
|
||||
#if ENABLED(I2C_POSITION_ENCODERS)
|
||||
@@ -1162,6 +1168,12 @@ void setup() {
|
||||
millis_t serial_connect_timeout = millis() + 1000UL;
|
||||
while (!MYSERIAL1.connected() && PENDING(millis(), serial_connect_timeout)) { /*nada*/ }
|
||||
|
||||
#if ENABLED(SOVOL_SV06_RTS)
|
||||
LCD_SERIAL.begin(BAUDRATE);
|
||||
serial_connect_timeout = millis() + 1000UL;
|
||||
while (!LCD_SERIAL.connected() && PENDING(millis(), serial_connect_timeout)) { /*nada*/ }
|
||||
#endif
|
||||
|
||||
#if HAS_MULTI_SERIAL && !HAS_ETHERNET
|
||||
#ifndef BAUDRATE_2
|
||||
#define BAUDRATE_2 BAUDRATE
|
||||
@@ -1319,8 +1331,11 @@ void setup() {
|
||||
|
||||
// UI must be initialized before EEPROM
|
||||
// (because EEPROM code calls the UI).
|
||||
|
||||
SETUP_RUN(ui.init());
|
||||
#if ENABLED(SOVOL_SV06_RTS)
|
||||
SETUP_RUN(RTS_Update());
|
||||
#else
|
||||
SETUP_RUN(ui.init());
|
||||
#endif
|
||||
|
||||
#if PIN_EXISTS(SAFE_POWER)
|
||||
#if HAS_DRIVER_SAFE_POWER_PROTECT
|
||||
@@ -1609,6 +1624,8 @@ void setup() {
|
||||
|
||||
#if ENABLED(DWIN_CREALITY_LCD)
|
||||
SETUP_RUN(dwinInitScreen());
|
||||
#elif ENABLED(SOVOL_SV06_RTS)
|
||||
SETUP_RUN(rts.init());
|
||||
#endif
|
||||
|
||||
#if HAS_SERVICE_INTERVALS && DISABLED(DWIN_CREALITY_LCD)
|
||||
|
||||
+168
-167
@@ -79,61 +79,58 @@
|
||||
#define BOARD_MKS_GEN_13 1112 // MKS GEN v1.3 or 1.4
|
||||
#define BOARD_MKS_GEN_L 1113 // MKS GEN L
|
||||
#define BOARD_KFB_2 1114 // BigTreeTech or BIQU KFB2.0
|
||||
#define BOARD_ZRIB_V20 1115 // zrib V2.0 (Chinese RAMPS replica)
|
||||
#define BOARD_ZRIB_V52 1116 // zrib V5.2 (Chinese RAMPS replica)
|
||||
#define BOARD_FELIX2 1117 // Felix 2.0+ Electronics Board (RAMPS like)
|
||||
#define BOARD_RIGIDBOARD 1118 // Invent-A-Part RigidBoard
|
||||
#define BOARD_RIGIDBOARD_V2 1119 // Invent-A-Part RigidBoard V2
|
||||
#define BOARD_SAINSMART_2IN1 1120 // Sainsmart 2-in-1 board
|
||||
#define BOARD_ULTIMAKER 1121 // Ultimaker
|
||||
#define BOARD_ULTIMAKER_OLD 1122 // Ultimaker (Older electronics. Pre 1.5.4. This is rare)
|
||||
#define BOARD_AZTEEG_X3 1123 // Azteeg X3
|
||||
#define BOARD_AZTEEG_X3_PRO 1124 // Azteeg X3 Pro
|
||||
#define BOARD_ULTIMAIN_2 1125 // Ultimainboard 2.x (Uses TEMP_SENSOR 20)
|
||||
#define BOARD_RUMBA 1126 // Rumba
|
||||
#define BOARD_RUMBA_RAISE3D 1127 // Raise3D N series Rumba derivative
|
||||
#define BOARD_RL200 1128 // Rapide Lite 200 (v1, low-cost RUMBA clone with drv)
|
||||
#define BOARD_FORMBOT_TREX2PLUS 1129 // Formbot T-Rex 2 Plus
|
||||
#define BOARD_FORMBOT_TREX3 1130 // Formbot T-Rex 3
|
||||
#define BOARD_FORMBOT_RAPTOR 1131 // Formbot Raptor
|
||||
#define BOARD_FORMBOT_RAPTOR2 1132 // Formbot Raptor 2
|
||||
#define BOARD_BQ_ZUM_MEGA_3D 1133 // bq ZUM Mega 3D
|
||||
#define BOARD_MAKEBOARD_MINI 1134 // MakeBoard Mini v2.1.2 by MicroMake
|
||||
#define BOARD_TRIGORILLA_13 1135 // TriGorilla Anycubic version 1.3-based on RAMPS EFB
|
||||
#define BOARD_TRIGORILLA_14 1136 // ... Ver 1.4
|
||||
#define BOARD_TRIGORILLA_14_11 1137 // ... Rev 1.1 (new servo pin order)
|
||||
#define BOARD_RAMPS_ENDER_4 1138 // Creality: Ender-4, CR-8
|
||||
#define BOARD_RAMPS_CREALITY 1139 // Creality: CR10S, CR20, CR-X
|
||||
#define BOARD_DAGOMA_F5 1140 // Dagoma F5
|
||||
#define BOARD_FYSETC_F6_13 1141 // FYSETC F6 1.3
|
||||
#define BOARD_FYSETC_F6_14 1142 // FYSETC F6 1.4
|
||||
#define BOARD_DUPLICATOR_I3_PLUS 1143 // Wanhao Duplicator i3 Plus
|
||||
#define BOARD_VORON 1144 // VORON Design
|
||||
#define BOARD_TRONXY_V3_1_0 1145 // Tronxy TRONXY-V3-1.0
|
||||
#define BOARD_Z_BOLT_X_SERIES 1146 // Z-Bolt X Series
|
||||
#define BOARD_TT_OSCAR 1147 // TT OSCAR
|
||||
#define BOARD_OVERLORD 1148 // Overlord/Overlord Pro
|
||||
#define BOARD_HJC2560C_REV1 1149 // ADIMLab Gantry v1
|
||||
#define BOARD_HJC2560C_REV2 1150 // ADIMLab Gantry v2
|
||||
#define BOARD_TANGO 1151 // BIQU Tango V1
|
||||
#define BOARD_MKS_GEN_L_V2 1152 // MKS GEN L V2
|
||||
#define BOARD_MKS_GEN_L_V21 1153 // MKS GEN L V2.1
|
||||
#define BOARD_COPYMASTER_3D 1154 // Copymaster 3D
|
||||
#define BOARD_ORTUR_4 1155 // Ortur 4
|
||||
#define BOARD_TENLOG_D3_HERO 1156 // Tenlog D3 Hero IDEX printer
|
||||
#define BOARD_TENLOG_MB1_V23 1157 // Tenlog D3, D5, D6 IDEX Printer
|
||||
#define BOARD_RAMPS_S_12_EEFB 1158 // Ramps S 1.2 by Sakul.cz (Power outputs: Hotend0, Hotend1, Fan, Bed)
|
||||
#define BOARD_RAMPS_S_12_EEEB 1159 // Ramps S 1.2 by Sakul.cz (Power outputs: Hotend0, Hotend1, Hotend2, Bed)
|
||||
#define BOARD_RAMPS_S_12_EFFB 1160 // Ramps S 1.2 by Sakul.cz (Power outputs: Hotend, Fan0, Fan1, Bed)
|
||||
#define BOARD_LONGER3D_LK1_PRO 1161 // Longer LK1 PRO / Alfawise U20 Pro (PRO version)
|
||||
#define BOARD_LONGER3D_LKx_PRO 1162 // Longer LKx PRO / Alfawise Uxx Pro (PRO version)
|
||||
#define BOARD_ZRIB_V53 1163 // Zonestar zrib V5.3 (Chinese RAMPS replica)
|
||||
#define BOARD_PXMALION_CORE_I3 1164 // Pxmalion Core I3
|
||||
#define BOARD_PANOWIN_CUTLASS 1165 // Panowin Cutlass (as found in the Panowin F1)
|
||||
#define BOARD_KODAMA_BARDO 1166 // Kodama Bardo V1.x (as found in the Kodama Trinus)
|
||||
#define BOARD_DAGOMA_D6 1167 // Dagoma D6 (as found in the Dagoma DiscoUltimate V2 TMC)
|
||||
#define BOARD_XTLW_MFF_V1 1168 // XTLW MFF V1.0
|
||||
#define BOARD_XTLW_MFF_V2 1169 // XTLW MFF V2.0
|
||||
#define BOARD_ZRIB_V20 1115 // Zonestar zrib V2.0 (Chinese RAMPS replica)
|
||||
#define BOARD_ZRIB_V52 1116 // Zonestar zrib V5.2 (Chinese RAMPS replica)
|
||||
#define BOARD_ZRIB_V53 1117 // Zonestar zrib V5.3 (Chinese RAMPS replica)
|
||||
#define BOARD_FELIX2 1118 // Felix 2.0+ Electronics Board (RAMPS like)
|
||||
#define BOARD_RIGIDBOARD 1119 // Invent-A-Part RigidBoard
|
||||
#define BOARD_RIGIDBOARD_V2 1120 // Invent-A-Part RigidBoard V2
|
||||
#define BOARD_SAINSMART_2IN1 1121 // Sainsmart 2-in-1 board
|
||||
#define BOARD_ULTIMAKER 1122 // Ultimaker
|
||||
#define BOARD_ULTIMAKER_OLD 1123 // Ultimaker (Older electronics. Pre 1.5.4. This is rare)
|
||||
#define BOARD_AZTEEG_X3 1124 // Azteeg X3
|
||||
#define BOARD_AZTEEG_X3_PRO 1125 // Azteeg X3 Pro
|
||||
#define BOARD_ULTIMAIN_2 1126 // Ultimainboard 2.x (Uses TEMP_SENSOR 20)
|
||||
#define BOARD_RUMBA 1127 // Rumba
|
||||
#define BOARD_RUMBA_RAISE3D 1128 // Raise3D N series Rumba derivative
|
||||
#define BOARD_RL200 1129 // Rapide Lite 200 (v1, low-cost RUMBA clone with drv)
|
||||
#define BOARD_FORMBOT_TREX2PLUS 1130 // Formbot T-Rex 2 Plus
|
||||
#define BOARD_FORMBOT_TREX3 1131 // Formbot T-Rex 3
|
||||
#define BOARD_FORMBOT_RAPTOR 1132 // Formbot Raptor
|
||||
#define BOARD_FORMBOT_RAPTOR2 1133 // Formbot Raptor 2
|
||||
#define BOARD_BQ_ZUM_MEGA_3D 1134 // bq ZUM Mega 3D
|
||||
#define BOARD_MAKEBOARD_MINI 1135 // MakeBoard Mini v2.1.2 by MicroMake
|
||||
#define BOARD_TRIGORILLA_13 1136 // TriGorilla Anycubic version 1.3-based on RAMPS EFB
|
||||
#define BOARD_TRIGORILLA_14 1137 // ... Ver 1.4
|
||||
#define BOARD_TRIGORILLA_14_11 1138 // ... Rev 1.1 (new servo pin order)
|
||||
#define BOARD_RAMPS_ENDER_4 1139 // Creality: Ender-4, CR-8
|
||||
#define BOARD_RAMPS_CREALITY 1140 // Creality: CR10S, CR20, CR-X
|
||||
#define BOARD_DAGOMA_F5 1141 // Dagoma F5
|
||||
#define BOARD_DAGOMA_D6 1142 // Dagoma D6 (as found in the Dagoma DiscoUltimate V2 TMC)
|
||||
#define BOARD_FYSETC_F6_13 1143 // FYSETC F6 1.3
|
||||
#define BOARD_FYSETC_F6_14 1144 // FYSETC F6 1.4
|
||||
#define BOARD_DUPLICATOR_I3_PLUS 1145 // Wanhao Duplicator i3 Plus
|
||||
#define BOARD_VORON 1146 // VORON Design
|
||||
#define BOARD_TRONXY_V3_1_0 1147 // Tronxy TRONXY-V3-1.0
|
||||
#define BOARD_Z_BOLT_X_SERIES 1148 // Z-Bolt X Series
|
||||
#define BOARD_TT_OSCAR 1149 // TT OSCAR
|
||||
#define BOARD_TANGO 1150 // BIQU Tango V1
|
||||
#define BOARD_MKS_GEN_L_V2 1151 // MKS GEN L V2
|
||||
#define BOARD_MKS_GEN_L_V21 1152 // MKS GEN L V2.1
|
||||
#define BOARD_COPYMASTER_3D 1153 // Copymaster 3D
|
||||
#define BOARD_ORTUR_4 1154 // Ortur 4
|
||||
#define BOARD_TENLOG_D3_HERO 1155 // Tenlog D3 Hero IDEX printer
|
||||
#define BOARD_TENLOG_MB1_V23 1156 // Tenlog D3, D5, D6 IDEX Printer
|
||||
#define BOARD_RAMPS_S_12_EEFB 1157 // Ramps S 1.2 by Sakul.cz (Power outputs: Hotend0, Hotend1, Fan, Bed)
|
||||
#define BOARD_RAMPS_S_12_EEEB 1158 // Ramps S 1.2 by Sakul.cz (Power outputs: Hotend0, Hotend1, Hotend2, Bed)
|
||||
#define BOARD_RAMPS_S_12_EFFB 1159 // Ramps S 1.2 by Sakul.cz (Power outputs: Hotend, Fan0, Fan1, Bed)
|
||||
#define BOARD_LONGER3D_LK1_PRO 1160 // Longer LK1 PRO / Alfawise U20 Pro (PRO version)
|
||||
#define BOARD_LONGER3D_LKx_PRO 1161 // Longer LKx PRO / Alfawise Uxx Pro (PRO version)
|
||||
#define BOARD_PXMALION_CORE_I3 1162 // Pxmalion Core I3
|
||||
#define BOARD_PANOWIN_CUTLASS 1163 // Panowin Cutlass (as found in the Panowin F1)
|
||||
#define BOARD_KODAMA_BARDO 1164 // Kodama Bardo V1.x (as found in the Kodama Trinus)
|
||||
#define BOARD_XTLW_MFF_V1 1165 // XTLW MFF V1.0
|
||||
#define BOARD_XTLW_MFF_V2 1166 // XTLW MFF V2.0
|
||||
|
||||
//
|
||||
// RAMBo and derivatives
|
||||
@@ -169,20 +166,23 @@
|
||||
#define BOARD_GT2560_REV_A_PLUS 1315 // Geeetech GT2560 Rev A+ (with auto level probe)
|
||||
#define BOARD_GT2560_REV_B 1316 // Geeetech GT2560 Rev B
|
||||
#define BOARD_GT2560_V3 1317 // Geeetech GT2560 Rev B for A10(M/T/D)
|
||||
#define BOARD_GT2560_V4 1318 // Geeetech GT2560 Rev B for A10(M/T/D)
|
||||
#define BOARD_GT2560_V3_MC2 1319 // Geeetech GT2560 Rev B for Mecreator2
|
||||
#define BOARD_GT2560_V3_A20 1320 // Geeetech GT2560 Rev B for A20(M/T/D)
|
||||
#define BOARD_EINSTART_S 1321 // Einstart retrofit
|
||||
#define BOARD_WANHAO_ONEPLUS 1322 // Wanhao 0ne+ i3 Mini
|
||||
#define BOARD_LEAPFROG_XEED2015 1323 // Leapfrog Xeed 2015
|
||||
#define BOARD_PICA_REVB 1324 // PICA Shield (original version)
|
||||
#define BOARD_PICA 1325 // PICA Shield (rev C or later)
|
||||
#define BOARD_INTAMSYS40 1326 // Intamsys 4.0 (Funmat HT)
|
||||
#define BOARD_MALYAN_M180 1327 // Malyan M180 Mainboard Version 2 (no display function, direct G-code only)
|
||||
#define BOARD_GT2560_V4_A20 1328 // Geeetech GT2560 Rev B for A20(M/T/D)
|
||||
#define BOARD_PROTONEER_CNC_SHIELD_V3 1329 // Mega controller & Protoneer CNC Shield V3.00
|
||||
#define BOARD_WEEDO_62A 1330 // WEEDO 62A board (TINA2, Monoprice Cadet, etc.)
|
||||
#define BOARD_GT2560_V41B 1331 // Geeetech GT2560 V4.1B for A10(M/T/D)
|
||||
#define BOARD_GT2560_V3_MC2 1318 // Geeetech GT2560 Rev B for Mecreator2
|
||||
#define BOARD_GT2560_V3_A20 1319 // Geeetech GT2560 Rev B for A20(M/T/D)
|
||||
#define BOARD_GT2560_V4 1320 // Geeetech GT2560 Rev B for A10(M/T/D)
|
||||
#define BOARD_GT2560_V4_A20 1321 // Geeetech GT2560 Rev B for A20(M/T/D)
|
||||
#define BOARD_EINSTART_S 1322 // Einstart retrofit
|
||||
#define BOARD_WANHAO_ONEPLUS 1323 // Wanhao 0ne+ i3 Mini
|
||||
#define BOARD_OVERLORD 1324 // Overlord/Overlord Pro
|
||||
#define BOARD_HJC2560C_REV1 1325 // ADIMLab Gantry v1
|
||||
#define BOARD_HJC2560C_REV2 1326 // ADIMLab Gantry v2
|
||||
#define BOARD_LEAPFROG_XEED2015 1327 // Leapfrog Xeed 2015
|
||||
#define BOARD_PICA_REVB 1328 // PICA Shield (original version)
|
||||
#define BOARD_PICA 1329 // PICA Shield (rev C or later)
|
||||
#define BOARD_INTAMSYS40 1330 // Intamsys 4.0 (Funmat HT)
|
||||
#define BOARD_MALYAN_M180 1331 // Malyan M180 Mainboard Version 2 (no display function, direct G-code only)
|
||||
#define BOARD_PROTONEER_CNC_SHIELD_V3 1332 // Mega controller & Protoneer CNC Shield V3.00
|
||||
#define BOARD_WEEDO_62A 1333 // WEEDO 62A board (TINA2, Monoprice Cadet, etc.)
|
||||
#define BOARD_GT2560_V41B 1334 // Geeetech GT2560 V4.1B for A10(M/T/D)
|
||||
|
||||
//
|
||||
// ATmega1281, ATmega2561
|
||||
@@ -328,6 +328,7 @@
|
||||
#define BOARD_BTT_MANTA_M5P_V1_0 4004 // BigTreeTech Manta M5P V1.0 (STM32G0B1RE)
|
||||
#define BOARD_BTT_MANTA_M8P_V1_0 4005 // BigTreeTech Manta M8P V1.0 (STM32G0B1VE)
|
||||
#define BOARD_BTT_MANTA_M8P_V1_1 4006 // BigTreeTech Manta M8P V1.1 (STM32G0B1VE)
|
||||
#define BOARD_BTT_SKRAT_V1_0 4007 // BigTreeTech SKRat V1.0 (STM32G0B1VE)
|
||||
|
||||
//
|
||||
// STM32 ARM Cortex-M3
|
||||
@@ -339,62 +340,62 @@
|
||||
#define BOARD_MALYAN_M200 5003 // STM32C8 Libmaple-based STM32F1 controller
|
||||
#define BOARD_STM3R_MINI 5004 // STM32F103RE Libmaple-based STM32F1 controller
|
||||
#define BOARD_GTM32_PRO_VB 5005 // STM32F103VE controller
|
||||
#define BOARD_GTM32_MINI 5006 // STM32F103VE controller
|
||||
#define BOARD_GTM32_MINI_A30 5007 // STM32F103VE controller
|
||||
#define BOARD_GTM32_REV_B 5008 // STM32F103VE controller
|
||||
#define BOARD_MORPHEUS 5009 // STM32F103C8 / STM32F103CB Libmaple-based STM32F1 controller
|
||||
#define BOARD_CHITU3D 5010 // Chitu3D (STM32F103RE)
|
||||
#define BOARD_MKS_ROBIN 5011 // MKS Robin (STM32F103ZE)
|
||||
#define BOARD_MKS_ROBIN_MINI 5012 // MKS Robin Mini (STM32F103VE)
|
||||
#define BOARD_MKS_ROBIN_NANO 5013 // MKS Robin Nano (STM32F103VE)
|
||||
#define BOARD_MKS_ROBIN_NANO_V2 5014 // MKS Robin Nano V2 (STM32F103VE)
|
||||
#define BOARD_MKS_ROBIN_LITE 5015 // MKS Robin Lite/Lite2 (STM32F103RC)
|
||||
#define BOARD_MKS_ROBIN_LITE3 5016 // MKS Robin Lite3 (STM32F103RC)
|
||||
#define BOARD_MKS_ROBIN_PRO 5017 // MKS Robin Pro (STM32F103ZE)
|
||||
#define BOARD_MKS_ROBIN_E3 5018 // MKS Robin E3 (STM32F103RC)
|
||||
#define BOARD_MKS_ROBIN_E3_V1_1 5019 // MKS Robin E3 V1.1 (STM32F103RC)
|
||||
#define BOARD_MKS_ROBIN_E3D 5020 // MKS Robin E3D (STM32F103RC)
|
||||
#define BOARD_MKS_ROBIN_E3D_V1_1 5021 // MKS Robin E3D V1.1 (STM32F103RC)
|
||||
#define BOARD_MKS_ROBIN_E3P 5022 // MKS Robin E3P (STM32F103VE)
|
||||
#define BOARD_BTT_SKR_MINI_V1_1 5023 // BigTreeTech SKR Mini v1.1 (STM32F103RC)
|
||||
#define BOARD_BTT_SKR_MINI_E3_V1_0 5024 // BigTreeTech SKR Mini E3 (STM32F103RC)
|
||||
#define BOARD_BTT_SKR_MINI_E3_V1_2 5025 // BigTreeTech SKR Mini E3 V1.2 (STM32F103RC)
|
||||
#define BOARD_BTT_SKR_MINI_E3_V2_0 5026 // BigTreeTech SKR Mini E3 V2.0 (STM32F103RC / STM32F103RE)
|
||||
#define BOARD_BTT_SKR_MINI_MZ_V1_0 5027 // BigTreeTech SKR Mini MZ V1.0 (STM32F103RC)
|
||||
#define BOARD_BTT_SKR_E3_DIP 5028 // BigTreeTech SKR E3 DIP V1.0 (STM32F103RC / STM32F103RE)
|
||||
#define BOARD_BTT_SKR_CR6 5029 // BigTreeTech SKR CR6 v1.0 (STM32F103RE)
|
||||
#define BOARD_JGAURORA_A5S_A1 5030 // JGAurora A5S A1 (STM32F103ZE)
|
||||
#define BOARD_FYSETC_AIO_II 5031 // FYSETC AIO_II (STM32F103RC)
|
||||
#define BOARD_FYSETC_CHEETAH 5032 // FYSETC Cheetah (STM32F103RC)
|
||||
#define BOARD_FYSETC_CHEETAH_V12 5033 // FYSETC Cheetah V1.2 (STM32F103RC)
|
||||
#define BOARD_LONGER3D_LK 5034 // Longer3D LK1/2 - Alfawise U20/U20+/U30 (STM32F103VE)
|
||||
#define BOARD_CCROBOT_MEEB_3DP 5035 // ccrobot-online.com MEEB_3DP (STM32F103RC)
|
||||
#define BOARD_CHITU3D_V5 5036 // Chitu3D TronXY X5SA V5 Board (STM32F103ZE)
|
||||
#define BOARD_CHITU3D_V6 5037 // Chitu3D TronXY X5SA V6 Board (STM32F103ZE)
|
||||
#define BOARD_CHITU3D_V9 5038 // Chitu3D TronXY X5SA V9 Board (STM32F103ZE)
|
||||
#define BOARD_CREALITY_V4 5039 // Creality v4.x (STM32F103RC / STM32F103RE)
|
||||
#define BOARD_CREALITY_V422 5040 // Creality v4.2.2 (STM32F103RC / STM32F103RE)
|
||||
#define BOARD_CREALITY_V423 5041 // Creality v4.2.3 (STM32F103RC / STM32F103RE)
|
||||
#define BOARD_CREALITY_V425 5042 // Creality v4.2.5 (STM32F103RC / STM32F103RE)
|
||||
#define BOARD_CREALITY_V427 5043 // Creality v4.2.7 (STM32F103RC / STM32F103RE)
|
||||
#define BOARD_CREALITY_V4210 5044 // Creality v4.2.10 (STM32F103RC / STM32F103RE) as found in the CR-30
|
||||
#define BOARD_CREALITY_V431 5045 // Creality v4.3.1 (STM32F103RC / STM32F103RE)
|
||||
#define BOARD_CREALITY_V431_A 5046 // Creality v4.3.1a (STM32F103RC / STM32F103RE)
|
||||
#define BOARD_CREALITY_V431_B 5047 // Creality v4.3.1b (STM32F103RC / STM32F103RE)
|
||||
#define BOARD_CREALITY_V431_C 5048 // Creality v4.3.1c (STM32F103RC / STM32F103RE)
|
||||
#define BOARD_CREALITY_V431_D 5049 // Creality v4.3.1d (STM32F103RC / STM32F103RE)
|
||||
#define BOARD_CREALITY_V452 5050 // Creality v4.5.2 (STM32F103RC / STM32F103RE)
|
||||
#define BOARD_CREALITY_V453 5051 // Creality v4.5.3 (STM32F103RC / STM32F103RE)
|
||||
#define BOARD_CREALITY_V521 5052 // Creality v5.2.1 (STM32F103VE) as found in the SV04
|
||||
#define BOARD_CREALITY_V24S1 5053 // Creality v2.4.S1 (STM32F103RC / STM32F103RE) CR-FDM-v2.4.S1_v101 as found in the Ender-7
|
||||
#define BOARD_CREALITY_V24S1_301 5054 // Creality v2.4.S1_301 (STM32F103RC / STM32F103RE) CR-FDM-v24S1_301 as found in the Ender-3 S1
|
||||
#define BOARD_CREALITY_V25S1 5055 // Creality v2.5.S1 (STM32F103RE) CR-FDM-v2.5.S1_100 as found in the CR-10 Smart Pro
|
||||
#define BOARD_TRIGORILLA_PRO 5056 // Trigorilla Pro (STM32F103ZE)
|
||||
#define BOARD_FLY_MINI 5057 // FLYmaker FLY MINI (STM32F103RC)
|
||||
#define BOARD_FLSUN_HISPEED 5058 // FLSUN HiSpeedV1 (STM32F103VE)
|
||||
#define BOARD_BEAST 5059 // STM32F103RE Libmaple-based controller
|
||||
#define BOARD_MINGDA_MPX_ARM_MINI 5060 // STM32F103ZE Mingda MD-16
|
||||
#define BOARD_GTM32_PRO_VD 5061 // STM32F103VE controller
|
||||
#define BOARD_GTM32_PRO_VD 5006 // STM32F103VE controller
|
||||
#define BOARD_GTM32_MINI 5007 // STM32F103VE controller
|
||||
#define BOARD_GTM32_MINI_A30 5008 // STM32F103VE controller
|
||||
#define BOARD_GTM32_REV_B 5009 // STM32F103VE controller
|
||||
#define BOARD_MORPHEUS 5010 // STM32F103C8 / STM32F103CB Libmaple-based STM32F1 controller
|
||||
#define BOARD_CHITU3D 5011 // Chitu3D (STM32F103RE)
|
||||
#define BOARD_MKS_ROBIN 5012 // MKS Robin (STM32F103ZE)
|
||||
#define BOARD_MKS_ROBIN_MINI 5013 // MKS Robin Mini (STM32F103VE)
|
||||
#define BOARD_MKS_ROBIN_NANO 5014 // MKS Robin Nano (STM32F103VE)
|
||||
#define BOARD_MKS_ROBIN_NANO_V2 5015 // MKS Robin Nano V2 (STM32F103VE)
|
||||
#define BOARD_MKS_ROBIN_LITE 5016 // MKS Robin Lite/Lite2 (STM32F103RC)
|
||||
#define BOARD_MKS_ROBIN_LITE3 5017 // MKS Robin Lite3 (STM32F103RC)
|
||||
#define BOARD_MKS_ROBIN_PRO 5018 // MKS Robin Pro (STM32F103ZE)
|
||||
#define BOARD_MKS_ROBIN_E3 5019 // MKS Robin E3 (STM32F103RC)
|
||||
#define BOARD_MKS_ROBIN_E3_V1_1 5020 // MKS Robin E3 V1.1 (STM32F103RC)
|
||||
#define BOARD_MKS_ROBIN_E3D 5021 // MKS Robin E3D (STM32F103RC)
|
||||
#define BOARD_MKS_ROBIN_E3D_V1_1 5022 // MKS Robin E3D V1.1 (STM32F103RC)
|
||||
#define BOARD_MKS_ROBIN_E3P 5023 // MKS Robin E3P (STM32F103VE)
|
||||
#define BOARD_BTT_SKR_MINI_V1_1 5024 // BigTreeTech SKR Mini v1.1 (STM32F103RC)
|
||||
#define BOARD_BTT_SKR_MINI_E3_V1_0 5025 // BigTreeTech SKR Mini E3 (STM32F103RC)
|
||||
#define BOARD_BTT_SKR_MINI_E3_V1_2 5026 // BigTreeTech SKR Mini E3 V1.2 (STM32F103RC)
|
||||
#define BOARD_BTT_SKR_MINI_E3_V2_0 5027 // BigTreeTech SKR Mini E3 V2.0 (STM32F103RC / STM32F103RE)
|
||||
#define BOARD_BTT_SKR_MINI_MZ_V1_0 5028 // BigTreeTech SKR Mini MZ V1.0 (STM32F103RC)
|
||||
#define BOARD_BTT_SKR_E3_DIP 5029 // BigTreeTech SKR E3 DIP V1.0 (STM32F103RC / STM32F103RE)
|
||||
#define BOARD_BTT_SKR_CR6 5030 // BigTreeTech SKR CR6 v1.0 (STM32F103RE)
|
||||
#define BOARD_JGAURORA_A5S_A1 5031 // JGAurora A5S A1 (STM32F103ZE)
|
||||
#define BOARD_FYSETC_AIO_II 5032 // FYSETC AIO_II (STM32F103RC)
|
||||
#define BOARD_FYSETC_CHEETAH 5033 // FYSETC Cheetah (STM32F103RC)
|
||||
#define BOARD_FYSETC_CHEETAH_V12 5034 // FYSETC Cheetah V1.2 (STM32F103RC)
|
||||
#define BOARD_LONGER3D_LK 5035 // Longer3D LK1/2 - Alfawise U20/U20+/U30 (STM32F103VE)
|
||||
#define BOARD_CCROBOT_MEEB_3DP 5036 // ccrobot-online.com MEEB_3DP (STM32F103RC)
|
||||
#define BOARD_CHITU3D_V5 5037 // Chitu3D TronXY X5SA V5 Board (STM32F103ZE)
|
||||
#define BOARD_CHITU3D_V6 5038 // Chitu3D TronXY X5SA V6 Board (STM32F103ZE)
|
||||
#define BOARD_CHITU3D_V9 5039 // Chitu3D TronXY X5SA V9 Board (STM32F103ZE)
|
||||
#define BOARD_CREALITY_V4 5040 // Creality v4.x (STM32F103RC / STM32F103RE)
|
||||
#define BOARD_CREALITY_V422 5041 // Creality v4.2.2 (STM32F103RC / STM32F103RE)
|
||||
#define BOARD_CREALITY_V423 5042 // Creality v4.2.3 (STM32F103RC / STM32F103RE)
|
||||
#define BOARD_CREALITY_V425 5043 // Creality v4.2.5 (STM32F103RC / STM32F103RE)
|
||||
#define BOARD_CREALITY_V427 5044 // Creality v4.2.7 (STM32F103RC / STM32F103RE)
|
||||
#define BOARD_CREALITY_V4210 5045 // Creality v4.2.10 (STM32F103RC / STM32F103RE) as found in the CR-30
|
||||
#define BOARD_CREALITY_V431 5046 // Creality v4.3.1 (STM32F103RC / STM32F103RE)
|
||||
#define BOARD_CREALITY_V431_A 5047 // Creality v4.3.1a (STM32F103RC / STM32F103RE)
|
||||
#define BOARD_CREALITY_V431_B 5048 // Creality v4.3.1b (STM32F103RC / STM32F103RE)
|
||||
#define BOARD_CREALITY_V431_C 5049 // Creality v4.3.1c (STM32F103RC / STM32F103RE)
|
||||
#define BOARD_CREALITY_V431_D 5050 // Creality v4.3.1d (STM32F103RC / STM32F103RE)
|
||||
#define BOARD_CREALITY_V452 5051 // Creality v4.5.2 (STM32F103RC / STM32F103RE)
|
||||
#define BOARD_CREALITY_V453 5052 // Creality v4.5.3 (STM32F103RC / STM32F103RE)
|
||||
#define BOARD_CREALITY_V521 5053 // Creality v5.2.1 (STM32F103VE) as found in the SV04
|
||||
#define BOARD_CREALITY_V24S1 5054 // Creality v2.4.S1 (STM32F103RC / STM32F103RE) CR-FDM-v2.4.S1_v101 as found in the Ender-7
|
||||
#define BOARD_CREALITY_V24S1_301 5055 // Creality v2.4.S1_301 (STM32F103RC / STM32F103RE) CR-FDM-v24S1_301 as found in the Ender-3 S1
|
||||
#define BOARD_CREALITY_V25S1 5056 // Creality v2.5.S1 (STM32F103RE) CR-FDM-v2.5.S1_100 as found in the CR-10 Smart Pro
|
||||
#define BOARD_TRIGORILLA_PRO 5057 // Trigorilla Pro (STM32F103ZE)
|
||||
#define BOARD_FLY_MINI 5058 // FLYmaker FLY MINI (STM32F103RC)
|
||||
#define BOARD_FLSUN_HISPEED 5059 // FLSUN HiSpeedV1 (STM32F103VE)
|
||||
#define BOARD_BEAST 5060 // STM32F103RE Libmaple-based controller
|
||||
#define BOARD_MINGDA_MPX_ARM_MINI 5061 // STM32F103ZE Mingda MD-16
|
||||
#define BOARD_ZONESTAR_ZM3E2 5062 // Zonestar ZM3E2 (STM32F103RC)
|
||||
#define BOARD_ZONESTAR_ZM3E4 5063 // Zonestar ZM3E4 V1 (STM32F103VC)
|
||||
#define BOARD_ZONESTAR_ZM3E4V2 5064 // Zonestar ZM3E4 V2 (STM32F103VC)
|
||||
@@ -423,8 +424,8 @@
|
||||
#define BOARD_RUMBA32_V1_1 5202 // RUMBA32 STM32F446VE based controller from Aus3D
|
||||
#define BOARD_RUMBA32_MKS 5203 // RUMBA32 STM32F446VE based controller from Makerbase
|
||||
#define BOARD_RUMBA32_BTT 5204 // RUMBA32 STM32F446VE based controller from BIGTREETECH
|
||||
#define BOARD_BLACK_STM32F407VE 5205 // BLACK_STM32F407VE
|
||||
#define BOARD_BLACK_STM32F407ZE 5206 // BLACK_STM32F407ZE
|
||||
#define BOARD_BLACK_STM32F407VE 5205 // Black STM32F407VE development board
|
||||
#define BOARD_BLACK_STM32F407ZE 5206 // Black STM32F407ZE development board
|
||||
#define BOARD_BTT_SKR_MINI_E3_V3_0_1 5207 // BigTreeTech SKR Mini E3 V3.0.1 (STM32F401RC)
|
||||
#define BOARD_BTT_SKR_PRO_V1_1 5208 // BigTreeTech SKR Pro v1.1 (STM32F407ZG)
|
||||
#define BOARD_BTT_SKR_PRO_V1_2 5209 // BigTreeTech SKR Pro v1.2 (STM32F407ZG)
|
||||
@@ -442,33 +443,33 @@
|
||||
#define BOARD_FYSETC_S6 5221 // FYSETC S6 (STM32F446VE)
|
||||
#define BOARD_FYSETC_S6_V2_0 5222 // FYSETC S6 v2.0 (STM32F446VE)
|
||||
#define BOARD_FYSETC_SPIDER 5223 // FYSETC Spider (STM32F446VE)
|
||||
#define BOARD_FLYF407ZG 5224 // FLYmaker FLYF407ZG (STM32F407ZG)
|
||||
#define BOARD_MKS_ROBIN2 5225 // MKS Robin2 V1.0 (STM32F407ZE)
|
||||
#define BOARD_MKS_ROBIN_PRO_V2 5226 // MKS Robin Pro V2 (STM32F407VE)
|
||||
#define BOARD_MKS_ROBIN_NANO_V3 5227 // MKS Robin Nano V3 (STM32F407VG)
|
||||
#define BOARD_MKS_ROBIN_NANO_V3_1 5228 // MKS Robin Nano V3.1 (STM32F407VE)
|
||||
#define BOARD_MKS_MONSTER8_V1 5229 // MKS Monster8 V1 (STM32F407VE)
|
||||
#define BOARD_MKS_MONSTER8_V2 5230 // MKS Monster8 V2 (STM32F407VE)
|
||||
#define BOARD_ANET_ET4 5231 // ANET ET4 V1.x (STM32F407VG)
|
||||
#define BOARD_ANET_ET4P 5232 // ANET ET4P V1.x (STM32F407VG)
|
||||
#define BOARD_FYSETC_CHEETAH_V20 5233 // FYSETC Cheetah V2.0 (STM32F401RC)
|
||||
#define BOARD_TH3D_EZBOARD_V2 5234 // TH3D EZBoard v2.0 (STM32F405RG)
|
||||
#define BOARD_OPULO_LUMEN_REV3 5235 // Opulo Lumen PnP Controller REV3 (STM32F407VE / STM32F407VG)
|
||||
#define BOARD_MKS_ROBIN_NANO_V1_3_F4 5236 // MKS Robin Nano V1.3 and MKS Robin Nano-S V1.3 (STM32F407VE)
|
||||
#define BOARD_MKS_EAGLE 5237 // MKS Eagle (STM32F407VE)
|
||||
#define BOARD_ARTILLERY_RUBY 5238 // Artillery Ruby (STM32F401RC)
|
||||
#define BOARD_FYSETC_SPIDER_V2_2 5239 // FYSETC Spider V2.2 (STM32F446VE)
|
||||
#define BOARD_CREALITY_V24S1_301F4 5240 // Creality v2.4.S1_301F4 (STM32F401RC) as found in the Ender-3 S1 F4
|
||||
#define BOARD_CREALITY_CR4NTXXC10 5241 // Creality E3 Free-runs Silent Motherboard (STM32F401RET6)
|
||||
#define BOARD_OPULO_LUMEN_REV4 5242 // Opulo Lumen PnP Controller REV4 (STM32F407VE / STM32F407VG)
|
||||
#define BOARD_FYSETC_SPIDER_KING407 5243 // FYSETC Spider King407 (STM32F407ZG)
|
||||
#define BOARD_MKS_SKIPR_V1 5244 // MKS SKIPR v1.0 all-in-one board (STM32F407VE)
|
||||
#define BOARD_TRONXY_CXY_446_V10 5245 // TRONXY CXY-446-V10-220413/CXY-V6-191121 (STM32F446ZE)
|
||||
#define BOARD_CREALITY_F401RE 5246 // Creality CR4NS200141C13 (STM32F401RE) as found in the Ender-5 S1
|
||||
#define BOARD_BLACKPILL_CUSTOM 5247 // Custom board based on STM32F401CDU6.
|
||||
#define BOARD_I3DBEEZ9_V1 5248 // I3DBEEZ9 V1 (STM32F407ZG)
|
||||
#define BOARD_MELLOW_FLY_E3_V2 5249 // Mellow Fly E3 V2 (STM32F407VG)
|
||||
#define BOARD_FYSETC_CHEETAH_V30 5250 // FYSETC Cheetah V3.0 (STM32F446RC)
|
||||
#define BOARD_FYSETC_SPIDER_V2_2 5224 // FYSETC Spider V2.2 (STM32F446VE)
|
||||
#define BOARD_FLYF407ZG 5225 // FLYmaker FLYF407ZG (STM32F407ZG)
|
||||
#define BOARD_MKS_ROBIN2 5226 // MKS Robin2 V1.0 (STM32F407ZE)
|
||||
#define BOARD_MKS_ROBIN_PRO_V2 5227 // MKS Robin Pro V2 (STM32F407VE)
|
||||
#define BOARD_MKS_ROBIN_NANO_V3 5228 // MKS Robin Nano V3 (STM32F407VG)
|
||||
#define BOARD_MKS_ROBIN_NANO_V3_1 5229 // MKS Robin Nano V3.1 (STM32F407VE)
|
||||
#define BOARD_MKS_MONSTER8_V1 5230 // MKS Monster8 V1 (STM32F407VE)
|
||||
#define BOARD_MKS_MONSTER8_V2 5231 // MKS Monster8 V2 (STM32F407VE)
|
||||
#define BOARD_ANET_ET4 5232 // ANET ET4 V1.x (STM32F407VG)
|
||||
#define BOARD_ANET_ET4P 5233 // ANET ET4P V1.x (STM32F407VG)
|
||||
#define BOARD_FYSETC_CHEETAH_V20 5234 // FYSETC Cheetah V2.0 (STM32F401RC)
|
||||
#define BOARD_FYSETC_CHEETAH_V30 5235 // FYSETC Cheetah V3.0 (STM32F446RC)
|
||||
#define BOARD_TH3D_EZBOARD_V2 5236 // TH3D EZBoard v2.0 (STM32F405RG)
|
||||
#define BOARD_OPULO_LUMEN_REV3 5237 // Opulo Lumen PnP Controller REV3 (STM32F407VE / STM32F407VG)
|
||||
#define BOARD_MKS_ROBIN_NANO_V1_3_F4 5238 // MKS Robin Nano V1.3 and MKS Robin Nano-S V1.3 (STM32F407VE)
|
||||
#define BOARD_MKS_EAGLE 5239 // MKS Eagle (STM32F407VE)
|
||||
#define BOARD_ARTILLERY_RUBY 5240 // Artillery Ruby (STM32F401RC)
|
||||
#define BOARD_CREALITY_V24S1_301F4 5241 // Creality v2.4.S1_301F4 (STM32F401RC) as found in the Ender-3 S1 F4
|
||||
#define BOARD_CREALITY_CR4NTXXC10 5242 // Creality E3 Free-runs Silent Motherboard (STM32F401RET6)
|
||||
#define BOARD_OPULO_LUMEN_REV4 5243 // Opulo Lumen PnP Controller REV4 (STM32F407VE / STM32F407VG)
|
||||
#define BOARD_FYSETC_SPIDER_KING407 5244 // FYSETC Spider King407 (STM32F407ZG)
|
||||
#define BOARD_MKS_SKIPR_V1 5245 // MKS SKIPR v1.0 all-in-one board (STM32F407VE)
|
||||
#define BOARD_TRONXY_CXY_446_V10 5246 // TRONXY CXY-446-V10-220413/CXY-V6-191121 (STM32F446ZE)
|
||||
#define BOARD_CREALITY_F401RE 5247 // Creality CR4NS200141C13 (STM32F401RE) as found in the Ender-5 S1
|
||||
#define BOARD_BLACKPILL_CUSTOM 5248 // Custom board based on STM32F401CDU6.
|
||||
#define BOARD_I3DBEEZ9_V1 5249 // I3DBEEZ9 V1 (STM32F407ZG)
|
||||
#define BOARD_MELLOW_FLY_E3_V2 5250 // Mellow Fly E3 V2 (STM32F407VG)
|
||||
#define BOARD_BLACKBEEZMINI_V1 5251 // BlackBeezMini V1 (STM32F401CCU6)
|
||||
#define BOARD_XTLW_CLIMBER_8TH 5252 // XTLW Climber-8th (STM32F407VGT6)
|
||||
|
||||
@@ -482,18 +483,18 @@
|
||||
//
|
||||
|
||||
#define BOARD_REMRAM_V1 6000 // RemRam v1
|
||||
#define BOARD_TEENSY41 6001 // Teensy 4.1
|
||||
#define BOARD_T41U5XBB 6002 // T41U5XBB Teensy 4.1 breakout board
|
||||
#define BOARD_NUCLEO_F767ZI 6003 // ST NUCLEO-F767ZI Dev Board
|
||||
#define BOARD_BTT_SKR_SE_BX_V2 6004 // BigTreeTech SKR SE BX V2.0 (STM32H743II)
|
||||
#define BOARD_BTT_SKR_SE_BX_V3 6005 // BigTreeTech SKR SE BX V3.0 (STM32H743II)
|
||||
#define BOARD_BTT_SKR_V3_0 6006 // BigTreeTech SKR V3.0 (STM32H743VI / STM32H723VG)
|
||||
#define BOARD_BTT_SKR_V3_0_EZ 6007 // BigTreeTech SKR V3.0 EZ (STM32H743VI / STM32H723VG)
|
||||
#define BOARD_BTT_OCTOPUS_MAX_EZ_V1_0 6008 // BigTreeTech Octopus Max EZ V1.0 (STM32H723ZE)
|
||||
#define BOARD_BTT_OCTOPUS_PRO_V1_0_1 6009 // BigTreeTech Octopus Pro v1.0.1 (STM32H723ZE)
|
||||
#define BOARD_BTT_OCTOPUS_PRO_V1_1 6010 // BigTreeTech Octopus Pro v1.1 (STM32H723ZE)
|
||||
#define BOARD_BTT_MANTA_M8P_V2_0 6011 // BigTreeTech Manta M8P V2.0 (STM32H723ZE)
|
||||
#define BOARD_BTT_KRAKEN_V1_0 6012 // BigTreeTech Kraken v1.0 (STM32H723ZG)
|
||||
#define BOARD_NUCLEO_F767ZI 6001 // ST NUCLEO-F767ZI Dev Board
|
||||
#define BOARD_BTT_SKR_SE_BX_V2 6002 // BigTreeTech SKR SE BX V2.0 (STM32H743II)
|
||||
#define BOARD_BTT_SKR_SE_BX_V3 6003 // BigTreeTech SKR SE BX V3.0 (STM32H743II)
|
||||
#define BOARD_BTT_SKR_V3_0 6004 // BigTreeTech SKR V3.0 (STM32H743VI / STM32H723VG)
|
||||
#define BOARD_BTT_SKR_V3_0_EZ 6005 // BigTreeTech SKR V3.0 EZ (STM32H743VI / STM32H723VG)
|
||||
#define BOARD_BTT_OCTOPUS_MAX_EZ_V1_0 6006 // BigTreeTech Octopus Max EZ V1.0 (STM32H723ZE)
|
||||
#define BOARD_BTT_OCTOPUS_PRO_V1_0_1 6007 // BigTreeTech Octopus Pro v1.0.1 (STM32H723ZE)
|
||||
#define BOARD_BTT_OCTOPUS_PRO_V1_1 6008 // BigTreeTech Octopus Pro v1.1 (STM32H723ZE)
|
||||
#define BOARD_BTT_MANTA_M8P_V2_0 6009 // BigTreeTech Manta M8P V2.0 (STM32H723ZE)
|
||||
#define BOARD_BTT_KRAKEN_V1_0 6010 // BigTreeTech Kraken v1.0 (STM32H723ZG)
|
||||
#define BOARD_TEENSY41 6011 // Teensy 4.1
|
||||
#define BOARD_T41U5XBB 6012 // T41U5XBB Teensy 4.1 breakout board
|
||||
|
||||
//
|
||||
// Espressif ESP32 WiFi
|
||||
@@ -543,7 +544,7 @@
|
||||
// Simulations
|
||||
//
|
||||
|
||||
#define BOARD_SIMULATED 9999
|
||||
#define BOARD_SIMULATED 9999 // Simulated 3D Printer with LCD / TFT for development
|
||||
|
||||
#define _MB_1(B) (defined(BOARD_##B) && MOTHERBOARD==BOARD_##B)
|
||||
#define MB(V...) DO(MB,||,V)
|
||||
|
||||
+33
-21
@@ -191,6 +191,7 @@
|
||||
#define STR_ERR_HOTEND_TOO_COLD "Hotend too cold"
|
||||
#define STR_ERR_EEPROM_WRITE "Error writing to EEPROM!"
|
||||
#define STR_ERR_EEPROM_CORRUPT "EEPROM Corrupt"
|
||||
#define STR_EEPROM_INITIALIZED "EEPROM Initialized"
|
||||
|
||||
#define STR_FILAMENT_CHANGE_HEAT_LCD "Press button to heat nozzle"
|
||||
#define STR_FILAMENT_CHANGE_INSERT_LCD "Insert filament and press button"
|
||||
@@ -290,6 +291,7 @@
|
||||
#define STR_MAX_ACCELERATION "Max Acceleration (units/s2)"
|
||||
#define STR_MAX_FEEDRATES "Max feedrates (units/s)"
|
||||
#define STR_ACCELERATION_P_R_T "Acceleration (units/s2) (P<print-accel> R<retract-accel> T<travel-accel>)"
|
||||
#define STR_HOMING_FEEDRATE "Homing Feedrate"
|
||||
#define STR_TOOL_CHANGING "Tool-changing"
|
||||
#define STR_HOTEND_OFFSETS "Hotend offsets"
|
||||
#define STR_SERVO_ANGLES "Servo Angles"
|
||||
@@ -323,6 +325,37 @@
|
||||
#define STR_USER_THERMISTORS "User thermistors"
|
||||
#define STR_DELAYED_POWEROFF "Delayed poweroff"
|
||||
|
||||
//
|
||||
// General axis names
|
||||
//
|
||||
#if HAS_X_AXIS
|
||||
#define AXIS1_NAME 'X'
|
||||
#endif
|
||||
#if HAS_Y_AXIS
|
||||
#define AXIS2_NAME 'Y'
|
||||
#endif
|
||||
#if HAS_Z_AXIS
|
||||
#define AXIS3_NAME 'Z'
|
||||
#endif
|
||||
#define STR_X "X"
|
||||
#define STR_Y "Y"
|
||||
#define STR_Z "Z"
|
||||
#define STR_E "E"
|
||||
#if IS_KINEMATIC
|
||||
#define STR_A "A"
|
||||
#define STR_B "B"
|
||||
#define STR_C "C"
|
||||
#else
|
||||
#define STR_A STR_X
|
||||
#define STR_B STR_Y
|
||||
#define STR_C STR_Z
|
||||
#endif
|
||||
#define STR_X2 STR_A "2"
|
||||
#define STR_Y2 STR_B "2"
|
||||
#define STR_Z2 STR_C "2"
|
||||
#define STR_Z3 STR_C "3"
|
||||
#define STR_Z4 STR_C "4"
|
||||
|
||||
//
|
||||
// Endstop Names used by Endstops::report_states
|
||||
//
|
||||
@@ -354,29 +387,8 @@
|
||||
#define STR_Z_PROBE "z_probe"
|
||||
#define STR_PROBE_EN "probe_en"
|
||||
#define STR_FILAMENT "filament"
|
||||
|
||||
#define STR_CALIBRATION "calibration"
|
||||
|
||||
// General axis names
|
||||
#define STR_X "X"
|
||||
#define STR_Y "Y"
|
||||
#define STR_Z "Z"
|
||||
#define STR_E "E"
|
||||
#if IS_KINEMATIC
|
||||
#define STR_A "A"
|
||||
#define STR_B "B"
|
||||
#define STR_C "C"
|
||||
#else
|
||||
#define STR_A "X"
|
||||
#define STR_B "Y"
|
||||
#define STR_C "Z"
|
||||
#endif
|
||||
#define STR_X2 "X2"
|
||||
#define STR_Y2 "Y2"
|
||||
#define STR_Z2 "Z2"
|
||||
#define STR_Z3 "Z3"
|
||||
#define STR_Z4 "Z4"
|
||||
|
||||
// Extra Axis and Endstop Names
|
||||
#if HAS_I_AXIS
|
||||
#if AXIS4_NAME == 'A'
|
||||
|
||||
@@ -91,6 +91,7 @@ typedef const char Language_Str[];
|
||||
#define LANG_CHARSIZE GET_TEXT(CHARSIZE)
|
||||
#define USE_WIDE_GLYPH (LANG_CHARSIZE > 2)
|
||||
|
||||
// The final "\0" is added invisibly by the compiler
|
||||
#define MSG_1_LINE(A) A "\0" "\0"
|
||||
#define MSG_2_LINE(A,B) A "\0" B "\0"
|
||||
#define MSG_3_LINE(A,B,C) A "\0" B "\0" C
|
||||
|
||||
@@ -60,7 +60,7 @@ void Babystep::add_mm(const AxisEnum axis, const_float_t mm) {
|
||||
|
||||
#if ENABLED(BD_SENSOR)
|
||||
void Babystep::set_mm(const AxisEnum axis, const_float_t mm) {
|
||||
//if (DISABLED(BABYSTEP_WITHOUT_HOMING) && axes_should_home(_BV(axis))) return;
|
||||
//if (DISABLED(BABYSTEP_WITHOUT_HOMING) && axis_should_home(axis)) return;
|
||||
const int16_t distance = mm * planner.settings.axis_steps_per_mm[axis];
|
||||
accum = distance; // Count up babysteps for the UI
|
||||
steps[BS_AXIS_IND(axis)] = distance;
|
||||
@@ -70,8 +70,12 @@ void Babystep::add_mm(const AxisEnum axis, const_float_t mm) {
|
||||
}
|
||||
#endif
|
||||
|
||||
bool Babystep::can_babystep(const AxisEnum axis) {
|
||||
return (ENABLED(BABYSTEP_WITHOUT_HOMING) || !axis_should_home(axis));
|
||||
}
|
||||
|
||||
void Babystep::add_steps(const AxisEnum axis, const int16_t distance) {
|
||||
if (DISABLED(BABYSTEP_WITHOUT_HOMING) && axes_should_home(_BV(axis))) return;
|
||||
if (!can_babystep(axis)) return;
|
||||
|
||||
accum += distance; // Count up babysteps for the UI
|
||||
steps[BS_AXIS_IND(axis)] += distance;
|
||||
|
||||
@@ -59,6 +59,7 @@ public:
|
||||
}
|
||||
#endif
|
||||
|
||||
static bool can_babystep(const AxisEnum axis);
|
||||
static void add_steps(const AxisEnum axis, const int16_t distance);
|
||||
static void add_mm(const AxisEnum axis, const_float_t mm);
|
||||
|
||||
|
||||
@@ -72,13 +72,9 @@ void BLTouch::init(const bool set_voltage/*=false*/) {
|
||||
#else
|
||||
|
||||
#ifdef DEBUG_OUT
|
||||
if (DEBUGGING(LEVELING)) {
|
||||
PGMSTR(mode0, "OD");
|
||||
PGMSTR(mode1, "5V");
|
||||
DEBUG_ECHOPGM("BLTouch Mode: ");
|
||||
DEBUG_ECHOPGM_P(bltouch.od_5v_mode ? mode1 : mode0);
|
||||
DEBUG_ECHOLNPGM(" (Default " TERN(BLTOUCH_SET_5V_MODE, "5V", "OD") ")");
|
||||
}
|
||||
if (DEBUGGING(LEVELING))
|
||||
DEBUG_ECHOLN( F("BLTouch Mode: "), bltouch.od_5v_mode ? F("5V") : F("OD"),
|
||||
F(" (Default " TERN(BLTOUCH_SET_5V_MODE, "5V", "OD") ")"));
|
||||
#endif
|
||||
|
||||
const bool should_set = od_5v_mode != ENABLED(BLTOUCH_SET_5V_MODE);
|
||||
|
||||
@@ -70,7 +70,9 @@ void ControllerFan::update() {
|
||||
*/
|
||||
const ena_mask_t axis_mask = TERN(CONTROLLER_FAN_USE_Z_ONLY, _BV(Z_AXIS), (ena_mask_t)~TERN0(CONTROLLER_FAN_IGNORE_Z, _BV(Z_AXIS)));
|
||||
if ( (stepper.axis_enabled.bits & axis_mask)
|
||||
|| TERN0(HAS_HEATED_BED, thermalManager.temp_bed.soft_pwm_amount > 0)
|
||||
#if ALL(HAS_HEATED_BED, CONTROLLER_FAN_BED_HEATING)
|
||||
|| thermalManager.temp_bed.soft_pwm_amount > 0
|
||||
#endif
|
||||
#ifdef CONTROLLER_FAN_MIN_BOARD_TEMP
|
||||
|| thermalManager.wholeDegBoard() >= CONTROLLER_FAN_MIN_BOARD_TEMP
|
||||
#endif
|
||||
|
||||
@@ -61,9 +61,13 @@ extern bool wait_for_user, wait_for_heatup;
|
||||
#endif
|
||||
|
||||
void EmergencyParser::update(EmergencyParser::State &state, const uint8_t c) {
|
||||
auto uppercase = [](char c) {
|
||||
return TERN0(GCODE_CASE_INSENSITIVE, WITHIN(c, 'a', 'z')) ? c + 'A' - 'a' : c;
|
||||
};
|
||||
|
||||
switch (state) {
|
||||
case EP_RESET:
|
||||
switch (c) {
|
||||
switch (uppercase(c)) {
|
||||
case ' ': case '\n': case '\r': break;
|
||||
case 'N': state = EP_N; break;
|
||||
case 'M': state = EP_M; break;
|
||||
@@ -81,7 +85,7 @@ void EmergencyParser::update(EmergencyParser::State &state, const uint8_t c) {
|
||||
break;
|
||||
|
||||
case EP_N:
|
||||
switch (c) {
|
||||
switch (uppercase(c)) {
|
||||
case '0' ... '9':
|
||||
case '-': case ' ': break;
|
||||
case 'M': state = EP_M; break;
|
||||
@@ -152,20 +156,8 @@ void EmergencyParser::update(EmergencyParser::State &state, const uint8_t c) {
|
||||
#endif
|
||||
|
||||
#if ENABLED(EP_BABYSTEPPING)
|
||||
case EP_M2:
|
||||
switch (c) {
|
||||
case '9': state = EP_M29; break;
|
||||
default: state = EP_IGNORE;
|
||||
}
|
||||
break;
|
||||
|
||||
case EP_M29:
|
||||
switch (c) {
|
||||
case '3': state = EP_M293; break;
|
||||
case '4': state = EP_M294; break;
|
||||
default: state = EP_IGNORE;
|
||||
}
|
||||
break;
|
||||
case EP_M2: state = (c == '9') ? EP_M29 : EP_IGNORE; break;
|
||||
case EP_M29: state = (c == '3') ? EP_M293 : (c == '4') ? EP_M294 : EP_IGNORE; break;
|
||||
#endif
|
||||
|
||||
#if ENABLED(HOST_PROMPT_SUPPORT)
|
||||
@@ -174,7 +166,7 @@ void EmergencyParser::update(EmergencyParser::State &state, const uint8_t c) {
|
||||
case EP_M87: state = (c == '6') ? EP_M876 : EP_IGNORE; break;
|
||||
|
||||
case EP_M876:
|
||||
switch (c) {
|
||||
switch (uppercase(c)) {
|
||||
case ' ': break;
|
||||
case 'S': state = EP_M876S; break;
|
||||
default: state = EP_IGNORE; break;
|
||||
|
||||
@@ -189,7 +189,7 @@ void EasythreedUI::printButton() {
|
||||
blink_interval_ms = LED_BLINK_2; // Blink the indicator LED at 1 second intervals
|
||||
print_key_flag = PF_PAUSE; // The "Print" button now pauses the print
|
||||
card.mount(); // Force SD card to mount - now!
|
||||
if (!card.isMounted) { // Failed to mount?
|
||||
if (!card.isMounted()) { // Failed to mount?
|
||||
blink_interval_ms = LED_OFF; // Turn off LED
|
||||
print_key_flag = PF_START;
|
||||
return; // Bail out
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
|
||||
FilamentWidthSensor filwidth;
|
||||
|
||||
bool FilamentWidthSensor::enabled; // = false; // (M405-M406) Filament Width Sensor ON/OFF.
|
||||
bool FilamentWidthSensor::enabled; // = false // (M405-M406) Filament Width Sensor ON/OFF.
|
||||
uint32_t FilamentWidthSensor::accum; // = 0 // ADC accumulator
|
||||
uint16_t FilamentWidthSensor::raw; // = 0 // Measured filament diameter - one extruder only
|
||||
float FilamentWidthSensor::nominal_mm = DEFAULT_NOMINAL_FILAMENT_DIA, // (M104) Nominal filament width
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
HotendIdleProtection hotend_idle;
|
||||
|
||||
millis_t HotendIdleProtection::next_protect_ms = 0;
|
||||
hotend_idle_settings_t HotendIdleProtection::cfg; // Initialized by settings.load()
|
||||
hotend_idle_settings_t HotendIdleProtection::cfg; // Initialized by settings.load
|
||||
|
||||
void HotendIdleProtection::check_hotends(const millis_t &ms) {
|
||||
const bool busy = (TERN0(HAS_RESUME_CONTINUE, wait_for_user) || planner.has_blocks_queued());
|
||||
|
||||
@@ -123,7 +123,7 @@ Joystick joystick;
|
||||
|
||||
void Joystick::inject_jog_moves() {
|
||||
// Recursion barrier
|
||||
static bool injecting_now; // = false;
|
||||
static bool injecting_now; // = false
|
||||
if (injecting_now) return;
|
||||
|
||||
#if ENABLED(NO_MOTION_BEFORE_HOMING)
|
||||
|
||||
@@ -744,7 +744,6 @@ void Max7219::idle_tasks() {
|
||||
#endif
|
||||
|
||||
#ifdef MAX7219_DEBUG_PLANNER_QUEUE
|
||||
static int16_t last_depth = 0;
|
||||
const int16_t current_depth = BLOCK_MOD(head - tail + (BLOCK_BUFFER_SIZE)) & 0xF;
|
||||
if (current_depth != last_depth) {
|
||||
quantity16(MAX7219_DEBUG_PLANNER_QUEUE, last_depth, current_depth, &row_change_mask);
|
||||
|
||||
@@ -24,6 +24,10 @@
|
||||
|
||||
#if HAS_PRUSA_MMU2
|
||||
|
||||
/**
|
||||
* mmu2.cpp - Support for Průša MMU2 and MMU2S
|
||||
*/
|
||||
|
||||
#include "mmu2.h"
|
||||
#include "../../lcd/menu/menu_mmu2.h"
|
||||
|
||||
@@ -46,7 +50,7 @@ MMU2 mmu2;
|
||||
#include "../../lcd/extui/ui_api.h"
|
||||
#endif
|
||||
|
||||
#define DEBUG_OUT ENABLED(MMU2_DEBUG)
|
||||
#define DEBUG_OUT ENABLED(MMU_DEBUG)
|
||||
#include "../../core/debug_out.h"
|
||||
|
||||
#define MMU_TODELAY 100
|
||||
@@ -57,7 +61,7 @@ MMU2 mmu2;
|
||||
#define MMU2_SEND(S) tx_str(F(S "\n"))
|
||||
#define MMU2_RECV(S) rx_str(F(S "\n"))
|
||||
|
||||
#if ENABLED(MMU_EXTRUDER_SENSOR)
|
||||
#if ENABLED(MMU2_EXTRUDER_SENSOR)
|
||||
uint8_t mmu_idl_sens = 0;
|
||||
static bool mmu_loading_flag = false;
|
||||
#endif
|
||||
@@ -106,12 +110,12 @@ void MMU2::init() {
|
||||
|
||||
set_runout_valid(false);
|
||||
|
||||
#if PIN_EXISTS(MMU2_RST)
|
||||
WRITE(MMU2_RST_PIN, HIGH);
|
||||
SET_OUTPUT(MMU2_RST_PIN);
|
||||
#if PIN_EXISTS(MMU_RST)
|
||||
WRITE(MMU_RST_PIN, HIGH);
|
||||
SET_OUTPUT(MMU_RST_PIN);
|
||||
#endif
|
||||
|
||||
MMU2_SERIAL.begin(MMU_BAUD);
|
||||
MMU_SERIAL.begin(MMU_BAUD);
|
||||
extruder = MMU2_NO_TOOL;
|
||||
|
||||
safe_delay(10);
|
||||
@@ -123,10 +127,10 @@ void MMU2::init() {
|
||||
void MMU2::reset() {
|
||||
DEBUG_ECHOLNPGM("MMU <= reset");
|
||||
|
||||
#if PIN_EXISTS(MMU2_RST)
|
||||
WRITE(MMU2_RST_PIN, LOW);
|
||||
#if PIN_EXISTS(MMU_RST)
|
||||
WRITE(MMU_RST_PIN, LOW);
|
||||
safe_delay(20);
|
||||
WRITE(MMU2_RST_PIN, HIGH);
|
||||
WRITE(MMU_RST_PIN, HIGH);
|
||||
#else
|
||||
MMU2_SEND("X0"); // Send soft reset
|
||||
#endif
|
||||
@@ -134,7 +138,7 @@ void MMU2::reset() {
|
||||
|
||||
int8_t MMU2::get_current_tool() { return extruder == MMU2_NO_TOOL ? -1 : extruder; }
|
||||
|
||||
#if ANY(HAS_PRUSA_MMU2S, MMU_EXTRUDER_SENSOR)
|
||||
#if ANY(HAS_PRUSA_MMU2S, MMU2_EXTRUDER_SENSOR)
|
||||
#define FILAMENT_PRESENT() (READ(FIL_RUNOUT1_PIN) != FIL_RUNOUT1_STATE)
|
||||
#else
|
||||
#define FILAMENT_PRESENT() true
|
||||
@@ -226,7 +230,7 @@ void MMU2::mmu_loop() {
|
||||
const int filament = cmd - MMU_CMD_T0;
|
||||
DEBUG_ECHOLNPGM("MMU <= T", filament);
|
||||
tx_printf(F("T%d\n"), filament);
|
||||
TERN_(MMU_EXTRUDER_SENSOR, mmu_idl_sens = 1); // enable idler sensor, if any
|
||||
TERN_(MMU2_EXTRUDER_SENSOR, mmu_idl_sens = 1); // enable idler sensor, if any
|
||||
state = 3; // wait for response
|
||||
}
|
||||
else if (WITHIN(cmd, MMU_CMD_L0, MMU_CMD_L0 + EXTRUDERS - 1)) {
|
||||
@@ -299,7 +303,7 @@ void MMU2::mmu_loop() {
|
||||
break;
|
||||
|
||||
case 3: // response to mmu commands
|
||||
#if ENABLED(MMU_EXTRUDER_SENSOR)
|
||||
#if ENABLED(MMU2_EXTRUDER_SENSOR)
|
||||
if (mmu_idl_sens) {
|
||||
if (FILAMENT_PRESENT() && mmu_loading_flag) {
|
||||
DEBUG_ECHOLNPGM("MMU <= 'A'");
|
||||
@@ -361,8 +365,8 @@ bool MMU2::rx_str(FSTR_P fstr) {
|
||||
|
||||
uint8_t i = strlen(rx_buffer);
|
||||
|
||||
while (MMU2_SERIAL.available()) {
|
||||
rx_buffer[i++] = MMU2_SERIAL.read();
|
||||
while (MMU_SERIAL.available()) {
|
||||
rx_buffer[i++] = MMU_SERIAL.read();
|
||||
|
||||
if (i == sizeof(rx_buffer) - 1) {
|
||||
DEBUG_ECHOLNPGM("rx buffer overrun");
|
||||
@@ -393,7 +397,7 @@ bool MMU2::rx_str(FSTR_P fstr) {
|
||||
void MMU2::tx_str(FSTR_P fstr) {
|
||||
clear_rx_buffer();
|
||||
PGM_P pstr = FTOP(fstr);
|
||||
while (const char c = pgm_read_byte(pstr)) { MMU2_SERIAL.write(c); pstr++; }
|
||||
while (const char c = pgm_read_byte(pstr)) { MMU_SERIAL.write(c); pstr++; }
|
||||
prev_request = millis();
|
||||
}
|
||||
|
||||
@@ -403,7 +407,7 @@ void MMU2::tx_str(FSTR_P fstr) {
|
||||
void MMU2::tx_printf(FSTR_P format, int argument = -1) {
|
||||
clear_rx_buffer();
|
||||
const uint8_t len = sprintf_P(tx_buffer, FTOP(format), argument);
|
||||
for (uint8_t i = 0; i < len; ++i) MMU2_SERIAL.write(tx_buffer[i]);
|
||||
for (uint8_t i = 0; i < len; ++i) MMU_SERIAL.write(tx_buffer[i]);
|
||||
prev_request = millis();
|
||||
}
|
||||
|
||||
@@ -413,7 +417,7 @@ void MMU2::tx_printf(FSTR_P format, int argument = -1) {
|
||||
void MMU2::tx_printf(FSTR_P format, int argument1, int argument2) {
|
||||
clear_rx_buffer();
|
||||
const uint8_t len = sprintf_P(tx_buffer, FTOP(format), argument1, argument2);
|
||||
for (uint8_t i = 0; i < len; ++i) MMU2_SERIAL.write(tx_buffer[i]);
|
||||
for (uint8_t i = 0; i < len; ++i) MMU_SERIAL.write(tx_buffer[i]);
|
||||
prev_request = millis();
|
||||
}
|
||||
|
||||
@@ -421,7 +425,7 @@ void MMU2::tx_printf(FSTR_P format, int argument1, int argument2) {
|
||||
* Empty the rx buffer
|
||||
*/
|
||||
void MMU2::clear_rx_buffer() {
|
||||
while (MMU2_SERIAL.available()) MMU2_SERIAL.read();
|
||||
while (MMU_SERIAL.available()) MMU_SERIAL.read();
|
||||
rx_buffer[0] = '\0';
|
||||
}
|
||||
|
||||
@@ -563,7 +567,7 @@ inline void beep_bad_cmd() { BUZZ(400, 40); }
|
||||
set_runout_valid(true);
|
||||
}
|
||||
|
||||
#elif ENABLED(MMU_EXTRUDER_SENSOR)
|
||||
#elif ENABLED(MMU2_EXTRUDER_SENSOR)
|
||||
|
||||
/**
|
||||
* Handle tool change
|
||||
@@ -656,7 +660,7 @@ inline void beep_bad_cmd() { BUZZ(400, 40); }
|
||||
void MMU2::mmu_continue_loading() {
|
||||
// Try to load the filament a limited number of times
|
||||
bool fil_present = 0;
|
||||
for (uint8_t i = 0; i < MMU_LOADING_ATTEMPTS_NR; i++) {
|
||||
for (uint8_t i = 0; i < MMU2_LOADING_ATTEMPTS_NR; i++) {
|
||||
DEBUG_ECHOLNPGM("Load attempt #", i + 1);
|
||||
|
||||
// Done as soon as filament is present
|
||||
@@ -688,7 +692,7 @@ inline void beep_bad_cmd() { BUZZ(400, 40); }
|
||||
mmu_idl_sens = 0;
|
||||
}
|
||||
|
||||
#else // !HAS_PRUSA_MMU2S && !MMU_EXTRUDER_SENSOR
|
||||
#else // !HAS_PRUSA_MMU2S && !MMU2_EXTRUDER_SENSOR
|
||||
|
||||
/**
|
||||
* Handle tool change
|
||||
@@ -891,8 +895,8 @@ void MMU2::filament_runout() {
|
||||
}
|
||||
|
||||
bool MMU2::can_load() {
|
||||
static const E_Step can_load_sequence[] PROGMEM = { MMU2_CAN_LOAD_SEQUENCE },
|
||||
can_load_increment_sequence[] PROGMEM = { MMU2_CAN_LOAD_INCREMENT_SEQUENCE };
|
||||
static constexpr E_Step can_load_sequence[] PROGMEM = { MMU2_CAN_LOAD_SEQUENCE },
|
||||
can_load_increment_sequence[] PROGMEM = { MMU2_CAN_LOAD_INCREMENT_SEQUENCE };
|
||||
|
||||
execute_extruder_sequence(can_load_sequence, COUNT(can_load_sequence));
|
||||
|
||||
@@ -1041,7 +1045,8 @@ void MMU2::load_to_nozzle_sequence() {
|
||||
execute_extruder_sequence(sequence, COUNT(sequence));
|
||||
}
|
||||
|
||||
void MMU2::execute_extruder_sequence(const E_Step * sequence, int steps) {
|
||||
void MMU2::execute_extruder_sequence(const E_Step * const sequence, const uint8_t steps) {
|
||||
|
||||
planner.synchronize();
|
||||
|
||||
const E_Step *step = sequence;
|
||||
|
||||
@@ -21,6 +21,10 @@
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
/**
|
||||
* mmu2.h - Support for Průša MMU2 and MMU2S
|
||||
*/
|
||||
|
||||
#include "../../inc/MarlinConfig.h"
|
||||
|
||||
#if HAS_FILAMENT_SENSOR
|
||||
@@ -70,7 +74,7 @@ private:
|
||||
static bool get_response();
|
||||
static void manage_response(const bool move_axes, const bool turn_off_nozzle);
|
||||
|
||||
static void execute_extruder_sequence(const E_Step * sequence, int steps);
|
||||
static void execute_extruder_sequence(const E_Step * const sequence, const uint8_t steps);
|
||||
static void ramming_sequence();
|
||||
static void load_to_nozzle_sequence();
|
||||
|
||||
@@ -85,7 +89,7 @@ private:
|
||||
FORCE_INLINE static bool load_to_gears() { return true; }
|
||||
#endif
|
||||
|
||||
#if ENABLED(MMU_EXTRUDER_SENSOR)
|
||||
#if ENABLED(MMU2_EXTRUDER_SENSOR)
|
||||
#define MMU_LOAD_FEEDRATE 19.02f // (mm/s)
|
||||
static void mmu_continue_loading();
|
||||
#endif
|
||||
|
||||
@@ -28,15 +28,15 @@
|
||||
|
||||
#if HAS_PRUSA_MMU3
|
||||
|
||||
#include "mmu2.h"
|
||||
#include "mmu2_error_converter.h"
|
||||
#include "mmu2_fsensor.h"
|
||||
#include "mmu2_log.h"
|
||||
#include "mmu2_marlin.h"
|
||||
#include "mmu2_marlin_macros.h"
|
||||
#include "mmu2_power.h"
|
||||
#include "mmu2_progress_converter.h"
|
||||
#include "mmu2_reporting.h"
|
||||
#include "mmu3.h"
|
||||
#include "mmu3_error_converter.h"
|
||||
#include "mmu3_fsensor.h"
|
||||
#include "mmu3_log.h"
|
||||
#include "mmu3_marlin.h"
|
||||
#include "mmu3_marlin_macros.h"
|
||||
#include "mmu3_power.h"
|
||||
#include "mmu3_progress_converter.h"
|
||||
#include "mmu3_reporting.h"
|
||||
|
||||
#include "strlen_cx.h"
|
||||
#include "SpoolJoin.h"
|
||||
@@ -91,7 +91,7 @@ namespace MMU3 {
|
||||
int MMU3::mmu_hw_enabled_addr; // Initialized by settings.load
|
||||
|
||||
MMU3::MMU3()
|
||||
: logic(MMU2_TOOL_CHANGE_LOAD_LENGTH, MMU2_LOAD_TO_NOZZLE_FEED_RATE)
|
||||
: logic(MMU3_TOOL_CHANGE_LOAD_LENGTH, MMU3_LOAD_TO_NOZZLE_FEED_RATE)
|
||||
, extruder(MMU2_NO_TOOL)
|
||||
, tool_change_extruder(MMU2_NO_TOOL)
|
||||
, resume_position()
|
||||
@@ -121,10 +121,10 @@ namespace MMU3 {
|
||||
settings.save();
|
||||
#endif
|
||||
|
||||
MMU2_SERIAL.begin(MMU_BAUD);
|
||||
MMU_SERIAL.begin(MMU_BAUD);
|
||||
|
||||
powerOn();
|
||||
MMU2_SERIAL.flush(); // Make sure the UART buffer is clear before starting communication
|
||||
MMU_SERIAL.flush(); // Make sure the UART buffer is clear before starting communication
|
||||
|
||||
setCurrentTool(MMU2_NO_TOOL);
|
||||
_state = xState::Connecting;
|
||||
@@ -153,7 +153,7 @@ namespace MMU3 {
|
||||
|
||||
_state = xState::Stopped;
|
||||
logic.stop();
|
||||
MMU2_SERIAL.end();
|
||||
MMU_SERIAL.end();
|
||||
}
|
||||
|
||||
void MMU3::tune() {
|
||||
@@ -279,14 +279,14 @@ namespace MMU3 {
|
||||
&& TERN1(HAS_LEVELING, planner.leveling_active)
|
||||
&& xy_are_trusted()
|
||||
&& e_active()
|
||||
#if ENABLED(MMU_SPOOL_JOIN_CONSUMES_ALL_FILAMENT)
|
||||
#if ENABLED(MMU3_SPOOL_JOIN_CONSUMES_ALL_FILAMENT)
|
||||
&& runout.enabled // to prevent M600 to be triggered during M600 AUTO
|
||||
&& !FILAMENT_PRESENT() // so the filament is totally consumed
|
||||
#endif
|
||||
) {
|
||||
SERIAL_ECHOLN_P("FINDA filament runout!");
|
||||
if (spooljoin.isEnabled() && get_current_tool() != (uint8_t)FILAMENT_UNKNOWN) { // Can't auto if F=?
|
||||
#if ENABLED(MMU_SPOOL_JOIN_CONSUMES_ALL_FILAMENT)
|
||||
#if ENABLED(MMU3_SPOOL_JOIN_CONSUMES_ALL_FILAMENT)
|
||||
// set the current tool to FILAMENT_UNKNOWN so that we don't try to unload it
|
||||
extruder = MMU2_NO_TOOL;
|
||||
// disable the filament runout sensor (this is going to be re-enabled after the filament is loaded)
|
||||
@@ -294,7 +294,7 @@ namespace MMU3 {
|
||||
runout.filament_ran_out = false; // trying to disable the purge more / continue message
|
||||
runout.enabled = false;
|
||||
#endif
|
||||
queue.enqueue_now(F("M600A")); // Save print and run M600 command
|
||||
queue.enqueue_now(F("M600A")); // Save print and run M600 A (automatic) command
|
||||
}
|
||||
else {
|
||||
marlin_stop_and_save_print_to_ram();
|
||||
@@ -349,7 +349,7 @@ namespace MMU3 {
|
||||
|
||||
// MMU has finished its load, push the filament further by some defined constant length
|
||||
// If the filament sensor reads 0 at any moment, then report FAILURE
|
||||
const float tryload_length = MMU2_CHECK_FILAMENT_PRESENCE_EXTRUSION_LENGTH - logic.ExtraLoadDistance();
|
||||
const float tryload_length = MMU3_CHECK_FILAMENT_PRESENCE_EXTRUSION_LENGTH - logic.ExtraLoadDistance();
|
||||
TryLoadUnloadReporter tlur(tryload_length);
|
||||
|
||||
/**
|
||||
@@ -378,7 +378,7 @@ namespace MMU3 {
|
||||
// Pixel index will go from 0 to 10, then back from 10 to 0.
|
||||
// A change in this value indicates a new pixel should be drawn on the display.
|
||||
for (uint8_t move = 0; move < 2; move++) {
|
||||
extruder_move(move == 0 ? tryload_length : -tryload_length, MMU2_VERIFY_LOAD_TO_NOZZLE_FEED_RATE);
|
||||
extruder_move(move == 0 ? tryload_length : -tryload_length, MMU3_VERIFY_LOAD_TO_NOZZLE_FEED_RATE);
|
||||
while (planner_any_moves()) {
|
||||
filament_inserted = filament_inserted && (WhereIsFilament() == FilamentState::AT_FSENSOR);
|
||||
tlur.Progress(filament_inserted);
|
||||
@@ -392,7 +392,7 @@ namespace MMU3 {
|
||||
}
|
||||
|
||||
bool MMU3::toolChangeCommonOnce(uint8_t slot) {
|
||||
static_assert(MMU2_MAX_RETRIES > 1); // Need >1 retries to do the cut in the last attempt
|
||||
static_assert(MMU3_MAX_RETRIES > 1); // Need >1 retries to do the cut in the last attempt
|
||||
uint8_t retries = 0;
|
||||
for (;;) {
|
||||
for (;;) {
|
||||
@@ -419,9 +419,9 @@ namespace MMU3 {
|
||||
|
||||
// Prepare a retry attempt
|
||||
unloadInner();
|
||||
if (retries == (MMU2_MAX_RETRIES) - 1 && cutter_enabled()) {
|
||||
if (retries == (MMU3_MAX_RETRIES) - 1 && cutter_enabled()) {
|
||||
cutFilamentInner(slot); // try cutting filament tip at the last attempt
|
||||
retries = 0; // reset retries every MMU2_MAX_RETRIES
|
||||
retries = 0; // reset retries every MMU3_MAX_RETRIES
|
||||
}
|
||||
|
||||
++retries;
|
||||
@@ -1013,7 +1013,7 @@ namespace MMU3 {
|
||||
void MMU3::execute_load_to_nozzle_sequence() {
|
||||
planner_synchronize();
|
||||
// Compensate for configurable Extra Loading Distance
|
||||
planner_set_current_position_E(planner_get_current_position_E() - (logic.ExtraLoadDistance() - MMU2_FILAMENT_SENSOR_POSITION));
|
||||
planner_set_current_position_E(planner_get_current_position_E() - (logic.ExtraLoadDistance() - MMU3_FILAMENT_SENSOR_E_POSITION));
|
||||
execute_extruder_sequence(load_to_nozzle_sequence, sizeof(load_to_nozzle_sequence) / sizeof(load_to_nozzle_sequence[0]));
|
||||
}
|
||||
|
||||
@@ -1120,7 +1120,7 @@ namespace MMU3 {
|
||||
}
|
||||
|
||||
void __attribute__((noinline)) MMU3::helpUnloadToFinda() {
|
||||
extruder_move(-MMU2_RETRY_UNLOAD_TO_FINDA_LENGTH, MMU2_RETRY_UNLOAD_TO_FINDA_FEED_RATE);
|
||||
extruder_move(-MMU3_RETRY_UNLOAD_TO_FINDA_LENGTH, MMU3_RETRY_UNLOAD_TO_FINDA_FEED_RATE);
|
||||
}
|
||||
|
||||
void MMU3::onMMUProgressMsgSame(ProgressCode pc) {
|
||||
@@ -25,10 +25,10 @@
|
||||
* mmu2.h
|
||||
*/
|
||||
|
||||
#include "mmu2_state.h"
|
||||
#include "mmu2_marlin.h"
|
||||
#include "mmu3_state.h"
|
||||
#include "mmu3_marlin.h"
|
||||
|
||||
#include "mmu2_protocol_logic.h"
|
||||
#include "mmu3_protocol_logic.h"
|
||||
|
||||
#include "../../MarlinCore.h"
|
||||
|
||||
@@ -43,8 +43,8 @@
|
||||
float feedRate; //!< feed rate in mm/s
|
||||
};
|
||||
|
||||
static constexpr E_Step ramming_sequence[] PROGMEM = { MMU2_RAMMING_SEQUENCE };
|
||||
static constexpr E_Step load_to_nozzle_sequence[] PROGMEM = { MMU2_LOAD_TO_NOZZLE_SEQUENCE };
|
||||
static constexpr E_Step ramming_sequence[] PROGMEM = { MMU3_RAMMING_SEQUENCE };
|
||||
static constexpr E_Step load_to_nozzle_sequence[] PROGMEM = { MMU3_LOAD_TO_NOZZLE_SEQUENCE };
|
||||
|
||||
namespace MMU3 {
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
|
||||
#if HAS_PRUSA_MMU3
|
||||
|
||||
#include "mmu2_crc.h"
|
||||
#include "mmu3_crc.h"
|
||||
|
||||
#ifdef __AVR__
|
||||
#include <util/crc16.h>
|
||||
+1
-1
@@ -29,7 +29,7 @@
|
||||
#if HAS_PRUSA_MMU3
|
||||
|
||||
#include "../../core/language.h"
|
||||
#include "mmu2_error_converter.h"
|
||||
#include "mmu3_error_converter.h"
|
||||
#include "mmu_hw/error_codes.h"
|
||||
#include "mmu_hw/errors_list.h"
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
#if HAS_PRUSA_MMU3
|
||||
|
||||
#include "../../feature/runout.h"
|
||||
#include "mmu2_fsensor.h"
|
||||
#include "mmu3_fsensor.h"
|
||||
|
||||
namespace MMU3 {
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
|
||||
#if HAS_PRUSA_MMU3
|
||||
|
||||
#include "mmu2_log.h"
|
||||
#include "mmu3_log.h"
|
||||
|
||||
namespace MMU3 {
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
|
||||
#include "../../feature/pause.h"
|
||||
#include "../../libs/nozzle.h"
|
||||
#include "mmu2_marlin.h"
|
||||
#include "mmu3_marlin.h"
|
||||
|
||||
namespace MMU3 {
|
||||
|
||||
@@ -28,8 +28,8 @@
|
||||
|
||||
#if HAS_PRUSA_MMU3
|
||||
|
||||
#include "mmu2.h"
|
||||
#include "mmu2_power.h"
|
||||
#include "mmu3.h"
|
||||
#include "mmu3_power.h"
|
||||
|
||||
#include "../../MarlinCore.h"
|
||||
|
||||
@@ -41,8 +41,8 @@ namespace MMU3 {
|
||||
|
||||
// On MK3 we cannot do actual power cycle on HW. Instead trigger a hardware reset.
|
||||
void power_on() {
|
||||
#if PIN_EXISTS(MMU2_RST)
|
||||
OUT_WRITE(MMU2_RST_PIN, HIGH);
|
||||
#if PIN_EXISTS(MMU_RST)
|
||||
OUT_WRITE(MMU_RST_PIN, HIGH);
|
||||
#endif
|
||||
power_reset();
|
||||
}
|
||||
@@ -50,10 +50,10 @@ void power_on() {
|
||||
void power_off() {}
|
||||
|
||||
void power_reset() {
|
||||
#if PIN_EXISTS(MMU2_RST) // HW - pulse reset pin
|
||||
WRITE(MMU2_RST_PIN, LOW);
|
||||
#if PIN_EXISTS(MMU_RST) // HW - pulse reset pin
|
||||
WRITE(MMU_RST_PIN, LOW);
|
||||
safe_delay(100);
|
||||
WRITE(MMU2_RST_PIN, HIGH);
|
||||
WRITE(MMU_RST_PIN, HIGH);
|
||||
#else
|
||||
mmu3.reset(MMU3::Software); // TODO: Needs redesign. This power implementation shouldn't know anything about the MMU itself
|
||||
#endif
|
||||
+7
-10
@@ -29,34 +29,31 @@
|
||||
#if HAS_PRUSA_MMU3
|
||||
|
||||
#include "../../core/language.h"
|
||||
#include "mmu2_progress_converter.h"
|
||||
#ifdef __AVR__
|
||||
#include <avr/pgmspace.h>
|
||||
#endif
|
||||
#include "mmu3_progress_converter.h"
|
||||
#include "mmu_hw/progress_codes.h"
|
||||
#include "mmu_hw/errors_list.h"
|
||||
|
||||
namespace MMU3 {
|
||||
|
||||
FSTR_P const progressTexts[] PROGMEM = {
|
||||
GET_TEXT_F(MSG_PROGRESS_OK),
|
||||
GET_TEXT_F(MSG_PROGRESS_ENGAGE_IDLER),
|
||||
GET_TEXT_F(MSG_PROGRESS_DISENGAGE_IDLER),
|
||||
GET_TEXT_F(MSG_PROGRESS_OK), // TODO: Generic messages for Marlin
|
||||
GET_TEXT_F(MSG_PROGRESS_ENGAGE_IDLER), // reused below
|
||||
GET_TEXT_F(MSG_PROGRESS_DISENGAGE_IDLER), // reused below
|
||||
GET_TEXT_F(MSG_PROGRESS_UNLOAD_FINDA),
|
||||
GET_TEXT_F(MSG_PROGRESS_UNLOAD_PULLEY),
|
||||
GET_TEXT_F(MSG_PROGRESS_FEED_FINDA),
|
||||
GET_TEXT_F(MSG_PROGRESS_FEED_EXTRUDER),
|
||||
GET_TEXT_F(MSG_PROGRESS_FEED_NOZZLE),
|
||||
GET_TEXT_F(MSG_PROGRESS_AVOID_GRIND),
|
||||
GET_TEXT_F(MSG_FINISHING_MOVEMENTS), // reuse from messages.cpp
|
||||
GET_TEXT_F(MSG_FINISHING_MOVEMENTS),
|
||||
GET_TEXT_F(MSG_PROGRESS_DISENGAGE_IDLER), // err disengaging idler is the same text
|
||||
GET_TEXT_F(MSG_PROGRESS_ENGAGE_IDLER), // engage dtto.
|
||||
GET_TEXT_F(MSG_PROGRESS_WAIT_USER),
|
||||
GET_TEXT_F(MSG_PROGRESS_ERR_INTERNAL),
|
||||
GET_TEXT_F(MSG_PROGRESS_ERR_HELP_FIL),
|
||||
GET_TEXT_F(MSG_PROGRESS_ERR_TMC),
|
||||
GET_TEXT_F(MSG_UNLOADING_FILAMENT), // reuse from messages.cpp
|
||||
GET_TEXT_F(MSG_LOADING_FILAMENT), // reuse from messages.cpp
|
||||
GET_TEXT_F(MSG_UNLOADING_FILAMENT),
|
||||
GET_TEXT_F(MSG_LOADING_FILAMENT),
|
||||
GET_TEXT_F(MSG_PROGRESS_SELECT_SLOT),
|
||||
GET_TEXT_F(MSG_PROGRESS_PREPARE_BLADE),
|
||||
GET_TEXT_F(MSG_PROGRESS_PUSH_FILAMENT),
|
||||
+1
-1
@@ -28,7 +28,7 @@
|
||||
|
||||
#if HAS_PRUSA_MMU3
|
||||
|
||||
#include "mmu2_protocol.h"
|
||||
#include "mmu3_protocol.h"
|
||||
|
||||
// protocol definition
|
||||
// command: Q0
|
||||
@@ -28,7 +28,7 @@
|
||||
#include "../../MarlinCore.h"
|
||||
|
||||
#include <stdint.h>
|
||||
#include "mmu2_crc.h"
|
||||
#include "mmu3_crc.h"
|
||||
|
||||
// prevent ARM HAL macros from breaking our code
|
||||
#undef CRC
|
||||
+14
-14
@@ -28,9 +28,9 @@
|
||||
|
||||
#if HAS_PRUSA_MMU3
|
||||
|
||||
#include "mmu2_protocol_logic.h"
|
||||
#include "mmu2_log.h"
|
||||
#include "mmu2_fsensor.h"
|
||||
#include "mmu3_protocol_logic.h"
|
||||
#include "mmu3_log.h"
|
||||
#include "mmu3_fsensor.h"
|
||||
|
||||
#ifdef __AVR__
|
||||
// on MK3/S/+ we shuffle the timers a bit, thus "_millis" may not equal "millis"
|
||||
@@ -48,7 +48,7 @@
|
||||
#endif
|
||||
|
||||
#include <string.h>
|
||||
#include "mmu2_supported_version.h"
|
||||
#include "mmu3_supported_version.h"
|
||||
|
||||
namespace MMU3 {
|
||||
|
||||
@@ -186,7 +186,7 @@ namespace MMU3 {
|
||||
OldMMUFWDetector oldMMUh4x0r; // old MMU FW hacker ;)
|
||||
|
||||
// try to consume as many rx bytes as possible (until a message has been completed)
|
||||
while ((c = MMU2_SERIAL.read()) >= 0) {
|
||||
while ((c = MMU_SERIAL.read()) >= 0) {
|
||||
++bytesConsumed;
|
||||
RecordReceivedByte(c);
|
||||
switch (protocol.DecodeResponse(c)) {
|
||||
@@ -234,10 +234,10 @@ namespace MMU3 {
|
||||
#if defined(__AVR__) || defined(TARGET_LPC1768)
|
||||
// TODO: I'm not sure if this is the correct approach with AVR
|
||||
for ( uint8_t i = 0; i < len; i++) {
|
||||
MMU2_SERIAL.write(txbuff[i]);
|
||||
MMU_SERIAL.write(txbuff[i]);
|
||||
}
|
||||
#else
|
||||
MMU2_SERIAL.write(txbuff, len);
|
||||
MMU_SERIAL.write(txbuff, len);
|
||||
#endif
|
||||
LogRequestMsg(txbuff, len);
|
||||
RecordUARTActivity();
|
||||
@@ -254,10 +254,10 @@ namespace MMU3 {
|
||||
#if defined(__AVR__) || defined(TARGET_LPC1768)
|
||||
// TODO: I'm not sure if this is the correct approach with AVR
|
||||
for ( uint8_t i = 0; i < len; i++) {
|
||||
MMU2_SERIAL.write(txbuff[i]);
|
||||
MMU_SERIAL.write(txbuff[i]);
|
||||
}
|
||||
#else
|
||||
MMU2_SERIAL.write(txbuff, len);
|
||||
MMU_SERIAL.write(txbuff, len);
|
||||
#endif
|
||||
LogRequestMsg(txbuff, len);
|
||||
RecordUARTActivity();
|
||||
@@ -373,7 +373,7 @@ namespace MMU3 {
|
||||
|
||||
StepStatus ProtocolLogic::DelayedRestartWait() {
|
||||
if (Elapsed(heartBeatPeriod)) { // this basically means, that we are waiting until there is some traffic on
|
||||
while (MMU2_SERIAL.read() != -1); // clear the input buffer
|
||||
while (MMU_SERIAL.read() != -1); // clear the input buffer
|
||||
// switch to StartSeq
|
||||
start();
|
||||
}
|
||||
@@ -587,7 +587,7 @@ namespace MMU3 {
|
||||
, buttonCode(Buttons::NoButton)
|
||||
, lastFSensor((uint8_t)WhereIsFilament())
|
||||
, regIndex(0)
|
||||
, retryAttempts(MMU2_MAX_RETRIES)
|
||||
, retryAttempts(MMU3_MAX_RETRIES)
|
||||
, inAutoRetry(false) {
|
||||
// @@TODO currently, I don't see a way of writing the initialization better :(
|
||||
// I'd like to write something like: initRegs8 { extraLoadDistance, pulleySlowFeedrate }
|
||||
@@ -803,14 +803,14 @@ namespace MMU3 {
|
||||
}
|
||||
|
||||
StepStatus ProtocolLogic::HandleCommunicationTimeout() {
|
||||
MMU2_SERIAL.flush(); // clear the output buffer
|
||||
MMU_SERIAL.flush(); // clear the output buffer
|
||||
protocol.ResetResponseDecoder();
|
||||
start();
|
||||
return SuppressShortDropOuts(PSTR("Communication timeout"), CommunicationTimeout);
|
||||
}
|
||||
|
||||
StepStatus ProtocolLogic::HandleProtocolError() {
|
||||
MMU2_SERIAL.flush(); // clear the output buffer
|
||||
MMU_SERIAL.flush(); // clear the output buffer
|
||||
state = State::InitSequence;
|
||||
currentScope = Scope::DelayedRestart;
|
||||
DelayedRestartRestart();
|
||||
@@ -880,7 +880,7 @@ namespace MMU3 {
|
||||
|
||||
void ProtocolLogic::ResetRetryAttempts() {
|
||||
SERIAL_ECHOLNPGM("ResetRetryAttempts");
|
||||
retryAttempts = MMU2_MAX_RETRIES;
|
||||
retryAttempts = MMU3_MAX_RETRIES;
|
||||
}
|
||||
|
||||
void __attribute__((noinline)) ProtocolLogic::ResetCommunicationTimeoutAttempts() {
|
||||
+2
-2
@@ -35,7 +35,7 @@
|
||||
#include "mmu_hw/progress_codes.h"
|
||||
#include "mmu_hw/buttons.h"
|
||||
#include "mmu_hw/registers.h"
|
||||
#include "mmu2_protocol.h"
|
||||
#include "mmu3_protocol.h"
|
||||
|
||||
// #include <array> std array is not available on AVR ... we need to "fake" it
|
||||
namespace std {
|
||||
@@ -59,7 +59,7 @@
|
||||
|
||||
// Prevent ARM HAL macros from breaking our code
|
||||
#undef CRC
|
||||
#include "mmu2_protocol.h"
|
||||
#include "mmu3_protocol.h"
|
||||
#include "mmu_hw/buttons.h"
|
||||
#include "registers.h"
|
||||
|
||||
+7
-7
@@ -28,13 +28,13 @@
|
||||
|
||||
#if HAS_PRUSA_MMU3
|
||||
|
||||
#include "mmu2.h"
|
||||
#include "mmu2_log.h"
|
||||
#include "mmu2_fsensor.h"
|
||||
#include "mmu2_reporting.h"
|
||||
#include "mmu2_error_converter.h"
|
||||
#include "mmu2_marlin_macros.h"
|
||||
#include "mmu2_progress_converter.h"
|
||||
#include "mmu3.h"
|
||||
#include "mmu3_log.h"
|
||||
#include "mmu3_fsensor.h"
|
||||
#include "mmu3_reporting.h"
|
||||
#include "mmu3_error_converter.h"
|
||||
#include "mmu3_marlin_macros.h"
|
||||
#include "mmu3_progress_converter.h"
|
||||
#include "mmu_hw/buttons.h"
|
||||
#include "mmu_hw/error_codes.h"
|
||||
#include "mmu_hw/errors_list.h"
|
||||
@@ -28,8 +28,8 @@
|
||||
|
||||
#if HAS_PRUSA_MMU3
|
||||
|
||||
#include "mmu2.h"
|
||||
#include "mmu2_marlin_macros.h"
|
||||
#include "mmu3.h"
|
||||
#include "mmu3_marlin_macros.h"
|
||||
#include "mmu_hw/errors_list.h"
|
||||
#include "ultralcd.h"
|
||||
|
||||
|
||||
@@ -62,6 +62,8 @@
|
||||
|
||||
#if ENABLED(EXTENSIBLE_UI)
|
||||
#include "../lcd/extui/ui_api.h"
|
||||
#elif ENABLED(SOVOL_SV06_RTS)
|
||||
#include "../lcd/sovol_rts/sovol_rts.h"
|
||||
#endif
|
||||
|
||||
#include "../lcd/marlinui.h"
|
||||
@@ -150,6 +152,11 @@ static bool ensure_safe_temperature(const bool wait=true, const PauseMode mode=P
|
||||
|
||||
ui.pause_show_message(PAUSE_MESSAGE_HEATING, mode);
|
||||
|
||||
#if ENABLED(SOVOL_SV06_RTS)
|
||||
rts.gotoPage(ID_Cold_L, ID_Cold_D);
|
||||
rts.updateTempE0();
|
||||
#endif
|
||||
|
||||
if (wait) return thermalManager.wait_for_hotend(active_extruder);
|
||||
|
||||
// Allow interruption by Emergency Parser M108
|
||||
@@ -277,6 +284,11 @@ bool load_filament(const_float_t slow_load_length/*=0*/, const_float_t fast_load
|
||||
// "Wait for filament purge"
|
||||
if (show_lcd) ui.pause_show_message(PAUSE_MESSAGE_PURGE);
|
||||
|
||||
#if ENABLED(SOVOL_SV06_RTS)
|
||||
rts.updateTempE0();
|
||||
rts.gotoPage(ID_Purge_L, ID_Purge_D);
|
||||
#endif
|
||||
|
||||
// Extrude filament to get into hotend
|
||||
unscaled_e_move(purge_length, ADVANCED_PAUSE_PURGE_FEEDRATE);
|
||||
}
|
||||
@@ -292,6 +304,7 @@ bool load_filament(const_float_t slow_load_length/*=0*/, const_float_t fast_load
|
||||
ui.pause_show_message(PAUSE_MESSAGE_OPTION); // MarlinUI and MKS UI also set PAUSE_RESPONSE_WAIT_FOR
|
||||
#else
|
||||
pause_menu_response = PAUSE_RESPONSE_WAIT_FOR;
|
||||
TERN_(SOVOL_SV06_RTS, rts.gotoPage(ID_PurgeMore_L, ID_PurgeMore_D));
|
||||
#endif
|
||||
while (pause_menu_response == PAUSE_RESPONSE_WAIT_FOR) idle_no_sleep();
|
||||
}
|
||||
@@ -355,6 +368,11 @@ bool unload_filament(const_float_t unload_length, const bool show_lcd/*=false*/,
|
||||
|
||||
if (show_lcd) ui.pause_show_message(PAUSE_MESSAGE_UNLOAD, mode);
|
||||
|
||||
#if ENABLED(SOVOL_SV06_RTS)
|
||||
rts.updateTempE0();
|
||||
rts.gotoPage(ID_Unload_L, ID_Unload_D);
|
||||
#endif
|
||||
|
||||
// Retract filament
|
||||
unscaled_e_move(-(FILAMENT_UNLOAD_PURGE_RETRACT) * mix_multiplier, (PAUSE_PARK_RETRACT_FEEDRATE) * mix_multiplier);
|
||||
|
||||
@@ -503,6 +521,11 @@ void show_continue_prompt(const bool is_reload) {
|
||||
DEBUG_ECHOLNPGM("... is_reload:", is_reload);
|
||||
|
||||
ui.pause_show_message(is_reload ? PAUSE_MESSAGE_INSERT : PAUSE_MESSAGE_WAITING);
|
||||
#if ENABLED(SOVOL_SV06_RTS)
|
||||
rts.updateTempE0();
|
||||
rts.gotoPage(ID_Insert_L, ID_Insert_D);
|
||||
rts.sendData(Beep, SoundAddr);
|
||||
#endif
|
||||
SERIAL_ECHO_START();
|
||||
SERIAL_ECHO(is_reload ? F(_PMSG(STR_FILAMENT_CHANGE_INSERT) "\n") : F(_PMSG(STR_FILAMENT_CHANGE_WAIT) "\n"));
|
||||
}
|
||||
@@ -544,6 +567,10 @@ void wait_for_confirmation(const bool is_reload/*=false*/, const int8_t max_beep
|
||||
// re-heat the nozzle, re-show the continue prompt, restart idle timers, start over
|
||||
if (nozzle_timed_out) {
|
||||
ui.pause_show_message(PAUSE_MESSAGE_HEAT);
|
||||
#if ENABLED(SOVOL_SV06_RTS)
|
||||
rts.updateTempE0();
|
||||
rts.gotoPage(ID_HeatNozzle_L, ID_HeatNozzle_D);
|
||||
#endif
|
||||
SERIAL_ECHO_MSG(_PMSG(STR_FILAMENT_CHANGE_HEAT));
|
||||
|
||||
TERN_(HOST_PROMPT_SUPPORT, hostui.prompt_do(PROMPT_USER_CONTINUE, GET_TEXT_F(MSG_HEATER_TIMEOUT), GET_TEXT_F(MSG_REHEAT)));
|
||||
@@ -709,6 +736,12 @@ void resume_print(
|
||||
planner.set_e_position_mm((destination.e = current_position.e = resume_position.e));
|
||||
|
||||
ui.pause_show_message(PAUSE_MESSAGE_STATUS);
|
||||
#if ENABLED(SOVOL_SV06_RTS)
|
||||
if (pause_flag)
|
||||
rts.gotoPage(ID_PrintResume_L, ID_PrintResume_D);
|
||||
else
|
||||
rts.refreshTime();
|
||||
#endif
|
||||
|
||||
#ifdef ACTION_ON_RESUMED
|
||||
hostui.resumed();
|
||||
|
||||
@@ -35,10 +35,10 @@
|
||||
#include "../lcd/extui/ui_api.h"
|
||||
#endif
|
||||
|
||||
bool PrintJobRecovery::enabled; // Initialized by settings.load()
|
||||
bool PrintJobRecovery::enabled; // Initialized by settings.load
|
||||
|
||||
#if HAS_PLR_BED_THRESHOLD
|
||||
celsius_t PrintJobRecovery::bed_temp_threshold; // Initialized by settings.load()
|
||||
celsius_t PrintJobRecovery::bed_temp_threshold; // Initialized by settings.load
|
||||
#endif
|
||||
|
||||
MediaFile PrintJobRecovery::file;
|
||||
@@ -66,6 +66,10 @@ uint32_t PrintJobRecovery::cmd_sdpos, // = 0
|
||||
#include "../module/probe.h"
|
||||
#endif
|
||||
|
||||
#if ENABLED(SOVOL_SV06_RTS)
|
||||
#include "../lcd/sovol_rts/sovol_rts.h"
|
||||
#endif
|
||||
|
||||
#if ENABLED(FWRETRACT)
|
||||
#include "fwretract.h"
|
||||
#endif
|
||||
@@ -584,6 +588,11 @@ void PrintJobRecovery::resume() {
|
||||
// Resume the SD file from the last position
|
||||
PROCESS_SUBCOMMANDS_NOW(MString<MAX_CMD_SIZE>(F("M23 "), info.sd_filename));
|
||||
PROCESS_SUBCOMMANDS_NOW(TS(F("M24S"), resume_sdpos, 'T', info.print_job_elapsed));
|
||||
|
||||
#if ENABLED(SOVOL_SV06_RTS)
|
||||
if (rts.print_state) rts.refreshTime();
|
||||
rts.start_print_flag = false;
|
||||
#endif
|
||||
}
|
||||
|
||||
#if ENABLED(DEBUG_POWER_LOSS_RECOVERY)
|
||||
|
||||
@@ -32,6 +32,10 @@
|
||||
#include "../libs/duration_t.h"
|
||||
#include "../gcode/gcode.h"
|
||||
|
||||
#if ENABLED(SOVOL_SV06_RTS)
|
||||
#include "../lcd/sovol_rts/sovol_rts.h"
|
||||
#endif
|
||||
|
||||
#if ENABLED(TMC_DEBUG)
|
||||
#include "../libs/hex_print.h"
|
||||
#if ENABLED(MONITOR_DRIVER_STATUS)
|
||||
@@ -207,6 +211,7 @@
|
||||
if (data.is_ot) SERIAL_ECHOLNPGM("overtemperature");
|
||||
if (data.is_s2g) SERIAL_ECHOLNPGM("coil short circuit");
|
||||
TERN_(TMC_DEBUG, tmc_report_all());
|
||||
TERN_(SOVOL_SV06_RTS, rts.gotoPage(ID_DriverError_L, ID_DriverError_D));
|
||||
kill(F("Driver error"));
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -24,9 +24,16 @@
|
||||
#include "../inc/MarlinConfig.h"
|
||||
#include "../module/probe.h"
|
||||
|
||||
#if !WITHIN(TRAMMING_SCREW_THREAD, 30, 51) || TRAMMING_SCREW_THREAD % 10 > 1
|
||||
#error "TRAMMING_SCREW_THREAD must be equal to 30, 31, 40, 41, 50, or 51."
|
||||
#endif
|
||||
enum TrammingThread : uint8_t {
|
||||
M3_CW = 30, M3_CCW = 31,
|
||||
M4_CW = 40, M4_CCW = 41,
|
||||
M5_CW = 50, M5_CCW = 51
|
||||
};
|
||||
|
||||
static_assert(
|
||||
TRAMMING_SCREW_THREAD < 60 && TRAMMING_SCREW_THREAD % 10 < 2,
|
||||
"TRAMMING_SCREW_THREAD must be M3_CW, M3_CCW, M4_CW, M4_CCW, M5_CW, or M5_CCW."
|
||||
);
|
||||
|
||||
constexpr xy_pos_t tramming_points[] = TRAMMING_POINT_XY;
|
||||
|
||||
|
||||
@@ -30,7 +30,7 @@ XATC xatc;
|
||||
|
||||
bool XATC::enabled;
|
||||
float XATC::spacing, XATC::start;
|
||||
xatc_array_t XATC::z_offset; // Initialized by settings.load()
|
||||
xatc_array_t XATC::z_offset; // Initialized by settings.load
|
||||
|
||||
void XATC::reset() {
|
||||
constexpr float xzo[] = XATC_Z_OFFSETS;
|
||||
|
||||
@@ -33,6 +33,7 @@
|
||||
#include "../../../module/motion.h"
|
||||
#include "../../../module/planner.h"
|
||||
#include "../../../module/probe.h"
|
||||
#include "../../../module/temperature.h"
|
||||
#include "../../queue.h"
|
||||
|
||||
#if ENABLED(AUTO_BED_LEVELING_LINEAR)
|
||||
@@ -51,6 +52,8 @@
|
||||
#include "../../../lcd/extui/ui_api.h"
|
||||
#elif ENABLED(DWIN_CREALITY_LCD)
|
||||
#include "../../../lcd/e3v2/creality/dwin.h"
|
||||
#elif ENABLED(SOVOL_SV06_RTS)
|
||||
#include "../../../lcd/sovol_rts/sovol_rts.h"
|
||||
#endif
|
||||
|
||||
#define DEBUG_OUT ENABLED(DEBUG_LEVELING_FEATURE)
|
||||
@@ -438,6 +441,12 @@ G29_TYPE GcodeSuite::G29() {
|
||||
remember_feedrate_scaling_off();
|
||||
|
||||
#if ENABLED(PREHEAT_BEFORE_LEVELING)
|
||||
#if ENABLED(SOVOL_SV06_RTS)
|
||||
rts.updateTempE0();
|
||||
rts.updateTempBed();
|
||||
rts.sendData(1, Wait_VP);
|
||||
rts.gotoPage(ID_ABL_HeatWait_L, ID_ABL_HeatWait_D);
|
||||
#endif
|
||||
if (!abl.dryrun) probe.preheat_for_probing(LEVELING_NOZZLE_TEMP,
|
||||
TERN(EXTENSIBLE_UI, ExtUI::getLevelingBedTemp(), LEVELING_BED_TEMP)
|
||||
);
|
||||
@@ -775,6 +784,12 @@ G29_TYPE GcodeSuite::G29() {
|
||||
abl.z_values[abl.meshCount.x][abl.meshCount.y] = z;
|
||||
TERN_(EXTENSIBLE_UI, ExtUI::onMeshUpdate(abl.meshCount, z));
|
||||
|
||||
#if ENABLED(SOVOL_SV06_RTS)
|
||||
if (pt_index <= GRID_MAX_POINTS) rts.sendData(pt_index, AUTO_BED_LEVEL_ICON_VP);
|
||||
rts.sendData(z * 100.0f, AUTO_BED_LEVEL_1POINT_VP + (pt_index - 1) * 2);
|
||||
rts.gotoPage(ID_ABL_Wait_L, ID_ABL_Wait_D);
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
abl.reenable = false; // Don't re-enable after modifying the mesh
|
||||
@@ -812,7 +827,7 @@ G29_TYPE GcodeSuite::G29() {
|
||||
|
||||
#endif // AUTO_BED_LEVELING_3POINT
|
||||
|
||||
TERN_(HAS_STATUS_MESSAGE, ui.reset_status());
|
||||
ui.reset_status();
|
||||
|
||||
// Stow the probe. No raise for FIX_MOUNTED_PROBE.
|
||||
if (probe.stow()) {
|
||||
@@ -992,6 +1007,8 @@ G29_TYPE GcodeSuite::G29() {
|
||||
process_subcommands_now(F(EVENT_GCODE_AFTER_G29));
|
||||
#endif
|
||||
|
||||
TERN_(SOVOL_SV06_RTS, RTS_AutoBedLevelPage());
|
||||
|
||||
probe.use_probing_tool(false);
|
||||
|
||||
report_current_position();
|
||||
|
||||
@@ -58,6 +58,8 @@
|
||||
#include "../../lcd/extui/ui_api.h"
|
||||
#elif ENABLED(DWIN_CREALITY_LCD)
|
||||
#include "../../lcd/e3v2/creality/dwin.h"
|
||||
#elif ENABLED(SOVOL_SV06_RTS)
|
||||
#include "../../lcd/sovol_rts/sovol_rts.h"
|
||||
#endif
|
||||
|
||||
#if ENABLED(LASER_FEATURE)
|
||||
@@ -203,6 +205,11 @@
|
||||
* L<bool> Force leveling state ON (if possible) or OFF after homing (Requires RESTORE_LEVELING_AFTER_G28 or ENABLE_LEVELING_AFTER_G28)
|
||||
* O Home only if the position is not known and trusted
|
||||
* R<linear> Raise by n mm/inches before homing
|
||||
* H Hold the current X/Y position when executing a home Z, or if
|
||||
* multiple axes are homed, the position when Z home is executed.
|
||||
* When using a probe for Z Home, positions close to the edge may
|
||||
* fail with position unreachable due to probe/nozzle offset. This
|
||||
* can be used to avoid a model.
|
||||
*
|
||||
* Cartesian/SCARA parameters
|
||||
*
|
||||
@@ -315,9 +322,9 @@ void GcodeSuite::G28() {
|
||||
|
||||
#else // !DELTA && !AXEL_TPARA
|
||||
|
||||
#define _UNSAFE(A) (homeZ && TERN0(Z_SAFE_HOMING, axes_should_home(_BV(A##_AXIS))))
|
||||
#define _UNSAFE(A) TERN0(Z_SAFE_HOMING, homeZZ && axis_should_home(_AXIS(A)))
|
||||
|
||||
const bool homeZ = TERN0(HAS_Z_AXIS, parser.seen_test('Z')),
|
||||
const bool homeZZ = TERN0(HAS_Z_AXIS, parser.seen_test('Z')),
|
||||
NUM_AXIS_LIST_( // Other axes should be homed before Z safe-homing
|
||||
needX = _UNSAFE(X), needY = _UNSAFE(Y), needZ = false, // UNUSED
|
||||
needI = _UNSAFE(I), needJ = _UNSAFE(J), needK = _UNSAFE(K),
|
||||
@@ -326,7 +333,7 @@ void GcodeSuite::G28() {
|
||||
NUM_AXIS_LIST_( // Home each axis if needed or flagged
|
||||
homeX = needX || parser.seen_test('X'),
|
||||
homeY = needY || parser.seen_test('Y'),
|
||||
homeZZ = homeZ,
|
||||
homeZ = homeZZ,
|
||||
homeI = needI || parser.seen_test(AXIS4_NAME), homeJ = needJ || parser.seen_test(AXIS5_NAME),
|
||||
homeK = needK || parser.seen_test(AXIS6_NAME), homeU = needU || parser.seen_test(AXIS7_NAME),
|
||||
homeV = needV || parser.seen_test(AXIS8_NAME), homeW = needW || parser.seen_test(AXIS9_NAME)
|
||||
@@ -348,7 +355,7 @@ void GcodeSuite::G28() {
|
||||
|
||||
#if HAS_Z_AXIS
|
||||
|
||||
UNUSED(needZ); UNUSED(homeZZ);
|
||||
UNUSED(needZ);
|
||||
|
||||
// Z may home first, e.g., when homing away from the bed.
|
||||
// This is also permitted when homing with a Z endstop.
|
||||
@@ -371,7 +378,7 @@ void GcodeSuite::G28() {
|
||||
bool with_probe = ENABLED(HOMING_Z_WITH_PROBE);
|
||||
// Raise above the current Z (which should be synced in the planner)
|
||||
// The "height" for Z is a coordinate. But if Z is not trusted/homed make it relative.
|
||||
if (seenR || !TERN(HOME_AFTER_DEACTIVATE, axis_is_trusted, axis_was_homed)(Z_AXIS)) {
|
||||
if (seenR || !(z_min_trusted || axis_should_home(Z_AXIS))) {
|
||||
z_homing_height += current_position.z;
|
||||
with_probe = false;
|
||||
}
|
||||
@@ -432,8 +439,7 @@ void GcodeSuite::G28() {
|
||||
|
||||
#if HAS_Y_AXIS
|
||||
// Home Y (after X)
|
||||
if (DISABLED(HOME_Y_BEFORE_X) && doY)
|
||||
homeaxis(Y_AXIS);
|
||||
if (DISABLED(HOME_Y_BEFORE_X) && doY) homeaxis(Y_AXIS);
|
||||
#endif
|
||||
|
||||
#if ALL(FOAMCUTTER_XYUV, HAS_J_AXIS)
|
||||
@@ -459,7 +465,12 @@ void GcodeSuite::G28() {
|
||||
#endif
|
||||
|
||||
#if ENABLED(Z_SAFE_HOMING)
|
||||
if (TERN1(POWER_LOSS_RECOVERY, !parser.seen_test('H'))) home_z_safely(); else homeaxis(Z_AXIS);
|
||||
// H means hold the current X/Y position when probing.
|
||||
// Otherwise move to the define safe X/Y position before homing Z.
|
||||
if (!parser.seen_test('H'))
|
||||
home_z_safely();
|
||||
else
|
||||
homeaxis(Z_AXIS);
|
||||
#else
|
||||
homeaxis(Z_AXIS);
|
||||
#endif
|
||||
@@ -555,6 +566,7 @@ void GcodeSuite::G28() {
|
||||
|
||||
ui.refresh();
|
||||
|
||||
TERN_(SOVOL_SV06_RTS, RTS_MoveAxisHoming());
|
||||
TERN_(DWIN_CREALITY_LCD, dwinHomingDone());
|
||||
TERN_(EXTENSIBLE_UI, ExtUI::onHomingDone());
|
||||
|
||||
|
||||
@@ -332,10 +332,22 @@ inline void probe_sides(measurements_t &m, const float uncertainty) {
|
||||
probe_side(m, uncertainty, TOP);
|
||||
#endif
|
||||
|
||||
TERN_(CALIBRATION_MEASURE_RIGHT, probe_side(m, uncertainty, RIGHT, probe_top_at_edge));
|
||||
/**
|
||||
* Allow Y axis to probe and compute values before X axis (or remaining arbitrary axes)
|
||||
* to assist with centering in calibration object. Lulzbot saw issues with higher uncertainty
|
||||
* values where the nozzle was catching on the edges of the cube, and this was intended to help
|
||||
* ensure the probe object remained centered.
|
||||
*/
|
||||
TERN_(CALIBRATION_MEASURE_FRONT, probe_side(m, uncertainty, FRONT, probe_top_at_edge));
|
||||
TERN_(CALIBRATION_MEASURE_LEFT, probe_side(m, uncertainty, LEFT, probe_top_at_edge));
|
||||
TERN_(CALIBRATION_MEASURE_BACK, probe_side(m, uncertainty, BACK, probe_top_at_edge));
|
||||
|
||||
#if HAS_Y_CENTER
|
||||
m.obj_center.y = (m.obj_side[FRONT] + m.obj_side[BACK]) / 2;
|
||||
m.nozzle_outer_dimension.y = m.obj_side[BACK] - m.obj_side[FRONT] - dimensions.y;
|
||||
#endif
|
||||
|
||||
TERN_(CALIBRATION_MEASURE_LEFT, probe_side(m, uncertainty, LEFT, probe_top_at_edge));
|
||||
TERN_(CALIBRATION_MEASURE_RIGHT, probe_side(m, uncertainty, RIGHT, probe_top_at_edge));
|
||||
TERN_(CALIBRATION_MEASURE_IMIN, probe_side(m, uncertainty, IMINIMUM, probe_top_at_edge));
|
||||
TERN_(CALIBRATION_MEASURE_IMAX, probe_side(m, uncertainty, IMAXIMUM, probe_top_at_edge));
|
||||
TERN_(CALIBRATION_MEASURE_JMIN, probe_side(m, uncertainty, JMINIMUM, probe_top_at_edge));
|
||||
@@ -351,7 +363,6 @@ inline void probe_sides(measurements_t &m, const float uncertainty) {
|
||||
|
||||
// Compute the measured center of the calibration object.
|
||||
TERN_(HAS_X_CENTER, m.obj_center.x = (m.obj_side[LEFT] + m.obj_side[RIGHT]) / 2);
|
||||
TERN_(HAS_Y_CENTER, m.obj_center.y = (m.obj_side[FRONT] + m.obj_side[BACK]) / 2);
|
||||
TERN_(HAS_I_CENTER, m.obj_center.i = (m.obj_side[IMINIMUM] + m.obj_side[IMAXIMUM]) / 2);
|
||||
TERN_(HAS_J_CENTER, m.obj_center.j = (m.obj_side[JMINIMUM] + m.obj_side[JMAXIMUM]) / 2);
|
||||
TERN_(HAS_K_CENTER, m.obj_center.k = (m.obj_side[KMINIMUM] + m.obj_side[KMAXIMUM]) / 2);
|
||||
@@ -362,7 +373,6 @@ inline void probe_sides(measurements_t &m, const float uncertainty) {
|
||||
// Compute the outside diameter of the nozzle at the height
|
||||
// at which it makes contact with the calibration object
|
||||
TERN_(HAS_X_CENTER, m.nozzle_outer_dimension.x = m.obj_side[RIGHT] - m.obj_side[LEFT] - dimensions.x);
|
||||
TERN_(HAS_Y_CENTER, m.nozzle_outer_dimension.y = m.obj_side[BACK] - m.obj_side[FRONT] - dimensions.y);
|
||||
|
||||
park_above_object(m, uncertainty);
|
||||
|
||||
|
||||
@@ -0,0 +1,100 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (c) 2024 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
#include "../../inc/MarlinConfigPre.h"
|
||||
|
||||
#if ENABLED(EDITABLE_HOMING_FEEDRATE)
|
||||
|
||||
#include "../gcode.h"
|
||||
#include "../../module/motion.h"
|
||||
|
||||
/**
|
||||
* M210 - Set homing feedrate for one or more axes
|
||||
* in current units (in/mm) per minute
|
||||
*
|
||||
* X[feedrate] Set X axis homing feedrate
|
||||
* Y[feedrate] Set Y axis homing feedrate
|
||||
* Z[feedrate] Set Z axis homing feedrate
|
||||
* A[feedrate] Set I axis homing feedrate (configured axis name applies)
|
||||
* B[feedrate] Set J axis homing feedrate (configured axis name applies)
|
||||
* C[feedrate] Set K axis homing feedrate (configured axis name applies)
|
||||
* U[feedrate] Set U axis homing feedrate (configured axis name applies)
|
||||
* V[feedrate] Set V axis homing feedrate (configured axis name applies)
|
||||
* W[feedrate] Set W axis homing feedrate (configured axis name applies)
|
||||
*
|
||||
* With no arguments, report the current offsets.
|
||||
*/
|
||||
void GcodeSuite::M210() {
|
||||
if (!parser.seen_any())
|
||||
return M210_report();
|
||||
|
||||
#if HAS_X_AXIS
|
||||
if (parser.floatval('X') > 0) homing_feedrate_mm_m.x = parser.value_axis_units(X_AXIS);
|
||||
#endif
|
||||
#if HAS_Y_AXIS
|
||||
if (parser.floatval('Y') > 0) homing_feedrate_mm_m.y = parser.value_axis_units(Y_AXIS);
|
||||
#endif
|
||||
#if HAS_Z_AXIS
|
||||
if (parser.floatval('Z') > 0) homing_feedrate_mm_m.z = parser.value_axis_units(Z_AXIS);
|
||||
#endif
|
||||
#if HAS_I_AXIS
|
||||
if (parser.floatval(AXIS4_NAME) > 0) homing_feedrate_mm_m.i = parser.value_axis_units(I_AXIS);
|
||||
#endif
|
||||
#if HAS_J_AXIS
|
||||
if (parser.floatval(AXIS5_NAME) > 0) homing_feedrate_mm_m.j = parser.value_axis_units(J_AXIS);
|
||||
#endif
|
||||
#if HAS_K_AXIS
|
||||
if (parser.floatval(AXIS6_NAME) > 0) homing_feedrate_mm_m.k = parser.value_axis_units(K_AXIS);
|
||||
#endif
|
||||
#if HAS_U_AXIS
|
||||
if (parser.floatval(AXIS7_NAME) > 0) homing_feedrate_mm_m.u = parser.value_axis_units(U_AXIS);
|
||||
#endif
|
||||
#if HAS_V_AXIS
|
||||
if (parser.floatval(AXIS8_NAME) > 0) homing_feedrate_mm_m.v = parser.value_axis_units(V_AXIS);
|
||||
#endif
|
||||
#if HAS_W_AXIS
|
||||
if (parser.floatval(AXIS9_NAME) > 0) homing_feedrate_mm_m.w = parser.value_axis_units(W_AXIS);
|
||||
#endif
|
||||
}
|
||||
|
||||
void GcodeSuite::M210_report(const bool forReplay/*=true*/) {
|
||||
TERN_(MARLIN_SMALL_BUILD, return);
|
||||
|
||||
report_heading_etc(forReplay, F(STR_HOMING_FEEDRATE));
|
||||
|
||||
SERIAL_ECHOPGM(" M210");
|
||||
SERIAL_ECHOLNPGM_P(
|
||||
LIST_N(DOUBLE(NUM_AXES)
|
||||
, SP_X_STR, X_AXIS_UNIT(homing_feedrate_mm_m.x)
|
||||
, SP_Y_STR, Y_AXIS_UNIT(homing_feedrate_mm_m.y)
|
||||
, SP_Z_STR, Z_AXIS_UNIT(homing_feedrate_mm_m.z)
|
||||
, SP_I_STR, I_AXIS_UNIT(homing_feedrate_mm_m.i)
|
||||
, SP_J_STR, J_AXIS_UNIT(homing_feedrate_mm_m.j)
|
||||
, SP_K_STR, K_AXIS_UNIT(homing_feedrate_mm_m.k)
|
||||
, SP_U_STR, U_AXIS_UNIT(homing_feedrate_mm_m.u)
|
||||
, SP_V_STR, V_AXIS_UNIT(homing_feedrate_mm_m.v)
|
||||
, SP_W_STR, W_AXIS_UNIT(homing_feedrate_mm_m.w)
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
#endif // EDITABLE_HOMING_FEEDRATE
|
||||
@@ -32,7 +32,7 @@
|
||||
#endif
|
||||
|
||||
#if HAS_PRUSA_MMU3
|
||||
#include "../../feature/mmu3/mmu2.h"
|
||||
#include "../../feature/mmu3/mmu3.h"
|
||||
#elif HAS_PRUSA_MMU2
|
||||
#include "../../feature/mmu/mmu2.h"
|
||||
#endif
|
||||
|
||||
@@ -27,6 +27,9 @@
|
||||
#include "../../gcode.h"
|
||||
#include "../../../libs/nozzle.h"
|
||||
#include "../../../module/motion.h"
|
||||
#if ENABLED(SOVOL_SV06_RTS)
|
||||
#include "../../../lcd/sovol_rts/sovol_rts.h"
|
||||
#endif
|
||||
|
||||
/**
|
||||
* G27: Park the nozzle according with the given style
|
||||
@@ -42,6 +45,7 @@ void GcodeSuite::G27() {
|
||||
// Don't allow nozzle parking without homing first
|
||||
if (homing_needed_error()) return;
|
||||
nozzle.park(parser.ushortval('P'));
|
||||
TERN_(SOVOL_SV06_RTS, RTS_MoveAxisHoming());
|
||||
}
|
||||
|
||||
#endif // NOZZLE_PARK_FEATURE
|
||||
|
||||
@@ -88,7 +88,7 @@ void GcodeSuite::M125() {
|
||||
park_point += hotend_offset[active_extruder];
|
||||
#endif
|
||||
|
||||
const bool sd_printing = TERN0(HAS_MEDIA, IS_SD_PRINTING());
|
||||
const bool sd_printing = IS_SD_PRINTING();
|
||||
|
||||
ui.pause_show_message(PAUSE_MESSAGE_PARKING, PAUSE_MODE_PAUSE_PRINT);
|
||||
|
||||
|
||||
@@ -28,14 +28,18 @@
|
||||
#include "../../../feature/pause.h"
|
||||
#include "../../../module/motion.h"
|
||||
#include "../../../module/printcounter.h"
|
||||
|
||||
#include "../../../lcd/marlinui.h"
|
||||
#if ENABLED(SOVOL_SV06_RTS)
|
||||
#include "../../../lcd/sovol_rts/sovol_rts.h"
|
||||
#endif
|
||||
|
||||
#if HAS_MULTI_EXTRUDER
|
||||
#include "../../../module/tool_change.h"
|
||||
#endif
|
||||
|
||||
#if HAS_PRUSA_MMU3
|
||||
#include "../../../feature/mmu3/mmu2.h"
|
||||
#include "../../../feature/mmu3/mmu3.h"
|
||||
#if ENABLED(MMU_MENUS)
|
||||
#include "../../../lcd/menu/menu_mmu2.h"
|
||||
#endif
|
||||
@@ -115,6 +119,8 @@ void GcodeSuite::M600() {
|
||||
if (standardM600)
|
||||
ui.pause_show_message(PAUSE_MESSAGE_CHANGING, PAUSE_MODE_PAUSE_PRINT, target_extruder);
|
||||
|
||||
TERN_(SOVOL_SV06_RTS, rts.gotoPage(ID_ChangeWait_L, ID_ChangeWait_D)); //given the context it seems this likely should have been pages 6 & 61
|
||||
|
||||
// If needed, home before parking for filament change
|
||||
TERN_(HOME_BEFORE_FILAMENT_CHANGE, home_if_needed(true));
|
||||
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
#endif
|
||||
|
||||
#if HAS_PRUSA_MMU3
|
||||
#include "../../../feature/mmu3/mmu2.h"
|
||||
#include "../../../feature/mmu3/mmu3.h"
|
||||
#elif HAS_PRUSA_MMU2
|
||||
#include "../../../feature/mmu/mmu2.h"
|
||||
#endif
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
#include "../../gcode.h"
|
||||
|
||||
#if HAS_PRUSA_MMU3
|
||||
#include "../../../feature/mmu3/mmu2.h"
|
||||
#include "../../../feature/mmu3/mmu3.h"
|
||||
#elif HAS_PRUSA_MMU2
|
||||
#include "../../../feature/mmu/mmu2.h"
|
||||
#endif
|
||||
|
||||
@@ -26,8 +26,8 @@
|
||||
|
||||
#include "../../gcode.h"
|
||||
#include "../../../module/settings.h"
|
||||
#include "../../../feature/mmu3/mmu2.h"
|
||||
#include "../../../feature/mmu3/mmu2_reporting.h"
|
||||
#include "../../../feature/mmu3/mmu3.h"
|
||||
#include "../../../feature/mmu3/mmu3_reporting.h"
|
||||
#include "../../../feature/mmu3/SpoolJoin.h"
|
||||
|
||||
// Shared by the G-codes below to save flash memory.
|
||||
@@ -39,7 +39,7 @@ static void gcodes_M704_M705_M706(uint16_t gcode) {
|
||||
case 704: mmu3.load_to_feeder(mmuSlotIndex); break;
|
||||
case 705: mmu3.eject_filament(mmuSlotIndex, false); break;
|
||||
case 706:
|
||||
#if ENABLED(MMU_HAS_CUTTER)
|
||||
#if ENABLED(MMU3_HAS_CUTTER)
|
||||
if (mmu3.cutter_mode > 0) mmu3.cut_filament(mmuSlotIndex);
|
||||
#endif
|
||||
break;
|
||||
@@ -187,7 +187,7 @@ void GcodeSuite::MMU3_report(const bool forReplay/*=true*/) {
|
||||
report_heading(forReplay, F("MMU3 Operational Stats"));
|
||||
SERIAL_ECHOPGM(" MMU "); serialprintln_onoff(mmu3.mmu_hw_enabled);
|
||||
SERIAL_ECHOPGM(" Stealth Mode "); serialprintln_onoff(mmu3.stealth_mode);
|
||||
#if ENABLED(MMU_HAS_CUTTER)
|
||||
#if ENABLED(MMU3_HAS_CUTTER)
|
||||
SERIAL_ECHOPGM(" Cutter ");
|
||||
serialprintln_onoff(mmu3.cutter_mode != 0);
|
||||
#endif
|
||||
|
||||
@@ -200,9 +200,10 @@ void GcodeSuite::get_destination_from_command() {
|
||||
#endif
|
||||
|
||||
if (parser.floatval('F') > 0) {
|
||||
feedrate_mm_s = parser.value_feedrate();
|
||||
const float fr_mm_min = parser.value_linear_units();
|
||||
feedrate_mm_s = MMM_TO_MMS(fr_mm_min);
|
||||
// Update the cutter feed rate for use by M4 I set inline moves.
|
||||
TERN_(LASER_FEATURE, cutter.feedrate_mm_m = MMS_TO_MMM(feedrate_mm_s));
|
||||
TERN_(LASER_FEATURE, cutter.feedrate_mm_m = fr_mm_min);
|
||||
}
|
||||
|
||||
#if ALL(PRINTCOUNTER, HAS_EXTRUDERS)
|
||||
@@ -350,7 +351,7 @@ void GcodeSuite::process_parsed_command(const bool no_ok/*=false*/) {
|
||||
case 0: case 1: // G0: Fast Move, G1: Linear Move
|
||||
G0_G1(TERN_(HAS_FAST_MOVES, parser.codenum == 0)); break;
|
||||
|
||||
#if ENABLED(ARC_SUPPORT) && DISABLED(SCARA)
|
||||
#if ENABLED(ARC_SUPPORT)
|
||||
case 2: case 3: G2_G3(parser.codenum == 2); break; // G2: CW ARC, G3: CCW ARC
|
||||
#endif
|
||||
|
||||
@@ -742,6 +743,10 @@ void GcodeSuite::process_parsed_command(const bool no_ok/*=false*/) {
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if ENABLED(EDITABLE_HOMING_FEEDRATE)
|
||||
case 210: M210(); break; // M210: Set the homing feedrate
|
||||
#endif
|
||||
|
||||
#if HAS_SOFTWARE_ENDSTOPS
|
||||
case 211: M211(); break; // M211: Enable, Disable, and/or Report software endstops
|
||||
#endif
|
||||
|
||||
@@ -195,6 +195,7 @@
|
||||
* M208 - Set Recover (unretract) Additional (!) Length: S<length> and Feedrate: F<units/min>. (Requires FWRETRACT)
|
||||
* M209 - Turn Automatic Retract Detection on/off: S<0|1> (For slicers that don't support G10/11). (Requires FWRETRACT_AUTORETRACT)
|
||||
Every normal extrude-only move will be classified as retract depending on the direction.
|
||||
* M210 - Set or Report the homing feedrate (Requires EDITABLE_HOMING_FEEDRATE)
|
||||
* M211 - Enable, Disable, and/or Report software endstops: S<0|1> (Requires MIN_SOFTWARE_ENDSTOPS or MAX_SOFTWARE_ENDSTOPS)
|
||||
* M217 - Set filament swap parameters: "M217 S<length> P<feedrate> R<feedrate>". (Requires SINGLENOZZLE)
|
||||
* M218 - Set/get a tool offset: "M218 T<index> X<offset> Y<offset>". (Requires 2 or more extruders)
|
||||
@@ -897,8 +898,15 @@ private:
|
||||
#endif
|
||||
#endif
|
||||
|
||||
static void M211();
|
||||
static void M211_report(const bool forReplay=true);
|
||||
#if ENABLED(EDITABLE_HOMING_FEEDRATE)
|
||||
static void M210();
|
||||
static void M210_report(const bool forReplay=true);
|
||||
#endif
|
||||
|
||||
#if HAS_SOFTWARE_ENDSTOPS
|
||||
static void M211();
|
||||
static void M211_report(const bool forReplay=true);
|
||||
#endif
|
||||
|
||||
#if HAS_MULTI_EXTRUDER
|
||||
static void M217();
|
||||
|
||||
@@ -35,6 +35,10 @@
|
||||
#include "../../module/planner.h"
|
||||
#endif
|
||||
|
||||
#if ENABLED(SOVOL_SV06_RTS)
|
||||
#include "../../lcd/sovol_rts/sovol_rts.h"
|
||||
#endif
|
||||
|
||||
extern xyze_pos_t destination;
|
||||
|
||||
#if ENABLED(VARIABLE_G0_FEEDRATE)
|
||||
@@ -116,4 +120,6 @@ void GcodeSuite::G0_G1(TERN_(HAS_FAST_MOVES, const bool fast_move/*=false*/)) {
|
||||
#else
|
||||
TERN_(FULL_REPORT_TO_HOST_FEATURE, report_current_grblstate_moving());
|
||||
#endif
|
||||
|
||||
TERN_(SOVOL_SV06_RTS, RTS_PauseMoveAxisPage());
|
||||
}
|
||||
|
||||
@@ -29,12 +29,6 @@
|
||||
#include "../../module/planner.h"
|
||||
#include "../../module/temperature.h"
|
||||
|
||||
#if ENABLED(DELTA)
|
||||
#include "../../module/delta.h"
|
||||
#elif ENABLED(SCARA)
|
||||
#include "../../module/scara.h"
|
||||
#endif
|
||||
|
||||
#if N_ARC_CORRECTION < 1
|
||||
#undef N_ARC_CORRECTION
|
||||
#define N_ARC_CORRECTION 1
|
||||
|
||||
@@ -26,10 +26,6 @@
|
||||
#include "../gcode.h"
|
||||
#include "../../libs/BL24CXX.h"
|
||||
|
||||
#if ENABLED(CREALITY_RTS)
|
||||
#include "../../lcd/rts/lcd_rts.h"
|
||||
#endif
|
||||
|
||||
#define OTA_FLAG_EEPROM 90
|
||||
|
||||
//#define DEBUG_OUT 1
|
||||
@@ -48,21 +44,11 @@ void GcodeSuite::M936() {
|
||||
// Set the OTA board firmware upgrade flag ahead of reboot.
|
||||
ota_update_flag = 0x01;
|
||||
DEBUG_ECHOLNPGM("Motherboard upgrade flag set");
|
||||
TERN_(CREALITY_RTS, RTS_Error(Error_205));
|
||||
break;
|
||||
|
||||
#if ENABLED(CREALITY_RTS)
|
||||
case 3:
|
||||
// Set the OTA screen firmware upgrade flag ahead of reboot.
|
||||
ota_update_flag = 0x02;
|
||||
DEBUG_ECHOLNPGM("DWIN upgrade flag set");
|
||||
TERN_(CREALITY_RTS, RTS_Error(Error_206));
|
||||
break;
|
||||
#endif
|
||||
}
|
||||
|
||||
switch (ota) {
|
||||
case 2: TERN_(CREALITY_RTS, case 3:)
|
||||
case 2:
|
||||
BL24CXX::write(OTA_FLAG_EEPROM, &ota_update_flag, sizeof(ota_update_flag));
|
||||
safe_delay(100);
|
||||
hal.reboot();
|
||||
|
||||
@@ -115,9 +115,7 @@ void GCodeParser::parse(char *p) {
|
||||
reset(); // No codes to report
|
||||
|
||||
auto uppercase = [](char c) {
|
||||
if (TERN0(GCODE_CASE_INSENSITIVE, WITHIN(c, 'a', 'z')))
|
||||
c += 'A' - 'a';
|
||||
return c;
|
||||
return TERN0(GCODE_CASE_INSENSITIVE, WITHIN(c, 'a', 'z')) ? c + 'A' - 'a' : c;
|
||||
};
|
||||
|
||||
// Skip spaces
|
||||
|
||||
@@ -192,7 +192,7 @@ public:
|
||||
#if ENABLED(GCODE_CASE_INSENSITIVE)
|
||||
FORCE_INLINE static char* strgchr(char *p, char g) {
|
||||
auto uppercase = [](char c) {
|
||||
return c + (WITHIN(c, 'a', 'z') ? 'A' - 'a' : 0);
|
||||
return TERN0(GCODE_CASE_INSENSITIVE, WITHIN(c, 'a', 'z')) ? c + 'A' - 'a' : c;
|
||||
};
|
||||
const char d = uppercase(g);
|
||||
for (char cc; (cc = uppercase(*p)); p++) if (cc == d) return p;
|
||||
@@ -347,6 +347,9 @@ public:
|
||||
#define LINEAR_UNIT(V) parser.mm_to_linear_unit(V)
|
||||
#define VOLUMETRIC_UNIT(V) parser.mm_to_volumetric_unit(V)
|
||||
|
||||
#define X_AXIS_UNIT LINEAR_UNIT
|
||||
#define Y_AXIS_UNIT LINEAR_UNIT
|
||||
#define Z_AXIS_UNIT LINEAR_UNIT
|
||||
#define I_AXIS_UNIT(V) TERN(AXIS4_ROTATES, (V), LINEAR_UNIT(V))
|
||||
#define J_AXIS_UNIT(V) TERN(AXIS5_ROTATES, (V), LINEAR_UNIT(V))
|
||||
#define K_AXIS_UNIT(V) TERN(AXIS6_ROTATES, (V), LINEAR_UNIT(V))
|
||||
|
||||
@@ -50,8 +50,7 @@
|
||||
*/
|
||||
void GcodeSuite::G30() {
|
||||
|
||||
xy_pos_t old_pos = current_position,
|
||||
probepos = current_position;
|
||||
xy_pos_t probepos = current_position;
|
||||
|
||||
const bool seenX = parser.seenval('X');
|
||||
if (seenX) probepos.x = RAW_X_POSITION(parser.value_linear_units());
|
||||
@@ -62,21 +61,28 @@ void GcodeSuite::G30() {
|
||||
|
||||
if (probe.can_reach(probepos)) {
|
||||
|
||||
if (seenX) old_pos.x = probepos.x;
|
||||
if (seenY) old_pos.y = probepos.y;
|
||||
|
||||
// Disable leveling so the planner won't mess with us
|
||||
TERN_(HAS_LEVELING, set_bed_leveling_enabled(false));
|
||||
|
||||
// Disable feedrate scaling so movement speeds are correct
|
||||
remember_feedrate_scaling_off();
|
||||
|
||||
// With VERBOSE_SINGLE_PROBE home only if needed
|
||||
TERN_(VERBOSE_SINGLE_PROBE, process_subcommands_now(F("G28O")));
|
||||
|
||||
// Raise after based on the 'E' parameter
|
||||
const ProbePtRaise raise_after = parser.boolval('E', true) ? PROBE_PT_STOW : PROBE_PT_NONE;
|
||||
|
||||
// Use 'C' to set Probe Temperature Compensation ON/OFF (on by default)
|
||||
TERN_(HAS_PTC, ptc.set_enabled(parser.boolval('C', true)));
|
||||
|
||||
// Probe the bed, optionally raise, and return the measured height
|
||||
const float measured_z = probe.probe_at_point(probepos, raise_after);
|
||||
|
||||
// After probing always re-enable Probe Temperature Compensation
|
||||
TERN_(HAS_PTC, ptc.set_enabled(true));
|
||||
|
||||
// Report a good probe result to the host and LCD
|
||||
if (!isnan(measured_z)) {
|
||||
const xy_pos_t lpos = probepos.asLogical();
|
||||
SString<30> msg(
|
||||
@@ -88,9 +94,11 @@ void GcodeSuite::G30() {
|
||||
TERN_(VERBOSE_SINGLE_PROBE, ui.set_status(msg));
|
||||
}
|
||||
|
||||
// Restore feedrate scaling
|
||||
restore_feedrate_and_scaling();
|
||||
|
||||
do_blocking_move_to(old_pos);
|
||||
// Move the nozzle to the position of the probe
|
||||
do_blocking_move_to(probepos);
|
||||
|
||||
if (raise_after == PROBE_PT_STOW)
|
||||
probe.move_z_after_probing();
|
||||
|
||||
@@ -59,6 +59,10 @@
|
||||
#define PE_LEDS_COMPLETED_TIME (30*60)
|
||||
#endif
|
||||
|
||||
#if ENABLED(SOVOL_SV06_RTS)
|
||||
#include "../../lcd/sovol_rts/sovol_rts.h"
|
||||
#endif
|
||||
|
||||
/**
|
||||
* M1001: Execute actions for SD print completion
|
||||
*/
|
||||
@@ -110,6 +114,14 @@ void GcodeSuite::M1001() {
|
||||
|
||||
// Re-select the last printed file in the UI
|
||||
TERN_(SD_REPRINT_LAST_SELECTED_FILE, ui.reselect_last_file());
|
||||
|
||||
#if ENABLED(SOVOL_SV06_RTS)
|
||||
rts.sendData(100, PRINT_PROCESS_VP); delay(1);
|
||||
rts.sendData(100, PRINT_PROCESS_ICON_VP); delay(1);
|
||||
rts.sendData(0, PRINT_SURPLUS_TIME_HOUR_VP); delay(1);
|
||||
rts.sendData(0, PRINT_SURPLUS_TIME_MIN_VP); delay(1);
|
||||
rts.gotoPage(ID_Finish_L, ID_Finish_D);
|
||||
#endif
|
||||
}
|
||||
|
||||
#endif // HAS_MEDIA
|
||||
|
||||
@@ -468,7 +468,7 @@
|
||||
#elif defined(ANYCUBIC_LCD_SERIAL_PORT)
|
||||
#error "ANYCUBIC_LCD_SERIAL_PORT is now LCD_SERIAL_PORT."
|
||||
#elif defined(INTERNAL_SERIAL_PORT)
|
||||
#error "INTERNAL_SERIAL_PORT is now MMU2_SERIAL_PORT."
|
||||
#error "INTERNAL_SERIAL_PORT is now MMU_SERIAL_PORT."
|
||||
#elif defined(X_DUAL_ENDSTOPS_ADJUSTMENT) || defined(Y_DUAL_ENDSTOPS_ADJUSTMENT) || defined(Z_DUAL_ENDSTOPS_ADJUSTMENT)
|
||||
#error "[XYZ]_DUAL_ENDSTOPS_ADJUSTMENT is now [XYZ]2_ENDSTOP_ADJUSTMENT."
|
||||
#elif defined(Z_TRIPLE_ENDSTOPS_ADJUSTMENT2) || defined(Z_TRIPLE_ENDSTOPS_ADJUSTMENT3)
|
||||
@@ -676,7 +676,7 @@
|
||||
#elif defined(Z2_USE_ENDSTOP)
|
||||
#error "Z2_USE_ENDSTOP is obsolete. Instead set Z2_STOP_PIN directly. (e.g., 'Z2_USE_ENDSTOP _ZMAX_' becomes 'Z2_STOP_PIN Z_MAX_PIN')"
|
||||
#elif defined(Z3_USE_ENDSTOP)
|
||||
#error "Z3_USE_ENDSTOP is obsolete. Instead set Z2_STOP_PIN directly. (e.g., 'Z3_USE_ENDSTOP _ZMAX_' becomes 'Z3_STOP_PIN Z_MAX_PIN')"
|
||||
#error "Z3_USE_ENDSTOP is obsolete. Instead set Z3_STOP_PIN directly. (e.g., 'Z3_USE_ENDSTOP _ZMAX_' becomes 'Z3_STOP_PIN Z_MAX_PIN')"
|
||||
#elif defined(Z4_USE_ENDSTOP)
|
||||
#error "Z4_USE_ENDSTOP is obsolete. Instead set Z4_STOP_PIN directly. (e.g., 'Z4_USE_ENDSTOP _ZMAX_' becomes 'Z4_STOP_PIN Z_MAX_PIN')"
|
||||
#elif defined(INTEGRATED_BABYSTEPPING)
|
||||
@@ -701,6 +701,46 @@
|
||||
#error "CALIBRATION_MEASUREMENT_RESOLUTION is no longer needed and should be removed."
|
||||
#elif defined(MMU2_MENUS)
|
||||
#error "MMU2_MENUS is now MMU_MENUS."
|
||||
#elif defined(MMU2_SERIAL_PORT)
|
||||
#error "MMU2_SERIAL_PORT is now MMU_SERIAL_PORT."
|
||||
#elif defined(MMU2_RST_PIN)
|
||||
#error "MMU2_RST_PIN is now MMU_RST_PIN."
|
||||
#elif defined(MMU2_MAX_RETRIES)
|
||||
#error "MMU2_MAX_RETRIES is now MMU3_MAX_RETRIES."
|
||||
#elif defined(MMU2_FILAMENT_SENSOR_POSITION)
|
||||
#error "MMU2_FILAMENT_SENSOR_POSITION is now MMU3_FILAMENT_SENSOR_POSITION."
|
||||
#elif defined(MMU2_TOOL_CHANGE_LOAD_LENGTH)
|
||||
#error "MMU2_TOOL_CHANGE_LOAD_LENGTH is now MMU3_TOOL_CHANGE_LOAD_LENGTH."
|
||||
#elif defined(MMU2_LOAD_TO_NOZZLE_FEED_RATE)
|
||||
#error "MMU2_LOAD_TO_NOZZLE_FEED_RATE is now MMU3_LOAD_TO_NOZZLE_FEED_RATE."
|
||||
#elif defined(MMU2_UNLOAD_TO_FINDA_FEED_RATE)
|
||||
#error "MMU2_UNLOAD_TO_FINDA_FEED_RATE is no longer needed and should be removed."
|
||||
#elif defined(MMU2_VERIFY_LOAD_TO_NOZZLE_FEED_RATE)
|
||||
#error "MMU2_VERIFY_LOAD_TO_NOZZLE_FEED_RATE is now MMU3_VERIFY_LOAD_TO_NOZZLE_FEED_RATE."
|
||||
#elif defined(MMU2_RETRY_UNLOAD_TO_FINDA_LENGTH)
|
||||
#error "MMU2_RETRY_UNLOAD_TO_FINDA_LENGTH is now MMU3_RETRY_UNLOAD_TO_FINDA_LENGTH."
|
||||
#elif defined(MMU2_RETRY_UNLOAD_TO_FINDA_FEED_RATE)
|
||||
#error "MMU2_RETRY_UNLOAD_TO_FINDA_FEED_RATE is now MMU3_RETRY_UNLOAD_TO_FINDA_FEED_RATE."
|
||||
#elif defined(MMU2_FILAMENT_SENSOR_POSITION)
|
||||
#error "MMU2_FILAMENT_SENSOR_POSITION is now MMU3_FILAMENT_SENSOR_E_POSITION."
|
||||
#elif defined(MMU2_CHECK_FILAMENT_PRESENCE_EXTRUSION_LENGTH)
|
||||
#error "MMU2_CHECK_FILAMENT_PRESENCE_EXTRUSION_LENGTH is now MMU3_CHECK_FILAMENT_PRESENCE_EXTRUSION_LENGTH."
|
||||
#elif defined(MMU_HAS_CUTTER)
|
||||
#error "MMU_HAS_CUTTER is now MMU3_HAS_CUTTER."
|
||||
#elif defined(MMU_FORCE_STEALTH_MODE)
|
||||
#error "MMU_FORCE_STEALTH_MODE is obsolete and should be removed."
|
||||
#elif defined(MMU_SPOOL_JOIN_CONSUMES_ALL_FILAMENT)
|
||||
#error "MMU_SPOOL_JOIN_CONSUMES_ALL_FILAMENT is now MMU3_SPOOL_JOIN_CONSUMES_ALL_FILAMENT."
|
||||
#elif HAS_PRUSA_MMU3 && defined(MMU2_LOAD_TO_NOZZLE_SEQUENCE)
|
||||
#error "MMU2_LOAD_TO_NOZZLE_SEQUENCE is now MMU3_LOAD_TO_NOZZLE_SEQUENCE for MMU_MODEL MMU3."
|
||||
#elif HAS_PRUSA_MMU3 && defined(MMU2_RAMMING_SEQUENCE)
|
||||
#error "MMU2_RAMMING_SEQUENCE is now MMU3_RAMMING_SEQUENCE for MMU_MODEL MMU3."
|
||||
#elif defined(MMU_EXTRUDER_SENSOR)
|
||||
#error "MMU_EXTRUDER_SENSOR is now MMU2_EXTRUDER_SENSOR."
|
||||
#elif defined(MMU_LOADING_ATTEMPTS_NR)
|
||||
#error "MMU_LOADING_ATTEMPTS_NR is now MMU2_LOADING_ATTEMPTS_NR."
|
||||
#elif defined(MMU2_DEBUG)
|
||||
#error "MMU2_DEBUG is now MMU_DEBUG."
|
||||
#elif defined(FTM_SHAPING_DEFAULT_X_FREQ) || defined(FTM_SHAPING_DEFAULT_Y_FREQ)
|
||||
#error "FTM_SHAPING_DEFAULT_[XY]_FREQ is now FTM_SHAPING_DEFAULT_FREQ_[XY]."
|
||||
#endif
|
||||
|
||||
@@ -22,10 +22,16 @@
|
||||
#pragma once
|
||||
|
||||
/**
|
||||
* Conditionals_axes.h
|
||||
* Conditionals-1-axes.h
|
||||
* Conditionals that need to be set before Configuration_adv.h or pins.h
|
||||
*/
|
||||
|
||||
//========================================================
|
||||
// Get requirements for the benefit of IntelliSense, etc.
|
||||
//
|
||||
#include "MarlinConfigPre-1-axes.h"
|
||||
//========================================================
|
||||
|
||||
/**
|
||||
* Extruders have some combination of stepper motors and hotends
|
||||
* so we separate these concepts into the defines:
|
||||
@@ -46,6 +52,26 @@
|
||||
#else
|
||||
#undef EXTRUDERS
|
||||
#define EXTRUDERS 0
|
||||
#undef TEMP_SENSOR_0
|
||||
#undef TEMP_SENSOR_1
|
||||
#undef TEMP_SENSOR_2
|
||||
#undef TEMP_SENSOR_3
|
||||
#undef TEMP_SENSOR_4
|
||||
#undef TEMP_SENSOR_5
|
||||
#undef TEMP_SENSOR_6
|
||||
#undef TEMP_SENSOR_7
|
||||
#undef SINGLENOZZLE
|
||||
#undef SWITCHING_EXTRUDER
|
||||
#undef MECHANICAL_SWITCHING_EXTRUDER
|
||||
#undef SWITCHING_NOZZLE
|
||||
#undef MECHANICAL_SWITCHING_NOZZLE
|
||||
#undef MIXING_EXTRUDER
|
||||
#undef HOTEND_IDLE_TIMEOUT
|
||||
#undef DISABLE_E
|
||||
#undef PREVENT_LENGTHY_EXTRUDE
|
||||
#undef FILAMENT_RUNOUT_SENSOR
|
||||
#undef FILAMENT_RUNOUT_DISTANCE_MM
|
||||
#undef DISABLE_OTHER_EXTRUDERS
|
||||
#endif
|
||||
|
||||
#define E_OPTARG(N) OPTARG(HAS_MULTI_EXTRUDER, N)
|
||||
@@ -162,6 +188,11 @@
|
||||
#ifndef HOTEND_OVERSHOOT
|
||||
#define HOTEND_OVERSHOOT 15
|
||||
#endif
|
||||
#else
|
||||
#undef MPCTEMP
|
||||
#undef PIDTEMP
|
||||
#undef PREVENT_COLD_EXTRUSION
|
||||
#undef THERMAL_PROTECTION_HOTENDS
|
||||
#endif
|
||||
|
||||
// More than one hotend...
|
||||
@@ -177,6 +208,10 @@
|
||||
#ifndef HOTEND_OFFSET_Z
|
||||
#define HOTEND_OFFSET_Z { 0 } // Z offsets for each extruder
|
||||
#endif
|
||||
#else
|
||||
#undef HOTEND_OFFSET_X
|
||||
#undef HOTEND_OFFSET_Y
|
||||
#undef HOTEND_OFFSET_Z
|
||||
#endif
|
||||
|
||||
/**
|
||||
@@ -514,185 +549,3 @@
|
||||
#define ARRAY_BY_EXTRUDERS1(v1) ARRAY_N_1(EXTRUDERS, v1)
|
||||
#define ARRAY_BY_HOTENDS(V...) ARRAY_N(HOTENDS, V)
|
||||
#define ARRAY_BY_HOTENDS1(v1) ARRAY_N_1(HOTENDS, v1)
|
||||
|
||||
/**
|
||||
* Extruders have some combination of stepper motors and hotends
|
||||
* so we separate these concepts into the defines:
|
||||
*
|
||||
* EXTRUDERS - Number of Selectable Tools
|
||||
* HOTENDS - Number of hotends, whether connected or separate
|
||||
* E_STEPPERS - Number of actual E stepper motors
|
||||
* E_MANUAL - Number of E steppers for LCD move options
|
||||
*
|
||||
* These defines must be simple constants for use in REPEAT, etc.
|
||||
*/
|
||||
#if EXTRUDERS
|
||||
#define HAS_EXTRUDERS 1
|
||||
#if EXTRUDERS > 1
|
||||
#define HAS_MULTI_EXTRUDER 1
|
||||
#endif
|
||||
#define E_AXIS_N(E) AxisEnum(E_AXIS + E_INDEX_N(E))
|
||||
#else
|
||||
#undef EXTRUDERS
|
||||
#define EXTRUDERS 0
|
||||
#undef TEMP_SENSOR_0
|
||||
#undef TEMP_SENSOR_1
|
||||
#undef TEMP_SENSOR_2
|
||||
#undef TEMP_SENSOR_3
|
||||
#undef TEMP_SENSOR_4
|
||||
#undef TEMP_SENSOR_5
|
||||
#undef TEMP_SENSOR_6
|
||||
#undef TEMP_SENSOR_7
|
||||
#undef SINGLENOZZLE
|
||||
#undef SWITCHING_EXTRUDER
|
||||
#undef MECHANICAL_SWITCHING_EXTRUDER
|
||||
#undef SWITCHING_NOZZLE
|
||||
#undef MECHANICAL_SWITCHING_NOZZLE
|
||||
#undef MIXING_EXTRUDER
|
||||
#undef HOTEND_IDLE_TIMEOUT
|
||||
#undef DISABLE_E
|
||||
#undef PREVENT_LENGTHY_EXTRUDE
|
||||
#undef FILAMENT_RUNOUT_SENSOR
|
||||
#undef FILAMENT_RUNOUT_DISTANCE_MM
|
||||
#undef DISABLE_OTHER_EXTRUDERS
|
||||
#endif
|
||||
|
||||
#define E_OPTARG(N) OPTARG(HAS_MULTI_EXTRUDER, N)
|
||||
#define E_TERN_(N) TERN_(HAS_MULTI_EXTRUDER, N)
|
||||
#define E_TERN0(N) TERN0(HAS_MULTI_EXTRUDER, N)
|
||||
|
||||
#if ANY(SWITCHING_EXTRUDER, MECHANICAL_SWITCHING_EXTRUDER)
|
||||
#define HAS_SWITCHING_EXTRUDER 1
|
||||
#endif
|
||||
#if ANY(SWITCHING_NOZZLE, MECHANICAL_SWITCHING_NOZZLE)
|
||||
#define HAS_SWITCHING_NOZZLE 1
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Multi-Material-Unit supported models
|
||||
*/
|
||||
#ifdef MMU_MODEL
|
||||
#define HAS_MMU 1
|
||||
#define SINGLENOZZLE
|
||||
|
||||
#define _PRUSA_MMU1 1
|
||||
#define _PRUSA_MMU2 2
|
||||
#define _PRUSA_MMU2S 3
|
||||
#define _PRUSA_MMU3 4
|
||||
#define _EXTENDABLE_EMU_MMU2 12
|
||||
#define _EXTENDABLE_EMU_MMU2S 13
|
||||
#define _EXTENDABLE_EMU_MMU3 14
|
||||
#define _MMU CAT(_,MMU_MODEL)
|
||||
|
||||
#if _MMU == _PRUSA_MMU1
|
||||
#define HAS_PRUSA_MMU1 1
|
||||
#elif _MMU % 10 == _PRUSA_MMU2
|
||||
#define HAS_PRUSA_MMU2 1
|
||||
#elif _MMU % 10 == _PRUSA_MMU2S
|
||||
#define HAS_PRUSA_MMU2 1
|
||||
#define HAS_PRUSA_MMU2S 1
|
||||
#elif _MMU % 10 == _PRUSA_MMU3
|
||||
#define HAS_PRUSA_MMU3 1
|
||||
#endif
|
||||
#if _MMU == _EXTENDABLE_EMU_MMU2 || _MMU == _EXTENDABLE_EMU_MMU2S
|
||||
#define HAS_EXTENDABLE_MMU 1
|
||||
#endif
|
||||
|
||||
#undef _MMU
|
||||
#undef _PRUSA_MMU1
|
||||
#undef _PRUSA_MMU2
|
||||
#undef _PRUSA_MMU2S
|
||||
#undef _PRUSA_MMU3
|
||||
#undef _EXTENDABLE_EMU_MMU2
|
||||
#undef _EXTENDABLE_EMU_MMU2S
|
||||
#undef _EXTENDABLE_EMU_MMU3
|
||||
#endif
|
||||
|
||||
#if ENABLED(E_DUAL_STEPPER_DRIVERS) // E0/E1 steppers act in tandem as E0
|
||||
|
||||
#define E_STEPPERS 2
|
||||
#define E_MANUAL 1
|
||||
|
||||
#elif HAS_SWITCHING_EXTRUDER // One stepper for every two EXTRUDERS
|
||||
|
||||
#if EXTRUDERS > 4
|
||||
#define E_STEPPERS 3
|
||||
#elif EXTRUDERS > 2
|
||||
#define E_STEPPERS 2
|
||||
#else
|
||||
#define E_STEPPERS 1
|
||||
#endif
|
||||
|
||||
#elif ENABLED(MIXING_EXTRUDER) // Multiple feeds are mixed proportionally
|
||||
|
||||
#define E_STEPPERS MIXING_STEPPERS
|
||||
#define E_MANUAL 1
|
||||
#if MIXING_STEPPERS == 2
|
||||
#define HAS_DUAL_MIXING 1
|
||||
#endif
|
||||
#ifndef MIXING_VIRTUAL_TOOLS
|
||||
#define MIXING_VIRTUAL_TOOLS 1
|
||||
#endif
|
||||
|
||||
#elif ENABLED(SWITCHING_TOOLHEAD) // Toolchanger
|
||||
|
||||
#define E_STEPPERS EXTRUDERS
|
||||
#define E_MANUAL EXTRUDERS
|
||||
|
||||
#elif HAS_PRUSA_MMU2 || HAS_PRUSA_MMU3 // Průša Multi-Material Unit v2/v3
|
||||
|
||||
#define E_STEPPERS 1
|
||||
#define E_MANUAL 1
|
||||
|
||||
#endif
|
||||
|
||||
// Default E steppers / manual motion is one per extruder
|
||||
#ifndef E_STEPPERS
|
||||
#define E_STEPPERS EXTRUDERS
|
||||
#endif
|
||||
#ifndef E_MANUAL
|
||||
#define E_MANUAL EXTRUDERS
|
||||
#endif
|
||||
|
||||
// Number of hotends...
|
||||
#if ANY(SINGLENOZZLE, MIXING_EXTRUDER) // Only one for singlenozzle or mixing extruder
|
||||
#define HOTENDS 1
|
||||
#elif HAS_SWITCHING_EXTRUDER && !HAS_SWITCHING_NOZZLE // One for each pair of abstract "extruders"
|
||||
#define HOTENDS E_STEPPERS
|
||||
#elif TEMP_SENSOR_0
|
||||
#define HOTENDS EXTRUDERS // One per extruder if at least one heater exists
|
||||
#else
|
||||
#define HOTENDS 0 // A machine with no hotends at all can still extrude
|
||||
#endif
|
||||
|
||||
// At least one hotend...
|
||||
#if HOTENDS
|
||||
#define HAS_HOTEND 1
|
||||
#ifndef HOTEND_OVERSHOOT
|
||||
#define HOTEND_OVERSHOOT 15
|
||||
#endif
|
||||
#else
|
||||
#undef MPCTEMP
|
||||
#undef PIDTEMP
|
||||
#undef PREVENT_COLD_EXTRUSION
|
||||
#undef THERMAL_PROTECTION_HOTENDS
|
||||
#endif
|
||||
|
||||
// More than one hotend...
|
||||
#if HOTENDS > 1
|
||||
#define HAS_MULTI_HOTEND 1
|
||||
#define HAS_HOTEND_OFFSET 1
|
||||
#ifndef HOTEND_OFFSET_X
|
||||
#define HOTEND_OFFSET_X { 0 } // X offsets for each extruder
|
||||
#endif
|
||||
#ifndef HOTEND_OFFSET_Y
|
||||
#define HOTEND_OFFSET_Y { 0 } // Y offsets for each extruder
|
||||
#endif
|
||||
#ifndef HOTEND_OFFSET_Z
|
||||
#define HOTEND_OFFSET_Z { 0 } // Z offsets for each extruder
|
||||
#endif
|
||||
#else
|
||||
#undef HOTEND_OFFSET_X
|
||||
#undef HOTEND_OFFSET_Y
|
||||
#undef HOTEND_OFFSET_Z
|
||||
#endif
|
||||
@@ -22,10 +22,16 @@
|
||||
#pragma once
|
||||
|
||||
/**
|
||||
* Conditionals_LCD.h
|
||||
* Conditionals-2-LCD.h
|
||||
* Conditionals that need to be set before Configuration_adv.h or pins.h
|
||||
*/
|
||||
|
||||
//========================================================
|
||||
// Get requirements for the benefit of IntelliSense, etc.
|
||||
//
|
||||
#include "Conditionals-1-axes.h"
|
||||
//========================================================
|
||||
|
||||
// Support for SD Card and other file storage
|
||||
#if ENABLED(SDSUPPORT)
|
||||
#define HAS_MEDIA 1
|
||||
@@ -477,7 +483,7 @@
|
||||
#if ANY(DWIN_CREALITY_LCD, DWIN_LCD_PROUI)
|
||||
#define HAS_DWIN_E3V2_BASIC 1
|
||||
#endif
|
||||
#if ANY(HAS_DWIN_E3V2_BASIC, DWIN_CREALITY_LCD_JYERSUI)
|
||||
#if ANY(HAS_DWIN_E3V2_BASIC, DWIN_CREALITY_LCD_JYERSUI, SOVOL_SV06_RTS)
|
||||
#define HAS_DWIN_E3V2 1
|
||||
#define STD_ENCODER_PULSES_PER_STEP 4
|
||||
#endif
|
||||
@@ -549,7 +555,7 @@
|
||||
#endif
|
||||
|
||||
// E3V2 extras
|
||||
#if HAS_DWIN_E3V2 || IS_DWIN_MARLINUI
|
||||
#if ANY(HAS_DWIN_E3V2, IS_DWIN_MARLINUI, SOVOL_SV06_RTS)
|
||||
#define SERIAL_CATCHALL 0
|
||||
#define HAS_LCD_BRIGHTNESS 1
|
||||
#define LCD_BRIGHTNESS_MAX 250
|
||||
@@ -562,7 +568,7 @@
|
||||
#endif
|
||||
|
||||
// Serial Controllers require LCD_SERIAL_PORT
|
||||
#if ANY(IS_DWIN_MARLINUI, HAS_DWIN_E3V2, HAS_DGUS_LCD, MALYAN_LCD, ANYCUBIC_LCD_I3MEGA, ANYCUBIC_LCD_CHIRON, NEXTION_TFT)
|
||||
#if ANY(IS_DWIN_MARLINUI, HAS_DWIN_E3V2, HAS_DGUS_LCD, MALYAN_LCD, ANYCUBIC_LCD_I3MEGA, ANYCUBIC_LCD_CHIRON, NEXTION_TFT, SOVOL_SV06_RTS)
|
||||
#define LCD_IS_SERIAL_HOST 1
|
||||
#endif
|
||||
|
||||
@@ -643,7 +649,7 @@
|
||||
#if !HAS_MARLINUI_HD44780
|
||||
#undef LCD_INFO_SCREEN_STYLE
|
||||
#endif
|
||||
#if NONE(HAS_MARLINUI_U8GLIB, HAS_TFT_LVGL_UI, DGUS_LCD_UI_E3S1PRO)
|
||||
#if NONE(HAS_MARLINUI_U8GLIB, HAS_TFT_LVGL_UI, TFT_COLOR_UI, DGUS_LCD_UI_E3S1PRO)
|
||||
#undef LCD_LANGUAGE
|
||||
#endif
|
||||
#if DISABLED(MPC_AUTOTUNE)
|
||||
@@ -22,10 +22,16 @@
|
||||
#pragma once
|
||||
|
||||
/**
|
||||
* Conditionals_etc.h
|
||||
* Conditionals-3-etc.h
|
||||
* Conditionals that need to be set before Configuration_adv.h or pins.h
|
||||
*/
|
||||
|
||||
//========================================================
|
||||
// Get requirements for the benefit of IntelliSense, etc.
|
||||
//
|
||||
#include "Conditionals-2-LCD.h"
|
||||
//========================================================
|
||||
|
||||
#ifndef STRING_CONFIG_H_AUTHOR
|
||||
#define STRING_CONFIG_H_AUTHOR "(anonymous)"
|
||||
#endif
|
||||
@@ -646,6 +652,9 @@
|
||||
#if DISABLED(DELTA)
|
||||
#undef DELTA_HOME_TO_SAFE_ZONE
|
||||
#endif
|
||||
#if ANY(DELTA, AXEL_TPARA)
|
||||
#define Z_CAN_FALL_DOWN
|
||||
#endif
|
||||
|
||||
/**
|
||||
* This setting is also used by M109 when trying to calculate
|
||||
@@ -22,10 +22,16 @@
|
||||
#pragma once
|
||||
|
||||
/**
|
||||
* Conditionals_adv.h
|
||||
* Conditionals-4-adv.h
|
||||
* Conditionals set before pins.h and which depend on Configuration_adv.h.
|
||||
*/
|
||||
|
||||
//========================================================
|
||||
// Get requirements for the benefit of IntelliSense, etc.
|
||||
//
|
||||
#include "MarlinConfigPre-4-adv.h"
|
||||
//========================================================
|
||||
|
||||
#if ENABLED(MARLIN_SMALL_BUILD)
|
||||
#undef EEPROM_CHITCHAT
|
||||
#undef CAPABILITIES_REPORT
|
||||
@@ -832,6 +838,7 @@
|
||||
#if !TEMP_SENSOR_BED
|
||||
#undef BED_MINTEMP
|
||||
#undef BED_MAXTEMP
|
||||
#undef CONTROLLER_FAN_BED_HEATING
|
||||
#endif
|
||||
#if DISABLED(THERMAL_PROTECTION_BED)
|
||||
#undef THERMAL_PROTECTION_BED_PERIOD
|
||||
@@ -1459,3 +1466,13 @@
|
||||
#if !HAS_ROTATIONAL_AXES
|
||||
#undef MANUAL_MOVE_DISTANCE_DEG
|
||||
#endif
|
||||
|
||||
// Only report "Not SD printing" when the state changes
|
||||
// To get legacy behavior define AUTO_REPORT_SD_STATUS 2
|
||||
#ifdef AUTO_REPORT_SD_STATUS
|
||||
#if ENABLED(AUTO_REPORT_SD_STATUS) // Not blank, 1, or true
|
||||
#define QUIETER_AUTO_REPORT_SD_STATUS
|
||||
#endif
|
||||
#undef AUTO_REPORT_SD_STATUS
|
||||
#define AUTO_REPORT_SD_STATUS
|
||||
#endif
|
||||
@@ -22,10 +22,16 @@
|
||||
#pragma once
|
||||
|
||||
/**
|
||||
* Conditionals_post.h
|
||||
* Conditionals-5-post.h
|
||||
* Internal defines that depend on Configurations and Pins but are not user-editable.
|
||||
*/
|
||||
|
||||
//========================================================
|
||||
// Get requirements for the benefit of IntelliSense, etc.
|
||||
//
|
||||
#include "MarlinConfigPre-5-post.h"
|
||||
//========================================================
|
||||
|
||||
#ifdef GITHUB_ACTIONS
|
||||
// Extras for CI testing
|
||||
#endif
|
||||
@@ -50,7 +56,7 @@
|
||||
// Determine which type of 'EEPROM' is in use
|
||||
#if ENABLED(EEPROM_SETTINGS)
|
||||
// EEPROM type may be defined by compile flags, configs, HALs, or pins
|
||||
// Set additional flags to let HALs choose in their Conditionals_post.h
|
||||
// Set additional flags to let HALs choose in their Conditionals-5-post.h
|
||||
#if ANY(FLASH_EEPROM_EMULATION, SRAM_EEPROM_EMULATION, SDCARD_EEPROM_EMULATION, QSPI_EEPROM)
|
||||
#define USE_EMULATED_EEPROM 1
|
||||
#elif ANY(I2C_EEPROM, SPI_EEPROM)
|
||||
@@ -1845,7 +1851,7 @@
|
||||
#define SERIAL_IN_USE(N) ( (defined(SERIAL_PORT) && N == SERIAL_PORT) \
|
||||
|| (defined(SERIAL_PORT_2) && N == SERIAL_PORT_2) \
|
||||
|| (defined(SERIAL_PORT_3) && N == SERIAL_PORT_3) \
|
||||
|| (defined(MMU2_SERIAL_PORT) && N == MMU2_SERIAL_PORT) \
|
||||
|| (defined(MMU_SERIAL_PORT) && N == MMU_SERIAL_PORT) \
|
||||
|| (defined(LCD_SERIAL_PORT) && N == LCD_SERIAL_PORT) \
|
||||
|| (defined(RS485_SERIAL_PORT) && N == RS485_SERIAL_PORT) )
|
||||
|
||||
@@ -3033,7 +3039,7 @@
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Heated bed requires settings
|
||||
* Heated Bed required settings
|
||||
*/
|
||||
#if HAS_HEATED_BED
|
||||
#ifndef MIN_BED_POWER
|
||||
@@ -3043,6 +3049,14 @@
|
||||
#define MAX_BED_POWER 255
|
||||
#endif
|
||||
#define WRITE_HEATER_BED(v) WRITE(HEATER_BED_PIN, (v) ^ ENABLED(HEATER_BED_INVERTING))
|
||||
#if ENABLED(PELTIER_BED)
|
||||
/**
|
||||
* A "Heated Bed" Peltier device needs a direction (heat/cool) to be
|
||||
* implemented by a relay (single pin) or H-bridge (2 or 4 pin).
|
||||
* H-Bridge can also perform PWM. (Not recommended for Peltier devices).
|
||||
*/
|
||||
#define WRITE_PELTIER_DIR(v) WRITE(PELTIER_DIR_PIN, (v) ? PELTIER_DIR_HEAT_STATE : !PELTIER_DIR_HEAT_STATE)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/**
|
||||
@@ -3219,7 +3233,7 @@
|
||||
* Advanced Pause - Filament Change
|
||||
*/
|
||||
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||
#if ANY(HAS_MARLINUI_MENU, EXTENSIBLE_UI, DWIN_CREALITY_LCD_JYERSUI) || ALL(EMERGENCY_PARSER, HOST_PROMPT_SUPPORT)
|
||||
#if ANY(HAS_MARLINUI_MENU, EXTENSIBLE_UI, DWIN_CREALITY_LCD_JYERSUI, SOVOL_SV06_RTS) || ALL(EMERGENCY_PARSER, HOST_PROMPT_SUPPORT)
|
||||
#define M600_PURGE_MORE_RESUMABLE 1 // UI provides some way to Purge More / Resume
|
||||
#endif
|
||||
#ifndef FILAMENT_CHANGE_SLOW_LOAD_LENGTH
|
||||
@@ -3513,6 +3527,8 @@
|
||||
#define LCD_WIDTH 21
|
||||
#elif IS_DWIN_MARLINUI
|
||||
// Defined by header
|
||||
#elif HAS_GRAPHICAL_TFT
|
||||
#define LCD_WIDTH ((TFT_WIDTH) / 16)
|
||||
#else
|
||||
#define LCD_WIDTH TERN(IS_ULTIPANEL, 20, 16)
|
||||
#endif
|
||||
@@ -22,11 +22,17 @@
|
||||
#pragma once
|
||||
|
||||
/**
|
||||
* Conditionals_type.h
|
||||
* Conditionals-6-type.h
|
||||
* Internal defines that depend on Configurations and Pins but are not user-editable.
|
||||
* Define conditionals in this file if they depend on core/types.h.
|
||||
*/
|
||||
|
||||
//========================================================
|
||||
// Get requirements for the benefit of IntelliSense, etc.
|
||||
//
|
||||
#include "MarlinConfigPre-6-type.h"
|
||||
//========================================================
|
||||
|
||||
#ifdef GITHUB_ACTIONS
|
||||
// Extras for CI testing
|
||||
#endif
|
||||
@@ -25,30 +25,11 @@
|
||||
// Prefix header for all Marlin sources
|
||||
//
|
||||
|
||||
#include "MarlinConfigPre.h"
|
||||
|
||||
#ifdef __MARLIN_DEPS__
|
||||
#include "../HAL/shared/fauxpins.h"
|
||||
#else
|
||||
#include "../HAL/HAL.h"
|
||||
#endif
|
||||
|
||||
#include "../pins/pins.h"
|
||||
|
||||
#ifndef __MARLIN_DEPS__
|
||||
#include HAL_PATH(.., timers.h)
|
||||
#include HAL_PATH(.., spi_pins.h)
|
||||
#endif
|
||||
|
||||
#include "Conditionals_post.h"
|
||||
#include "MarlinConfigPre-6-type.h" // Include even with __MARLIN_DEPS__
|
||||
|
||||
#ifndef __MARLIN_DEPS__
|
||||
|
||||
#include HAL_PATH(.., inc/Conditionals_post.h)
|
||||
|
||||
#include "../core/types.h" // Ahead of sanity-checks
|
||||
|
||||
#include "Conditionals_type.h"
|
||||
#include "Conditionals-6-type.h"
|
||||
#include HAL_PATH(.., inc/Conditionals_type.h)
|
||||
|
||||
#include "Changes.h"
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user