Compare commits

...

1846 Commits

Author SHA1 Message Date
Scott Lahteine
b878127ea0 Marlin 2.0.9.1 2021-06-28 19:50:00 -05:00
Katelyn Schiesser
6ea6556d09 🐛 Use setTargetHotend in menus (#22247) 2021-06-28 19:50:00 -05:00
Scott Lahteine
2b37a71eba ♻️ Refactor status screen timeout 2021-06-28 19:50:00 -05:00
Cytown
e3ae76d76d 🚸 Expand box in draw_boxed_string (#22209) 2021-06-28 19:50:00 -05:00
Katelyn Schiesser
b24508907e 🐛 No HOTEND_LOOP with EXTRUDERS 0 (#22245) 2021-06-28 19:50:00 -05:00
Sébastien Gariépy
ec3daadf43 🌐 MSG_MOVE_100MM (#22242) 2021-06-28 19:50:00 -05:00
Cytown
ae76011e75 🐛 Fix wide glyph characters display (#22237) 2021-06-28 19:50:00 -05:00
Scott Lahteine
34066c1717 📝 Update probe heating value 2021-06-27 11:54:28 -05:00
ellensp
19fe3d5e79 🚸 MarlinUI Move Z >= 1000 (#22192) 2021-06-27 11:32:14 -05:00
Scott Lahteine
ec518e6e7b 🎨 Small tweak, ms => now 2021-06-27 11:25:58 -05:00
Scott Lahteine
003ce25acf 🎨 Format onboard_sd.cpp 2021-06-27 11:25:48 -05:00
ellensp
3e5d867276 🐛 Fix Z_MULTI_ENDSTOPS + NUM_Z_STEPPER_DRIVERS 4 compile (#22203) 2021-06-27 11:25:36 -05:00
cr20-123
b1bcb387fa Update/extend Quiet Probing (#22205) 2021-06-27 11:25:07 -05:00
ellensp
0fbd8c52bb 🔧 Fix E.S.T. sanity-check errors (#22224) 2021-06-27 11:24:54 -05:00
Marcio T
08895e6cb0 🎨 Fix and improve FTDI Eve Touch UI (#22223) 2021-06-27 11:24:43 -05:00
Keith Bennett
38e775496a 📝 Update TMC SPI endstops comment (#22221) 2021-06-27 11:24:33 -05:00
Scott Lahteine
47631167f9 🐛 Trigger existing endstops on G38 hit 2021-06-27 11:24:22 -05:00
bwspath
185e0dc7b7 🐛 Fix Octopus build on case-sensitive FS (#22206) 2021-06-27 11:23:56 -05:00
Serhiy-K
bcf6ca59df 🌐 Update Russian language (#22193) 2021-06-27 11:23:42 -05:00
Marcio T
1ba694cebb 🎨 Fix and enhance FTDI Eve Touch UI (#22189) 2021-06-27 11:22:20 -05:00
Scott Lahteine
906fa05bd6 🐛🌐 Fix extra axis translations 2021-06-27 11:21:33 -05:00
Scott Lahteine
651f15f833 🎨 Cosmetic cleanup 2021-06-21 16:26:38 -05:00
Katelyn Schiesser
ef41c1f452 🐛 Fix IJK axis references, E stepper indices (#22176)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-06-21 16:26:38 -05:00
Grumpy
8050813d32 🐛 Fix dual Neopixels (#22174) 2021-06-21 16:26:38 -05:00
ellensp
25e7e2fce0 🐛 Fix heater display options/compile (#22185) 2021-06-21 16:26:38 -05:00
Scott Lahteine
a0f7f0e9e2 🐛 Fix compact sensitive pins array (#22184) 2021-06-21 16:26:38 -05:00
Serhiy-K
f3e0bc7a4b 🌐 Update Ukrainian language (#22183) 2021-06-21 16:26:38 -05:00
Giuliano Zaro
49ff1e837a 🌐 Update Italian language (#22182) 2021-06-21 16:26:38 -05:00
Katelyn Schiesser
4f8191b481 🐛 Redundant Temp Sensor followup (#22173) 2021-06-20 16:44:01 -05:00
Scott Lahteine
927a1a1738 🐛 Fix LCD define typos 2021-06-20 16:40:50 -05:00
Scott Lahteine
f2f23e8097 🎨 Cosmetic changes for G28 2021-06-20 16:40:23 -05:00
Scott Lahteine
cce585f6ca 🐛 Define 'HEAD' axes for Markforged
Fixes #22167
2021-06-18 13:13:27 -05:00
Ari-SSO
5bfb465ab4 🚸 Include 'H' value in M412 report (#22138)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-06-18 12:26:12 -05:00
Katelyn Schiesser
ce7bbafb8f 💡 Add G28 L description (#22144) 2021-06-18 12:26:10 -05:00
Keith Bennett
5ffc4bfe3a 🐛 TFT encoder pin for BTT GTR (#22162) 2021-06-18 12:25:42 -05:00
Mike La Spina
3ecc99e95d 🐛 Fix Air Assist (#22159)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-06-18 12:25:05 -05:00
gjdodd
f22c5d3cc6 🩹 Extruders 0 patch for PWM Motor Current (#22163) 2021-06-18 12:24:54 -05:00
Victor Oliveira
d8df8e0eed 🐛 Fix env validation for 1280/2560 boards (#22150)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-06-18 12:24:47 -05:00
Victor Oliveira
e38958f256 🐛 Fix MKS Robin E3 build (#22149) 2021-06-18 12:23:46 -05:00
Scott Lahteine
d7c77403fd Marlin 2.0.9 2021-06-15 20:45:37 -05:00
ellensp
c8898b5ca0 Redundant Part Cooling Fan (#21888)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-06-15 00:12:35 -05:00
Scott Lahteine
781257bc64 🐛 Prevent stepper sleep during long UBL idle (#22137) 2021-06-15 00:12:30 -05:00
qwewer0
dec083dcc1 ️ Home Z (and maybe XY) at the start of G35 (#22060) 2021-06-15 00:12:27 -05:00
ellensp
cdd9507493 🚑️ Prevent BFT unaligned compressed data corruption (#22134) 2021-06-15 00:12:23 -05:00
Bo Herrmannsen
dba877311e Extruder with Dual Stepper Drivers (#21403) 2021-06-15 00:12:20 -05:00
Victor Oliveira
31fd3be6eb 🔥 Remove Chitu default Touch Calibration (#22133) 2021-06-15 00:12:16 -05:00
Victor Oliveira
2b4284df81 MULTI_VOLUME for Color UI and MarlinUI (#22004) 2021-06-15 00:12:01 -05:00
InsanityAutomation
d84e2d6e29 🎨 ExtUI "user click" and other tweaks (#22122)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-06-15 00:11:57 -05:00
Victor Oliveira
56355159c6 🐛 Include common TFT driver macros (#22125) 2021-06-15 00:11:54 -05:00
Katelyn Schiesser
a7135d429b 🐛 Fix UBL 'R' parameter and adjust 'P' (#22129) 2021-06-15 00:11:50 -05:00
Sola
3b0a40cd5d 🐛 Fix ExtUI/DGUS Celsius display (#22121) 2021-06-15 00:11:46 -05:00
Scott Lahteine
83c74802f8 🎨 General cleanup of extui/dgus
In relation to #22121
2021-06-15 00:11:42 -05:00
Victor Oliveira
adc17933cd 🔨 Fix Serial+MSC for _USB envs (#22116) 2021-06-15 00:11:39 -05:00
Katelyn Schiesser
68c52673d6 🐛 Use whole PROBE_TEMP_COMPENSATION values (#22130) 2021-06-15 00:11:34 -05:00
Scott Lahteine
2aa35577f2 🏗️ Refactor build encrypt / rename (#22124) 2021-06-15 00:11:29 -05:00
Scott Lahteine
14ffc66c45 🩹 Use #pragma once in pins files 2021-06-15 00:11:26 -05:00
Scott Lahteine
2ea0832e0f 📝 Number SKR EXP headers 2021-06-15 00:11:22 -05:00
Scott Lahteine
ab050878e9 🎨 Clean up LPC1768 SPI init 2021-06-15 00:11:18 -05:00
Scott Lahteine
707a04022e 🔨 Remove obsolete ON_BOARD_SPI_DEVICE 2021-06-15 00:11:15 -05:00
mrv96
d12c357793 🔨 Robin Nano V3 overridable POWER_LOSS_PIN (#22123) 2021-06-15 00:11:11 -05:00
Scott Lahteine
ddf8668e16 📝 Describe G12 XYZ 2021-06-15 00:11:06 -05:00
Victor Oliveira
3491e49c5f 🐛 Fix boot / SD for STM32 (F103Rx) boards (#22087) 2021-06-15 00:10:02 -05:00
Katelyn Schiesser
d322e495b2 More flexible redundant temp sensor (#22085) 2021-06-15 00:09:52 -05:00
Keith Bennett
5d80f7006a 🔨 Envs for BTT SKR Mini with RET6 (512K) (#22050) 2021-06-15 00:09:52 -05:00
Zs.Antal
3e7a9e5d20 🌐 Update Hungarian language (#22083) 2021-06-15 00:09:52 -05:00
grauerfuchs
33e8769226 🔨 MightyBoard envs for A.B.M. (#22100) 2021-06-15 00:09:52 -05:00
Radek
59842edbcb 🔧 EEPROM options for BTT SKR 1.4 (#22092) 2021-06-15 00:09:52 -05:00
Marcio T
507e1e436e 🎨 Fix and improve FTDI Eve Touch UI (#22093) 2021-06-15 00:09:52 -05:00
ellensp
b27447ef48 🔧 Enforce BLTouch settings (#22086) 2021-06-15 00:09:52 -05:00
Scott Lahteine
c9a3ba99be 🎨 Adjust some conditionals 2021-06-15 00:09:52 -05:00
Scott Lahteine
967942460e ️ Optimize Sensitive Pins array (except STM32) (#22080) 2021-06-15 00:09:52 -05:00
Kyle Repinski
bfa257902e 🐛 Fix small/huge I2C EEPROM address (#22081) 2021-06-15 00:09:52 -05:00
Scott Lahteine
3f103c91f0 🎨 Laser Ammeter followup (#22079)
Followup to #21835
2021-06-15 00:09:52 -05:00
Mike La Spina
2fd9971f41 Add Laser Based I2C Ammeter Feature (#21835) 2021-06-15 00:09:52 -05:00
ellensp
a3063a9392 expose hidden BLTOUCH setting changes (#22069) 2021-06-15 00:09:52 -05:00
Marcio T
d8a02bbbdb 🎨 Reorganize FTDI Touch UI variants (#22066) 2021-06-15 00:09:52 -05:00
ellensp
76d4a395d1 🩹 Fallback ID for MKS TS35 V2.0 (#22031) 2021-06-15 00:09:52 -05:00
7FM
c515bfb5fb 👽️ Include <EEPROM.h> in STM32 (for now) (#22054) 2021-06-15 00:09:52 -05:00
ellensp
83430be580 📦️ Malyan M200 with HAL/STM32 (#22052) 2021-06-15 00:09:52 -05:00
George Fu
9bd9f91722 📌 Update FYSETC E4 to espressif32@2.1.0 (#22049) 2021-06-15 00:09:52 -05:00
Victor Oliveira
e6ef43e51a ⚰️ Remove obsolete CUSTOM_SPI_PINS (#22058) 2021-06-15 00:09:52 -05:00
ellensp
16bca67f2d 🔧 Check G29_RETRY_AND_RECOVER requirements (#21921) 2021-06-15 00:09:52 -05:00
Scott Lahteine
d65eea550c 🔧 FOAMCUTTER_XYUV moved to custom config 2021-06-15 00:09:52 -05:00
DerAndere
46080b367a ✏️ Six Linear Axes followup (Fix M503) (#22112) 2021-06-15 00:09:52 -05:00
Marcio T
317afae37c ✏️ Six Linear Axes followup (typos) (#22094) 2021-06-15 00:08:32 -05:00
ellensp
930a608236 🎨 IJK auto-allocation (#22075) 2021-06-15 00:07:40 -05:00
DerAndere
6e3c45580c ✏️ Six Linear Axes followup (Hybrid Threshold init) (#22068) 2021-06-15 00:07:06 -05:00
DerAndere
e3df7d7bc8 ✏️ Followup to Six Linear Axes (#22056) 2021-06-15 00:05:52 -05:00
DerAndere
c1fca91103 🏗️ Support for up to 6 linear axes (#19112)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-06-15 00:05:03 -05:00
Scott Lahteine
d3c56a76e7 ♻️ Patches for Zero Extruders (with TMC) 2021-06-15 00:04:47 -05:00
Scott Lahteine
4194cdda5b ♻️ Refactor Linear / Logical / Distinct Axes (#21953)
* More patches supporting EXTRUDERS 0
* Extend types in prep for more axes
2021-06-15 00:03:55 -05:00
Marcio T
f5f999d7bf 📺 Fix and enhance FTDI EVE Touch UI (#22047) 2021-06-14 23:52:14 -05:00
Keith Bennett
b4b607681c BigTreeTech Octopus V1.1 (#22042) 2021-06-14 23:52:05 -05:00
ellensp
1e75eba27b 🐛 Fix STM3R / BEAST envs (#22028) 2021-06-14 23:51:52 -05:00
Victor Oliveira
f3f3d202ac 📦️ STM32F103RE_btt(_USB) with HAL/STM32 (#22040) 2021-06-14 23:51:46 -05:00
Scott Lahteine
c90fa530db Update G34 for 4x Z steppers (#22039) 2021-06-14 23:51:40 -05:00
Taylor Talkington
aeb8097cbc 🐛 Fix M140 print job timer autostart (#22046) 2021-06-14 23:51:23 -05:00
Giuliano Zaro
04bea72787 🐛 Fix MMU compile with >5 EXTRUDERS (#22036) 2021-06-14 23:51:17 -05:00
ldursw
ce95f56ac8 🔨 MKS Robin E3 for HAL/STM32 (#21927) 2021-06-14 23:51:10 -05:00
Scott Lahteine
aff45fd455 ✏️ Remove whitespace 2021-06-14 23:51:00 -05:00
ellensp
c8f28d9d09 🐛 Fix Creality v4 servo timer (#22021)
Followup to #21999
2021-06-14 23:51:00 -05:00
Keith Bennett
f3697e5e02 🔨 Consolidate BTT linker scripts followup (#22038) 2021-06-14 23:51:00 -05:00
Scott Lahteine
557ba20ff4 🔨 Consolidate BTT linker scripts
Originally from #22022
2021-06-14 23:50:17 -05:00
ellensp
dd0e5c26d1 🐛 Fix env:STM32F103RE maple/unified split-up (#22019)
Followup to #21999
2021-06-14 23:50:11 -05:00
Scott Lahteine
c9a3f41152 📝 Update G61 comment 2021-06-14 23:49:57 -05:00
ellensp
d13ffa0aba 🔨 Creality v4 with STM32 HAL (#21999)
- New STM32 env for Creality V4 boards.
- Separate Libmaple targets into their own `ini` file.
- Temporarily remove unusable targets from `pins.h`.

Co-authored-by: ellensp <ellensp@hotmsil.com>
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-06-14 23:49:26 -05:00
Scott Lahteine
fb0be29604 🔨 Move FLY_MINI env to stm32f1.ini 2021-06-14 23:49:21 -05:00
hannesweisbach
7ca1550775 TMC Driver distinct baudrates (#22008) 2021-06-14 23:49:16 -05:00
Scott Lahteine
665a71b471 🔧 Treat TPARA like SCARA in mfconfig 2021-06-14 23:49:10 -05:00
Roman Moravčík
9268a4b28c 🌐 Update Slovak language (#22000) 2021-06-14 23:49:04 -05:00
Krzysztof Błażewicz
529bbfad10 ⚗️ 32-bit float constants (STM32F1) (#21996) 2021-06-14 23:46:12 -05:00
Scott Lahteine
e7945c2277 🐛 Fix Z endstop enum
Followup to 92dea8e6cc
2021-06-11 18:34:01 -05:00
Scott Lahteine
5ee91c73ed 👷 Add caching to CI workflow 2021-06-06 03:58:59 -05:00
hannesweisbach
2116e4202b 🐛 Fix Probe Temp Calibration compile (#22032) 2021-06-04 23:39:57 -05:00
Taylor Talkington
19521d16cd 🐛 Fix M140 print job timer autostart (#22046) 2021-06-04 23:33:19 -05:00
Victor Oliveira
057302b936 👽️ Fix usb-host-msc-cdc-msc issue (#22025) 2021-06-04 23:33:19 -05:00
Scott Lahteine
d62619c9c8 📌 Use U8glib-HAL@~0.4.5 2021-06-04 23:33:19 -05:00
Scott Lahteine
9c80a89597 🎨 Reorganize BTT_E3_RRF_IDEX_BOARD 2021-06-04 23:33:19 -05:00
Scott Lahteine
00834ef03d 🎨 Clean up stops, sdss pins 2021-06-04 23:33:19 -05:00
Scott Lahteine
5b7b065b96 Marlin 2.0.8.2 2021-05-29 16:01:38 -05:00
Timo
a739af823f Malyan M180 (#21992) 2021-05-29 16:01:32 -05:00
Pascal de Bruijn
493eb446b7 MEDIA_MENU_AT_TOP for MarlinUI (#21925) 2021-05-29 15:19:40 -05:00
charlespick
1b45b3802a Independent baud rates (#21949)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-05-29 15:19:40 -05:00
Krzysztof Błażewicz
7898307d78 🌐 Update Polish language (#21993) 2021-05-29 15:13:05 -05:00
ellensp
8da8aa140f 🥅 Add MESH_EDIT_MENU sanity check (#21922) 2021-05-29 15:12:57 -05:00
Andy Barratt
4572af2bce 🚸 cap:HOST_ACTION_COMMANDS (#21987) 2021-05-29 15:11:57 -05:00
Allen Bauer
6dc17f0e6e 🐛 Fix BTT002 variant MMU2 serial pins 🧩 (#21980) 2021-05-29 15:11:50 -05:00
ellensp
3fcf3f69ca ♻️ LEDs refactor and extend (#21962)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-05-29 15:11:32 -05:00
LawnMo
a9fd2769f3 🩹 Fix multi_volume + SDIO onboard compile (#21975) 2021-05-29 15:11:13 -05:00
LawnMo
9adaf92674 🩹 Improved SKR2 12864 LCD Delays (#21956) 2021-05-29 15:09:48 -05:00
Scott Lahteine
e75c3b6c54 🎨 Macros for optional arguments (#21969) 2021-05-29 15:09:07 -05:00
ellensp
61f2bb1228 ️ PIO filters for M117, M300 and M414 (#21972) 2021-05-29 15:08:30 -05:00
Scott Lahteine
d1502f74ea 🎨 Null heating message method 2021-05-29 15:07:49 -05:00
Scott Lahteine
83f9413196 🐛 Fix Selena Compact probe pin 2021-05-29 15:06:38 -05:00
Scott Lahteine
cdc3e18d99 Use another PR close action 2021-05-28 19:47:06 -05:00
BigTreeTech
55a6315862 🐛 Fix Octopus HS USB (#21961) 2021-05-24 01:59:46 -05:00
gjdodd
cf447a5442 🐛 Fix flowmeter calculation (#21959) 2021-05-24 01:54:39 -05:00
Scott Lahteine
7597b4fb40 🎨 Apply shorthand and cleanups 2021-05-23 02:17:41 -05:00
Scott Lahteine
7cd0f2a32a 🎨 pause => pause_heaters 2021-05-23 02:17:31 -05:00
Scott Lahteine
4dae5890e9 ♻️ Refactor, comment endstop/probe enums 2021-05-23 02:09:04 -05:00
Danol
738ae4be33 🐛 Fix wrong Z_ENDSTOP flag bit (#21963)
Bug introduced in #18424
2021-05-23 01:11:48 -05:00
Scott Lahteine
e573611021 🎨 Combine M104/M109 and M140/M190 code 2021-05-22 19:09:51 -05:00
Scott Lahteine
f60965a107 📝 Update ExtUI example 2021-05-22 16:19:02 -05:00
Scott Lahteine
3995e8373c 🎨 Shorten lcd relative paths 2021-05-22 16:18:59 -05:00
Scott Lahteine
ddc82b84e2 📝 Document diveToFile, printListing 2021-05-22 16:18:55 -05:00
Scott Lahteine
87a943756a 🎨 Move HAS_EXTRUDERS 2021-05-22 16:18:42 -05:00
Scott Lahteine
8e28731f96 🎨 Update a condition 2021-05-22 16:18:42 -05:00
Scott Lahteine
cdbd438a04 🎨 Rename all/no axis enums 2021-05-22 16:18:42 -05:00
Scott Lahteine
3220c49f1b Add a test for SAVED_POSITIONS 2021-05-22 16:18:42 -05:00
Scott Lahteine
94e67a036a 🐛 Fix compile with PREVENT_COLD_EXTRUSION off 2021-05-22 16:18:42 -05:00
Scott Lahteine
c977e82074 🎨 MULTI_MANUAL => MULTI_E_MANUAL 2021-05-22 16:18:42 -05:00
Moonglow
9878a5ab58 🐛 Fix Toshiba FlashAir (SDCARD_COMMANDS_SPLIT) (#21944) 2021-05-22 16:18:42 -05:00
Scott Lahteine
2de914c38c 🎨 Move switch sensor strings 2021-05-22 16:09:20 -05:00
Scott Lahteine
49b05ba989 🎨 Flags for homing directions 2021-05-22 16:09:18 -05:00
Scott Lahteine
85fa8c55c9 🐛 Fix DELTA with SENSORLESS_PROBING 2021-05-22 16:09:17 -05:00
Scott Lahteine
57eef65d9c ♻️ Refactor axis homing/trusted state bits 2021-05-22 16:08:46 -05:00
Scott Lahteine
894c954e8f ♻️ Minimize endstop bits 2021-05-22 16:08:43 -05:00
Scott Lahteine
046bac6769 Fix tests for EXTRUDERS 0 2021-05-22 16:08:26 -05:00
Scott Lahteine
765720e98b ♻️ Simplify TMC utilities for more axes 2021-05-22 16:08:09 -05:00
Scott Lahteine
26a244325b ♻️ Refactor axis counts and loops 2021-05-22 16:08:08 -05:00
Scott Lahteine
f7d28ce1d6 🎨 Misc cleanup and fixes 2021-05-22 16:08:03 -05:00
Scott Lahteine
c85633b47f 🎨 Use defined strings 2021-05-22 16:03:19 -05:00
Alvaro Segura Del Barco
6861b1ec82 🐛 Fix Teensy PINS_DEBUGGING compile (#21958)
Followup to 84a11cfedc
2021-05-22 15:55:08 -05:00
Roger D. Winans
003cb20b9f 📝 Add Configurations section to README (#21955)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-05-21 23:14:25 -05:00
Scott Lahteine
f1f622de01 Fix 'G29 K' value 2021-05-19 22:02:53 -05:00
ellensp
dbb8f3db09 Fix EEPROM_CHITCHAT (#21934)
Fix #21929
2021-05-18 18:08:22 -05:00
ellensp
5d7c72db5a Fix envs using mks_encrypt.py (#21933)
Fix #21928
2021-05-17 18:25:11 -05:00
thisiskeithb
755adb8973 Update Configurations URL (2.0.8.1) 2021-05-16 14:07:29 -05:00
ekef
0977429138 Fix MKS Robin E3 BLTOUCH and Fan PWM timer conflicts (#21889) 2021-05-15 18:22:30 -05:00
Scott Lahteine
1dfa6cbc80 Marlin 2.0.8.1 2021-05-15 15:22:03 -05:00
Luu Lac
e3998dc3df M154 Position Auto-Report (#18427)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-05-15 15:06:59 -05:00
Moonglow
b6e1838fa6 Fix MKS UI missing font select condition (#21905) 2021-05-15 15:05:53 -05:00
ondrada
908caba735 Fix G29_RETRY_AND_RECOVER dependency (#21907)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-05-15 15:05:53 -05:00
Scott Lahteine
121f3b1096 🐛 Fix RR collision with MM (#21902) 2021-05-15 15:05:53 -05:00
Jamie
9e373617dc Instant Freeze/Resume Function (#17462)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-05-15 15:05:53 -05:00
ellensp
5298fa357c Fix nextion compile error (#21884) 2021-05-15 15:05:53 -05:00
Alexander D. Kanevskiy
2c15bc5d39 Fix compilation failure in M1001 (#21897) 2021-05-15 15:05:53 -05:00
Scott Lahteine
159f9c85a6 🔧 Improve SD_DETECT_STATE default (#21885) 2021-05-15 15:05:53 -05:00
Victor Oliveira
1d1f318752 Update Robin Pro TFT Pins (#21879, #21900) 2021-05-15 15:05:53 -05:00
Keith Bennett
40a9d82ae9 BigTreeTech Octopus (STM32F446ZET6) (#21826, #21882, #21883, #21901) 2021-05-15 15:05:53 -05:00
Elton Law
72c28d3462 🐛 Fix G5 IJ with Motion Mode (#21858) 2021-05-15 15:05:53 -05:00
vyacheslav-shubin
ed224ca7d8 🩹 G60-G61 Save E position (#21810) 2021-05-15 15:05:53 -05:00
Scott Lahteine
02e131b5fd 🎨 Misc. code cleanup 2021-05-15 15:05:53 -05:00
Scott Lahteine
5afb5e03b0 🎨 Additional utility macros 2021-05-15 15:05:53 -05:00
Scott Lahteine
52a23b969b 🎨 Better error message for bad array sizes 2021-05-15 15:05:53 -05:00
Scott Lahteine
afcc7ea22b Synchronize tests and actions 2021-05-15 15:05:53 -05:00
Victor Oliveira
c463b81819 BTT SKR Mini E3 for HAL/STM32 (#21488) 2021-05-15 15:05:53 -05:00
Scott Lahteine
f688c7d20d Simplify macro expansion with recursion (#21859) 2021-05-15 15:05:53 -05:00
Scott Lahteine
0167bba371 Fix L64xx init for Z4 2021-05-15 15:05:53 -05:00
Scott Lahteine
7004fb702d Use adafruit/Adafruit NeoPixel@~1.8.0 2021-05-15 15:05:53 -05:00
ellensp
2f2dd3322d update FLSUN_HISPEED env to flsun_hispeedv1 (#21510) 2021-05-15 15:05:53 -05:00
tobuh
31d3a781a8 Fix and improve Power-Loss Recovery (#21779, #21894)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-05-15 15:05:53 -05:00
Keith Bennett
a7fd6b68be Unify BTT Motor Expansion Options (#21823) 2021-05-15 15:05:53 -05:00
Scott Lahteine
6a1e78e614 Optimize G-code flag parameters (#21849) 2021-05-15 15:05:53 -05:00
charlespick
770edea577 Update Advanced Pause description (#21829)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-05-15 15:05:53 -05:00
Victor Oliveira
08a51b2820 🐛 Fix Lerdge USB Flash Drive envs (#21847) 2021-05-15 15:05:53 -05:00
BigTreeTech
ac11c689f7 Capacitive Touch Screen (GT911) for SKR SE BX (#21843)
Co-authored-by: Msq001 <alansayyeah@gmail.com>
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-05-15 15:05:53 -05:00
Scott Lahteine
f3e199fcd2 Fix TFT typo 2021-05-15 15:05:53 -05:00
Scott Lahteine
ffcbe68570 Move temp errors calling kill() out of ISR (#21832) 2021-05-15 15:05:53 -05:00
sanek88lbl
06e965e29c Lerdge K EEPROM and TFT (#21812)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-05-15 15:05:53 -05:00
Antonino Di Guardo
e865cc0249 Always prompt in M125 if host-prompt (as with Ext UI) (#21828)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-05-15 15:05:53 -05:00
Scott Lahteine
5d8d03da03 Update SKR 1.3 touch pins 2021-05-15 15:05:53 -05:00
Scott Lahteine
0b3da61ac7 TFT pins for BTT GTR V1
Proposed in #21772
2021-05-15 15:05:53 -05:00
Scott Lahteine
a24eb691fb Better opt_set comment of old val 2021-05-15 15:05:53 -05:00
Scott Lahteine
c5c8ef436c Signal SD completion later (#21840) 2021-05-15 15:05:53 -05:00
Adrian DC
83309c1ac8 Fix E3V2 Control Menu icon/text order (#21838)
Fixes #21837
2021-05-15 15:05:53 -05:00
charlespick
ec2f4f512e Active MMU slot indicator (#21842) 2021-05-15 15:05:53 -05:00
Scott Lahteine
ad991734c4 Add and apply REPEAT_1 macro 2021-05-15 15:05:53 -05:00
Scott Lahteine
03184e1c31 Distinct enumerated MF states 2021-05-15 15:05:53 -05:00
Scott Lahteine
cca5844ba9 Misc. code cleanup 2021-05-15 15:05:53 -05:00
Scott Lahteine
45d3866f97 Misc Power Loss cleanup 2021-05-15 15:05:53 -05:00
Scott Lahteine
94edfc0a8f Let M421 C select any point
Fixing #21147
2021-05-15 15:05:53 -05:00
ellensp
9fa9eebe51 Support a third serial port (#21784) 2021-05-15 15:05:53 -05:00
Scott Lahteine
4518506559 Serial and pins debug cleanup
- Rename some AVR / DUE / ESP32 serial types
- Reduce two #error to one static_assert
- Update AVR/DUE error messages
2021-05-15 15:05:53 -05:00
Scott Lahteine
c1fb84e1a6 Reformat features.ini 2021-05-15 15:05:53 -05:00
Scott Lahteine
ea34aa2d3e Add MKS_LCD12864B 2021-05-15 15:05:53 -05:00
sanek88lbl
d6cb657c85 Patches for CASE_LIGHT_USE_RGB_LED (#21811)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-05-15 15:05:53 -05:00
Luu Lac
0df9f30f14 TFT SPI for BTT SKR v1.3 (#21794) 2021-05-15 15:05:53 -05:00
Scott Lahteine
d3e902af76 Move ExtUI subfolders up a level (#21820) 2021-05-15 15:05:53 -05:00
Vert
0b3420a012 UBL Mesh Wizard (#21556, #21791)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-05-15 15:05:52 -05:00
ellensp
5cf0975913 Simplify / undef extra endstops (#21808)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-05-15 15:05:52 -05:00
Scott Lahteine
db90a180c2 Cleanup, hex formatting, includes 2021-05-15 15:05:52 -05:00
Scott Lahteine
d174d610bd Temperature cleanup 2021-05-15 15:05:52 -05:00
Scott Lahteine
e69e56ea52 Use ststm32@~12.1 2021-05-15 15:05:52 -05:00
Scott Lahteine
0c66c713b6 Debounce for Power-Loss pin 2021-05-15 15:05:52 -05:00
Scott Lahteine
95230c9792 Use SERIAL_ECHOLNPAIR for resend 2021-05-15 15:05:52 -05:00
Scott Lahteine
7eea0ac6de Tweak SKR pins comments 2021-05-15 15:05:52 -05:00
Victor Oliveira
b19a1f602a Fix multi volume config typo (#21880) 2021-05-14 23:21:41 -05:00
Giuliano Zaro
789235b925 🐛 Fix excessive MMU2 timeout (#21855) 2021-05-14 21:24:07 -05:00
Scott Lahteine
00722c3294 📝 Fix version reference 2021-05-12 02:51:25 -05:00
Scott Lahteine
cb4e3889ec Update Chart.js to 2.9.4
Addressing CVE-2020-7746
2021-05-10 22:57:56 -05:00
hannesweisbach
76ec7040f1 Allow undefined [XYZ]_ENABLE_PIN (for sensitive pins) (#21801) 2021-05-06 01:46:39 -05:00
Keith Bennett
b41365b495 Split up SKR V2 Rev A / B (#21805) 2021-05-06 01:46:37 -05:00
ManuelMcLure
6e18af6f81 Only look for target disk during Upload (#21804) 2021-05-06 01:46:36 -05:00
Scott Lahteine
12bc28bc8c Echo LCD message to serial in kill 2021-05-06 01:46:34 -05:00
ellensp
3fa3be1f31 Fix MMU2 compile with include (#21809) 2021-05-06 01:43:44 -05:00
Scott Lahteine
a468701511 Cleanup, hex formatting 2021-05-05 07:34:39 -05:00
Scott Lahteine
f67cd07328 Pause and PLR refinements
- Move `pause_print` argument `unload_length` after `show_lcd` so it's next to `DXC_ARGS`.
- Tweak the position and conditions of PLR save in `resume_print`.
- Add `Nozzle::park_mode_0_height` accessor to get the raised Z height.
- Remove extraneous `recovery.save` from `dwin.cpp`.
- Move PLR `info.volumetric...` to `flag`.
- Remove some G-code spaces in PLR code
- Document `pause.h` function declarations.
2021-05-05 07:31:48 -05:00
Scott Lahteine
5cbdf51b4a Apply SBI/CBI/TEST in HAL 2021-05-05 07:31:47 -05:00
Victor Oliveira
7378afc6d8 Prevent watchdog reset in setup() (#21776)
Cause `manage_heaters` to only reset the watchdog and return until `setup()` is completed.

Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-05-05 07:29:58 -05:00
Scott Lahteine
7957408497 Add token to check-pr 2021-05-04 19:20:18 -05:00
Scott Lahteine
53fc13ba7f Fix flush_and_request_resend 2021-05-04 01:48:00 -05:00
Victor Oliveira
a0ea7cbf26 Fix bad DELTA probe move (#21781) 2021-05-02 17:06:47 -05:00
Victor Oliveira
6310e023a7 Fix bad call to 'diskIODriver' (#21775) 2021-05-02 16:07:53 -05:00
Scott Lahteine
5f594ce5d3 Fix parser temperature rounding 2021-05-02 15:55:20 -05:00
Scott Lahteine
64a7dfbe7d SOFT_RESET_VIA_SERIAL sanity-check 2021-05-02 03:03:00 -05:00
Ken Sanislo
5d0e94c11c Allow Creality V4 SERVO0 and PROBE pin overrides (#21770) 2021-05-02 02:20:06 -05:00
Elton Law
0ca1170b6d Allow disable of POWER_TIMEOUT (#21771)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-05-02 02:20:05 -05:00
vyacheslav-shubin
addc91a409 ExtUI event for PID tuning start (#21734) 2021-05-02 02:20:02 -05:00
Mike La Spina
450f329f05 Laser Cutter Air Assist (#21753) 2021-05-02 02:19:42 -05:00
Scott Lahteine
1f72b4f65b Define 'filelist' for dgus/origin 2021-05-01 20:26:59 -05:00
ellensp
50195ec990 Add missing ExtUI method (#21763)
Fixes #21761
2021-05-01 20:26:10 -05:00
Sebastiaan Dammann
2d9557cf40 Fix Z raise in filament load M701 (#21762)
Fixes #21750
2021-05-01 20:26:08 -05:00
tobuh
5625ceec7d Fix Power-Loss Save on Pause (#21749) 2021-05-01 20:26:07 -05:00
hartmannathan
888e9cb60b Comment correction (#21729) 2021-05-01 20:26:05 -05:00
ellensp
d00f6cbe12 Fix Singlenozzle Standby issues (#21759)
Fixes #21758

Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-05-01 20:26:03 -05:00
ellensp
8abef30a75 Fix SDCARD_CONNECTION default for BTT SKR (#21755) 2021-05-01 20:24:53 -05:00
Scott Lahteine
158b26b875 Fix undefined abl_points 2021-05-01 20:23:33 -05:00
Scott Lahteine
d92decb774 Marlin 2.0.8 2021-04-30 08:31:33 -05:00
Scott Lahteine
af9d3c027e MKS Robin flash address 2021-04-30 08:31:33 -05:00
Scott Lahteine
47c148628e Restore workflows 2021-04-30 08:22:01 -05:00
Nikolay March
e7c2a3a1da Sanity-check for COREnn backlash (#21731) 2021-04-30 04:54:10 -05:00
lujios
d32575ee74 Fix compile with DISTINCT_E_FACTORS + SLIM_LCD_MENUS (#21733)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-30 04:54:08 -05:00
Scott Lahteine
f6b0398ca8 Heater error status 2021-04-30 03:32:32 -05:00
Keith Bennett
d5c6762332 Fix BTT E3 RRF and SKR V2 (Generic PIO) (#21741)
Follow-up to #21655
2021-04-30 03:32:31 -05:00
David
a1154b226d Fix Thermal Runaway false-alarm in M303, add HeaterWatch::check (#21743)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-30 03:32:30 -05:00
Scott Lahteine
731a018905 Silence warning in gcode_D 2021-04-30 03:32:28 -05:00
Scott Lahteine
f45f4a8d54 Merge branch 'bugfix_no_dates' into prepare_release_2073 2021-04-29 08:50:28 -05:00
David
e306abaf8a Color UI Move Screen for 320x240 TFT (#21708) 2021-04-29 08:45:20 -05:00
Keith Bennett
bc28aed5b1 Clean up TFT comments (#21723) 2021-04-29 08:45:20 -05:00
Keith Bennett
93afb02994 BTT SKR V2 probe and chamber pins (#21717) 2021-04-29 08:45:20 -05:00
Scott Lahteine
0db64af9b2 Rename, clean up boards/variants (#21655)
* Consolidate variant scripts
* Rename Marlin-local boards
* Simplify variants where possible
* Rename variants
* CHITU_F103 and MEEB_3DP: Maple platform `platformio-build-stm32f1.py` uses the 'board' name, not 'board_build.variant' so folder names match 'board' and not `board_build.variant`.
2021-04-29 08:45:20 -05:00
Keith Bennett
4da3f45f41 BTT SKR V2.0 / Stepper Driver Anti-Reverse Protection (#21503) 2021-04-29 08:45:20 -05:00
Adrian DC
8a8aeba17c Fix E3V2 Advanced Settings with PLR off (#21700)
Fixes #21534
2021-04-29 08:45:20 -05:00
Marcio T
e640d9246d FTDI EVE Touch UI fixes (#21706) 2021-04-29 08:45:20 -05:00
ellensp
81d7a6b81d Use temp_info_t for temp_redundant (#21715)
Fixes #21712

Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-04-29 08:45:20 -05:00
Victor Oliveira
08537dc891 Remove compiler flag merge-constants (#21711) 2021-04-29 08:45:20 -05:00
Sebastiaan Dammann
c2741affe9 Make Cancel Objects reporting optional (#21698) 2021-04-29 08:45:20 -05:00
hartmannathan
301cc85fec typo (#21710) 2021-04-29 08:45:20 -05:00
Vert
3433bfc3bd Help users confused by "bed size" (#21714) 2021-04-29 08:45:20 -05:00
Keith Bennett
62ec696cae Fix "continuous" typo (#21701) 2021-04-29 08:45:20 -05:00
Scott Lahteine
0d0ec3ec89 Prettier output from opt scripts (#21707) 2021-04-29 08:45:20 -05:00
Vert
1d4c2454bc Fix relocated LiquidCrystal library (#21699)
Followup to 770e539859
2021-04-29 08:45:20 -05:00
Scott Lahteine
0fb606fa0a whitespace 2021-04-29 08:45:20 -05:00
Scott Lahteine
0ec489d6f2 Fix HMI_HomeOffN axis
Followup to #21534
2021-04-29 08:45:20 -05:00
pinchies
7e3cf82a40 Fix usage, commentary of MANUAL_PROBE_START_Z, Z_AFTER_PROBING (#21692)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:20 -05:00
Miguel Risco-Castillo
84e8d4c603 E3V2 DWIN Advanced Settings (#21534)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:20 -05:00
Scott Lahteine
8373bd1b71 Use Adafruit LiquidCrystal 2021-04-29 08:45:20 -05:00
Scott Lahteine
6202b2d324 Remove extra platform_packages line 2021-04-29 08:45:20 -05:00
Scott Lahteine
e46f81af22 Add INO to .editorconfig 2021-04-29 08:45:20 -05:00
Vert
888cabff27 Sanity check MIXING_EXTRUDER + DISTINCT_E_FACTORS (#21689) 2021-04-29 08:45:20 -05:00
Scott Lahteine
c6b6437761 Drop Deviot workaround 2021-04-29 08:45:20 -05:00
Scott Lahteine
1830629472 Use temperature accessors 2021-04-29 08:45:20 -05:00
Nikolay March
12ca73947b Backlash Compensation for COREnn (#21612)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-04-29 08:45:20 -05:00
fedetony
c39c17c1b5 Soft Reset via Serial or post-kill button click (#21652)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:20 -05:00
Ramiro Polla
27a26fcfeb Avoid + 0.0f in menu items (#21642) 2021-04-29 08:45:20 -05:00
Malderin
48d5fae514 Fix Bed Tramming 5th point (#21646) 2021-04-29 08:45:20 -05:00
Scott Lahteine
3153080301 Move last bootscreen delay to end of setup (#21665) 2021-04-29 08:45:20 -05:00
Ryan Finnie
309d82b6aa Clean up / improve generate_version script (#21674) 2021-04-29 08:45:20 -05:00
vyacheslav-shubin
b9715c5a03 ExtUI::onPostprocessSettings (#21683) 2021-04-29 08:45:19 -05:00
Sebastiaan Dammann
3ae0557258 Prevent extrusion on M600 un-park (#21670)
Fixes #21669
2021-04-29 08:45:19 -05:00
unknownlamer
02b6c0e881 MCP4451 Digipot Support for Azteeg X5 GT (#21680) 2021-04-29 08:45:19 -05:00
ellensp
cf5ea1ccdc Fix MP_SCARA compile (#21686) 2021-04-29 08:45:19 -05:00
Jim Hyslop
011a344500 Don't display service prompt unless needed (#21654) 2021-04-29 08:45:19 -05:00
Victor Oliveira
1570005683 Fix Celsius precision, current temp accessors (#21678) 2021-04-29 08:45:19 -05:00
Scott Lahteine
899fcf51e6 Add whole-degree accessors, simplify some temperature-related features (#21685) 2021-04-29 08:45:19 -05:00
Scott Lahteine
7d5714fedd Let compiler do Temperature inlining 2021-04-29 08:45:19 -05:00
Scott Lahteine
9f22aaea2f Clean up formatting, wrap macros 2021-04-29 08:45:19 -05:00
Scott Lahteine
4ab19e7882 Update temperature types 2021-04-29 08:45:19 -05:00
Scott Lahteine
ecc419fce0 Nextion cleanup 2021-04-29 08:45:19 -05:00
Scott Lahteine
d5e62a8255 Use configured temp window for Chiron 2021-04-29 08:45:19 -05:00
BigTreeTech
5859860a02 Enable Purge More / Resume with EP + Host Prompt (#21671)
Co-authored-by: Msq001 <alansayyeah@gmail.com>
2021-04-29 08:45:19 -05:00
Mike La Spina
b8aeaa3bf4 M10-M11 Air Evacuation for Spindle/Laser (#21668)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:19 -05:00
Scott Lahteine
a866a8f2fb Fix Chiron typos, file nav 2021-04-29 08:45:19 -05:00
Scott Lahteine
214324aaa2 Fix mfconfig 'copying' message 2021-04-29 08:45:19 -05:00
Axel Sepúlveda
181e1280af Fix Grand Central SD dependency (#21660)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-04-29 08:45:19 -05:00
Scott Lahteine
2316fb2d05 Extra dependency script logging 2021-04-29 08:45:19 -05:00
Scott Lahteine
81ab756759 Changes supporting "Prussia3D" MK3 (#21617) 2021-04-29 08:45:19 -05:00
Scott Lahteine
c50a9ef055 Update mftest help 2021-04-29 08:45:19 -05:00
Scott Lahteine
3d3c0591e8 Trigorilla Pro: Allow for swapped Z-stops 2021-04-29 08:45:19 -05:00
Scott Lahteine
e0f60c3811 Update realtime, DLP comments 2021-04-29 08:45:19 -05:00
Nick
59e55ea6fb Support new style Anycubic Chiron TFT (#21597) 2021-04-29 08:45:19 -05:00
Scott Lahteine
df36d759fc Skip preflight checks only (#21658)
Followup to e8af38cc2d
2021-04-29 08:45:19 -05:00
Scott Lahteine
fe24aa2254 More detailed serial config error 2021-04-29 08:45:19 -05:00
Scott Lahteine
1a44270284 Fix CHDK warning 2021-04-29 08:45:19 -05:00
Scott Lahteine
a860f7f5f7 BTT E3 RRF Support 2021-04-29 08:45:19 -05:00
Scott Lahteine
e5fc3f3a62 Disable assert() by default 2021-04-29 08:45:19 -05:00
Scott Lahteine
276fd6b077 Misc. pio cleanup 2021-04-29 08:45:19 -05:00
Scott Lahteine
27754a76dc Skip scripts during 'platformio init' (#21643) 2021-04-29 08:45:19 -05:00
fedetony
b586b64119 Fix Realtime Reporting with G-code Motion Modes (#21630) 2021-04-29 08:45:19 -05:00
Scott Lahteine
9c86eef98b Leave Hybrid Threshold as-is for now
Reverting 253ee0c407
2021-04-29 08:45:19 -05:00
Scott Lahteine
db054ba757 Better chopper defaults 2021-04-29 08:45:19 -05:00
MangaValk
2e726c46c8 Tool sensors (#17239) 2021-04-29 08:45:19 -05:00
Scott Lahteine
791edd0cec Use itoa for sprintf int 2021-04-29 08:45:19 -05:00
Scott Lahteine
e4760ea2b0 Drop extraneous inlines 2021-04-29 08:45:19 -05:00
Scott Lahteine
61ee5b1d76 Init pwm_thrs to 0 when HYBRID_THRESHOLD is off (#21623) 2021-04-29 08:45:19 -05:00
Luca Zimmermann
b6ce7a9f74 Always swap with PRIME_FIRST_USED disabled (#21622) 2021-04-29 08:45:19 -05:00
Scott Lahteine
99fa641a24 SDIO cleanup 2021-04-29 08:45:19 -05:00
Scott Lahteine
c67e115f61 Revert experimental NAN patch
Hold changes from #21575 (24a095c) for more testing.
2021-04-29 08:45:19 -05:00
fedetony
027a5a872d Realtime Reporting, S000, P000, R000 (#19330) 2021-04-29 08:45:19 -05:00
Scott Lahteine
973f65f80c Use celsius_t for temperature accessors 2021-04-29 08:45:19 -05:00
Sola
643f04681c Fix MKS H43 compile (#21619) 2021-04-29 08:45:19 -05:00
Andrea
713e606b28 Fix Custom Menu audio and return (#21616) 2021-04-29 08:45:19 -05:00
Scott Lahteine
ce18713f57 Add E1 for RAMPS 1.4.4 / AGC 2021-04-29 08:45:19 -05:00
XDA-Bam
761d283d6d Space-separate scrolling Status Message (#21523)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-04-29 08:45:19 -05:00
Scott Lahteine
4512bcd72c Use sq 2021-04-29 08:45:19 -05:00
Scott Lahteine
47dbea9334 Fix long acceleration overflow 2021-04-29 08:45:19 -05:00
Scott Lahteine
326b1c1225 Misc. formatting, serial out 2021-04-29 08:45:19 -05:00
Marcio T
e26eebfb2f Enhance and fix FTDI Eve Touch UI (#21607) 2021-04-29 08:45:19 -05:00
Victor Oliveira
107dd313bd Multi-Volume. Select Media for LVGL (#21344) 2021-04-29 08:45:19 -05:00
gmarsh
02a99e3f0b Fix and improve Power Monitor (#21551) 2021-04-29 08:45:19 -05:00
Scott Lahteine
896123513e Followup to sprintf cleanup 2021-04-29 08:45:19 -05:00
Scott Lahteine
562f3e43bc Add fan percent accessors 2021-04-29 08:45:19 -05:00
Scott Lahteine
ed477abbd5 More MKS UI sprintf 2021-04-29 08:45:18 -05:00
Veisen
21518fbd4e Fix ANYCUBIC_LCD_I3MEGA compile (#21585) 2021-04-29 08:45:18 -05:00
Scott Lahteine
52f928700a Remove extraneous MKS UI sprintf 2021-04-29 08:45:18 -05:00
pinchies
c96340980a Fix Flash size (512KB) for STM32F103ZE (#21590) 2021-04-29 08:45:18 -05:00
ellensp
8384582116 Fix Max Temperature not enforced (#21592) 2021-04-29 08:45:18 -05:00
Scott Lahteine
ac5b39b354 Blocking move followup 2021-04-29 08:45:18 -05:00
Giuliano Zaro
0f7161785e Chamber Fan mode 3 (#21594) 2021-04-29 08:45:18 -05:00
Scott Lahteine
49fba5a82a Add 'blocking move' comments 2021-04-29 08:45:18 -05:00
espr14
fb7bdabb70 Fix Resume Print with UBL (#21564)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-04-29 08:45:18 -05:00
Scott Lahteine
5ab64708c5 Update old-style axis indexes 2021-04-29 08:45:18 -05:00
Mike La Spina
f14d0e0983 Tweak cooler / flowmeter icons (#21573) 2021-04-29 08:45:18 -05:00
Ramiro Polla
ca84e5b1f2 Add 'jump relaxing' compile flag to AVR targets (#21566) 2021-04-29 08:45:18 -05:00
Scott Lahteine
c66cbf0d69 Reduce math library code size by 3.4KB (#21575) 2021-04-29 08:45:18 -05:00
Malderin
f69ce3e02b MKS LVGL UI: Fix icon layout (#21595) 2021-04-29 08:45:18 -05:00
Scott Lahteine
2251038ab8 Clean up, update some variants 2021-04-29 08:45:18 -05:00
Scott Lahteine
42d63258e9 tick() => isr() to spotlight interrupt-time 2021-04-29 08:45:18 -05:00
Scott Lahteine
d34a143d82 EXP2_01_PIN for BTT BTT002 1.0 2021-04-29 08:45:18 -05:00
ellensp
4e9eb95830 Followup to "no status for serial::write" (#21577) 2021-04-29 08:45:18 -05:00
BigTreeTech
9a31702a75 Fix M114 E / R broken by LIN_ADVANCE (#21579) 2021-04-29 08:45:18 -05:00
Sola
34f7142323 Fix manual move with MKS H43 (#21511)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-04-29 08:45:18 -05:00
Ramiro Polla
00ea75ce82 Drop return value from Serial::write() (#21567) 2021-04-29 08:45:18 -05:00
Ramiro Polla
6d9aaf8de5 Macros to eliminate 'f + 0.0' (#21568) 2021-04-29 08:45:18 -05:00
ellensp
a82b3955bb Check for old Marlin files mixed in (#21574) 2021-04-29 08:45:18 -05:00
Victor Oliveira
c9a7fd1722 Delay U8glib init using U8glib-HAL 0.4.4 (#21496)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:18 -05:00
Scott Lahteine
1bd35072cb Fix axis char printing 2021-04-29 08:45:18 -05:00
ellensp
c8c83e9f52 Sanity Check newer Configs too (#21550)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:18 -05:00
Radim Karniš
ab2441c088 Park Magnetic Switching Toolhead at the very end (#21552) 2021-04-29 08:45:18 -05:00
BigTreeTech
2c73964b2b BTT SKR-SE-BX (STM32H743IIT6 ARM Cortex M7) and BIQU_BX_TFT70 (#21536) 2021-04-29 08:45:18 -05:00
Scott Lahteine
ee21e31a17 getHighESpeed => autotemp_task 2021-04-29 08:45:18 -05:00
Malderin
93dfd411fc Cast celsius to int for MKS LVGL UI (#21502) 2021-04-29 08:45:18 -05:00
Victor Oliveira
c197ecc99b Fix Rumba32 variant for Marlin (#21497) 2021-04-29 08:45:18 -05:00
Malderin
c2c73215b2 MKS LVGL UI: Display/edit fan percentage (#21544)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-04-29 08:45:18 -05:00
Mike La Spina
1ba0ed8121 Make DELAY_NS round up on AVR (#21546) 2021-04-29 08:45:18 -05:00
Scott Lahteine
c5ab0a66b7 write_command changes input 2021-04-29 08:45:18 -05:00
Scott Lahteine
f3510db367 Fix CardReader string args 2021-04-29 08:45:18 -05:00
Marcio T
c46c2c4f3c Touch UI Bed Mesh Screen refactor, enhancements (#21521)
- Split mesh view and edit screen into two screens
- The editor now live-updates the graphics
- Added Touch UI mesh progress feedback to `G26`
- Show positive / negative mesh values in different colors
2021-04-29 08:45:18 -05:00
vyacheslav-shubin
0b5c25aa7c Fix FAT delete of items with long name (#21528) 2021-04-29 08:45:18 -05:00
Scott Lahteine
ba5644376c misc. pointer formatting 2021-04-29 08:45:18 -05:00
InsanityAutomation
c4379db8fc Revert "Optimized string-to-number functions" (#21532)
This reverts #21484
2021-04-29 08:45:18 -05:00
InsanityAutomation
cdd2450a97 Fix Hotend-abort-on-idle Check (#21535) 2021-04-29 08:45:18 -05:00
Giuliano Zaro
84445b82e4 Update Italian language (#21537) 2021-04-29 08:45:18 -05:00
Scott Lahteine
05d7d37872 Suppress redundant serial errors 2021-04-29 08:45:18 -05:00
XDA-Bam
a8f8201c90 Update u8g / AVR display timing defaults (#21518) 2021-04-29 08:45:18 -05:00
Vert
7297cc13b0 GT2560 V3 followup (#21512) 2021-04-29 08:45:18 -05:00
Scott Lahteine
4f174afc1a Remove extraneous 'extern' hints (#21516) 2021-04-29 08:45:18 -05:00
Scott Lahteine
96bdc4c830 Requiring PIO >= 5.0.3 2021-04-29 08:45:18 -05:00
Scott Lahteine
9fbce867ee Split up platformio.ini (#21507) 2021-04-29 08:45:18 -05:00
Mike La Spina
fea4835941 Followup to Laser Flow Meter (#21498) 2021-04-29 08:45:17 -05:00
Sola
47a13263f6 MKS H43 fix, cleanup (#21500)
Followup to #21485
2021-04-29 08:45:17 -05:00
Marcio T
82e6a2ed62 G26 Hilbert Curve followup (#21480) 2021-04-29 08:45:17 -05:00
Vert
b1be96e40e Board IDs for G2560 Rev B, G2560 v4, GTM32 VD (#21499) 2021-04-29 08:45:17 -05:00
Scott Lahteine
a4d5f96e9a Replace 'const float &' with 'const_float_t' (#21505) 2021-04-29 08:45:17 -05:00
Sola
a4f1623012 MKS H43 fix, cleanup (#21485)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-04-29 08:45:17 -05:00
Scott Lahteine
fe99bb4b9b Update UBL param 2021-04-29 08:45:17 -05:00
Scott Lahteine
259115bb3f Move apply_rotation_xyz into matrix_3x3 2021-04-29 08:45:17 -05:00
Scott Lahteine
a572e2ed12 Put ABL state into a class 2021-04-29 08:45:17 -05:00
Marcio T
5ad7118aea FTDI Touch UI fix and reorganize (#21487) 2021-04-29 08:45:17 -05:00
Ramiro Polla
16af2148b9 Optimized string-to-number functions (#21484) 2021-04-29 08:45:17 -05:00
Marco van Wieringen
e787cdd1cb Fix FYSETC_S6 heaters pins (#21483)
When adding support FYSETC Spider board the S6 pins file was broken.
2021-04-29 08:45:17 -05:00
Scott Lahteine
2b0fcc79c5 Serial flags followup
Followup to #21318
2021-04-29 08:45:17 -05:00
Scott Lahteine
4e77fe50a4 Adjust microsteps alignment 2021-04-29 08:45:17 -05:00
Victor Oliveira
9902e6fb9f Fix and add STM32 SDIO DMA (#21476) 2021-04-29 08:45:17 -05:00
X-Ryl669
f18da95d38 Flags for MarlinSerial instance features (#21318) 2021-04-29 08:45:17 -05:00
Giuliano Zaro
368fcaee54 Generalize MMU (#21469) 2021-04-29 08:45:17 -05:00
Ste
badbb4a500 Align temp settings (#21329) 2021-04-29 08:45:17 -05:00
Ramiro Polla
b96c3a063f Optimize BLTouch code for size (#21477) 2021-04-29 08:45:17 -05:00
Scott Lahteine
84a2746d05 Improve uncrust script 2021-04-29 08:45:17 -05:00
Scott Lahteine
2059c6e4d0 Apply pointer formatting 2021-04-29 08:45:17 -05:00
ellensp
bf3fce3550 GT2560 Rev.A Plus Z Max Pin with BLTouch (#21375) 2021-04-29 08:45:17 -05:00
George Fu
19078966d9 FYSETC Spider board (#21458) 2021-04-29 08:45:17 -05:00
Scott Lahteine
f734f79f5b reduced verbiage 2021-04-29 08:45:17 -05:00
Malderin
627331aa68 Fix MKS LVGL UI Main screen / print buttons (#21468) 2021-04-29 08:45:17 -05:00
Scott Lahteine
3ed4503c30 Adjust mfconfig script 2021-04-29 08:45:17 -05:00
Mike La Spina
f1986545da Laser Coolant Flow Meter / Safety Shutdown (#21431)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:17 -05:00
Vert
9f48314cb4 YHCB2004 pins followup (#21472) 2021-04-29 08:45:17 -05:00
Marcio T
7c275285ea Refactor Hilbert curve. Enhance Touch UI Bed Level Screen. (#21453) 2021-04-29 08:45:17 -05:00
Leoric
4ffb95a736 MKS UI: Monitor state when idle (#21452)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:17 -05:00
Vert
943a8ebdc6 Fix for YHCB2004 (#21450) 2021-04-29 08:45:17 -05:00
Tomas Rimkus
8d73a6c4e2 Avoid watchdog reset in all wired EEPROMs (#21436)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-04-29 08:45:17 -05:00
Scott Lahteine
e817db62a4 Apply TMC UART to STM32, simplify 2021-04-29 08:45:17 -05:00
Scott Lahteine
85eb179acf Define HW serial ports needed for TMC UART (#21446) 2021-04-29 08:45:17 -05:00
Ramiro Polla
3d70b645b6 Optimize LSF for size, efficiency (#21443) 2021-04-29 08:45:17 -05:00
ldursw
c83b6217f9 Followup to SDIO patch (#21440) 2021-04-29 08:45:17 -05:00
espr14
a97f6c4c74 Endstops always on in G28 (#21441) 2021-04-29 08:45:17 -05:00
espr14
710b1bcb6d Endstops always on after delta homing (#21442) 2021-04-29 08:45:17 -05:00
Scott Lahteine
b4617e7904 Tweak disabled variant options 2021-04-29 08:45:17 -05:00
Scott Lahteine
a9f022dacf Update common-cxxflags.py comment 2021-04-29 08:45:17 -05:00
Scott Lahteine
5ff4476ccb Comment, clean up some PlatformIO scripts 2021-04-29 08:45:17 -05:00
Martijn Bosgraaf
98a6015d3a Extend M106/M107 for better laser module support (#16082)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:17 -05:00
Bryan Hunwardsen
05b281ad9e SKR E3 Mini V2.0 Fan Bug Fix (#21079)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-04-29 08:45:17 -05:00
Miguel Risco-Castillo
3c9ffa77f9 Ender 3 V2 Status Line (#21369)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:17 -05:00
ldursw
2a32d14dc4 Fix SDIO buffer alignment (#21396) 2021-04-29 08:45:17 -05:00
kpishere
e087271d48 Misc build fixes (#21413)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:17 -05:00
Ramiro Polla
375404290d Update Anet V1.0 display timing (#21425) 2021-04-29 08:45:17 -05:00
Ramiro Polla
5c8f7c7ea3 Optimize MarlinSettings with template methods (#21426) 2021-04-29 08:45:17 -05:00
Scott Lahteine
c6774812fa More IntelliSense-friendly declarations 2021-04-29 08:45:16 -05:00
Scott Lahteine
af13128430 Group UBL parameters, add comments 2021-04-29 08:45:16 -05:00
Scott Lahteine
6b7a92035c Misc LCD cleanup 2021-04-29 08:45:16 -05:00
Scott Lahteine
9e8b158ee1 Tweak mf helper scripts 2021-04-29 08:45:16 -05:00
Scott Lahteine
3226e12037 Add typedef celsius_t (#21374) 2021-04-29 08:45:16 -05:00
Scott Lahteine
2a011779e9 Max temp/target followup 2021-04-29 08:45:16 -05:00
Scott Lahteine
faa1118ca7 MKS / E3V2 LCD code cleanup 2021-04-29 08:45:16 -05:00
Scott Lahteine
3341e4f88c Add typedef extra_fan_t 2021-04-29 08:45:16 -05:00
Scott Lahteine
976403d10d Improve max temp / target 2021-04-29 08:45:16 -05:00
borland1
ff729744e5 Main / Config Custom Submenus (#18177)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:16 -05:00
Scott Lahteine
d924adef75 Followup to UBL Hilbert 2021-04-29 08:45:16 -05:00
ellensp
dca4c2904e Check NOZZLE_CLEAN_FEATURE settings (#21332)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-04-29 08:45:16 -05:00
Marcio T
e806c3376a UBL - Hilbert space-filling curve probing sequence (#21387) 2021-04-29 08:45:16 -05:00
Scott Lahteine
c9674cd809 Minor process_subcommands_now followup 2021-04-29 08:45:16 -05:00
mihtjel
259d8f19b3 Fix macros that call macros crashing (#21383)
When macros call macros, the null termination should remain in place until the macro is completed, and only then put back. Otherwise, the macro handler interprets this as setting the macro called to a new value.
2021-04-29 08:45:16 -05:00
Sola
9a1c4f91fe Fix MKS H43 sensorless homing (#21388) 2021-04-29 08:45:16 -05:00
Zs.Antal
4bdc303f6c Update Hungarian language (#21407) 2021-04-29 08:45:16 -05:00
Marcio T
5b0dc4d325 Mesh Editor for FTDI Eve Touch UI (#21381) 2021-04-29 08:45:16 -05:00
Scott Lahteine
39c30d6fd6 HAL eeprom cleanup 2021-04-29 08:45:16 -05:00
Scott Lahteine
e50af65a1b Fix bool++ warning 2021-04-29 08:45:16 -05:00
ellensp
c4d757c6f7 Fix preflight motherboard target check (#21372)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-04-29 08:45:16 -05:00
Skorpi08
ac4f3c0c7e Nextion TFT touch screen (#21324)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:16 -05:00
Scott Lahteine
107cc1f6a1 Followup to planner cleanup 2021-04-29 08:45:16 -05:00
Scott Lahteine
f49dc90655 Move web-ui out of Marlin root folder 2021-04-29 08:45:16 -05:00
Scott Lahteine
7cfaa50148 Revert "Fix small wired EEPROM (#21337)"
Reverting commit cc3e878f90 pending further investigation.
2021-04-29 08:45:16 -05:00
Scott Lahteine
dec9b9ad2f Minor E3 V2 dwin cleanup 2021-04-29 08:45:16 -05:00
Scott Lahteine
7973b954b4 E1+ Autotemp and Planner comments 2021-04-29 08:45:16 -05:00
Scott Lahteine
e0711d87a0 Un-pause fans on STOP 2021-04-29 08:45:16 -05:00
Scott Lahteine
3bbcfb0185 Update setup() description 2021-04-29 08:45:16 -05:00
Scott Lahteine
86a8e8970a mftest: usage with error 2021-04-29 08:45:16 -05:00
Scott Lahteine
f5d612b213 Detect extra ENVS in preflight checks (#21361) 2021-04-29 08:45:16 -05:00
K.3D
a2d2e19f84 KRATOS32 / K.32 board and LCD controllers (#21334) 2021-04-29 08:45:16 -05:00
X-Ryl669
35c32602f4 Teensy USB / serial followup (#21316) 2021-04-29 08:45:16 -05:00
Victor Oliveira
0d04dcd9ae Script to generate Marlin TFT Images (#21340) 2021-04-29 08:45:16 -05:00
X-Ryl669
f6f5ed166f Fix build with Meatpack only on 2nd port (#21336)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-04-29 08:45:16 -05:00
Scott Lahteine
b644aca98c Fix small wired EEPROM (#21337)
Co-Authored-By: jafal99 <26922965+jafal99@users.noreply.github.com>
2021-04-29 08:45:16 -05:00
XDA-Bam
e5ab4a7283 Update display timing for SKR Pro (#21346) 2021-04-29 08:45:16 -05:00
InsanityAutomation
f36eb4646b Custom menu items confirm option (#21338)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-04-29 08:45:16 -05:00
Victor Oliveira
0c3eb04a37 No extra build folder for st/jlink upload (#21341) 2021-04-29 08:45:16 -05:00
Scott Lahteine
09233129a8 Tweak opt_set, opt_enable 2021-04-29 08:45:16 -05:00
Scott Lahteine
2480c82d76 Add M207/8/9 reporting (#21335) 2021-04-29 08:45:16 -05:00
Scott Lahteine
7fb04b3656 MarlinSerial cleanup 2021-04-29 08:45:16 -05:00
Scott Lahteine
166d4a26f3 Pause SD queue early on M25 (#21317) 2021-04-29 08:45:16 -05:00
Scott Lahteine
b6169a957d Fix MarlinSerial typo 2021-04-29 08:45:16 -05:00
Scott Lahteine
ead6d99069 Clean up, optimize ExtUI/TFT code (#21333) 2021-04-29 08:45:16 -05:00
X-Ryl669
59a9be5f5a Undef unused 2nd serial option(s) (#21331)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-04-29 08:45:16 -05:00
Evgeny Z
d81838e9fa Lerdge-X I²C EEPROM pins, size (#21322) 2021-04-29 08:45:16 -05:00
ellensp
894688c547 Fix password menu stickiness before first auth (#21295) 2021-04-29 08:45:16 -05:00
Evgeny Z
059e6514ca Lerdge-K TMC 2208/9 UART pins (#21299) 2021-04-29 08:45:16 -05:00
Keith Bennett
a729999f55 Fix LERDGE 'extends' env references (#21305)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:16 -05:00
Cal1sto
f332cca4a7 Fix TouchMI stow in G34 (#21291) 2021-04-29 08:45:16 -05:00
X-Ryl669
242ef2b2b4 Fix MeatPack with per-serial-port instances (#21306) 2021-04-29 08:45:16 -05:00
Scott Lahteine
5c0f909949 Tricked-out declaration 2021-04-29 08:45:16 -05:00
Scott Lahteine
633491833c Update MEATPACK test 2021-04-29 08:45:16 -05:00
Scott Lahteine
b713ca2638 Number serial from 1 to match settings 2021-04-29 08:45:16 -05:00
Scott Lahteine
46246c8db6 Clean up spaces and words 2021-04-29 08:45:15 -05:00
Scott Lahteine
e1cca6d97b Fix serial index types 2021-04-29 08:45:15 -05:00
Scott Lahteine
01f3dc6d41 Add binary file transfer test 2021-04-29 08:45:15 -05:00
Victor Mateus Oliveira
0e1a1959de fix meat pack internal buffer for multi serial 2021-04-29 08:45:15 -05:00
Chris
6c70402161 Fix LPC + TMC boot loop (#21298) 2021-04-29 08:45:15 -05:00
X-Ryl669
6652c7c435 Distinguish serial index from mask (#21287) 2021-04-29 08:45:15 -05:00
Victor Oliveira
7f3208ba79 Host Keepalive followup (#21290)
Followup to #21283

Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-04-29 08:45:15 -05:00
ellensp
b680ddc66c CUSTOM_USER_BUTTONS followup (#21284)
Followup to #18389
2021-04-29 08:45:15 -05:00
Victor Oliveira
7a5a6ca53f Fix Host Keepalive serial target (#21283)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-04-29 08:45:15 -05:00
ellensp
b80ec493ed M303 followup (#21282)
Followup to f2ed18d150
2021-04-29 08:45:15 -05:00
Keith Bennett
d4a6014578 Extend Heater Overshoot Options (#21273)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:15 -05:00
ellensp
6ee61c8380 Update obsolete debug define (#21276) 2021-04-29 08:45:15 -05:00
Mike La Spina
db4d9b7fcf Cooler (for Laser) - M143, M193 (#21255) 2021-04-29 08:45:15 -05:00
Scott Lahteine
95136abc47 Fix DGUS include paths
Followup to #20609
2021-04-29 08:45:15 -05:00
Sola
5b586ea4d8 MKS H43 fixup (#21267)
Co-authored-by: makerbase <4164049@qq.com>
Co-authored-by: MKS-Sean <56996910+MKS-Sean@users.noreply.github.com>
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-04-29 08:45:15 -05:00
ellensp
05a124930e Fix Creality DWIN - Broken (bool)Serial ? (#21272)
Co-authored-by: ellensp <ellensp@hotmsil.com>
2021-04-29 08:45:15 -05:00
Scott Lahteine
423c4e4636 Pins/tests followup 2021-04-29 08:45:15 -05:00
Keith Bennett
6c6beeee70 Pins/tests followup (#21268)
Missing commit from #21254
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-04-29 08:45:15 -05:00
Zs.Antal
74457dc989 Update Hungarian language (#21266) 2021-04-29 08:45:15 -05:00
qwewer0
34b76c6f80 Link to bugfix tree (#21263) 2021-04-29 08:45:15 -05:00
Keith Bennett
35355d1f1b Tweak/Consolidate followup (#21261) 2021-04-29 08:45:15 -05:00
Scott Lahteine
7c37a82821 Tweak tests, consolidate pins target validation (#21254) 2021-04-29 08:45:15 -05:00
Victor Oliveira
5a01cdb81c Fix multi-serial CRC error crash (#21249) 2021-04-29 08:45:15 -05:00
Tanguy Pruvot
6cfd190107 Followup to MP_SCARA/TPARA patches (#21248) 2021-04-29 08:45:15 -05:00
Scott Lahteine
10ec13b2c3 Remove extra G42 2021-04-29 08:45:15 -05:00
Oleksii Zelivianskyi
8a3d0b23cf Correct fan pins for MKS Robin Nano v3 (#21238) 2021-04-29 08:45:15 -05:00
Keith Bennett
c90927cf54 SMUFF => SMuFF (#21243) 2021-04-29 08:45:15 -05:00
Scott Lahteine
f187a5304b Implement G42, after all 2021-04-29 08:45:15 -05:00
Scott Lahteine
d5b09fdbf5 MK2_MULTIPLEXER dependency 2021-04-29 08:45:15 -05:00
Scott Lahteine
c8b73b00be Update some py scripts 2021-04-29 08:45:15 -05:00
Scott Lahteine
ee74cee5d4 Parking Extruder solenoid fix/cleanup 2021-04-29 08:45:15 -05:00
Scott Lahteine
99eedf77b5 Fix teensy35 tests 2021-04-29 08:45:15 -05:00
Scott Lahteine
d61e7dd685 TPARA followup 2021-04-29 08:45:15 -05:00
Axel
864d27d460 TPARA - 3DOF robot arm IK (#21005)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-04-29 08:45:15 -05:00
Scott Lahteine
3c86eb18a5 misc. cleanup 2021-04-29 08:45:15 -05:00
Scott Lahteine
c4fe072751 Improve opt_set (etc.) used for tests 2021-04-29 08:45:15 -05:00
Sola
0e61b4a982 Fix MKS H43 compile (#21240) 2021-04-29 08:45:15 -05:00
Scott Lahteine
92da7659f4 Trust XY after Quiet Probing short sleep (#21237) 2021-04-29 08:45:15 -05:00
Scott Lahteine
be8b547261 Fix some config builds 2021-04-29 08:45:15 -05:00
Scott Lahteine
ef57a3e585 build_all_examples -c -s, silent mftest 2021-04-29 08:45:15 -05:00
Scott Lahteine
b71f1e1edd Better mftest order 2021-04-29 08:45:15 -05:00
MoellerDi
f3db2551a6 G-code Digital Buttons (#18389)
Co-Authored-By: android444 <24375898+android444@users.noreply.github.com>
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:15 -05:00
Scott Lahteine
7eace53eb7 Fewer warnings 2021-04-29 08:45:15 -05:00
Scott Lahteine
c6e82160e4 POWER_LOSS_ZHOME_POS followup 2021-04-29 08:45:15 -05:00
Nick
c8cd824be2 Safe Z homing for Power Loss Recovery (#16909) 2021-04-29 08:45:15 -05:00
Ilya
854ab04ee4 Default microsteps to axis first stepper (#21230) 2021-04-29 08:45:15 -05:00
Marcio T
4e6ed43198 Minor FTDI EVE Touch UI fixes (#21232) 2021-04-29 08:45:15 -05:00
Stephan
2d4a1cd428 Filament Runout handling for Mixing Extruder (#20327)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:15 -05:00
Scott Lahteine
fd5f1f1f5d Filament sensor cleanup 2021-04-29 08:45:15 -05:00
Scott Lahteine
fbb30a2570 Serial macros cleanup 2021-04-29 08:45:15 -05:00
Roman Moravčík
043bd34e2b Update Slovak language (#21224) 2021-04-29 08:45:15 -05:00
Fabio Viappiani
e4a67c8496 Fix TERN typo (#21229) 2021-04-29 08:45:15 -05:00
Scott Lahteine
0a097b7a1e Tweaks to build scripts 2021-04-29 08:45:15 -05:00
Giuliano Zaro
4343de3ee2 [SAMD51] Respect serial buffer size (#21194) 2021-04-29 08:45:15 -05:00
Scott Lahteine
3f34916c57 Tweaks to build scripts 2021-04-29 08:45:15 -05:00
Scott Lahteine
0e6e7b0608 whitespace 2021-04-29 08:45:15 -05:00
ldursw
334bafc9c1 ST STM32 platform version 12 (#21219) 2021-04-29 08:45:15 -05:00
RudolphRiedel
8eedec04a1 Two additional EVE displays (#18839) 2021-04-29 08:45:14 -05:00
Sola
5aa9cc82a8 MKS H43 controller (#20609) 2021-04-29 08:45:14 -05:00
LinFor
6183cd0731 RGB Caselight (#20341) 2021-04-29 08:45:14 -05:00
jbuck2005
971fb8729a SPEED => FEEDRATE (#21217) 2021-04-29 08:45:14 -05:00
Evgeny Z
124fb331cc Apply AUTO_POWER_CONTROL later in setup() (#21193)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:14 -05:00
Kachidoki
d20375c185 Duplicate fan speed in M106/7 IDEX Duplication Mode (#21208) 2021-04-29 08:45:14 -05:00
Arjan Mels
fff95b7173 Fix M876 when called from EP (#21210) 2021-04-29 08:45:14 -05:00
Giuliano Zaro
130dfbe11c [SAMD51] Postmortem Debugging not implemented (#21211) 2021-04-29 08:45:14 -05:00
Giuliano Zaro
68e50a725a [SMUFF] Use EXTRUDERS for extended commands (#21212) 2021-04-29 08:45:14 -05:00
X-Ryl669
3f9fe2dac4 Fix G-code Queue merge (#21213) 2021-04-29 08:45:14 -05:00
X-Ryl669
e1283b8a86 G-code Queue followup (#21214) 2021-04-29 08:45:14 -05:00
Alexander D. Kanevskiy
653608e931 Fix preflight complex extend handling (#21191) 2021-04-29 08:45:14 -05:00
X-Ryl669
80aac1b711 Make F_CPU a compile-time constant (#21051) 2021-04-29 08:45:14 -05:00
Victor Oliveira
b428a53b7a Fix GTR / SKR PRO + USB Flash Drive build (#21197) 2021-04-29 08:45:14 -05:00
Victor Oliveira
94d1637221 More LERDGE envs followup (#21205) 2021-04-29 08:45:14 -05:00
Fabio Viappiani
3a5ac12321 Fix M355 with NEOPIXEL (#21200) 2021-04-29 08:45:14 -05:00
ldursw
c9d757fc0e Init (stow) BLTouch before X/Y homing (#21192) 2021-04-29 08:45:14 -05:00
X-Ryl669
532dbb8064 Fix and improve G-code queue (#21122)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:14 -05:00
Scott Lahteine
adf26fd69e Chamber followup 2021-04-29 08:45:14 -05:00
Vi B-P
13dee4d059 Preheat Menu shortcut option (#20350) 2021-04-29 08:45:14 -05:00
swissnorp
fc09581aa3 Combine Z_AFTER_DEACTIVATE with UNKNOWN_Z_NO_RAISE (#20444)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:14 -05:00
Victor Oliveira
52c539eced Zero Endstops followup (#21188) 2021-04-29 08:45:14 -05:00
qwewer0
5fdab77cc2 Fix LEVEL_CORNERS_USE_PROBE with BLTOUCH_HS_MODE (#21161) 2021-04-29 08:45:14 -05:00
Scott Lahteine
00ceeeae7a Eryone Thinker V2 (#21190)
Co-Authored-By: Bryan Joshua Pedini <b.pedini@bjphoster.com>
2021-04-29 08:45:14 -05:00
Katelyn Schiesser
7240c2172b PROBING_HEATERS_OFF sub-option WAIT_FOR_HOTEND (#20835) 2021-04-29 08:45:14 -05:00
ellensp
f3d15b995c Preflight checks for PlatformIO builds (#21068)
Co-authored-by: Alexander D. Kanevskiy <alexander.kanevskiy@intel.com>
2021-04-29 08:45:14 -05:00
Katelyn Schiesser
b71af6a50f Use 'H' value for UBL G29 z-clearance (#21114) 2021-04-29 08:45:14 -05:00
Scott Lahteine
362776c38d Tweak case light comment 2021-04-29 08:45:14 -05:00
deirdreobyrne
e6bf89e82b Allow Zero Endstops (e.g., for CNC) (#21120)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:14 -05:00
Tanguy Pruvot
19c38f1a8a Add BOARD_PREINIT (for Longer3D open drain pins) (#21159) 2021-04-29 08:45:14 -05:00
Scott Lahteine
ac5f2a9300 Update BLTOUCH_HS_MODE comment 2021-04-29 08:45:14 -05:00
Nick
088b5cfec2 Fix Anycubic Chiron TFT SD menu (#21183) 2021-04-29 08:45:14 -05:00
X-Ryl669
b33afb790e Let libmaple accept RX/TX_BUFFER_SIZE (#21177) 2021-04-29 08:45:14 -05:00
X-Ryl669
73332f4df1 Combined LPC / Serial fixes (#21178)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:14 -05:00
Scott Lahteine
7cb286bb6e Expose more env builds in PlatformIO extension 2021-04-29 08:45:14 -05:00
Victor Oliveira
e9d62822bd Fix MKS Robin Nano V3 I2C pins (#21174) 2021-04-29 08:45:14 -05:00
Ken Sanislo
8d05a823e9 Chamber Heater PID (#21156)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:14 -05:00
Nick
c051a2ecae Fix Chiron TFT serial comms (#21152) 2021-04-29 08:45:14 -05:00
Scott Lahteine
dc0247c57e Outdent UBL code 2021-04-29 08:45:14 -05:00
Scott Lahteine
8fca59f63b G92, subcodes flag cleanup 2021-04-29 08:45:14 -05:00
Marcio T
1ab1c62f03 FTDI Touch UI followup (#21167) 2021-04-29 08:45:14 -05:00
Marcio T
a19c79d714 Enhance and fix FTDI Touch UI (#21148) 2021-04-29 08:45:14 -05:00
X-Ryl669
dc11874abe Postmortem Debugging to serial port (#20492) 2021-04-29 08:45:14 -05:00
kpishere
61753bb5e3 Fix SPI on SMART RAMPS with mega2560 (#21128) 2021-04-29 08:45:14 -05:00
ellensp
3f1a8c2a1c Fix G29 missing defines (#21145)
Co-authored-by: ellensp <ellensp@hotmsil.com>
2021-04-29 08:45:14 -05:00
espr14
bdb67b4397 Fix cleaning_buffer_counter check (#21115) 2021-04-29 08:45:14 -05:00
Scott Lahteine
c4fcf8bfd7 Fixes for MP_SCARA (#21113)
Co-Authored-By: svsergo <52426708+svsergo@users.noreply.github.com>
2021-04-29 08:45:14 -05:00
Vert
7e8b02145c YHCB2004 followup (#21111) 2021-04-29 08:45:14 -05:00
Scott Lahteine
a09d7a59b4 Fix IDEX broken endstop test (#21110) 2021-04-29 08:45:14 -05:00
jbuck2005
27721c564f Note FAN2_PIN silkscreen label (#21087) 2021-04-29 08:45:14 -05:00
Vert
2e040d03df GT2560 v4.1B, YHCB2004 SPI character LCD (#21091)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-04-29 08:45:14 -05:00
ellensp
2724816152 Swap Trigorilla Pro Z_MIN / MAX endstop pins (#21095) 2021-04-29 08:45:14 -05:00
X-Ryl669
03396922ab Fix/improve configs build script (#21086) 2021-04-29 08:45:14 -05:00
Allen Bauer
b4a3013c28 BTT002 pins for FYSETC mini12864 (#21096) 2021-04-29 08:45:14 -05:00
ellensp
903c2915ed Fix "BUTTON_CLICK redefined" warning (#21098) 2021-04-29 08:45:14 -05:00
jbuck2005
3ca2195ed0 Update platform ststm32 to 11.0 (#20928) 2021-04-29 08:45:14 -05:00
X-Ryl669
c759b2d2a6 Script to download & build Configurations (#20992)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:14 -05:00
ellensp
adbe152256 EXP headers for RAMPS 1.x (#21054)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:14 -05:00
Giuliano Zaro
3883853817 Fix MMU2 compile error (#21065) 2021-04-29 08:45:14 -05:00
ellensp
ead41ac491 Fix remaining time divide-by-zero (#21080) 2021-04-29 08:45:14 -05:00
Steven Haigh
8a35c9a1a0 E3V2 Status Area followup (#21072) 2021-04-29 08:45:14 -05:00
InsanityAutomation
10da0f92a0 E3V2 DWIN live movement (#21035) 2021-04-29 08:45:14 -05:00
InsanityAutomation
ca79af7a46 Use configuration website, fix edit color 2021-04-29 08:45:14 -05:00
Scott Lahteine
ba4ce63858 Fix a board comment 2021-04-29 08:45:14 -05:00
Scott Lahteine
f31a8f4086 anet_et4_openblt.py => openblt.py 2021-04-29 08:45:14 -05:00
Scott Lahteine
9c47a9256d Coolant Control sanity-checks 2021-04-29 08:45:14 -05:00
Giuliano Zaro
8ec86b810d Don't create unused Serial Port instances (#21066)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:14 -05:00
Scott Lahteine
69fcd9210f Allow mftest -t to select by number 2021-04-29 08:45:13 -05:00
Scott Lahteine
b95e60dbbd Update helpful links 2021-04-29 08:45:13 -05:00
Scott Lahteine
8bca8e5ba0 Minor serial code cleanup 2021-04-29 08:45:13 -05:00
X-Ryl669
92b5f06bf9 Use -g3 to include macros in debug symbols (#21052) 2021-04-29 08:45:13 -05:00
X-Ryl669
4316522146 Improve Delay test report (#21047) 2021-04-29 08:45:13 -05:00
kpishere
c0d1fd14f8 Fix AZSMZ_12864 on SMART RAMPS (#21056) 2021-04-29 08:45:13 -05:00
Jyers
f740226a82 Improved Ender 3 V2 display status area (#20983)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-04-29 08:45:13 -05:00
kpishere
54f401506b Support SMART RAMPS 1.4 with Mega2560 (#21059) 2021-04-29 08:45:13 -05:00
Scott Lahteine
4d75c2e0f9 Ender 3 V2 DWIN cleanup (#21061) 2021-04-29 08:45:13 -05:00
Michael Telatynski
7361fbfe28 Improve probe preheat behavior (#21033)
Co-authored-by: InsanityAutomation <d.menzel@insanityautomation.com>
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-04-29 08:45:13 -05:00
Scott Lahteine
897291c470 chmod and paths 2021-04-29 08:45:13 -05:00
Scott Lahteine
6320928795 Reheat bed first 2021-04-29 08:45:13 -05:00
Scott Lahteine
9acd2e176d Ender 3 V2 DWIN cleanup (#21026) 2021-04-29 08:45:13 -05:00
Scott Lahteine
c7efb2d964 Update M808 comment 2021-04-29 08:45:13 -05:00
JoAnn Manges
41ab63897f MAX Thermocouples rework (#20447)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-04-29 08:45:13 -05:00
X-Ryl669
77f48d2bad Serial refactor. Default 8-bit ECHO to int, not char (#20985)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:13 -05:00
Arjan Mels
897d29ea31 Fix STM32F1 emergency parser (#21011) 2021-04-29 08:45:13 -05:00
Alexander D. Kanevskiy
13f0e4729c Allow SERVO0_PIN override on Creality Melzi (#21007) 2021-04-29 08:45:13 -05:00
Scott Lahteine
86fd38ef42 Fix animated boot screen 2021-04-29 08:45:13 -05:00
MKS-Sean
127a4ada93 Fix: Unsupported use of %f in printf (#21001) 2021-04-29 08:45:13 -05:00
ellensp
1aae6395c6 Fix mini12864 v2.1 + PSU control + NeoPixel backlight (#21021) 2021-04-29 08:45:13 -05:00
Malderin
1bf469411a Fix LVGL "more" menu user items (#21004)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:13 -05:00
Scott Lahteine
47b872f5d0 Fix TEMP_0_TR_ENABLE, rename temp conditions (#21016) 2021-04-29 08:45:13 -05:00
Simon Jouet
80c1be919f Fix ESP32 I2S init placement (#21019) 2021-04-29 08:45:13 -05:00
Chris Pepper
243c8b4e1a Improve RPi host kernel panic mitigation
It was still possible to cause a Kernel panic, this additional 500ms delay before disconnect appears to mitigate it completely.
2021-04-29 08:45:13 -05:00
Scott Lahteine
d7fbb1512a Melzi, comments cleanup 2021-04-29 08:45:13 -05:00
Marcio Teixeira
8416edd127 Refactor FTDI EVE Touch Screen (#20987) 2021-04-29 08:45:13 -05:00
X-Ryl669
77966135e8 Fix ARM delay function (#20901) 2021-04-29 08:45:13 -05:00
Scott Lahteine
6054052248 Use 'false' 2021-04-29 08:45:13 -05:00
Chris Pepper
bbb49c43e1 Mitigate RPi hosts kernel panic on M997
Work around M997 sometimes causing a kernel panic on the host when sent from a Raspbery Pi, the root cause is currently unknown.
2021-04-29 08:45:13 -05:00
ellensp
9437c72ef6 Fix MKS SGen-L DOGLCD_MOSI pin for FYSETC_MINI_12864 LCD (#20998) 2021-04-29 08:45:13 -05:00
Zs.Antal
bb511195b8 Update Hungarian language (#20996) 2021-04-29 08:45:13 -05:00
Scott Lahteine
582458998f Use serial shorthand 2021-04-29 08:45:13 -05:00
Scott Lahteine
bb5c643dfb Nybbles & Bits 2021-04-29 08:45:13 -05:00
Scott Lahteine
bf631046c0 Fix some serial char, echo
Co-Authored-By: X-Ryl669 <3277165+X-Ryl669@users.noreply.github.com>
2021-04-29 08:45:13 -05:00
Victor Oliveira
0d7c02d2c6 Re-calibrate touch after EEPROM reset, if needed (#20934) 2021-04-29 08:45:13 -05:00
Malderin
129e9151da Add "more" menu in LVGL interface (#20940)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-04-29 08:45:13 -05:00
Scott Lahteine
4771379302 Evaluate ANY_SERIAL_IS in place 2021-04-29 08:45:13 -05:00
ellensp
62a65d3fdc Note (MarlinUI) limit on PREHEAT settings (#20966)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:13 -05:00
Giuliano Zaro
032152c41d Update a UBL comment (#20931) 2021-04-29 08:45:13 -05:00
Victor Oliveira
da80fd782c STM32 Shared Media - USB Mass Storage Device (#20956) 2021-04-29 08:45:13 -05:00
Tanguy Pruvot
460cdf4c09 Multi-language pertains to Color UI (#20972) 2021-04-29 08:45:13 -05:00
Victor Oliveira
0badef42d5 Touch Calibration Screen auto-save option (#20971) 2021-04-29 08:45:13 -05:00
Victor Oliveira
811b3d0f08 Include ui_common for MARLIN_LOGO_FULL_SIZE (#20963) 2021-04-29 08:45:13 -05:00
ellensp
8de850fd07 Fix host_response_handler compile (#20962) 2021-04-29 08:45:13 -05:00
X-Ryl669
1e5995335c LVGL UI G-code console (#20755) 2021-04-29 08:45:13 -05:00
Tanguy Pruvot
4153b6a30b Refresh screen on M22 (detach) (#20958) 2021-04-29 08:45:13 -05:00
X-Ryl669
c631fb79d5 Fix AutoReporter implementation (#20959) 2021-04-29 08:45:13 -05:00
X-Ryl669
9ae204df9c Serial refactor followup (#20932) 2021-04-29 08:45:13 -05:00
zeleps
e7658ec5f5 Init serial ports first (#20944) 2021-04-29 08:45:13 -05:00
qwewer0
b3656c387f Remove extra G29 V newlines (#20955) 2021-04-29 08:45:13 -05:00
ConstantijnCrijnen
164199614c Language selection auto-save option (#20915) 2021-04-29 08:45:13 -05:00
ellensp
219f92c4ca KILL, BEEPER pins for LCD_FOR_MELZI (#20924) 2021-04-29 08:45:13 -05:00
ellensp
0e37370b0c Fix G28_STR (#20925) 2021-04-29 08:45:13 -05:00
rafaljot
845b99feb7 MPX_ARM_MINI board (Mingda MD-16) (#20711) 2021-04-29 08:45:12 -05:00
Scott Lahteine
4b9f2f13b1 AutoReport class (Temperature, Cardreader) (#20913) 2021-04-29 08:45:12 -05:00
X-Ryl669
b44de74b91 Optimize serial output code for size (#20911) 2021-04-29 08:45:12 -05:00
George Fu
59d16eb189 FYSETC Cheetah 2.0 (#20897) 2021-04-29 08:45:12 -05:00
ellensp
c7004d100c Fix undefined G28_STR (#20912) 2021-04-29 08:45:12 -05:00
ellensp
07a3ed1d7e Fix LED_CONTROL_MENU compile (#20914) 2021-04-29 08:45:12 -05:00
Scott Lahteine
cc545a73a1 Serial refactor followup 2021-04-29 08:45:12 -05:00
X-Ryl669
efa1e56369 Refactor serial class with templates (#20783) 2021-04-29 08:45:12 -05:00
ellensp
8da8e7d17b Meatpack::report_state on serial port init (#20903)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-04-29 08:45:12 -05:00
ellensp
b10b76e882 MeatPack followup - unused command (#20893) 2021-04-29 08:45:12 -05:00
Scott Lahteine
be058430b4 Remove extra cast 2021-04-29 08:45:12 -05:00
Scott Mudge
7a559e4733 MeatPack followup (#20896) 2021-04-29 08:45:12 -05:00
ellensp
5fb8818ae5 ZONESTAR_LCD warning for RAMPS / ReARM (#20702) 2021-04-29 08:45:12 -05:00
ConstantijnCrijnen
cdefc19129 Configure / disable PRINTCOUNTER save interval (#20856)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-04-29 08:45:12 -05:00
Scott Lahteine
918894fd84 Custom G26 FR followup 2021-04-29 08:45:12 -05:00
Scott Lahteine
1bc65be70f Custom G26 FR followup 2021-04-29 08:45:12 -05:00
ScrewThisBanana
b9d19291fe Adding custom move feedrate for G26 Travel moves, Original #20729 (#20879)
* Adding custom move feedrate for G26

This commit adds an additional configuration parameter that can be used to specify the movement speed during the G26 validation pattern command during moves without extrusion.

Closes MarlinFirmware/Marlin#20615
2021-04-29 08:45:12 -05:00
Giuliano Zaro
2aaff47c9d Clean up MMU2 code (#20794)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:12 -05:00
Rockman18
a582d1dc2f Init KILL, SUICIDE, PSU earlier (#20810) 2021-04-29 08:45:12 -05:00
Gabriele Besta
5acd8f36a4 "Move … code" followup (#20869)
Fix regression from #20832
2021-04-29 08:45:12 -05:00
Scott Lahteine
efaff24145 Apply SEC_TO_MS and other fixes 2021-04-29 08:45:12 -05:00
Scott Lahteine
b059c9e5c0 Reformat abortSDPrinting 2021-04-29 08:45:12 -05:00
Alexander D. Kanevskiy
82122fe9cd Fix sign warning (#20872) 2021-04-29 08:45:12 -05:00
qwewer0
3beb6a9df3 Cosmetic changes (2) (#20876) 2021-04-29 08:45:12 -05:00
ellensp
a576ab83e9 "Move … code" followup (#20868)
Fix regression from #20832
2021-04-29 08:45:12 -05:00
Kairali
70ee5e94fd "Move … code" followup (#20874)
Fix regression from #20832
2021-04-29 08:45:12 -05:00
Tanguy Pruvot
69da8719cf Graphical TFT fixes, cleanup (#20861)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:12 -05:00
qwewer0
4ce87eeb91 🧻 Cosmetic changes (#20859) 2021-04-29 08:45:12 -05:00
Scott Lahteine
24a801b660 🛠Fix deps script version regex 2021-04-29 08:45:12 -05:00
Scott Lahteine
786bba39ff Fix Ender 3 V2 DWIN manual move (#20837) 2021-04-29 08:45:12 -05:00
Jason Smith
bed027f41f Fix LiquidCrystal CI failures (#20873)
Fix incorrect dependency syntax for LPC.
Disambiguate LiquidCrystal library names.
2021-04-29 08:45:12 -05:00
Roxy-3D
17a4ef6730 Revert "Adding custom move feedrate for G26 (#20729)" (#20870)
This reverts commit 14567f3459.
2021-04-29 08:45:12 -05:00
ellensp
56383d3ca0 MeatPack serial encoding (#20802)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:12 -05:00
Tanguy Pruvot
60c9a9e654 lcd_put_wchar_max for COLOR_UI (#20838)
Co-Authored-By: Victor Oliveira <github@victormo.com.br>
2021-04-29 08:45:12 -05:00
ScrewThisBanana
5398bfab36 Adding custom move feedrate for G26 (#20729)
* Adding custom move feedrate for G26

This commit adds an additional configuration parameter that can be used to specify the movement speed during the G26 validation pattern command during moves without extrusion.

Closes MarlinFirmware/Marlin#20615

* Fixing missing default 'G26_XY_FEEDRATE_MOVE' value

This commit adds a default 'G26_XY_FEEDRATE_MOVE' value (max movement speed / 1.5) in the G26.cpp - same behaviour as the default 'G26_XY_FEEDRATE' value

* Adding comment describing functionality in G26.cpp

* Renaming 'G26_XY_FEEDRATE_MOVE' to 'G26_XY_FEEDRATE_TRAVEL'

Configuration parameter renamed for better readability and consistency

MarlinFirmware/Marlin#20615

* Setting 'G26_XY_FEEDRATE_TRAVEL' to a safer value, aligned comments

Changed default value for 'G26_XY_FEEDRATE_TRAVEL' from 150 mm/s to 100 mm/s for safety purposes, comment alignment

MarlinFirmware/Marlin#20615
2021-04-29 08:45:12 -05:00
Scott Lahteine
a8a6040b78 🛠 Replace lib_deps for custom_marlin.FEATURE (#20858) 2021-04-29 08:45:12 -05:00
Giuliano Zaro
22db4c0448 "Move … code" followup (#20852)
Fix regression from #20832
2021-04-29 08:45:12 -05:00
Scott Lahteine
7bbf958e5c Add labels, condition for BTT GTR M5 pins (#20772)
Co-Authored-By: NAPCAL <47440988+NAPCAL@users.noreply.github.com>
2021-04-29 08:45:12 -05:00
Scott Lahteine
0b7de80a6f Move common strings (#20846) 2021-04-29 08:45:12 -05:00
Scott Lahteine
de37fbffa3 Fix undefined E_LBL 2021-04-29 08:45:12 -05:00
Jason Smith
f4a3db8db8 Ender 3 V2: Sync reset E in manual move (#20806) 2021-04-29 08:45:12 -05:00
Jason Smith
c409a6df5e Fix ANYCUBIC_LCD_CHIRON compilation (#20807)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:12 -05:00
Scott Lahteine
71be210795 Move some MarlinCore and MarlinUI code (#20832) 2021-04-29 08:45:12 -05:00
Katelyn Schiesser
67942622f1 Increase filament runout distance edit limit (#20828) 2021-04-29 08:45:12 -05:00
Keith Bennett
5252a32de4 USB Flash Drive env hints for ABM (#20592) 2021-04-29 08:45:12 -05:00
Keith Bennett
5e5c0d65f3 Lerdge K/S/X support for Flash Drive (#20593) 2021-04-29 08:45:12 -05:00
Scott Lahteine
3dde2722bd MarlinUI multi-language support (#20725) 2021-04-29 08:45:12 -05:00
Scott Lahteine
befcdeb74d Keep G29 N on the DL 2021-04-29 08:45:12 -05:00
ellensp
0c62fd02b0 More PlatformIO source filters (#20822) 2021-04-29 08:45:12 -05:00
Tanguy Pruvot
8d2f1851eb PSTR alias followup (#20831) 2021-04-29 08:45:12 -05:00
Scott Lahteine
b355f4605e Move singlenozzle temp/fan (#20829) 2021-04-29 08:45:12 -05:00
devin122
f6c4c26937 Fix reporting of TMC_S2VSA/B (#20730) 2021-04-29 08:45:12 -05:00
ellensp
c334151294 USE_M73_REMAINING_TIME sanity-check (#20751) 2021-04-29 08:45:12 -05:00
Giuliano Zaro
faf4cb1b74 MMU2 serial followup (#20811) 2021-04-29 08:45:12 -05:00
Scott Lahteine
ccbff12d6a Fix SINGLENOZZLE compile 2021-04-29 08:45:12 -05:00
EmilGustafsson
a02e884415 Swedish language for MarlinUI (#20826) 2021-04-29 08:45:12 -05:00
Rockman18
1fdf283e5d Fix MKS UI manual move (#20813) 2021-04-29 08:45:12 -05:00
Rockman18
910059adcb Fix, consolidate PSTR aliases (#20812)
Co-authored-by: Jason Smith <jason.inet@gmail.com>
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:12 -05:00
Katelyn Schiesser
a8bd376fd4 Raise Z on exit from 'Level Bed Corners' (#20817) 2021-04-29 08:45:12 -05:00
Scott Lahteine
c69f9b9883 Clean up whitespace, headings 2021-04-29 08:45:12 -05:00
Scott Lahteine
69b873b766 OS-native targets for "mftest -a" 2021-04-29 08:45:12 -05:00
Scott Lahteine
6162560b69 Internal G29N for G28+G29 (#20800) 2021-04-29 08:45:12 -05:00
George Fu
f101e19257 FYSETC_242 OLED 12864 for S6 (#20767) 2021-04-29 08:45:12 -05:00
Scott Lahteine
7836b85c96 Reduce some G-code strings 2021-04-29 08:45:12 -05:00
zeleps
522c78b5e6 Fix Tramming Wizard behavior (#20796) 2021-04-29 08:45:12 -05:00
Scott Lahteine
aabd40a7a2 Optimize some G-code strings 2021-04-29 08:45:11 -05:00
Scott Lahteine
e351ea2ee8 Apply bool to some MKS UI 2021-04-29 08:45:11 -05:00
Scott Lahteine
efc396bd05 General cleanup, use _BV 2021-04-29 08:45:11 -05:00
ellensp
ae53998a88 Fix Trigorilla Pro STOP pins (#20801) 2021-04-29 08:45:11 -05:00
Alexander D. Kanevskiy
d814d8f954 NEOPIXEL overridable on BTT SKR (#20797) 2021-04-29 08:45:11 -05:00
Martin
63e3117510 4 / 5 digits for some edit items (#20793) 2021-04-29 08:45:11 -05:00
Giuliano Zaro
cab93c2ad8 Update Italian language (#20789) 2021-04-29 08:45:11 -05:00
ellensp
3acf86510d Fix Ender-3 V2 DWIN LPC signed warnings (#20786) 2021-04-29 08:45:11 -05:00
RFBomb
418524b1be Configurable Corner Leveling point order (#20733) 2021-04-29 08:45:11 -05:00
Giuliano Zaro
a5d2180bf5 MMU2 as standard serial device (#20771) 2021-04-29 08:45:11 -05:00
Marcio Teixeira
0364ae4908 Improve filament runout handling in FTDI EVE Touch UI
- On filament runout, take the user to the tune menu where they can initiate a filament change or resume the print.
2021-04-29 08:45:11 -05:00
Marcio T
a7c97182f7 Fix compatibility macros 2021-04-29 08:45:11 -05:00
Marcio Teixeira
1e7426e549 Silence unused parameter warnings 2021-04-29 08:45:11 -05:00
Jelmer van der Stel
fd6501207f Fix Ender 3 V2 encoder (#20784) 2021-04-29 08:45:11 -05:00
EvilGremlin
7f8188ccb6 ESP32 Tone Generator (#20704) 2021-04-29 08:45:11 -05:00
vitaliy172
f5341da94d Update Ukrainian language (#20668) 2021-04-29 08:45:11 -05:00
Scott Lahteine
a588f69f16 MKS prelim. cleanup (2) 2021-04-29 08:45:11 -05:00
Scott Lahteine
86bf374fc4 More MKS UI prelim. cleanup 2021-04-29 08:45:11 -05:00
MKS-Sean
a3d6442d02 MKS WiFi for TFT_LVGL_UI (#20191) 2021-04-29 08:45:11 -05:00
Scott Lahteine
62d20c8b37 Ignore M22 during SD print 2021-04-29 08:45:11 -05:00
Scott Lahteine
726e2e9bc0 Move WRITE_FAN 2021-04-29 08:45:11 -05:00
Scott Lahteine
eedd9c2bda whitespace 2021-04-29 08:45:11 -05:00
Scott Lahteine
5c181562f6 MKS UI prelim. cleanup (#20763) 2021-04-29 08:45:11 -05:00
Scott Lahteine
104aceb44a Rotary encoder cleanup (#20753) 2021-04-29 08:45:11 -05:00
Giuliano Zaro
bee794e598 Fix comments (#20759) 2021-04-29 08:45:11 -05:00
Scott Lahteine
483804bafd Ok to use C++11 'auto' 2021-04-29 08:45:11 -05:00
Johan van der Vyver
55709b9d2c Multi-platform DWIN_CREALITY_LCD support (#20738)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:11 -05:00
devin122
8eb32cef24 Fix TMC220x short circuit (#20731) 2021-04-29 08:45:11 -05:00
Serhiy-K
92f847c8f7 Fixes for TFTGLCD (#20734) 2021-04-29 08:45:11 -05:00
Victor Oliveira
be3caa4686 NO_SD_DETECT option (#20741) 2021-04-29 08:45:11 -05:00
Scott Lahteine
fa6a2f52e2 Fix joystick include 2021-04-29 08:45:11 -05:00
Scott Lahteine
7e188c48e1 Tweak STM32F1 pin r/w/t 2021-04-29 08:45:11 -05:00
Scott Lahteine
928cd1b8ab Clean up some includes 2021-04-29 08:45:11 -05:00
Scott Lahteine
4145d85ef1 Update Slovak glyphs 2021-04-29 08:45:11 -05:00
Mike La Spina
9901b4e9f1 Laser Test Fire (#20452) 2021-04-29 08:45:11 -05:00
Anthony Rich
4e46de66d3 Wanhao One+ SD detect pin (#20724) 2021-04-29 08:45:11 -05:00
Scott Lahteine
7c7d28345e Optimize some G76 strings 2021-04-29 08:45:11 -05:00
Dmitry Katsubo
8690f4862d Fix misc. warnings (#20715) 2021-04-29 08:45:11 -05:00
Scott Lahteine
c9a9c00f61 Fix Python 2.7 compatibility
Fix regression from #20692
2021-04-29 08:45:11 -05:00
Markus
6a60d47b90 Up to 6 Tramming points (#20720) 2021-04-29 08:45:11 -05:00
qwewer0
f19a1833bd Fix M48 output (#20713) 2021-04-29 08:45:11 -05:00
TheCodeExorcist
074d3f6266 Improved MKS Robin support (#19333) 2021-04-29 08:45:11 -05:00
Java
92eee0386f Preheat before Power Loss Recovery homing (#20697) 2021-04-29 08:45:11 -05:00
Scott Lahteine
32caeecffb Custom build_flags by feature (#20692) 2021-04-29 08:45:11 -05:00
wilbur4321
5ef0475dc5 Multi-Z stepper inverting (#20678)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-04-29 08:45:11 -05:00
ellensp
aa5ac6c3b2 Fix Azteeg X3 macro typo (#20681) 2021-04-29 08:45:11 -05:00
ellensp
fd7e34312a Define SANGUINOLOLU 1.1 enable pins (#20682) 2021-04-29 08:45:11 -05:00
ellensp
d10c734730 No BTN_ENC_EN on Anet 10 (#20684) 2021-04-29 08:45:11 -05:00
Giuliano Zaro
c64a5a4b8f Temperature report followup (#20687)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:11 -05:00
FanDjango
e3cd293f4e Adjustable precision in M105 temperature report (#20602)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:11 -05:00
zeleps
d324f3b16a Don't apply hotend_offset.z to Z soft endstops (#20675)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:11 -05:00
Scott Lahteine
01c9d49f09 Indent tool_change_prime 2021-04-29 08:45:11 -05:00
Scott Lahteine
cc1b8c2d0b Clarify solenoid active / magnet-on state 2021-04-29 08:45:11 -05:00
FanDjango
ed7698efaa Defer "quiet probing" till the last Z bump (#20610) 2021-04-29 08:45:11 -05:00
Scott Lahteine
efe2859227 Solenoid cleanups
Followups to #20473 ahead of #20675
2021-04-29 08:45:11 -05:00
Scott Lahteine
4b4498be93 Remove untranslated strings 2021-04-29 08:45:11 -05:00
Scott Lahteine
eff2330ce1 G34/M422 cleanup 2021-04-29 08:45:11 -05:00
Scott Lahteine
8884b1f9a6 Move duplication_e_mask 2021-04-29 08:45:11 -05:00
Scott Lahteine
bb747bcd62 Fix delayed_move_time elapsed test 2021-04-29 08:45:11 -05:00
InsanityAutomation
b1f0671541 Fix IDEX reboot on travel after G28 X (#20654) 2021-04-29 08:45:10 -05:00
InsanityAutomation
abeefaac7f Fix SD SPI Speed override, FTDI mesh edit (#20657)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-04-29 08:45:10 -05:00
Scott Lahteine
90c04ee15d Rename FTDI EVE screen data structs 2021-04-29 08:45:10 -05:00
Marcio T
d3d8fd6d9b Fix thermal error protection, reporting (#20655) 2021-04-29 08:45:10 -05:00
Giuliano Zaro
c6c5cc7246 Update Italian language (#20663) 2021-04-29 08:45:10 -05:00
Scott Lahteine
d5465f1ad8 Creality 4.2.10 board (#20647) 2021-04-29 08:45:10 -05:00
Scott Lahteine
3f8a83b285 Add ALL_AXES manual move for UBL mesh editing
Co-Authored-By: Jason Smith <20053467+sjasonsmith@users.noreply.github.com>

#20620
2021-04-29 08:45:10 -05:00
Scott Lahteine
385152b3d2 Animated boot followup 2021-04-29 08:45:10 -05:00
ellensp
66c69aef6a Homing code followup (#20632)
Patching a87e5197cf
2021-04-29 08:45:10 -05:00
Scott Lahteine
f4f152bd01 Improved bootscreen animation 2021-04-29 08:45:10 -05:00
Scott Lahteine
eaeb9d1b20 Document, adjust some homing code 2021-04-29 08:45:10 -05:00
qwewer0
a42755a061 Fix a comment (#20629) 2021-04-29 08:45:10 -05:00
ellensp
5d35e3ccf5 Check for misplaced configs on build (#20599)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:10 -05:00
qwewer0
7ef03a761b Assisted Tramming improvements (#20298) 2021-04-29 08:45:10 -05:00
ellensp
f570791e19 Fix //action prefix (#20600) 2021-04-29 08:45:10 -05:00
Jason Smith
25152a8cef Fix UBL mesh edit delta moves (#20620)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:10 -05:00
Jason Smith
14b7eb1c5a Fix CHAMBER_FAN_MODE 0 build (#20621) 2021-04-29 08:45:10 -05:00
zeleps
3b4c5f982c Fix PARKING_EXTRUDER homing with solenoid (#20473) 2021-04-29 08:45:10 -05:00
Victor Oliveira
2c58d0881b Prefix SD SPI pins (SCK, MISO, MOSI, SS) (#20606)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:10 -05:00
Scott Lahteine
7a748bd565 SPI and pins cleanup 2021-04-29 08:45:10 -05:00
Victor Oliveira
cf996949fa Support 4.3" (480x272) Color UI display (#20334) 2021-04-29 08:45:10 -05:00
Victor Oliveira
79672d51f6 USB FD via native USB Host + MSC (#20571) 2021-04-29 08:45:10 -05:00
Scott Lahteine
c3dc74bba0 Pins, comment cleanup 2021-04-29 08:45:10 -05:00
Tanguy Pruvot
f539e319f0 Clarify sanity-check for custom status bitmap (#20588) 2021-04-29 08:45:10 -05:00
Victor Oliveira
eda5a884c6 LVGL G-code preview. Legacy MKS WiFi Cura plugin compatibility (#20589) 2021-04-29 08:45:10 -05:00
Keith Bennett
7b33ceebbb Apply SHOW_BOOTSCREEN to TFT_COLOR_UI (#20586) 2021-04-29 08:45:10 -05:00
Scott Lahteine
8aa453d75b Menu item index followup 2021-04-29 08:45:10 -05:00
Victor Oliveira
ed1c0b71df Fix Change Filament menu actions (#20565)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:10 -05:00
Victor Oliveira
63f083db96 Fix LVGL_UI G-code preview (#20564) 2021-04-29 08:45:10 -05:00
Victor Oliveira
a74d4609af Use ADC_RESOLUTION 12 for all STM32 (#20562) 2021-04-29 08:45:10 -05:00
Victor Oliveira
427a2fca4d Fix Menu Mixer for Color UI (#20566) 2021-04-29 08:45:10 -05:00
Victor Oliveira
910908fb32 Better defaults, compatibility for SDIO + STM32 (#20570) 2021-04-29 08:45:10 -05:00
Keith Bennett
a8800d5b0a Small / Large Boot Screen option for TFT_COLOR_UI (#20578) 2021-04-29 08:45:10 -05:00
Scott Lahteine
adca49e432 Remove URL scheme 2021-04-29 08:45:10 -05:00
Scott Lahteine
214f6cb6e3 Allow define HOMING_FEEDRATE_(XY|Z) 2021-04-29 08:45:10 -05:00
Scott Lahteine
3395d10e82 General cleanup 2021-04-29 08:45:10 -05:00
Jason Smith
2e93923e24 Validate defined probe points (#20572) 2021-04-29 08:45:10 -05:00
Scott Lahteine
892e83e872 Init tare pin once 2021-04-29 08:45:10 -05:00
Scott Lahteine
10482ca49c Add probe_switch_activated 2021-04-29 08:45:10 -05:00
Scott Lahteine
9947072d2d Remove CREALITY_TOUCH 2021-04-29 08:45:10 -05:00
Scott Lahteine
6d3e22dd4a Fix some comments 2021-04-29 08:45:10 -05:00
Ashammaru
e3d7603d54 Fix SPINDLE_LASER_FREQUENCY (#20509) 2021-04-29 08:45:10 -05:00
Mike La Spina
f9dd484381 Cutter Power in percent format (#20410)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
Co-authored-by: Jason Smith <jason.inet@gmail.com>
Co-authored-by: Luu Lac <45380455+shitcreek@users.noreply.github.com>
2021-04-29 08:45:10 -05:00
Vi B-P
48bf80d190 Apply NO_MOTION_BEFORE_HOMING to joystick motion (#20462)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:10 -05:00
Scott Lahteine
089bfad490 Fix, clean up FTDI EVE Touch UI (#20466)
Co-Authored-By: Marcio T. <mlt4356-github@yahoo.com>
2021-04-29 08:45:10 -05:00
Jason Smith
f1bf1e1835 Fix ST7920 timing for Rumba32, Fysetc S6 (#20556) 2021-04-29 08:45:10 -05:00
Victor Oliveira
35e1917655 Fix DOGM status message scrolling (#20557) 2021-04-29 08:45:10 -05:00
Scott Lahteine
121d4bf52a Add "End Repeat Loops" menu item 2021-04-29 08:45:10 -05:00
Victor Oliveira
fadc8a1944 LVGL and Classic UI for STM32 (#20552) 2021-04-29 08:45:10 -05:00
Scott Lahteine
a5dd4028ac Move BTT_SKR_CR6 2021-04-29 08:45:10 -05:00
ubik2
a510c16838 Add OPTIMIZED_MESH_STORAGE option (for UBL) (#20371)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:10 -05:00
LinFor
156b5f4749 Remaining Time for FTDI EVE, bp for ExtUI (#20549)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:10 -05:00
Scott Lahteine
fa89a7b0bc Apply ENABLED in ExiUI / FTDI 2021-04-29 08:45:10 -05:00
Darren Peter
a24298f625 Support ANET_FULL_GRAPHICS_LCD_ALT_WIRING on BTT SKR 1.4 (#20427) 2021-04-29 08:45:10 -05:00
Sebastiaan Dammann
ec83a96484 Probe Activation Switch followup (#20550) 2021-04-29 08:45:10 -05:00
BsCmOD
a03ebfda52 Enhanced Italian language (#20551) 2021-04-29 08:45:10 -05:00
LinFor
323bf47738 FTDI EVE: Cyrillic font, some minor fixes (#20517) 2021-04-29 08:45:10 -05:00
yysh12
ad15890a81 Improve plan_arc circle detection (#20440)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:09 -05:00
wmariz
60aeed99c6 Refactor 'Level Corners with Probe' (#20460)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:09 -05:00
Jan Krajdl
c529209c8f Support RGBW on PCA9632 (#20455)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:09 -05:00
Tanguy Pruvot
be3e45d759 Fix G28 leveling state, UBL compile (#20499) 2021-04-29 08:45:09 -05:00
Victor Oliveira
7c8cff0d3c Unify FYSETC F6 1.3 / 1.4 (#20507)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-04-29 08:45:09 -05:00
Serhiy-K
256e94980e STM32F1xx support for TFTGLCD (#20515) 2021-04-29 08:45:09 -05:00
Keith Bennett
aa65c6e477 Anet ET4 / ET4P and Anet TFT28 / TFT35 (#20280) 2021-04-29 08:45:09 -05:00
Sean McGroty
59b5cb6fe2 Creality v4.3.1 (Ender 6) board (#20512) 2021-04-29 08:45:09 -05:00
X-Ryl669
a33c689c40 Improve Touch Calibration screen (#20524) 2021-04-29 08:45:09 -05:00
Jason Smith
30d9839631 Overrides to prevent STM32 timer conflicts (#20545) 2021-04-29 08:45:09 -05:00
Chris Pepper
f0b7f27029 Fix UBL mesh inset Z position (#20538) 2021-04-29 08:45:09 -05:00
Jason Smith
a1313c7066 Improve STM32 timer conflict messages (#20544) 2021-04-29 08:45:09 -05:00
LinFor
31c84d4559 FTDI EVE custom user menus (#20518) 2021-04-29 08:45:09 -05:00
LinFor
076f12e82d 12-bit ADC resolution for STM32 (#20519) 2021-04-29 08:45:09 -05:00
LinFor
231e5a5eed Add Tune -> Advanced Settings to FTDI EVE (#20532) 2021-04-29 08:45:09 -05:00
Scott Lahteine
350dc4ca05 Tweak FTDI spacing 2021-04-29 08:45:09 -05:00
Scott Lahteine
ff2f6cb110 Robin pins followup 2021-04-29 08:45:09 -05:00
LinFor
b667722184 Fix some Russian (#20529) 2021-04-29 08:45:09 -05:00
cr20-123
bc3f2f246f Fix G34 compile with bed leveling disabled (#20537) 2021-04-29 08:45:09 -05:00
Sebastiaan Dammann
28548e7ea2 Add BTT SKR CR6 board (#20522) 2021-04-29 08:45:09 -05:00
Scott Lahteine
023ef753b9 Clean up some pins 2021-04-29 08:45:09 -05:00
Dick Streefland
b799d0d073 Apply HOME_AFTER_DEACTIVATE for 'G28 O' (#20525) 2021-04-29 08:45:09 -05:00
Dick Streefland
be6e1ccba2 Get E3V2 DWIN MACHINE_SIZE from config (#20526) 2021-04-29 08:45:09 -05:00
Scott Lahteine
2a58aa2181 Fix PIO typo 2021-04-29 08:45:09 -05:00
Serhiy-K
525cdeae19 Update Russian and Ukrainian languages (#20508) 2021-04-29 08:45:09 -05:00
Scott Lahteine
c831aabe14 Languages cleanup 2021-04-29 08:45:09 -05:00
Foxies
642110b072 Migrate Hispeedv1 (QQS-Pro) to HAL/STM32 (#20354) 2021-04-29 08:45:09 -05:00
Jason Smith
56e2f39175 Fix Creality EEPROM watchdog freq. (#20510) 2021-04-29 08:45:09 -05:00
InsanityAutomation
3e26e23e60 Probe Tare, Probe Activation Switch (#20379)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
Co-authored-by: Victor Mateus Oliveira <rhapsodyv@gmail.com>
Co-authored-by: Jason Smith <jason.inet@gmail.com>
2021-04-29 08:45:09 -05:00
InsanityAutomation
588fec6474 Minimum temp options for Probing and G12 Nozzle Clean (#20383)
Co-authored-by: Jason Smith <jason.inet@gmail.com>
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-04-29 08:45:09 -05:00
Keith Bennett
87fbb89330 Let boards set Default TMC Slave Addresses (#20498)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-04-29 08:45:09 -05:00
Scott Lahteine
a4701fbd3e Tweaks for pins_BTT_SKR_common.h 2021-04-29 08:45:09 -05:00
Scott Lahteine
e02fd232ba Rename QUIET_PROBING 2021-04-29 08:45:09 -05:00
Tanguy Pruvot
f7f531e59d DOGM: Slow down touchscreen calibration (#20454) 2021-04-29 08:45:09 -05:00
Victor Oliveira
51e3d8f08b MKS Robin Nano V3 and STM32F4x0Vx Variant (#20430) 2021-04-29 08:45:09 -05:00
grauerfuchs
02b65de6a2 Fix and optimize MightyBoard (#20493) 2021-04-29 08:45:09 -05:00
Jason Smith
c3a1cd10ab Balance CI tests (#20485) 2021-04-29 08:45:09 -05:00
nb-rapidia
e5d094d2bd Make M220 B / R a standard feature (#20355) 2021-04-29 08:45:09 -05:00
ellensp
d6efe75251 Fix ZoneStar LCD 2004 buttons (#20489) 2021-04-29 08:45:09 -05:00
rafaljot
f50abfcb1b Homing feedrates as XYZ array (#20426)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:09 -05:00
Scott Lahteine
bee6b8af8f Use homing_feedrate function 2021-04-29 08:45:09 -05:00
Tanguy Pruvot
1b6db623a7 Update French language (#20472) 2021-04-29 08:45:09 -05:00
Scott Lahteine
a45603a344 Update Hungarian language
Co-Authored-By: Zs.Antal <45710979+AntoszHUN@users.noreply.github.com>
2021-04-29 08:45:09 -05:00
Giuliano Zaro
fa9463528d Update Italian language (#20480) 2021-04-29 08:45:09 -05:00
Scott Lahteine
82b6044dbb Trust STM32 gcc versions 2021-04-29 08:45:09 -05:00
Scott Lahteine
be7aab204f Update some LCD includes 2021-04-29 08:45:09 -05:00
Scott Lahteine
f82b3f0f51 Update some pins errors 2021-04-29 08:45:09 -05:00
Sebastiaan Dammann
3d7680a426 Creality v4.5.3 (CR-6 SE, CR-6 MAX) (#20468) 2021-04-29 08:45:09 -05:00
JoAnn Manges
878305671b Fix RESTORE_LEVELING_AFTER_G28 (#20471) 2021-04-29 08:45:09 -05:00
Scott Lahteine
46d2dc9bee Please install the EditorConfig plugin 2021-04-29 08:45:09 -05:00
Scott Lahteine
e188b3e28c Auto-check followup 2021-04-29 08:45:09 -05:00
kisslorand
a59164d5c8 Fix M1001 auto-check logic (#20456) 2021-04-29 08:45:09 -05:00
Jason Smith
0b0eb6a119 Trust that script -x flags will always be set (#20453) 2021-04-29 08:45:09 -05:00
Scott Lahteine
e6b3c74069 Always enable leveling after G28 2021-04-29 08:45:09 -05:00
Scott Lahteine
20bd54f6d3 Preheat before leveling 2021-04-29 08:45:09 -05:00
Scott Lahteine
6599e4ea53 Fix formatting 2021-04-29 08:45:09 -05:00
Chris Pepper
5617d64119 LPC176x framework update (#20469) 2021-04-29 08:45:09 -05:00
Scott Lahteine
b81a9e54a3 SHORT_MANUAL_Z_MOVE => FINE_MANUAL_MOVE 2021-04-29 08:45:09 -05:00
Scott Lahteine
cbe27daafb Adjust planner debugging 2021-04-29 08:45:08 -05:00
FanDjango
430855fdca Probe Offset Wizard followupBack to PROBE_PT_RAISE/separate STOW, make "PROBING" msg appear (#20439)
* Go back to always use PROBE_PT_RAISE with a discrete stow. This ensures a raise above the bed, while stowing prior to exiting the wizard.
* Fix issue preventing text while moving to X/Y position
Co-authored-by: FanDjango <FanDjango@users.noreply.github.com>
2021-04-29 08:45:08 -05:00
qwewer0
e9bde7e6fc Improve ASSISTED_TRAMMING_WIZARD probe stowing (#20437)
* When BLTOUCH_HS_MODE enabled, stow pin before user interaction
* For all probes, ensure probe stows at end of wizard
2021-04-29 08:45:08 -05:00
ellensp
5aebc9fb0c Add HAS_PIN_27_BOARD for CREALITY_V4 (#20446)
Co-authored-by: ellensp <ellensp@hotmsil.com>
2021-04-29 08:45:08 -05:00
leodoener
d0c2b643f8 Fix SDCARD_SORT_ALPHA on Ender 3 V2 (#20443) 2021-04-29 08:45:08 -05:00
Scott Lahteine
c0ad4718a4 Better animated boot screen 2021-04-29 08:45:08 -05:00
Jason Smith
8f188adc32 SENSORLESS_PROBING sanity check followup (#20438) 2021-04-29 08:45:08 -05:00
FanDjango
74042d368e Probe offset wizard fixes (#20414)
* STOW probe, reverting incorrect earlier change from #20344
* Adjust soft endstop disables, to ensure travel below bed functions properly

Co-authored-by: FanDjango <FanDjango@users.noreply.github.com>
2021-04-29 08:45:08 -05:00
elasticdotventures
2a5b32f109 Z_SENSORLESS sanity checks (#20421)
Co-authored-by: Jason Smith <jason.inet@gmail.com>
2021-04-29 08:45:08 -05:00
ellensp
0c383b858f Fix UBL Debug Messages (#20423)
Co-authored-by: ellensp <ellensp@hotmsil.com>
2021-04-29 08:45:08 -05:00
Keith Bennett
aecfd95592 Clarify "not Interrupt-capable" error message (#20419) 2021-04-29 08:45:08 -05:00
Victor Oliveira
9f740d1872 MKS Robin Pins fixes for STM32 and STM32F1 (#20404)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:08 -05:00
InsanityAutomation
70d393b5cd Move ExtUI ABL mesh edit, limit to bilinear (#20381)
* Move ExtUI call

Co-authored-by: Scott Lahteine <github@thinkyhead.com>
Co-authored-by: Victor Mateus Oliveira <rhapsodyv@gmail.com>
Co-authored-by: Sebastiaan Dammann <sebastiaandammann@outlook.com>
2021-04-29 08:45:08 -05:00
Marcio T
f193cda03b Fixes and additions to FTDI EVE Touch UI (#20393)
- Fixed name conflict with "SUBSCRIPT_TWO"
- Fixed rendering bugs in "Leveling Menu"
- Only show "Bed Mesh Screen" when UBL is enabled
- Removed CocoaPress code from generic "Main Menu"
- Removed CocoaPress code from LulzBot Bio "Status" screen
- Moved generic "Move Axis" functionality into a base class
- Added CocoaPress custom screens:
   - Status Screen
   - Unload Cartridge
   - Load Chocolate
   - Main Menu
   - Advanced Settings
   - XYZ Move (based on "Move Axis" base class)
   - Extrusion Move (based on "Move Axis" base class)
- CocoaPress tweaks to "Temperature" screen
- Fix FTDI EVE Touch UI compilation errors when not using leveling.
2021-04-29 08:45:08 -05:00
Mike La Spina
e3e9982fec Fix Spindle/Laser Control menu (#20347) 2021-04-29 08:45:08 -05:00
swissnorp
4ca3c0bc86 Allow positive Z nozzle to probe offset (#20344)
* Allow a positive value for z offset from nozzle to probe without sanity checks
* Simplify menu_probe_offset.cpp (HOMING_Z_WITH_PROBE)
* Add some more explanation to Configuration Files
* Raise after probe_at_point as if homed

Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
Co-authored-by: Jason Smith <jason.inet@gmail.com>
2021-04-29 08:45:08 -05:00
Keith Bennett
38bb3b86d2 Clarify Delta & SCARA config location (#20403) 2021-04-29 08:45:08 -05:00
Scott Lahteine
ad7fe15154 Style, spacing, typo cleanup for recent changes 2021-04-29 08:45:08 -05:00
Victor Oliveira
91e9599554 SPI TFT for STM32F4 boards (#20384)
* fix pinsDebug for F1 boards

* add MKS Robin PRO V2 board - development board

* tft spi working with F4 boards

* pins formating

* sanity check for TFT on supported cores in STM32

* Fix tabs/spaces in pins file

Co-authored-by: Jason Smith <jason.inet@gmail.com>
2021-04-29 08:45:08 -05:00
ellensp
47fd7fcaea Allow BTT EXP-MOT be used with Displays that needs only EXP 1 (#20396)
Co-authored-by: ellensp <ellensp@ellensp-HP-ProBook-6470b.fritz.box>
Co-authored-by: Victor Mateus Oliveira <rhapsodyv@gmail.com>
2021-04-29 08:45:08 -05:00
ellensp
50247fc894 Shorten Filament Load/Unload Strings to Fit on Graphical Displays (#20369)
Co-authored-by: ellensp <ellensp@ellensp-HP-ProBook-6470b.fritz.box>
Co-authored-by: Victor Mateus Oliveira <rhapsodyv@gmail.com>
2021-04-29 08:45:08 -05:00
Scott Lahteine
37dd0fd2d6 Fix auto#.g file handling, add NO_SD_AUTOSTART (#20071) 2021-04-29 08:45:08 -05:00
Scott Lahteine
1932e70e72 More LPC P-string macros 2021-04-29 08:45:08 -05:00
Scott Lahteine
ea81790d48 Watch idle() depth over 5 2021-04-29 08:45:08 -05:00
Scott Lahteine
2384e5c9c9 Fix fileExists, use openFailed 2021-04-29 08:45:08 -05:00
Victor Oliveira
72eda1d3ae Avoid invalid memory optimizations (#20389)
When building for AVR, merge-all-constants can incorrectly combine constants stored in flash with constants stored in RAM. These have different access requirements, leading to undefined behavior during execution.
Co-authored-by: ellensp <ellensp@hotmail.com>
2021-04-29 08:45:08 -05:00
Scott Lahteine
3a73f04fd3 G28 followup 2021-04-29 08:45:08 -05:00
Scott Lahteine
107834f899 G28 tweaks 2021-04-29 08:45:08 -05:00
Scott Lahteine
b6cd7aaf17 Fix STM32F1 SERIAL_GET_TX_BUFFER_FREE 2021-04-29 08:45:08 -05:00
Scott Lahteine
4b6fa1b54d Move G29 3-point startup earlier 2021-04-29 08:45:08 -05:00
Scott Lahteine
284cc8f62d ExtUI homing / leveling additions 2021-04-29 08:45:08 -05:00
Scott Lahteine
ef35fc60c1 Use 'nearby' for 'near' 2021-04-29 08:45:08 -05:00
Scott Lahteine
ec2843bcf3 Creality 4.5.2 format and fix 2021-04-29 08:45:08 -05:00
LinFor
8a18bb8440 Fix FYSETC S6 I2C EEPROM size (#20340)
Both V1.2 and V2.0 boards have a 24LC16, which is a 2kB EEPROM.

Co-authored-by: PingWin <kirill@shashlov.ru>
Co-authored-by: Jason Smith <jason.inet@gmail.com>
2021-04-29 08:45:08 -05:00
InsanityAutomation
21b15a0a09 Add Creality 4.5.2 board (#20378)
Co-authored-by: Jason Smith <jason.inet@gmail.com>
2021-04-29 08:45:08 -05:00
Jason Smith
c400c54b86 Suspend Servos for STM32+NeoPixel (#19963) 2021-04-29 08:45:08 -05:00
Jason Smith
1a618b1b31 Fix TMC_HOME_PHASE divide by zero (#20368) 2021-04-29 08:45:08 -05:00
Scott Lahteine
a09d096b87 Improved Longer3D LKx Pro board (#20372)
Co-authored-by: mrv96 <marione96@live.it>
2021-04-29 08:45:08 -05:00
Tanguy Pruvot
c88a7935d6 Don’t use near keyword as variable name (#20374) 2021-04-29 08:45:08 -05:00
Belin Fieldson
43bbf04764 Loosen E on pause for fila-manipulation (#20346)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:08 -05:00
Jason Smith
10b8737c7d Fix MESH_BED_LEVELING w/o SEGMENT_LEVELED_MOVES (#20363) 2021-04-29 08:45:08 -05:00
Victor Oliveira
dab29dddc3 Require minimum PlatformIO version (#20361)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
Co-authored-by: Jason Smith <jason.inet@gmail.com>
2021-04-29 08:45:08 -05:00
Scott Lahteine
20ea00e7f6 Consolidate common pin includes 2021-04-29 08:45:08 -05:00
ellensp
6a8ab8f1e6 Fix up start, monitor baud (#20326) 2021-04-29 08:45:08 -05:00
yysh12
eba2937715 Fix circle arc condition (#20322) 2021-04-29 08:45:08 -05:00
Jason Smith
07954edadc Permit SD EEPROM emulation on E3V2 (#20353) 2021-04-29 08:45:08 -05:00
Jason Smith
1c695e130e Fix E3V2 DWIN Jerk Menu (#20352)
* Fix E3V2 DWIN build without CLASSIC_JERK
* Fix jerk edits applying to wrong index
2021-04-29 08:45:08 -05:00
Luu Lac
f42d15437b Help hosts when password-locked (#20348) 2021-04-29 08:45:08 -05:00
Mathias Rasmussen
564e2e865c Update to STM32 v10, optimize build (#20325) 2021-04-29 08:45:08 -05:00
Scott Lahteine
c76f179487 Level Bed Corners is a sub-menu 2021-04-29 08:45:08 -05:00
Scott Lahteine
29a962320c Tweak to EEPROM safe delay 2021-04-29 08:45:08 -05:00
Jason Smith
e927ef94a6 Fix E3V2 Control Menu when returning from Info (#20338) 2021-04-29 08:45:08 -05:00
Jason Smith
f929123a7b Prevent Watchdog reset writing Creality 4.x EEPROM (#20328) 2021-04-29 08:45:08 -05:00
Jason Smith
d34bbee304 Increase E3V2 DWIN steps/mm range to 999.9 (#20324) 2021-04-29 08:45:08 -05:00
Scott Lahteine
74c509d36e General cleanup 2021-04-29 08:45:08 -05:00
Scott Lahteine
448cf2c357 Adjust axis homed / trusted methods (#20323) 2021-04-29 08:45:08 -05:00
Jason Smith
f22b677906 Leveling Fade Height default setting (#20316) 2021-04-29 08:45:08 -05:00
Jason Smith
272265c636 Fix STM32F1 'freeMemory()' warnings (#20319) 2021-04-29 08:45:08 -05:00
Alexander D. Kanevskiy
a8ba3c4e2e SKR E3 Turbo Controller Fan (#20320) 2021-04-29 08:45:08 -05:00
yysh12
523bc7d355 Arc Direction followup for circles (#20314) 2021-04-29 08:45:08 -05:00
Thomas Niccolo Reyes
1dd17d857e Fix M73 LCD code typo (#20300) 2021-04-29 08:45:08 -05:00
Sergey1560
a54b07d3ae Group related homing options (#20283)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:08 -05:00
yysh12
f63a7b978d Fix G2/G3 arcs > 180° (#20292) 2021-04-29 08:45:08 -05:00
ellensp
04483dd307 Fix BTT GTR 1.0 endstop/DIAG pins (#20296) 2021-04-29 08:45:08 -05:00
BsCmOD
3c5c36de50 FIX TMC menu message (#20294) 2021-04-29 08:45:07 -05:00
Scott Lahteine
deb8df8eff M808 Repeat Markers (#20084) 2021-04-29 08:45:07 -05:00
Štěpán Dalecký
3231741cd2 [WIP] Fix Probe::offset_xy (#20290)
Co-authored-by: Jason Smith <jason.inet@gmail.com>
2021-04-29 08:45:07 -05:00
wmariz
747bde7e64 Level Corners with Probe option (#20241) 2021-04-29 08:45:07 -05:00
Scott Lahteine
7c9c897dac Optimize emergency parser check 2021-04-29 08:45:07 -05:00
Scott Lahteine
fc1deea2b8 No auto debug for EEPROM_CHITCHAT 2021-04-29 08:45:07 -05:00
Scott Lahteine
7421282d9a Finish HAL/STM32 cpp wrappers 2021-04-29 08:45:07 -05:00
mks-viva
9d5a391b54 MKS Robin E3 / E3D v1.1 (#20216) 2021-04-29 08:45:07 -05:00
Scott Lahteine
6ec6d1d39d Tweak some pin errors 2021-04-29 08:45:07 -05:00
Jason Smith
e2c57f6d47 Retire HAL for STM32F4 / F7 (#20153) 2021-04-29 08:45:07 -05:00
Scott Lahteine
664e9d6dfe Reduce warnings, extern "C" cleanup (#20279) 2021-04-29 08:45:07 -05:00
swissnorp
0c24347cdb Probe Offset Wizard improvements (#20239) 2021-04-29 08:45:07 -05:00
Victor Oliveira
c86ede8cfb Fix COLOR_UI without TOUCH_SCREEN_CALIBRATION (#20269) 2021-04-29 08:45:07 -05:00
Victor Oliveira
38a62f0d5b add missing header to use HAS_SD_HOST_DRIVE (#20270) 2021-04-29 08:45:07 -05:00
Scott Lahteine
27b2e2d3e7 Update TOUCH_UI_LULZBOT_BIO wrappers 2021-04-29 08:45:07 -05:00
Scott Lahteine
4e940ffcc2 Cosmetic G29 ABL tweak 2021-04-29 08:45:07 -05:00
Scott Lahteine
109c08e9e5 Consistent Probe XY offset type 2021-04-29 08:45:07 -05:00
Jason Smith
03cdfafc2a No Z_MULTI_ENDSTOPS when HOMING_Z_WITH_PROBE (#20254) 2021-04-29 08:45:07 -05:00
pseudex
6cca5a9f92 Allow cold Filament Load/Unload with M302 P1 (#20262)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:07 -05:00
ellensp
629f0e21c9 Set "lcd_move_e" index to fix the label (#20263) 2021-04-29 08:45:07 -05:00
rdhoggattjr
a711e22b17 LCD position in current units (#20145) 2021-04-29 08:45:07 -05:00
Jason Smith
82663c7d11 Fix Z4 in ENABLE/DISABLE_AXIS_Z (#20256)
This was accidentally broken in PR #20218
2021-04-29 08:45:07 -05:00
Jason Smith
8cd25f35c2 Fix dummy thermistors for Bed, Chamber, Probe (#20247) 2021-04-29 08:45:07 -05:00
Scott Lahteine
300a944af6 Allow Status Message without LCD (#20246) 2021-04-29 08:45:07 -05:00
Jason Smith
5e57e60692 Fix UBL manual mesh adjust behavior (#20248) 2021-04-29 08:45:07 -05:00
Scott Lahteine
28cd6eca88 Hide docker droppings 2021-04-29 08:45:07 -05:00
Scott Lahteine
82c1bac4e3 Move core conditionals earlier 2021-04-29 08:45:07 -05:00
Scott Lahteine
08717ef117 Put "$3" on all tests 2021-04-29 08:45:07 -05:00
qwewer0
56c0608e4d Clear menu history for browse media on insert (#20236)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-04-29 08:45:07 -05:00
Kurt Haenen
9c9fd8714e Proper pullup/pulldown configurability (#20242)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-04-29 08:45:07 -05:00
Victor Oliveira
69b61fef67 Fix Load Filament wait (#20243) 2021-04-29 08:45:07 -05:00
Orel
add6b836df Skip unnecessary (costly) SW Stepper Enable (#20218)
Co-authored-by: Jason Smith <jason.inet@gmail.com>
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-04-29 08:45:07 -05:00
Gurmeet Athwal
a95a41ef73 BTN_ENC_EN for many boards (#19890)
Enables CHECK_ENCODER_ACTIVE_SIGNAL for many more boards.

Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
Co-authored-by: Jason Smith <jason.inet@gmail.com>
2021-04-29 08:45:07 -05:00
Scott Lahteine
f3805edbd6 Power-Loss cleanup 2021-04-29 08:45:07 -05:00
Simone Primarosa
7f91ff07c4 Superscript substitution (#20219)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-04-29 08:45:07 -05:00
Simone Primarosa
d5e13f255d Fix bad SET_FAST_PWM_FREQ calls (#20227) 2021-04-29 08:45:07 -05:00
Kurt Haenen
9ebe050646 Fix backward Filament (Presence) Sensor pulls (#20228)
Co-authored-by: Kurt Haenen <Kurt.Haenen@quintux.com>
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-04-29 08:45:07 -05:00
Scott Lahteine
7f84a7a85e Printrboard labels 2021-04-29 08:45:07 -05:00
Victor Oliveira
264e921d3f SINGLE_TOUCH_NAVIGATION Follow Up (#20213) 2021-04-29 08:45:07 -05:00
Victor Oliveira
7ad127668d Missing header to use suicide() on LVGL UI (#20214) 2021-04-29 08:45:07 -05:00
Ajtak
35d3e74267 Longer LK Pro / Alfawise PRO board (#20185) 2021-04-29 08:45:07 -05:00
Orel
2abde8a068 Fix DAC setDrvPct (#20205) 2021-04-29 08:45:07 -05:00
Vitaliy
afd3ee264b Windows LPC Upload for non-admins (#20208)
Co-authored-by: Victor Mateus Oliveira <rhapsodyv@gmail.com>
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-04-29 08:45:07 -05:00
Scott Lahteine
2e193b9a29 Fix Z label 2021-04-29 08:45:07 -05:00
Scott Lahteine
48c2065a17 MKS WiFi strings 2021-04-29 08:45:07 -05:00
Scott Lahteine
7729a0c3bb More MKS WiFi 2021-04-29 08:45:07 -05:00
Scott Lahteine
f1b32b808f MKS WiFi preliminary changes 2021-04-29 08:45:06 -05:00
Till
5ef1d053eb Add Thermistor 20-21 notes (#19246) 2021-04-29 08:45:06 -05:00
Victor Oliveira
0264841dc4 Reduce RAM usage for TFT Color UI on SGen-L V2 (#20209) 2021-04-29 08:45:06 -05:00
Maciej Rutkowski
40071c3fb9 Fix GTR NeoPixel pin with FYSETC Mini12864 (#20203) 2021-04-29 08:45:06 -05:00
ellensp
d92f69f137 Remaining Time followup (#20199) 2021-04-29 08:45:06 -05:00
Victor Oliveira
15febdfe07 Fix Filament Change menu item labels (#20201) 2021-04-29 08:45:06 -05:00
Victor Oliveira
1040f14da4 Abort print on media removal (#20200) 2021-04-29 08:45:06 -05:00
JoAnn Manges
11f08804d1 Use RTD for MAX31865 reading (#20188) 2021-04-29 08:45:06 -05:00
bosd
29d45b1144 Fix broken #include (#20193) 2021-04-29 08:45:06 -05:00
Giuliano Zaro
bd38e59479 SMUFF (MMU2 clone) support (#19912) 2021-04-29 08:45:06 -05:00
Scott Lahteine
b6d2671260 USB Media Host followup
Restore HAS_SHARED_MEDIA
2021-04-29 08:45:06 -05:00
Jason Smith
5f9ccb361a Use MANUAL_PROBE_START_Z for UBL manual probing (#20160) 2021-04-29 08:45:06 -05:00
Philippe Cayrol
ef51bd16dc Better edit range for Linear Advance K (#20155) 2021-04-29 08:45:06 -05:00
Thomas Niccolo Reyes
125ad2003d Remaining Time for Prusa-style LCD layout (#20148)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:06 -05:00
Victor Oliveira
ccac37613b Improve USB Media Host conditions (#20176)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:06 -05:00
Foxies
292e83466e FLSun Hispeedv1 Board update (#19959)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:06 -05:00
Thomas Niccolo Reyes
172cc0dd03 Open File Browser on Media Insert (option) (#20151)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:06 -05:00
wmariz
26d3caf97c Probe Wizard XY position (#20167) 2021-04-29 08:45:06 -05:00
Jason Smith
7848096acb Fix NAN mesh entries with ABL_BILINEAR_SUBDIVISION (#20143) 2021-04-29 08:45:06 -05:00
Victor Oliveira
18869c666f COLOR_UI without TOUCH_SCREEN 👍🏻 (#20178) 2021-04-29 08:45:06 -05:00
Costas Basdekis
1c81a126c5 Local testing via Makefile & Docker (#19981) 2021-04-29 08:45:06 -05:00
Victor Oliveira
180fe914b6 Prevent #div0 error (#20183) 2021-04-29 08:45:06 -05:00
Victor Oliveira
dc644df9bc Reduce RAM usage for TFT Color UI on SGen-L (#20179) 2021-04-29 08:45:06 -05:00
Roman Moravčík
550306d1b6 Update Slovak language (#20181) 2021-04-29 08:45:06 -05:00
石立枫
78eb12958a Add FLY_CDY board (#19979)
Co-authored-by: FLYmaker <FLYmaker@users.noreply.github.com>
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
Co-authored-by: Jason Smith <jason.inet@gmail.com>
2021-04-29 08:45:06 -05:00
ellensp
cc9df782ce add ethernet to src filter (#20136)
Co-authored-by: ellensp <ellensp@ellensp-HP-ProBook-6470b.fritz.box>
2021-04-29 08:45:06 -05:00
Victor Oliveira
562c41af4e Use intptr types (simulator) (#20142) 2021-04-29 08:45:06 -05:00
Jason Smith
b5e7b8e29e Allow overriding servo pin for MKS Robin Mini (#20158) 2021-04-29 08:45:06 -05:00
Keith Bennett
2979504b9c Multi-Hotend Preheat Fixes (#20165)
* Return to Status Screen on Multi-Hotend Preheat All

Co-authored-by: Victor Oliveira <81722+rhapsodv@users.noreply.github.com>
2021-04-29 08:45:06 -05:00
Jason Smith
a01fab662c Allow dummy thermistors without pin definitions (#20159) 2021-04-29 08:45:06 -05:00
FanDjango
daa2a04fc9 Guards for large BLOCK_BUFFER_SIZE (>=128) (#20130)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:06 -05:00
InsanityAutomation
983bb89063 Update IDEX menus, add post-M605 event G-code (#20133)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:06 -05:00
Victor Oliveira
3d9b453000 Add Touch Calibration screen (#20049) 2021-04-29 08:45:06 -05:00
Scott Lahteine
90f647b6be Fix some LCD/serial strings 2021-04-29 08:45:06 -05:00
Scott Lahteine
7f7c27be30 Add parser.is_command(letter, code) 2021-04-29 08:45:06 -05:00
Minims
2b63a1b4e1 BTT Motor Expansion for SKR Pro (#20123) 2021-04-29 08:45:06 -05:00
Keith Bennett
90f3d1f7a6 UTF Filenames followup (#20135) 2021-04-29 08:45:06 -05:00
phcay
65a5eb47b3 Fix extraneous Linear Advance DIR change (#20131) 2021-04-29 08:45:06 -05:00
Luu Lac
6b5ddfe235 Fix "autotune" LCD message (#20127) 2021-04-29 08:45:06 -05:00
Scott Lahteine
2f57b1d529 Optimize M360 2021-04-29 08:45:06 -05:00
Scott Lahteine
7e535022ab Fix compile warnings, serial alias 2021-04-29 08:45:06 -05:00
Scott Lahteine
cb1d2de838 .gitignore for native / simulation 2021-04-29 08:45:06 -05:00
Scott Lahteine
96acbb2506 LCD_FIRST_TOOL status bitmaps 2021-04-29 08:45:06 -05:00
Gonçalo Pereira
030f745b08 Typo in MMU2 serial protocol description (#19949) 2021-04-29 08:45:06 -05:00
InsanityAutomation
dc949f5488 G34 Z stepper locking (#20091)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:06 -05:00
LinFor
7b745345f7 Fix UTF filename scroll (#20121)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:06 -05:00
Jason Smith
3ee61e2084 UTF longname followup (#20115) 2021-04-29 08:45:06 -05:00
Scott Lahteine
26a1cd9a00 Terse sanity messages 2021-04-29 08:45:06 -05:00
Scott Lahteine
27c74d2f72 Add HOME_Z_FIRST option (#20113) 2021-04-29 08:45:06 -05:00
LinFor
a5ee22baa2 Fix MAX6675 SPI init, conflicts (#20086) 2021-04-29 08:45:06 -05:00
JoAnn Manges
02c3c314fe Fix MAX31865 on SPI (PT100/1000) support (#20074) 2021-04-29 08:45:06 -05:00
Hebezo
012745b218 Option to ignore SD at startup (#20099)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:06 -05:00
Scott Lahteine
d4b86322a9 M32 followup 2021-04-29 08:45:06 -05:00
ellensp
ac74786c2b Fix compile with PLR, no fan (#20096) 2021-04-29 08:45:06 -05:00
Davidsg33k
cf43c9901f 400 Z steps-per-mm (#20104) 2021-04-29 08:45:06 -05:00
LinFor
3030bf4274 Handle UTF in long filenames (#20087)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:06 -05:00
Costas Basdekis
dc144fb910 Distinct runout states (#19965)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:06 -05:00
Costas Basdekis
45b242d5f7 Fix Linux GPIO logging (#20093)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:05 -05:00
ellensp
42b37da1e7 BTT driver expansion for SKR 1.3/1.4 (#20088)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:05 -05:00
Speaka
8eb5950ebd Tramming Wizard wait position (#20063) 2021-04-29 08:45:05 -05:00
Victor Oliveira
ccb5e34052 Fix UI compile issues (#20092) 2021-04-29 08:45:05 -05:00
Jason Smith
ee48fc6544 Fix Arduino DUE compilation (#20058) 2021-04-29 08:45:05 -05:00
qwewer0
2365df532f What if 8 was 9? (#20076) 2021-04-29 08:45:05 -05:00
qwewer0
24c2ce6a87 Update issues/support link (#20077)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:05 -05:00
Gustavo Alvarez
791fba3187 Fix SKR E3 DIP pin CLCD_SPI_CS (#20078) 2021-04-29 08:45:05 -05:00
Tanguy Pruvot
367c447ff8 Fix 320x240 touch buttons Y (#20079) 2021-04-29 08:45:05 -05:00
Scott Lahteine
ca730314e7 Ability to disable M32 2021-04-29 08:45:05 -05:00
Scott Lahteine
b2d6b8c567 Simplified temp sensor conditionals 2021-04-29 08:45:05 -05:00
Hebezo
170ba87648 Add POWER_OFF_DELAY option (#19987)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:05 -05:00
qwewer0
44f689320b Use extra G35 BLTouch HS Mode clearance in Tramming Wizard (#20057)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:05 -05:00
Alexander D. Kanevskiy
7da62cc9f7 POWER_LOSS_PIN for BTT SKR mini MZ / E3 2.0 (#20069) 2021-04-29 08:45:05 -05:00
Jason Smith
841f0d5778 Fix tool-change servo index for E2 and up (#20060) 2021-04-29 08:45:05 -05:00
Scott Lahteine
367e717aeb Add alternative TERN macros 2021-04-29 08:45:05 -05:00
Scott Lahteine
5bf82b34c6 Temperature 'autostart' => 'auto_job' 2021-04-29 08:45:05 -05:00
Scott Lahteine
734dd1c293 MSG_AUTOSTART => MSG_RUN_AUTO_FILES 2021-04-29 08:45:05 -05:00
Albert van Osch
4052ef7097 Zonestar Z8 XM2 support (#19991) 2021-04-29 08:45:05 -05:00
Scott Lahteine
dfb6dd2ad2 Apply some pins formatting 2021-04-29 08:45:05 -05:00
Scott Lahteine
426d555f6e TFT cleanup 2021-04-29 08:45:05 -05:00
LinFor
b129652597 Fix Endstop Interrupts with SPI endstops, sanity checks (#20051)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:05 -05:00
Speaka
ec5b2aab15 Tramming Wizard submenu option (#20000)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:05 -05:00
Victor Oliveira
af5cf823ea Color UI single touch menu navigation (#20053) 2021-04-29 08:45:05 -05:00
Darren Horrocks
7e94079b5b Optimized (non-optiboot) Melzi env (#20021)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:05 -05:00
Darren Horrocks
d81c1961c2 Anet 1.0 alternative graphical LCD wiring (#20022) 2021-04-29 08:45:05 -05:00
Scott Lahteine
45e0dd1966 Add 'mfconfig' script used to manage configs 2021-04-29 08:45:05 -05:00
Jason Smith
a1ec49feda Sanity-check illegal native USB (#20047)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:05 -05:00
Jason Smith
3afa6e526b STM32F1 cleanup, incl. SoftwareSerial removal (#20046) 2021-04-29 08:45:05 -05:00
Jason Smith
ecabbb6974 Fix FYSETC S6 timer conflict (#20044) 2021-04-29 08:45:05 -05:00
George Fu
989ef47bde FYSETC E4 board support (#20032) 2021-04-29 08:45:05 -05:00
Scott Lahteine
5a918e2b2e Update some file headers 2021-04-29 08:45:05 -05:00
Victor Oliveira
2dd1522e30 Standardize Marlin SPI (part 1) (#19989) 2021-04-29 08:45:05 -05:00
Scott Lahteine
e49f267c4a Use nullptr 2021-04-29 08:45:05 -05:00
Mauro
afed97bf0e Fix E4d@box pins, stepper i2s (#20055) 2021-04-29 08:45:05 -05:00
Scott Lahteine
9ba113bc05 Clean up corrected urls 2021-04-29 08:45:05 -05:00
Marc Jovaní González
35d7618117 Add Spanish translations (#20020) 2021-04-29 08:45:05 -05:00
Jason Smith
10c8647c1b Fix 0 extruders & bed compile (#20030) 2021-04-29 08:45:05 -05:00
Sergey1560
1767a3bd70 Don't close diveDir in fileExists (#20035) 2021-04-29 08:45:05 -05:00
Jason Smith
5082106145 Fix BTT002 PeripheralPins PWM assignments (#20036) 2021-04-29 08:45:05 -05:00
Scott Lahteine
b643a07b66 Comment, spacing cleanup 2021-04-29 08:45:05 -05:00
Josh Schroeder
dd92c79339 Wiring warning for ANET_FULL_GRAPHICS_LCD on SKR 1.4 (#20011) 2021-04-29 08:45:05 -05:00
Victor
b767a82bd8 FAST_PWM for STM32 (#20025) 2021-04-29 08:45:05 -05:00
Scott Lahteine
67d58ccb98 HAL support for 8s watchdog 2021-04-29 08:45:05 -05:00
Keith Bennett
bbfac75f19 Add note about TMC2225/6 (#20002) 2021-04-29 08:45:05 -05:00
Victor Oliveira
930aad6d31 Better Classic UI touch resolution (#20004) 2021-04-29 08:45:05 -05:00
Victor Oliveira
65383dd616 Show un-mounted media slot (#20005) 2021-04-29 08:45:05 -05:00
Scott Lahteine
2ae8014da7 DWIN cleanup, preserve Z offset 2021-04-29 08:45:04 -05:00
Victor Oliveira
b79e2d1e8d Add a filament runout note (#19973)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:04 -05:00
Victor Oliveira
172996f2b3 Fix STM32 HW Serial + EP compile (#19990) 2021-04-29 08:45:04 -05:00
Victor Oliveira
3c512648da Increase SPI Speed on LPC. Color and Classic UI for MKS SGEN L. (#19945) 2021-04-29 08:45:04 -05:00
Alexander D. Kanevskiy
e335e74379 Y-center GLCD status logo, reorganize (#19954)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:04 -05:00
Victor Oliveira
5c90d0d0ae Reset calibration screen touch timer on click (#19951) 2021-04-29 08:45:04 -05:00
Scott Lahteine
95fb749923 Clean up SPI and ST7920 defines (#19956) 2021-04-29 08:45:04 -05:00
Jason Smith
d9a47ec075 Get STM32 clock rates from framework (#19978)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:04 -05:00
Alexander Semion
c9c17b8863 Add SPINDLE_SERVO option (#19971) 2021-04-29 08:45:04 -05:00
Victor Oliveira
2a61ce80b8 Put PIO "debug" build in the corner (#19975) 2021-04-29 08:45:04 -05:00
Nick
3eaeaa8af3 Fix Chiron probe low point (#19962) 2021-04-29 08:45:04 -05:00
Scott Lahteine
261e8df837 Cutter power cleanup 2021-04-29 08:45:04 -05:00
Julien Lirochon
d18ab2d206 Fix SpindleLaser::cpwr_to_pct() maths (#19970) 2021-04-29 08:45:04 -05:00
Scott Lahteine
08f2735e86 Cutter enable inline at full power
Co-Authored-By: Luu Lac <45380455+shitcreek@users.noreply.github.com>
2021-04-29 08:45:04 -05:00
thinkyhead
aec215aaf3 Fix bilinear_line_to_destination definition
See #19431
2021-04-29 08:45:04 -05:00
Orel
4b08e06fa6 Rename, adjust Dagoma F5 (#19947) 2021-04-29 08:45:04 -05:00
Scott Lahteine
2774b70fbf gcode_D EEPROM size, cleanup
Fixes #19920

Co-Authored-By: Orel <37673727+0r31@users.noreply.github.com>
2021-04-29 08:45:04 -05:00
Victor
3dbe4ac593 FAST_PWM for STM32F1 (#19952) 2021-04-29 08:45:04 -05:00
Giuliano Zaro
ba28660acb Update Italian language (#19953) 2021-04-29 08:45:04 -05:00
Victor Oliveira
cec9075361 PIO env for MKS Nano boards in STM32 (#19905) 2021-04-29 08:45:04 -05:00
Marcio Teixeira
176cb29eab Improvement and fixes to FTDI touch UI
- Fixed incorrect LCD text string
- Fixed incorrect refresh of filament change screens
- Allow host control via touch UI
- Updates to leveling menu
- Modified ExtUI::isPrinting() to check if the job timer is running
- Added ExtUI method to check whether a host print is paused
2021-04-29 08:45:04 -05:00
Scott Lahteine
3cb7128116 Tweak code formatting 2021-04-29 08:45:04 -05:00
Victor Oliveira
88e88743b9 Color UI for MKS SGen-L V2 (#19919) 2021-04-29 08:45:04 -05:00
Scott Lahteine
e6092ad146 .bin and .woff are binary 2021-04-29 08:45:04 -05:00
Scott Lahteine
59914df5b7 Fix comments, spacing 2021-04-29 08:45:04 -05:00
Scott Lahteine
67fbee389e Add a note about substitution chars 2021-04-29 08:45:04 -05:00
Victor Oliveira
b590cee35a Keep SPI active on LPC176x (#19932) 2021-04-29 08:45:04 -05:00
Victor Oliveira
0c81d86cd4 Permit spaces in dependencies g++ path (#19929) 2021-04-29 08:45:04 -05:00
Alexander Fomichev
d6e93bb9c7 Generalize BTT SKR E3-DIP version (#19910) 2021-04-29 08:45:04 -05:00
ellensp
2bb94b4329 AZTEEG X5 mini LED pins (#19909) 2021-04-29 08:45:04 -05:00
Gurmeet Athwal
fa0614516a Update ExtUI path in config comment (#19908) 2021-04-29 08:45:04 -05:00
Victor Oliveira
d08511c5dc Color UI circular task queue (#19918) 2021-04-29 08:45:04 -05:00
Jason Smith
2a4cdf5a5d Fix LCD menus + DAC (#19907) 2021-04-29 08:45:04 -05:00
Orel
f5f6170858 Fix DAC-related bugs (#19921)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:04 -05:00
Lucas Seiki Oshiro
d7d1ef8228 "Sound: ON/OFF" menu item (#19901)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:04 -05:00
Speaka
d4669dbf6a Fix G35 PROGMEM strings (#19926) 2021-04-29 08:45:04 -05:00
Scott Lahteine
f43f71646e Archim test matching env 2021-04-29 08:45:04 -05:00
Scott Lahteine
aecf545446 Fix Archim 1, add Archim 1&2 tests 2021-04-29 08:45:04 -05:00
Victor Oliveira
3b42e0263a Keep watchdog refreshed in LVGL init (#19900) 2021-04-29 08:45:04 -05:00
Victor Oliveira
5a74114e23 Fix some LVGL bugs (#19904) 2021-04-29 08:45:04 -05:00
Marcio Teixeira
3bab0fccc2 Fix NO_WORKSPACE_OFFSETS compile 2021-04-29 08:45:04 -05:00
Scott Lahteine
2a8fdb8ee4 Followup for BTN_ENC_EN 2021-04-29 08:45:04 -05:00
Scott Lahteine
6c103b72a2 Clean up comments, USB flash, NULLs 2021-04-29 08:45:04 -05:00
Scott Lahteine
ea9e28bb69 Format Nucleo F767ZI pins 2021-04-29 08:45:04 -05:00
ellensp
c94afc7592 Fix PASSWORD compile w/out LCD (#19888) 2021-04-29 08:45:04 -05:00
René Pasold
80909e4424 Support Fysetc Mini 12864 + GT2560 A(+) (#19878) 2021-04-29 08:45:04 -05:00
ellensp
c59f64ce49 Use LiquidCrystal_I2C@1.1.4 for RA_CONTROL_PANEL (#19875) 2021-04-29 08:45:04 -05:00
Jason Smith
e232f93018 Update ZMIB_V2 env names (#19886) 2021-04-29 08:45:04 -05:00
Jason Smith
62d578de9e Ignore NativeEthernet on AT90USB1286 (#19885) 2021-04-29 08:45:04 -05:00
Gurmeet Athwal
a625fee035 Add 'BTN_ENC_EN' for SKR V1.4 with DOGM (#19796) 2021-04-29 08:45:04 -05:00
Victor Oliveira
b586a30e7b More LVGL UI code reduction (#19879) 2021-04-29 08:45:04 -05:00
Nick
676354f1d1 Fix Anycubic Chiron "Ready" detection (#19880)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:04 -05:00
Victor Oliveira
e44a97a096 Update PIO dependencies script 2021-04-29 08:45:04 -05:00
Victor Oliveira
35597ae336 More MKS UI cleanup, optimization (#19869)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:04 -05:00
Keith Bennett
c3e8b46284 Fix Chitu V5/V6 FAN2 pins (#19874) 2021-04-29 08:45:04 -05:00
Scott Lahteine
d3ee5d7dfe Fix warning in gcode_D 2021-04-29 08:45:04 -05:00
Scott Lahteine
2fed3982d6 Pins post-process header (#19860) 2021-04-29 08:45:04 -05:00
Scott Lahteine
f9b04af650 Case light brightness cleanup (#19856)
Co-authored-by: Chris <chris@chrisnovoa.com>
2021-04-29 08:45:04 -05:00
Scott Lahteine
b1b2ecba6c Shorten a method name 2021-04-29 08:45:04 -05:00
qwewer0
6601ca7a22 Fix Chopper Timing extra axis defaults (#19850) 2021-04-29 08:45:04 -05:00
Scott Lahteine
1b51000736 Slim down MKS UI code (#19843) 2021-04-29 08:45:04 -05:00
George Fu
994cda3b6b Fix TMC serial port for FYSETC AIO_II (#19842) 2021-04-29 08:45:04 -05:00
ManuelMcLure
2becb5ebf7 Configure TMC interpolation per driver (#19828) 2021-04-29 08:45:03 -05:00
Foxies
32433fae61 FLSUN Delta QQS-Pro pins (#19793) 2021-04-29 08:45:03 -05:00
Scott Lahteine
99ce660aed Add power-on/off G-code options (#19837)
Co-authored-by: Chris <chris@chrisnovoa.com>
2021-04-29 08:45:03 -05:00
Keith Bennett
01b9badb51 BigTreeTech SKR Mini MZ V1 (#19818) 2021-04-29 08:45:03 -05:00
Mauro
f27b61cb0f Fresh Web GUI (based on bootstrap.js) (#19812) 2021-04-29 08:45:03 -05:00
TheMichalcinOfficial
52bc509fcf Support for Ramps-S v1.2 (#19815) 2021-04-29 08:45:03 -05:00
Scott Lahteine
2984960793 General cleanup, mostly MKS UI (#19825) 2021-04-29 08:45:03 -05:00
Scott Lahteine
e32bdf6a93 ESP32: i2s_init requires I2S_STEPPER_STREAM 2021-04-29 08:45:03 -05:00
uwedamm
35d75c354e Fix G2/G3 P<circles> E and Z motion (#19797)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:03 -05:00
Tanguy Pruvot
9f85a15955 Longer3D: LONGER_LK_TFT28 now set by config (#19817) 2021-04-29 08:45:03 -05:00
ellensp
b1b8161447 Handle dependent Stepper Driver defaults later (#19820)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:03 -05:00
bilsef
c6f17ac01e Teensy 4.1 Ethernet support (#19801) 2021-04-29 08:45:03 -05:00
Scott Lahteine
53a4b8fa33 Misc. cleanup, serial strings 2021-04-29 08:45:03 -05:00
Scott Lahteine
a90b90e98d Tweak a host prompt call 2021-04-29 08:45:03 -05:00
Scott Lahteine
ff9a27ee9f Use PGM serial strings 2021-04-29 08:45:03 -05:00
ellensp
cf0a817db1 Ensure A4988 for unspecified driver type (#19798)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:03 -05:00
Scott Lahteine
e00745c548 Document M125 P 2021-04-29 08:45:03 -05:00
InsanityAutomation
af956bbb32 Apply home offsets to probing, Z Safe Homing (#19423)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:03 -05:00
Scott Lahteine
4343a96fac ABM Teensy 3.6 build 2021-04-29 08:45:03 -05:00
Jago Strong-Wright
9124f1d7c8 Distinct Chopper Timing settings (#19781)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-04-29 08:45:03 -05:00
Sten Uusvali
32ca42ead3 Fix M503 output for M907 motor current (#19777)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-04-29 08:45:03 -05:00
Curtis Jenkins
25bb249ac6 Fix Smoothieboard digipots i2c pin (#19784) 2021-04-29 08:45:03 -05:00
Scott Lahteine
332adafa23 MarlinUI followup 2021-04-29 08:45:03 -05:00
Scott Lahteine
a44aae268a Starting fan followup 2021-04-29 08:45:03 -05:00
Victor Oliveira
52c090dfbe Fix starting fan with bad material preset index (#19773) 2021-04-29 08:45:03 -05:00
Scott Lahteine
141f6825ce Rename ultralcd => marlinui 2021-04-29 08:45:03 -05:00
Scott Lahteine
fff5649b6a touch_ms followup 2021-04-29 08:45:03 -05:00
arminth
34c16bb395 Provide FYSETC F6 13 LCD pins for HD44780 (#19769) 2021-04-29 08:45:03 -05:00
Jason Smith
cedc5d340f LCD conditionals followup (#19766) 2021-04-29 08:45:03 -05:00
nb-rapidia
3becc3ad63 Fix IDEX layer shift and DIR states (#19756)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:03 -05:00
Serhiy-K
19498040ef Fix HAL/STM32 FastIO for analog pins (#19735) 2021-04-29 08:45:03 -05:00
Victor Oliveira
060b2f4989 Fix Color UI external_control, wait_for_release (#19771)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:03 -05:00
Victor Oliveira
2ecc3bb560 Handle M410 in the main task (#19752) 2021-04-29 08:45:03 -05:00
Jason Smith
d5340675ae Fix SAMD Serial name macro (#19765) 2021-04-29 08:45:03 -05:00
mks-viva
dea995e19f Update MKS SGen-L V2 RGB LED pins (#19762) 2021-04-29 08:45:03 -05:00
Andreas Setterlind
473abe8eb4 Add ESP32 160MHz to README (#19748) 2021-04-29 08:45:03 -05:00
Jason Smith
386e643179 Fix NUCLEO_F767ZI build, add tests (#19746) 2021-04-29 08:45:03 -05:00
Victor Oliveira
1fa19e1fc2 Sanity check unsupported EP (#19745) 2021-04-29 08:45:03 -05:00
Victor Oliveira
13720ce6b2 Fix TOUCH_SCREEN + TFT_LVGL_UI compile (#19754) 2021-04-29 08:45:03 -05:00
Victor Oliveira
02b668baf5 Update Probe Offset Wizard for Color UI (#19742) 2021-04-29 08:45:03 -05:00
rlojek
57dc1a0649 Fix ADVANCED_PAUSE && !PREVENT_COLD_EXTRUSION (#19740) 2021-04-29 08:45:03 -05:00
Peter Hall
8ae8e1e455 Default LASER_POWER_INLINE to OFF (#19727) 2021-04-29 08:45:03 -05:00
Scott Lahteine
7905aa64fa TFT Presets, Generic options, Sanity checks (#19723) 2021-04-29 08:45:03 -05:00
Jason Smith
d81abf1d50 Fix SET_SOFT_ENDSTOP_LOOSE w/out soft endstops (#19734) 2021-04-29 08:45:03 -05:00
Jason Smith
6a5799fc7d Revert at90usb1286 conditional (#19733) 2021-04-29 08:45:03 -05:00
Jason Smith
3e4d9aa9bb Fix digipot compilation (#19731) 2021-04-29 08:45:03 -05:00
Jason Smith
2004080c9d Fix mega2560ext environment (#19730) 2021-04-29 08:45:02 -05:00
Keith Bennett
70dc2ee9bb If needed, home before G34 (#19713) 2021-04-29 08:45:02 -05:00
Victor Oliveira
7825fc63a0 Watchdog Refresh for LVGL Asset Load (#19724) 2021-04-29 08:45:02 -05:00
Jason Smith
33b2f0700e Add NUCLEO-F767ZI dev board (#19373)
Co-authored-by: Lorenzo Delana <lorenzo.delana@gmail.com>
2021-04-29 08:45:02 -05:00
Scott Lahteine
647981ef44 Simple bool in soft_endstops_t 2021-04-29 08:45:02 -05:00
Victor Oliveira
252fd66b76 TFT followup fixes (#19710) 2021-04-29 08:45:02 -05:00
Scott Lahteine
1ef1ea0b3e Move @section temperature 2021-04-29 08:45:02 -05:00
Victor Oliveira
14fe7ee414 Fix UTF8 handling for Color UI (#19708) 2021-04-29 08:45:02 -05:00
Keith Bennett
bd22194438 Sanity-check mutually-exclusive G34 features (#19706) 2021-04-29 08:45:02 -05:00
Earle F. Philhower, III
ea65e10dc7 Add loose soft endstop state, apply to UBL fine-tune (#19681)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:02 -05:00
Jason Smith
48a24202ef Add D100 Watchdog Test (#19697) 2021-04-29 08:45:02 -05:00
Victor Oliveira
9b1ed45b3e TFT Refactoring (#19192)
* split tft folder in two: tft for color ui; tft_io for shared tft code

* after the files got moved, now the code was moved to the right place

* classic ui using TFT IO init lcd codes

* feature to compile tft_io when enabled

* compiling fix

* lvgl spi tft working with tft io init codes

* there is no need for separeted fsmc and spi class in lvgl anymore, as tft io handle everything

* remove debug

* base for TFT rotation and mirroring API, and ILI9488 support

* ST7796S rotate and mirror support

* ST7789V rotate and mirror support

* ST7735 rotate and mirror support

* ILI9341 rotate and mirror support

* ILI9328 rotate and mirror support

* R61505 rotate and mirror support

* MKS TFT definitions

* more configs for mks tfts

* update config

* naming typo

* to configure the user interface

* ANYCUBIC_TFT35

* tft configs

* support for SSD1963

* tft display types

* updated conditionals lcd; first board fully working with the new code - all 3 ui!

* compatiblity

* changed name

* move classic ui file name

* rename TURN -> ROTATE

* GRAPHICAL_TFT_ROTATE_180 deprecated

* first fsmc board fully working - chitu v5

* mks robin nano v1.2 + tft 35 ok!

* right pin name

* anycubic tft tested in a TRIGORILLA_PRO

* chitu v6

* nano 32 tft orientation

* mks tft43

* mks tft43 rotation

* fixed LONGER LK tft setup

* GRAPHICAL_TFT_UPSCALE defined by the display type

* better offsets defaults

* Update Configuration.h

* Update tft_fsmc.cpp

* Update Conditionals_LCD.h

* Tweak comments

* update nano tests

* Revert "update nano tests"

This reverts commit a071ebbfad30e28855a4a5695ec8a726542a1a65.

* default tft

* outdated comments

* to not break non-vscode builds

* upscale tft 35

* support tft 180 rotation for color ui

* Each TFT Driver is responsible for its default color mode.

* use auto detect in mks displays, because some of them could be shipped with diferent drivers

* extra s

* unused code

* wrong -1

* missing mirror options

* Smaller regex pattern

* Comment updates

* Clean up old defines

* Apply pins formatting

* GRAPHICAL_TFT_ROTATE_180 => TFT_ROTATE_180

* MKS_ROBIN_TFT_V1_1R

* merge fix

* correct resolution

* auto is default, dont need be there, and it will allow the user to configure it even for named displays

* to not use rotation with MKS_ROBIN_TFT_V1_1R

* i like () in macros

* avoid sleepy commits

* default for st7789 is rgb

* nano follow up

* to allow ili9328 rotation

* default is rgb

* boards merge follow up

* to match bootloader orientation

* HAS_TOUCH_XPT2046 is not hal specific anymore

* lets not forget LPC

* 180 rotation for ili9328 and R61505

* Clean up whitespace

Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-04-29 08:45:02 -05:00
Scott Lahteine
f163f1940d Fix screen click reading too often (#19696)
Co-authored-by: andreibobirica <39415547+andreibobirica@users.noreply.github.com>
2021-04-29 08:45:02 -05:00
Jason Smith
fdcd28a0ec Allow MAX31865 resistance values configuration (#19695) 2021-04-29 08:45:02 -05:00
InsanityAutomation
d2863466ac G34 Mechanical Gantry Calibration (like Prusa M915) (#18972)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:02 -05:00
qwewer0
5047979340 Add REPORT_TRAMMING_MM option (#19682)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:02 -05:00
Jason Smith
7ab74d22c4 Fix motion compile w/out probe-oriented settings (#19684) 2021-04-29 08:45:02 -05:00
Victor Oliveira
c1729330c5 Option to prevent (extra) Watchdog init on STM32 (#19693) 2021-04-29 08:45:02 -05:00
Victor Oliveira
2dafba1ad2 Implement wait_for_user for Color UI (#19694) 2021-04-29 08:45:02 -05:00
Jason Smith
67e0e6d5ad Fix I2C_ADDRESS sign warning (#19685) 2021-04-29 08:45:02 -05:00
Jason Smith
8b4f82cd07 Fix various errors, warnings in example config builds (#19686)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:02 -05:00
Jason Smith
2c7b5fe1f2 Fix at90usb1286 build (#19687)
* Skip check for USBCON during dependency detection
* Ignore incompatible Teensy_ADC library, which requires Teensy >= 3
* Add IS_AT90USB

Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:02 -05:00
Scott Lahteine
a30e8baf3e Digipots refactor / cleanup (#19690) 2021-04-29 08:45:02 -05:00
Scott Lahteine
2e01eb9189 Save PLR on resume from pause (#19676)
Co-Authored-By: shahab <32130261+SHBnik@users.noreply.github.com>
2021-04-29 08:45:02 -05:00
Victor Oliveira
2adac87c45 Restore correct STM32 port-bits code (#19678) 2021-04-29 08:45:02 -05:00
Serhiy-K
72f9fdc05f Fixes for TFTGLCD Panel, FastIO (#19614) 2021-04-29 08:45:02 -05:00
ellensp
cbed6f4241 HAS_CHARACTER_LCD => HAS_MARLINUI_HD44780 (#19673) 2021-04-29 08:45:02 -05:00
Victor Oliveira
50de8bd6fb Keep HAL tasks running during PID Autotune (#19671) 2021-04-29 08:45:02 -05:00
Scott Lahteine
7e09160ba3 Batch appercase hex values 2021-04-29 08:45:02 -05:00
Scott Lahteine
3facf34f5f Optional M42/M226; Add more features filters (#19664) 2021-04-29 08:45:02 -05:00
Victor Oliveira
2553a18f40 Support for Debug Codes - Dnnn (#19225)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:02 -05:00
石立枫
0b13608bad Support for FLY MINI (#19185) 2021-04-29 08:45:02 -05:00
Keith Bennett
8143d70829 Fix touch ifndefs (#19661) 2021-04-29 08:45:02 -05:00
Giuliano Zaro
92bbf3ba18 Update Italian language (#19654) 2021-04-29 08:45:02 -05:00
Samantaz Fox
5441ee5a7a Fix and improve Makefile / CMake (#19640) 2021-04-29 08:45:02 -05:00
Scott Lahteine
fde169d3ef Permit touch calibration override 2021-04-29 08:45:02 -05:00
Scott Lahteine
3516c3f936 Use 0xFF (not 'ff') for byte transfer 2021-04-29 08:45:02 -05:00
ellensp
e6de60d04e Apply env:mega2560ext to relevant boards (#19624) 2021-04-29 08:45:02 -05:00
qwewer0
cd839a251f Update PROBE_OFFSET_WIZARD comment (#19652) 2021-04-29 08:45:02 -05:00
qwewer0
fadee1b46b More accessible PROBE_OFFSET_WIZARD (#19647) 2021-04-29 08:45:02 -05:00
ellensp
3e9c6c6297 Restore ° to 6x9 small info font (#19645) 2021-04-29 08:45:02 -05:00
Scott Lahteine
45385e737c Chamber vent/fan followup 2021-04-29 08:45:02 -05:00
Scott Lahteine
c86e14c6ff Fix small font section directive, mixer warning 2021-04-29 08:45:01 -05:00
Scott Lahteine
b5da52007b Update language fonts 2021-04-29 08:45:01 -05:00
ladismrkolj
22ef4fe26c Add Chamber servo vent, auto fan (#19519) 2021-04-29 08:45:01 -05:00
signetica
ebca2efb24 Fix Ender-3 V2 DWIN Stop SD Print (#19642)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:01 -05:00
Scott Lahteine
61d500462c Improve retract / unretract labels 2021-04-29 08:45:01 -05:00
Scott Lahteine
6002dc634e Trailing whitespace 2021-04-29 08:45:01 -05:00
Scott Lahteine
563bd01789 Sync config to examples 2021-04-29 08:45:01 -05:00
Mathew Winters
cc863ba378 Z Probe Offset Wizard (#18866) 2021-04-29 08:45:01 -05:00
Cory Ory
fb28e0cba9 Allow bypass for cold E movement (#19606) 2021-04-29 08:45:01 -05:00
Ryan V1
cd33062a81 Fix Archim1 stepper timing (with new variant) (#19596) 2021-04-29 08:45:01 -05:00
Scott Lahteine
1ac7cf2ab6 Add HAS_FAST_MOVES 2021-04-29 08:45:01 -05:00
ellensp
53b7ad3a92 Fix Z_AFTER_HOMING without probe (#19607) 2021-04-29 08:45:01 -05:00
Scott Lahteine
01c161d380 Move SF_ARC_FIX option 2021-04-29 08:45:01 -05:00
Speaka
af4c2dab8d Fix German translation purging/unloading (#19615) 2021-04-29 08:45:01 -05:00
Scott Lahteine
2a755d68d9 Shared singlenozzle item 2021-04-29 08:45:01 -05:00
Scott Lahteine
770f2b1e02 Fix Tune/Fan edit items
- Fixes #19617
- Followup to #18400
2021-04-29 08:45:01 -05:00
Ryan V1
85c6ffb364 Fix 'bossac' upload on Windows (#19545) 2021-04-29 08:45:01 -05:00
Marcio T
bf3f7ae5b9 Touch UI support for X2, Y2 and Z2 (#19538) 2021-04-29 08:45:01 -05:00
ellensp
9804677669 Fix wrappers on HAL/STM32F1 .cpp files (#19581)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:01 -05:00
ellensp
c5614c8529 Fix TEMP_ADC_PROBE support for STM32F1 (#19582)
Co-authored-by: ellensp <ellensp@ellensp-HP-ProBook-6470b.fritz.box>
2021-04-29 08:45:01 -05:00
Andreas Setterlind
6bafa69f8f Add Configurations repo info to config/README.md (#19583)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:01 -05:00
ellensp
a2c4c4a916 Fix compile of MMU2 with S-mode disabled (#19584) 2021-04-29 08:45:01 -05:00
bilsef
de42ef017f Fix onboard SD card support for Teensy 3.6 & 4.1 (#19593) 2021-04-29 08:45:01 -05:00
Scott Lahteine
69917690f3 Adjust HAL platform defines, comments 2021-04-29 08:45:01 -05:00
Scott Lahteine
02b17886c9 Replace tabs with spaces 2021-04-29 08:45:01 -05:00
Victor Oliveira
0507df61b2 Minor SPI fixes, systick_callback for STM32F1 HAL compatibility (#19565) 2021-04-29 08:45:01 -05:00
swissnorp
0af95b188a G35 workaround for Pronterface "feature" (#19577) 2021-04-29 08:45:01 -05:00
Stéphane
bf3b36ae6a Fix Anycubic i3 Mega target temperature display (#19572)
Also includes a workaround for missing (probably un-fetched) long name in file listing
2021-04-29 08:45:01 -05:00
Ilya
58ce9a85c1 No move on Park = No move on Resume (#19569) 2021-04-29 08:45:01 -05:00
Roman Moravčík
dc5f86e039 Update Slovak language (#19561) 2021-04-29 08:45:01 -05:00
Victor Oliveira
46c8775542 Fix Buzzer (pin) init for uninitialized FastIO (#19559) 2021-04-29 08:45:01 -05:00
Victor Oliveira
059d966d7b Fix Move Screen with disabled Touch (#19558) 2021-04-29 08:45:01 -05:00
Nick
2069ab3a15 Anycubic Chiron full feature support (#19505) 2021-04-29 08:45:01 -05:00
Scott Lahteine
bb90bc6165 Fix up E3 DWIN Power Panic 2021-04-29 08:45:01 -05:00
Scott Lahteine
de4f882a22 Fetch longname when a file exists 2021-04-29 08:45:01 -05:00
Scott Lahteine
9aff5cb095 Add extra CardReader debugging 2021-04-29 08:45:01 -05:00
Scott Lahteine
782b9ce69e Improve Power-Loss Recovery (#19540) 2021-04-29 08:45:01 -05:00
Scott Lahteine
806c908091 Fix diveToFile with open Dir object (#19539)
* Fix CardReader diveToFile
* Add CardReader::fileExists
2021-04-29 08:45:01 -05:00
qwewer0
04a712dacc Multi-line comments cleanup (#19535) 2021-04-29 08:45:01 -05:00
Pavel Melnikov
3453d2d17a Change "Fr" on LCD to ">>" (#18830) 2021-04-29 08:45:00 -05:00
Scott Lahteine
25bf561aed Default E3 V2 to English 2021-04-29 08:45:00 -05:00
Scott Lahteine
ad3c475dd1 Tweaks to git helpers 2021-04-29 08:45:00 -05:00
Scott Lahteine
85573909d1 Update configs to 020007 2021-04-29 08:45:00 -05:00
Serhiy-K
63e6437d66 MarlinUI for SPI/I2C TFT-GLCD character-based display bridge (#19375) 2021-04-29 08:45:00 -05:00
Scott Lahteine
58deab1915 Rename LCD conditionals (#19533) 2021-04-29 08:45:00 -05:00
Scott Lahteine
ac900b17e0 Prettier INI 2021-04-29 08:45:00 -05:00
Scott Lahteine
a11ba51389 Menu tweak 2021-04-29 08:45:00 -05:00
Scott Lahteine
5cd004defe Update AnyCubic deps 2021-04-29 08:45:00 -05:00
Emperor
03a5c7f52a Thermistor: Kis3d Silicone heater + precision cast plate (#19528) 2021-04-29 08:45:00 -05:00
Tanguy Pruvot
717de1e703 Working LCD_USE_DMA_FSMC (#19522) 2021-04-29 08:45:00 -05:00
Siana Gearz
33f291d769 Fix Allen Key Probe pin test (#19520) 2021-04-29 08:45:00 -05:00
Victor Oliveira
7f93173659 LVGL followup fixing "C", etc. (#19517) 2021-04-29 08:45:00 -05:00
Scott Lahteine
4648351270 CardReader cleanup 2021-04-29 08:45:00 -05:00
Scott Lahteine
4bd1ecf8a7 E3 DWIN: "No Media" message 2021-04-29 08:45:00 -05:00
Scott Lahteine
584c836918 E3 DWIN: General cleanup 2021-04-29 08:45:00 -05:00
Scott Lahteine
ac0511f02a Allow M524 between M23 and M24 2021-04-29 08:45:00 -05:00
Scott Lahteine
32b854a98b Drop extra Bed PID 2021-04-29 08:45:00 -05:00
Scott Lahteine
943a594ba0 Tweak MMU beeps, misc. cleanup 2021-04-29 08:45:00 -05:00
Trocololo
def328eec1 MMU2 S Mode spins the BMG gears during C0 (#19429) 2021-04-29 08:45:00 -05:00
Victor Oliveira
e26edbc623 Allow ColorUI color customization (#19484) 2021-04-29 08:45:00 -05:00
Victor Oliveira
d06e526dc2 Fix MBL "Click to continue" on Color UI touchscreen (#19514) 2021-04-29 08:45:00 -05:00
Keith Bennett
9a2de1570c SKR E3 Turbo followup (#19513) 2021-04-29 08:45:00 -05:00
Luke Harrison
3065e4f941 Fix SKR 1.4 thermistor pin comments (#19510) 2021-04-29 08:45:00 -05:00
ellensp
0fedd76819 Fix MKS Robin undefined pins error (#19507) 2021-04-29 08:45:00 -05:00
Victor Oliveira
fd83407991 Escape the M33 string arg (#19515) 2021-04-29 08:45:00 -05:00
Victor Oliveira
3d521a2e34 TFT: No timeout on Move Screen (#19426) 2021-04-29 08:45:00 -05:00
Scott Lahteine
affb5e53df Sanity check old serial names 2021-04-29 08:45:00 -05:00
Keith Bennett
d6b1563655 BigTreeTech SKR E3 Turbo (#19500) 2021-04-29 08:45:00 -05:00
Jason Smith
9d02cedfed Fix and improve STM32F1 serial (#19464) 2021-04-29 08:45:00 -05:00
Scott Lahteine
449a31dea9 Fix some pin inits 2021-04-29 08:45:00 -05:00
Scott Lahteine
bfa6cd3693 HAL/serial followup 2021-04-29 08:45:00 -05:00
Scott Lahteine
f588d50d57 HAL and serial cleanup
Co-Authored-By: Jason Smith <20053467+sjasonsmith@users.noreply.github.com>
2021-04-29 08:45:00 -05:00
Scott Lahteine
27c067612c Whitespace cleanup 2021-04-29 08:45:00 -05:00
ellensp
a3a5b334c4 Define UART pins for LPC debug based on LPC_PINCFG_UART (#19475) 2021-04-29 08:45:00 -05:00
ellensp
cbaba010f2 Preserve brightness in EEPROM validate (#19485)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:00 -05:00
Scott Lahteine
8b69d697dd Teensy pins cleanup 2021-04-29 08:45:00 -05:00
Jason Smith
632ac54440 MKS Robin Mini uses ONBOARD_SPI_DEVICE (#19460) 2021-04-29 08:45:00 -05:00
Victor Oliveira
873b5db13d Include pins.h in dependencies script (#19468) 2021-04-29 08:45:00 -05:00
Marcio T
1978a29678 New Touch UI buttons (#19465) 2021-04-29 08:45:00 -05:00
Jason Smith
f34ea44d73 Catch a TMC address conflict early (#19458) 2021-04-29 08:45:00 -05:00
Scott Lahteine
bc081473f2 Fix up tests, warnings 2021-04-29 08:45:00 -05:00
Scott Lahteine
0b18034055 Fix Teensy 4.1 include 2021-04-29 08:45:00 -05:00
Jason Smith
d1eeb692c1 Update board/teensy comment (#19456) 2021-04-29 08:45:00 -05:00
makerbase
05680a4662 MKS SGEN L V2 adaptable heaters/fans (#19462) 2021-04-29 08:45:00 -05:00
Victor Oliveira
a08217a33c Define <u8,u8,u8>::softSPI (#19419) 2021-04-29 08:45:00 -05:00
riodoro1
5ccb2c62a9 Fix up K8800 pins (#19476) 2021-04-29 08:44:59 -05:00
Chris Pepper
9dd49b6c6a Update pins_ANET_10.h 2021-04-29 08:44:59 -05:00
Jason Smith
b52a2176fe Replace Serial with Serial1 in pins files (#19459) 2021-04-29 08:44:59 -05:00
qwewer0
d2a36b38ca Optional menu item for Assisted Tramming (#19447) 2021-04-29 08:44:59 -05:00
makerbase
33788c8405 Add MKS Robin E3P, improve LVGL UI (#19442) 2021-04-29 08:44:59 -05:00
Scott Lahteine
32cd5a3dc4 Add HAS_ROTARY_ENCODER 2021-04-29 08:44:59 -05:00
Scott Lahteine
ee1232051c Cleanup before MKS changes 2021-04-29 08:44:59 -05:00
Scott Lahteine
b3890d385c Add multi-extruder condition 2021-04-29 08:44:59 -05:00
Scott Lahteine
5a35595a3a Whitespace cleanup 2021-04-29 08:44:59 -05:00
enigmaquip
584a8cd1a8 Fix Creality DWIN Control menu icons (#19441) 2021-04-29 08:44:59 -05:00
ellensp
7a0d655292 Ultratronics Pro SPI pins (#19444) 2021-04-29 08:44:59 -05:00
qwewer0
2f483a25e9 Optional Host Start menu item (#19443) 2021-04-29 08:44:59 -05:00
Marcio T
7735be367f Fix case light brightness save/load (#19436) 2021-04-29 08:44:59 -05:00
InsanityAutomation
a50633d8e0 Fix compile for Taz Pro (#19424) 2021-04-29 08:44:59 -05:00
Scott Lahteine
dc7e2965d6 Change some dwin defines 2021-04-29 08:44:59 -05:00
Cole Markham
9065a8da89 Fix CoreXY compile with backlash cal. (#19422) 2021-04-29 08:44:59 -05:00
Keith Bennett
9d60047018 Fix missing include (#19418)
Co-authored-by: ellensp <530024+ellensp@users.noreply.github.com>
2021-04-29 08:44:59 -05:00
Victor Oliveira
9d5f978d00 Move screen for Color UI (#19386) 2021-04-29 08:44:59 -05:00
InsanityAutomation
23376b8a31 Host Action: Start (#19398) 2021-04-29 08:44:59 -05:00
jahartley
70c5871910 Expose JOYSTICK_DEBUG to the general user (#19394)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:44:59 -05:00
Victor Oliveira
9d1b1cf073 Fix MKS UI SPI flash typo (#19410) 2021-04-29 08:44:59 -05:00
Marcio Teixeira
90dea98a14 Add warning to ExtUI Bed Mesh Screen. (#19397)
- Show a warning on the Mesh Bed Leveling screen if some points aren't probed.
2021-04-29 08:44:59 -05:00
deram
9cdb8ca244 SHOW_REMAINING_TIME for HD44780 character LCD (#19416) 2021-04-29 08:44:59 -05:00
cosmoderp
7e56e6c4ea E3 V2 DWIN: Z-Offset, cleanup, versatility (#19384)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:44:59 -05:00
enigmaquip
c407c08b0b Add more DWIN commands, docs (#19395) 2021-04-29 08:44:59 -05:00
tovam
08a7dedbc9 Fix missing spaces in info menu (#19404) 2021-04-29 08:44:59 -05:00
Jason Smith
68c98811a1 Demo and test multiple PID defaults (#19413) 2021-04-29 08:44:59 -05:00
Scott Lahteine
07f13c28ee MarlinUI percent methods for all 2021-04-29 08:44:59 -05:00
Scott Lahteine
fbd812ebb3 More DWIN cleanup 2021-04-29 08:44:59 -05:00
Scott Lahteine
34d0b5de90 E3 V2 DWIN cleanup 2021-04-29 08:44:59 -05:00
Victor Oliveira
d3f88a2482 Only set up SPI pins as needed (#19372) 2021-04-29 08:44:59 -05:00
Zachary Annand
8debad803c More strict STATIC_ITEM_N (#19378) 2021-04-29 08:44:59 -05:00
Marcio T
9aceb3711b Add missing FTDI EVE menu source (#19382) 2021-04-29 08:44:59 -05:00
Scott Lahteine
8e3ac54de3 Allow E3 V2 DWIN without EEPROM, POWER_LOSS_RECOVERY 2021-04-29 08:44:59 -05:00
Scott Lahteine
2877dc9794 M115 strings 2021-04-29 08:44:59 -05:00
Scott Lahteine
c6e35ce066 Always show Compiled: 2021-04-29 08:44:59 -05:00
Scott Lahteine
7742e70865 Better choice of code
Followup to #19344
2021-04-29 08:44:59 -05:00
ellensp
4fdfdaf2e6 Improve temperature runaway, idle timeout (#19339)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:44:59 -05:00
Scott Lahteine
2396b4e27f heater_ind_t => heater_id_t 2021-04-29 08:44:59 -05:00
mmajoor
a941faccb0 Allow SWD debug on Robin Nano (#19345) 2021-04-29 08:44:59 -05:00
Marcio T
196a72b29e Touch UI "Leveling" menu, misc. fixes (#19349) 2021-04-29 08:44:59 -05:00
ellensp
c1dcbab932 Fix extra string substitution bug (#19351) 2021-04-29 08:44:59 -05:00
ManuelMcLure
4d14667266 Read from backup TMC StealthChop state (#19364) 2021-04-29 08:44:59 -05:00
Jason Smith
c517c2ea65 Fix EXP2 pin define for MKS SGEN_L (#19369) 2021-04-29 08:44:59 -05:00
Giuliano Zaro
ee32e3eb40 Update Italian language (#19365) 2021-04-29 08:44:59 -05:00
Jesse S
09d1bf37e7 Highlight Creality DWIN menu icons (#19368) 2021-04-29 08:44:59 -05:00
Neskik
bf6ce68ed1 M872 wait for probe temperature (#19344) 2021-04-29 08:44:59 -05:00
Haxk20
ad5e73d772 Fix Print Stats appearance (#19348) 2021-04-29 08:44:59 -05:00
Keith Bennett
26492ff0ea Fix Creality RET6 env - RE (#19340) 2021-04-29 08:44:59 -05:00
Scott Lahteine
ade9476721 Clean up W25QXXFlash class 2021-04-29 08:44:59 -05:00
Scott Lahteine
a2a53406c8 Use F() for Ender 3 V2 DWIN 2021-04-29 08:44:59 -05:00
Scott Lahteine
5e3d051b6a Translate encoder comments 2021-04-29 08:44:59 -05:00
riodoro1
e48b283e39 Fix missing BOARD_K8800 (#19331) 2021-04-29 08:44:59 -05:00
Giuliano Zaro
3adb07aa00 Fix "too cold" in M600 (#19332) 2021-04-29 08:44:59 -05:00
Scott Lahteine
136b7a5305 Warning if SDCARD_READONLY should be disabled 2021-04-29 08:44:59 -05:00
Scott Lahteine
d6bbcd020b General cleanup 2021-04-29 08:44:59 -05:00
Victor Oliveira
42619a3a81 LPC: Finish DMA transfer, use HW SPI class (#19191) 2021-04-29 08:44:59 -05:00
Victor Oliveira
8393c6a63d Raise STM32F1 UART IRQ Priority, add error handling (#19301)
(Error handling for Overrun, Framing and Parity.)
2021-04-29 08:44:59 -05:00
Zachary Annand
13f2915b65 Fix Separate Neopixel menu labels (#19303) 2021-04-29 08:44:58 -05:00
Keith Bennett
f7885bbdde Warn in platformio.ini about RCT6 512K (#19312) 2021-04-29 08:44:58 -05:00
Marcio Teixeira
ba6659f6be Fix ExtUI SD sorting, compile issues 2021-04-29 08:44:58 -05:00
makerbase
2af9e2f759 MKS Gen L V2.1 (#19314) 2021-04-29 08:44:58 -05:00
Keith Bennett
e6cf959170 Fix compile with Danish, Basque (#19325) 2021-04-29 08:44:58 -05:00
bilsef
ea39d3c45e Support for Teensy 4 (#19311) 2021-04-29 08:44:58 -05:00
Scott Lahteine
a8904d25ba Minor HAL cleanup 2021-04-29 08:44:58 -05:00
Jason Smith
784016a25e Update HAL/STM32 platform to 8.0 (#18496) 2021-04-29 08:44:58 -05:00
Giuliano Zaro
5fcfecc56e Make M600 heat up the nozzle. Reset runout on fail. (#19298)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-04-29 08:44:58 -05:00
Jason Smith
09a5014b3c TFT is neither "graphical" nor "character" (#19297) 2021-04-29 08:44:58 -05:00
Victor Oliveira
f5dc18730c Sanity-check BABYSTEP_DISPLAY_TOTAL with ColorUI (#19284) 2021-04-29 08:44:58 -05:00
Kadah
0bd7a2fc7e Fix M166 Gradient Mix for DELTA (#19285) 2021-04-29 08:44:58 -05:00
Zachary Annand
b186ab90a2 Separate Neopixel followup (#19287) 2021-04-29 08:44:58 -05:00
Scott Lahteine
c360705e6a Clean up LCD conditionals, DWIN 2021-04-29 08:44:58 -05:00
Scott Lahteine
9172271c7f Whitespace cleanup 2021-04-29 08:44:58 -05:00
Jason Smith
a1860ed680 Adjust GTR PeripheralPins to avoid timer conflicts (#19183) 2021-04-29 08:44:58 -05:00
Victor Oliveira
643f192515 STM32F1 EP with USB_COMPOSITE (#19281) 2021-04-29 08:44:58 -05:00
Zachary Annand
a8db9f52ec Menu items for Separate NeoPixel (#19280) 2021-04-29 08:44:58 -05:00
Keith Bennett
83dba77955 Clarify disabling StallGuard for axes (#19263) 2021-04-29 08:44:58 -05:00
Marcio T
e79af802b1 Touch UI long filenames fixes (#19262)
* Improvements to FTDI DLCache functionality.
* Better handling of long file names in Touch UI
- Long file names now truncated and shown with ellipsis.
- Increased display cache buffer to allow for longer filenames.
- Visual error message when display cache is exceeded.
2021-04-29 08:44:58 -05:00
cosmoderp
3a1145b999 Fix Ender 3 V2 (DWIN) buffer overrun (#19268) 2021-04-29 08:44:58 -05:00
Victor Oliveira
24fbfae0fd Fix STM32F1 SPI device init, MKS_LCD12864 (#19271) 2021-04-29 08:44:58 -05:00
Victor Oliveira
563bd5b5bc Emergency Parser for STM32F1 (#19279) 2021-04-29 08:44:58 -05:00
Scott Lahteine
c1d9e8d571 SD card debugging 2021-04-29 08:44:58 -05:00
Scott Lahteine
f7cb9455c8 No 'ls' if media isn't mounted 2021-04-29 08:44:58 -05:00
Scott Lahteine
d94b5b5ad0 Fix Creality V4 SD Detect 2021-04-29 08:44:58 -05:00
Keith Bennett
e2625db1dd Tweak ESP32 Wifi sanity-check message (#19257) 2021-04-29 08:44:58 -05:00
Victor Sokolov
47753d8a01 MarkForged kinematics (#19235) 2021-04-29 08:44:58 -05:00
Greg Nutt
94809feac7 Smoothieboard GLCD w/ SD support (#19241) 2021-04-29 08:44:58 -05:00
Victor Oliveira
6a511b6ea7 Only show "SD Init Fail" with detectable media (#19236) 2021-04-29 08:44:58 -05:00
Zachary Annand
ffba220ae8 Separate Neopixel followup (#19250) 2021-04-29 08:44:58 -05:00
Tanguy Pruvot
43e40524c4 Fix Longer3D TFT defines, disable DMA (#19251) 2021-04-29 08:44:58 -05:00
Scott Lahteine
4f1a14532b Hide multi-step G29 on Ender 3 V2 2021-04-29 08:44:58 -05:00
ManuelMcLure
c113984b32 Fix UBL 'G29 I' for large meshes (#19231) 2021-04-29 08:44:58 -05:00
makerbase
edba363d54 MKS SGEN L V2 (#18822) 2021-04-29 08:44:58 -05:00
Victor Oliveira
919ea2a76d Fail SD mount without SPI re-init (#19226) 2021-04-29 08:44:58 -05:00
Stéphane
755a4440e7 Fix Anycubic LCDs / Trigorilla 1.4 pins (#19220) 2021-04-29 08:44:58 -05:00
Zachary Annand
c7335bcd4d Separate Neopixel followup (#19224) 2021-04-29 08:44:58 -05:00
Giuliano Zaro
881bb7bf0a Delete old LCD strings (#19227) 2021-04-29 08:44:58 -05:00
Stéphane
2212bf85b7 Fix Anycubic I3 Mega (S) original screen % display (#19210) 2021-04-29 08:44:58 -05:00
Ludy
0c85e2838c Update German, fix Mix component index (#19206) 2021-04-29 08:44:58 -05:00
Martin
7967590682 Permit touch params override w/ Robin nano (#19196) 2021-04-29 08:44:58 -05:00
Zachary Annand
df7e35ccd7 Separate Neopixels followup (#19179) 2021-04-29 08:44:58 -05:00
ellensp
414136f33a Fix 'cmd' array warning (#19193) 2021-04-29 08:44:58 -05:00
Scott Lahteine
ee572856e9 Add set_all_homed 2021-04-29 08:44:58 -05:00
swissnorp
7d2e4481c7 Mark axes not-homed with HOME_AFTER_DEACTIVATE (#18907) 2021-04-29 08:44:58 -05:00
Scott Lahteine
d10f7eae31 set_axis_not_trusted => set_axis_never_homed 2021-04-29 08:44:58 -05:00
Zachary Annand
757ab484ac Independent Neopixel option (#19115) 2021-04-29 08:44:58 -05:00
Scott Lahteine
d62933fba5 Fix Creality V4 probe pin 2021-04-29 08:44:58 -05:00
Scott Lahteine
a6829838c6 Fix small typø 2021-04-29 08:44:58 -05:00
Scott Lahteine
fd1731a7b9 Allocate sufficient MSG_MOVE_Z_DIST buffer
See #19158
2021-04-29 08:44:58 -05:00
Victor Oliveira
9419331500 One MARLIN_DEV_MODE warning per rebuild (#19163) 2021-04-29 08:44:58 -05:00
George Fu
8a24c33151 FYSETC S6 2.0 (#19140) 2021-04-29 08:44:58 -05:00
thordarsen
f5e94cd7f1 Fix SINGLENOZZLE fan speed bug (#19152) 2021-04-29 08:44:58 -05:00
ellensp
7769f19bf5 Fix NEOPIXEL_STARTUP_TEST last delay (#19156) 2021-04-29 08:44:58 -05:00
Victor Oliveira
3b4779fa15 TFT (plus Hardware SPI) for LPC (#19139) 2021-04-29 08:44:58 -05:00
Scott Lahteine
5059586fc3 Prusa => Průša 2021-04-29 08:44:58 -05:00
Colin Godsey
8670f475b8 Direct Stepping update (#19135) 2021-04-29 08:44:57 -05:00
Marcio Teixeira
1b129ede4e Fixes to FTDI Touch UI (#19134)
- Fix unused variable warning
- Fix for filament runout sound
- Fix for developer menu access
- Fix compilation error when using CALIBRATION_GCODE
- Remove material labels in change filament screen
- Add decimals to status screen Z coordinate
- Add more descriptive message on heater timeout
2021-04-29 08:44:57 -05:00
Keith Bennett
6844ef21d4 Add Einsy Rambo Filament Runout Pin (#19136) 2021-04-29 08:44:57 -05:00
Jason Smith
6043f5d5d0 Fix SD pins for SKR Pro and GTR (#19047) 2021-04-29 08:44:57 -05:00
Scott Lahteine
0070a0642b Warn about MARLIN_DEV_MODE 2021-04-29 08:44:57 -05:00
Scott Lahteine
9bf6ddd4f1 No COM_PIN needed for DWIN 2021-04-29 08:44:57 -05:00
ellensp
0decb50fcd LEDs followup (#19133) 2021-04-29 08:44:57 -05:00
Victor Oliveira
40b89456af Color UI + Robin Nano test (#19118) 2021-04-29 08:44:57 -05:00
Giuliano Zaro
008362cd77 Fix auto-power in PID autotune (#19119) 2021-04-29 08:44:57 -05:00
Scott Lahteine
9d2241efe7 Minor cleanup w/r/t LEDs 2021-04-29 08:44:57 -05:00
Oleksii Zelivianskyi
f473145d42 TFT32 for MKS Robin Nano 1.2 (#19031) 2021-04-29 08:44:57 -05:00
qwewer0
b93a4bae45 Feedrate comment (#19116) 2021-04-29 08:44:57 -05:00
Scott Lahteine
42604cf4b2 Neopixel => NeoPixel 2021-04-29 08:44:57 -05:00
Scott Lahteine
19a237bbb0 Fix up conditions, comments 2021-04-29 08:44:57 -05:00
Scott Lahteine
ba3b995e58 Fix DUET_SMART_EFFECTOR 2021-04-29 08:44:57 -05:00
Scott Lahteine
e7b730528e Consistent static/value item macros 2021-04-29 08:44:57 -05:00
Scott Lahteine
db04bcb727 Fix probing margin sanity-check 2021-04-29 08:44:57 -05:00
Scott Lahteine
f3d0b49928 PGMSTR constexpr => const 2021-04-29 08:44:57 -05:00
Mathew Winters
fe89f5fdff NOZZLE_CLEAN_NO_Y (#18870) 2021-04-29 08:44:57 -05:00
qwewer0
05d2bb0df5 Change XY_PROBE_SPEED format to (x*60) (#18997) 2021-04-29 08:44:57 -05:00
Scott Lahteine
98ec7b61a9 Reformat pins files 2021-04-29 08:44:57 -05:00
mmajoor
8565f1e681 Permit ST7789V orientation override (#19044) 2021-04-29 08:44:57 -05:00
Giuliano Zaro
3aa5b45768 Prefer Servo AVR timer4 over 3 (#19025) 2021-04-29 08:44:57 -05:00
Greg Nutt
e02fb4a862 DIGIPOT_I2C pins for SMOOTHIEBOARD (#19098) 2021-04-29 08:44:57 -05:00
Steven Haigh
ee19e1d3ff Translatable strings on Ender-3 V2 DWIN (#19053)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:44:57 -05:00
Giuliano Zaro
fe1e880ffe HIGH/LOW naming of pin state settings (#19089) 2021-04-29 08:44:57 -05:00
Scott Lahteine
a5dc42c47c Update copy_marlin_variant_to_framework.py 2021-04-29 08:44:57 -05:00
mmajoor
070412a6a5 GRAPHICAL_TFT_ROTATE_180 for ST7789V (#19042) 2021-04-29 08:44:57 -05:00
Victor Oliveira
0ffd5aa743 CI with PIO-dev (#19058) 2021-04-29 08:44:57 -05:00
Scott Lahteine
744f74506f More menu header fu 2021-04-29 08:44:57 -05:00
ellensp
46744e8433 Creality3D v4.2.7 (#19088) 2021-04-29 08:44:57 -05:00
Giuliano Zaro
038945110f Optional homing in LCD Repeatability Test (#19104) 2021-04-29 08:44:57 -05:00
Scott Lahteine
7852b06038 Menu headers followup 2021-04-29 08:44:57 -05:00
Victor Oliveira
dded56c4bb Emulated DOGM via HAL TFT, XPT IO (#19017) 2021-04-29 08:44:57 -05:00
Scott Lahteine
7dea6c53ed Remove extraneous defines 2021-04-29 08:44:57 -05:00
Scott Lahteine
fd0a3df315 Header for individual menus 2021-04-29 08:44:57 -05:00
BigTreeTech
a1bdc1974a Broadcast SD Print Completion (#19102) 2021-04-29 08:44:57 -05:00
Keith Bennett
24636eb7f1 Fix M512 comment (#19108) 2021-04-29 08:44:57 -05:00
Scott Lahteine
737a5453d9 Allow 'ghtp' to set a specific remote 2021-04-29 08:44:57 -05:00
Scott Lahteine
f860152a35 Fix up mixer menu display 2021-04-29 08:44:57 -05:00
Scott Lahteine
87d2c471db Apply specific menu item types 2021-04-29 08:44:57 -05:00
Scott Lahteine
ca54d67814 Fix Select Screen cancel destination 2021-04-29 08:44:57 -05:00
Scott Lahteine
615af841f0 Update some comments 2021-04-29 08:44:57 -05:00
Scott Lahteine
c43d264d3e Add custom_verbose, custom_gcc deps flags 2021-04-29 08:44:57 -05:00
Scott Lahteine
d1aed52280 Move ExtUI displays to sub-folder (#19070) 2021-04-29 08:44:57 -05:00
Scott Lahteine
7e7e870eae Config adjustments 2021-04-29 08:44:57 -05:00
Giuliano Zaro
f7dade8c2c Configurable number of M106 fans (#18883) 2021-04-29 08:44:57 -05:00
ellensp
24139c6ff0 Env mega2560ext adds pins 70-85 (#19022) 2021-04-29 08:44:57 -05:00
Steven Haigh
16c1e80491 Default Filament Runout Sensor enabled state (#19013) 2021-04-29 08:44:57 -05:00
Giuliano Zaro
5a7979b435 Fix __ARM__ / __arm__ typo (#19063) 2021-04-29 08:44:57 -05:00
Serhiy-K
349bddc652 "SD init fail" status error (#19064) 2021-04-29 08:44:57 -05:00
Giuliano Zaro
acc90ad09f Fix PSU on for PID autotune (#19066) 2021-04-29 08:44:57 -05:00
Scott Lahteine
7a750156ef Creality DWIN cleanup 2021-04-29 08:44:57 -05:00
Scott Lahteine
8075eafe91 Creality DWIN simple beeper 2021-04-29 08:44:57 -05:00
ellensp
58975fc8b5 Checks for CR10_STOCKDISPLAY with Creality v4 (#19019) 2021-04-29 08:44:57 -05:00
Julius Mumme
8320c43589 Fix IS_PROBE_PIN macro (#19024) 2021-04-29 08:44:57 -05:00
Victor Oliveira
73d1a98ce6 Update build script for PIO 4.4 (#19034) 2021-04-29 08:44:57 -05:00
Scott Lahteine
f9f514a46c Fix ExtUI base methods 2021-04-29 08:44:57 -05:00
Giuliano Zaro
16f2f2bce7 Let laser/spindle use free AVR servo timers (#19011) 2021-04-29 08:44:57 -05:00
Robby Candra
8258a76c9b Wait for hotend temp before Resume move (#19009) 2021-04-29 08:44:56 -05:00
Tommy Hartmann
c9ddbaa2c0 ENDER2_STOCKDISPLAY for BTT SKR 1.4 (and Turbo) (#19002) 2021-04-29 08:44:56 -05:00
ellensp
a99c844296 Add option to arrange Neopixel sets in series (#18992) 2021-04-29 08:44:56 -05:00
Scott Lahteine
492f49c06a Unhide /src folders in Sublime 2021-04-29 08:44:56 -05:00
Scott Lahteine
80480ae919 M80 followup 2021-04-29 08:44:56 -05:00
Scott Lahteine
1327eaa83b Do runout.reset after EEPROM read 2021-04-29 08:44:56 -05:00
Scott Lahteine
eee101b9dd Clean up M80/M81, DWIN 2021-04-29 08:44:56 -05:00
Scott Lahteine
77ab354a5a Fix touch test 2021-04-29 08:44:56 -05:00
Scott Lahteine
1801eb6393 config-labels.py needs py3 2021-04-29 08:44:56 -05:00
swissnorp
28d6dc38af Fix 'sync_plan_position' call (#19016) 2021-04-29 08:44:56 -05:00
Tanguy Pruvot
dc6e3d083e TFT: Restore ILI9341 colors and reversed logic (#19010)
Followup to #18877, #18901, #18817
2021-04-29 08:44:56 -05:00
Victor Oliveira
4e7c5f19fe Optimize LVGL with HAL TFT IO (SPI and FSMC) (#18974) 2021-04-29 08:44:56 -05:00
Scott Lahteine
3dfbdbc66c String interpolation for 2-digit numbers (#18998) 2021-04-29 08:44:56 -05:00
qwewer0
95f373448d Mention units for MANUAL_FEEDRATE (#18993) 2021-04-29 08:44:56 -05:00
Robby Candra
648b253f41 EVENT_GCODE_SD_STOP => ABORT (#18978) 2021-04-29 08:44:56 -05:00
Anders Sahlman
3e2b272239 MKS Robin new 320x240 TFT Color UI support (#18985) 2021-04-29 08:44:56 -05:00
Scott Lahteine
489143f160 Add'l CI/git script tweaks, fixes 2021-04-29 08:44:56 -05:00
Marcio T
3eafce4683 For FTDI800 compatibility, remove VERTEX_FORMAT dependency (#18982) 2021-04-29 08:44:56 -05:00
InsanityAutomation
b23da503fa Fix Ender-3 V2 DWIN with manual mesh, host prompt (#18981) 2021-04-29 08:44:56 -05:00
Scott Lahteine
cae4c76b56 Fix scripts using gawk and wget 2021-04-29 08:44:56 -05:00
Giuliano Zaro
069993e880 Fix DISABLE_[XYZE] code (#18970)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:44:56 -05:00
ftk
a13834b9f9 Remaining Time for LIGHTWEIGHT_UI (#18875) 2021-04-29 08:44:56 -05:00
Scott Lahteine
c82ff17d3b Followup for SPI Flash 2021-04-29 08:44:56 -05:00
Scott Lahteine
ca8fbbc2be Shorthand values for M575 B 2021-04-29 08:44:56 -05:00
cbaugher
b94b3e6315 Tool-change Z move followup (#18963) 2021-04-29 08:44:56 -05:00
Scott Lahteine
ab61bcafa3 Password followup 2021-04-29 08:44:56 -05:00
sherwin-dc
9e44df9c5f Password via G-code and MarlinUI (#18399)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:44:56 -05:00
Victor Oliveira
438a9bb4aa W25QXX SPI Flash support (#18897)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:44:56 -05:00
Victor Oliveira
6f686b1801 Marlin Color UI for STM32F1 (SPI) (#18958) 2021-04-29 08:44:56 -05:00
Victor Oliveira
d7d3827f47 Fix compiler search in non-default PIO installs (#18960) 2021-04-29 08:44:56 -05:00
Scott Lahteine
ad30383b46 Fix up STATIC_ITEM (#18962) 2021-04-29 08:44:56 -05:00
Victor Oliveira
9af3b06fc2 Marlin Color UI (FSMC) for STM32F1 (#18952) 2021-04-29 08:44:56 -05:00
Scott Lahteine
f395960741 Patch hex_print 2021-04-29 08:44:56 -05:00
Scott Lahteine
02eb4bd806 General cleanup 2021-04-29 08:44:56 -05:00
Scott Lahteine
24f0c9da11 Clean up whitespace 2021-04-29 08:44:56 -05:00
Scott Lahteine
3dc0f9c0b4 configuration_store => settings 2021-04-29 08:44:56 -05:00
Scott Lahteine
8af8ef4404 Use uintptr_t for pointer-to-int 2021-04-29 08:44:56 -05:00
cbaugher
7a8e99de7d Fix Z height after tool change (#18951) 2021-04-29 08:44:56 -05:00
ellensp
8d6a263c1c HW PWM sanity checks for SPINDLE_LASER_FREQUENCY (#18947) 2021-04-29 08:44:56 -05:00
wmariz
cb18b858d4 ZoneStar Z6FB (#18918)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:44:56 -05:00
Victor Oliveira
cd977c70ca Fix / optimize FSMC init (#18941) 2021-04-29 08:44:56 -05:00
Victor Oliveira
57c3b0e0b7 Fix LVGL "C" brace (#18942) 2021-04-29 08:44:56 -05:00
Victor Oliveira
0e70d8bacb Followup fixes to LVGL for Chitu (#18940) 2021-04-29 08:44:56 -05:00
Victor Oliveira
8f0cd470ae Apply PIO-supported custom_option for deps (#18935) 2021-04-29 08:44:56 -05:00
Radek
48ddaf35fb Increase Manual E Move Feedrate to 2mm/s (#18937) 2021-04-29 08:44:56 -05:00
Victor Oliveira
9493682e49 MKS Robin Nano CI Tests (#18927) 2021-04-29 08:44:56 -05:00
Scott Lahteine
da6e5ce3db Optimize G-code / feature dependencies (#18919) 2021-04-29 08:44:56 -05:00
Marco Burato
f4894b7140 More Anycubic + Trigorilla mappings, ExtUI (#18903) 2021-04-29 08:44:56 -05:00
Scott Lahteine
7d3be90159 Conditions cleanup 2021-04-29 08:44:56 -05:00
Scott Lahteine
76eff24718 Simple rename of hex_print 2021-04-29 08:44:56 -05:00
Scott Lahteine
e8dc7cad18 General cleanup 2021-04-29 08:44:56 -05:00
Victor Oliveira
4201a48ecf Request files needed to test a PR (#18925) 2021-04-29 08:44:56 -05:00
Keith Bennett
c0d031cd1e Add Chitu 3D V6 2nd Filament Runout pin (#18922) 2021-04-29 08:44:56 -05:00
Victor Oliveira
1a50260ebd Followup to LVGL patch (#18920) 2021-04-29 08:44:56 -05:00
swissnorp
38a24ce6c9 Move Cancel Object menu, fix canceled item index (#18930) 2021-04-29 08:44:56 -05:00
Victor Oliveira
a0a87c2b81 SPI Flash data compression (#18879) 2021-04-29 08:44:55 -05:00
Scott Lahteine
a100306b00 Followup to #18906 Z_AFTER_DEACTIVATE 2021-04-29 08:44:55 -05:00
Claus Näveke
17bbcce52b Make ili9341 rotatable (e.g., Anycubic Predator) (#18877) 2021-04-29 08:44:55 -05:00
Jeff Eberl
0b2bd123ef Change include to <stddef.h> (#18880) 2021-04-29 08:44:55 -05:00
Roman Moravčík
ea53abbca7 Update Slovak language (#18884) 2021-04-29 08:44:55 -05:00
Giuliano Zaro
7f69f8e680 Update Italian language (#18886) 2021-04-29 08:44:55 -05:00
swissnorp
301569bee6 Add Z_AFTER_DEACTIVATE to account for gravity (#18906) 2021-04-29 08:44:55 -05:00
Victor Oliveira
e82e94be5b Fix MKS Nano v1.2 FSMC display (#18901) 2021-04-29 08:44:55 -05:00
Keith Bennett
0c07e7a96f Assisted Tramming requires a probe (#18912) 2021-04-29 08:44:55 -05:00
Scott Lahteine
7dd7d6dda6 Move scaled TFT / touch defines (#18915) 2021-04-29 08:44:55 -05:00
Scott Lahteine
3bb1f0a7df Clean up some PeripheralPins 2021-04-29 08:44:55 -05:00
Claus Näveke
a0d25379b2 No mks_robin extra_scripts in Trigorilla build (#18872) 2021-04-29 08:44:55 -05:00
ellensp
643b31a6a1 Fix Spindle/Laser PWM DC (#18871) 2021-04-29 08:44:55 -05:00
FLYmaker
0e2013d244 Fix FLYF407ZG pins (#18865) 2021-04-29 08:44:55 -05:00
Sebastien Andrivet
e6c95762ba Fix Duplicator i3 Plus pin diagram (#18862) 2021-04-29 08:44:55 -05:00
Slats
b66df5fa3c Translated DWIN screen titles (#18893)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:44:55 -05:00
Scott Lahteine
afb51d1de3 Repair config order 2021-04-29 08:44:55 -05:00
Scott Lahteine
db290201ea Add monitor_flags 2021-04-29 08:44:55 -05:00
Scott Lahteine
ed5ae0a2f7 Update include_tree 2021-04-29 08:44:55 -05:00
Alexander Gavrilenko
8f8b0d84ae Support for TFT & Touch Screens (#18130) 2021-04-29 08:44:55 -05:00
Victor Oliveira
3fbc002bad SanityCheck: No Adafruit NeoPixel for STM32F1 (#18833) 2021-04-29 08:44:55 -05:00
ellensp
60cc56b31c No HEATER_0_PIN needed with 0 EXTRUDERS (#18827) 2021-04-29 08:44:55 -05:00
Victor Oliveira
fc12ffcb30 SPI Emulated DOGM (like FSMC_GRAPHICAL_TFT, but SPI) (#18817) 2021-04-29 08:44:55 -05:00
Scott Lahteine
0c1bf01cf7 In G28 Z is sort-of known 2021-04-29 08:44:55 -05:00
Scott Lahteine
bb21d79321 Fix UNKNOWN_Z_NO_RAISE in G28
Bug introduced in 73fc0778b8
2021-04-29 08:44:55 -05:00
Diego von Deschwanden
c63c069d58 Fix URLs to websites and resources (#18844) 2021-04-29 08:44:55 -05:00
Scott Lahteine
513d3172cb Update keypad link 2021-04-29 08:44:55 -05:00
lethalwallabies
5c699ab406 Typo fix (#18856) 2021-04-29 08:44:55 -05:00
Giuliano Zaro
a87114fbfa Clarify Nozzle-to-Probe offset (#18828)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:44:55 -05:00
swissnorp
29e900977f Fix Cancel Objects index display (zero-based) (#18841) 2021-04-29 08:44:55 -05:00
Giuliano Zaro
796471a7c6 [SAMD51] ES Interrupt parity with other HALs (#18836) 2021-04-29 08:44:55 -05:00
Victor Oliveira
524613b610 DISABLE_DEBUG required to free Robin nano Z_DIR_PIN (#18832) 2021-04-29 08:44:55 -05:00
MoellerDi
b765bfa5a5 Fix NEOPIXEL_LED compile w/out PRINTER_EVENT_LEDS (#18824) 2021-04-29 08:44:55 -05:00
natemason
c0d8542a85 Add TEMP_PROBE_PIN for Einsy Rambo (#18823) 2021-04-29 08:44:55 -05:00
Scott Lahteine
36ef9327ef Keep -std=gnu++11 in stm32 build_unflags 2021-04-29 08:44:55 -05:00
Diego von Deschwanden
f2205b1725 Update more external links (#18819) 2021-04-29 08:44:55 -05:00
Victor Tseng
25c7577779 Fix DELTA + TMC sensorless homing + SPI endstops (#18811) 2021-04-29 08:44:55 -05:00
Victor Tseng
9ece3cfdaf Fix garbled print_xyz output (#18810) 2021-04-29 08:44:55 -05:00
ellensp
c5108687c5 Fix WiFi / ESP32 sanity check (#18808) 2021-04-29 08:44:55 -05:00
Scott Lahteine
e52bfeb491 Config for Anycubic Mega TFT 2021-04-29 08:44:54 -05:00
Scott Lahteine
dd1503d5a8 Merge remote-tracking branch 'upstream/bugfix-2.0.x' into prepare_release_2073 2021-04-29 08:11:03 -05:00
ldursw
e9618f1ba2 Fix SDIO buffer alignment (#21396) 2021-04-26 00:16:58 -05:00
Keith Bennett
0f9e096d6e Update Issue Templates (#21702) 2021-04-25 15:06:27 -05:00
Scott Lahteine
392d01555d 'issue_body' obsolete in templates 2021-04-22 19:38:05 -05:00
Scott Lahteine
89f7a19691 Fix check-pr action 2021-04-17 21:22:23 -05:00
Scott Lahteine
c0673dbdf1 Keep 'confirmed bug' open 2021-04-15 17:27:18 -05:00
ellensp
3e1b9e11d7 Sanity Check newer Configs too (#21550)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-07 15:44:39 -05:00
InsanityAutomation
dda2f58588 Fix Hotend-abort-on-idle Check (#21535) 2021-04-04 16:59:55 -05:00
Scott Lahteine
e3a12c3c28 Fix bool++ warning 2021-03-23 07:25:13 -05:00
Keith Bennett
b9065195f1 Auto-label Feature Requests (#21348) 2021-03-14 11:41:24 -05:00
Scott Lahteine
aba28ef0bc Enhance workflows 2021-03-13 04:57:47 -06:00
Scott Lahteine
e9f7003b70 Change issue templates to YML 2021-03-12 13:38:40 -06:00
Scott Lahteine
d3d1f82f73 Add emojis 2021-03-12 00:55:59 -06:00
Scott Lahteine
2439c44779 Emojis and donate link 2021-03-11 23:53:18 -06:00
Scott Lahteine
19b94ec325 Remove one label at a time 2021-03-11 11:23:14 -06:00
Keith Bennett
b9fa72d582 Token for "Clean Closed" action (#21320) 2021-03-11 09:55:42 -06:00
Scott Lahteine
b26516b3ac Clean up labels on close 2021-03-06 07:24:32 -06:00
Scott Lahteine
2f97505b93 Trust XY after Quiet Probing short sleep (#21237) 2021-03-01 19:38:45 -06:00
Scott Lahteine
5ee1087959 Ignore M22 during SD print 2021-01-13 21:29:38 -06:00
Scott Lahteine
6596a50c90 Fix PR template, lock action
Co-Authored-By: Jason Smith <20053467+sjasonsmith@users.noreply.github.com>
2021-01-11 15:06:55 -06:00
Serhiy-K
730833f96c Fixes for TFTGLCD (#20734) 2021-01-11 00:05:04 -06:00
Scott Lahteine
f74015b4e5 Fix TEMP_0_TR_ENABLE 2020-12-14 00:32:32 -06:00
Jason Smith
eb254ef70b Fix TMC_HOME_PHASE divide by zero (#20368) 2020-12-04 23:59:39 -06:00
Luu Lac
3327568142 Help hosts when password-locked (#20348) 2020-12-01 23:52:51 -06:00
ellensp
65983b4288 Set "lcd_move_e" index to fix the label (#20263) 2020-11-24 16:15:29 -06:00
Simone Primarosa
1d631b7280 Fix bad SET_FAST_PWM_FREQ calls (#20227) 2020-11-20 19:55:37 -06:00
phcay
072b15784f Fix extraneous Linear Advance DIR change (#20131) 2020-11-13 19:24:52 -06:00
thinkyhead
ba2939b1dc Fix bilinear_line_to_destination definition
See #19431
2020-10-30 00:24:29 -05:00
Jason Smith
ee7476a0bf Update "Bug Report" template (#19906) 2020-10-27 17:48:06 -05:00
Scott Lahteine
88a2ac92d5 Marlin 2.0.7.2 2020-10-21 18:16:38 -05:00
Jason Smith
3ccb3801f2 Fix SAMD Serial name macro (#19765) 2020-10-21 18:16:38 -05:00
Serhiy-K
cc7fbabc96 Fix HAL/STM32 FastIO for analog pins (#19735) 2020-10-21 18:16:38 -05:00
Scott Lahteine
28a9708ddb Don't define IS_ULTIPANEL empty 2020-10-21 18:16:00 -05:00
Jason Smith
d896dedf9b Add NUCLEO-F767ZI dev board (#19373)
Co-authored-by: Lorenzo Delana <lorenzo.delana@gmail.com>
2020-10-16 16:42:39 -05:00
Keith Bennett
00709017e2 If needed, home before G34 (#19713) 2020-10-16 16:42:39 -05:00
Victor Oliveira
b7d9b05952 TFT followup fixes (#19710) 2020-10-16 16:42:37 -05:00
Victor Oliveira
f7f1224941 Watchdog Refresh for LVGL Asset Load (#19724) 2020-10-16 16:42:15 -05:00
Jason Smith
fd8d83b7c8 Fix mega2560ext environment (#19730) 2020-10-16 16:42:15 -05:00
thinkyhead
52fc0b896d [cron] Bump distribution date (2020-10-15) 2020-10-16 16:42:15 -05:00
thinkyhead
ba045d6852 [cron] Bump distribution date (2020-10-14) 2020-10-16 16:42:15 -05:00
Jason Smith
54bdcb4691 Fix SET_SOFT_ENDSTOP_LOOSE w/out soft endstops (#19734) 2020-10-16 16:42:15 -05:00
Scott Lahteine
2a2666326b Simple bool in soft_endstops_t 2020-10-16 16:42:15 -05:00
thinkyhead
3bba5d55bf [cron] Bump distribution date (2020-10-13) 2020-10-16 16:42:15 -05:00
thinkyhead
5d07d83e78 [cron] Bump distribution date (2020-10-12) 2020-10-16 16:40:25 -05:00
Jason Smith
37f97bc013 Fix various errors, warnings in example config builds (#19686)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2020-10-16 16:40:14 -05:00
thinkyhead
6d31bbe2bf [cron] Bump distribution date (2020-10-11) 2020-10-16 16:39:55 -05:00
Victor Oliveira
e2e1776a14 Restore correct STM32 port-bits code (#19678) 2020-10-16 16:39:55 -05:00
Serhiy-K
bd196e7efc Fixes for TFTGLCD Panel, FastIO (#19614) 2020-10-16 16:39:55 -05:00
Earle F. Philhower, III
dffe7b9072 Add loose soft endstop state, apply to UBL fine-tune (#19681)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2020-10-16 16:39:55 -05:00
Jason Smith
2b326ebc84 Add D100 Watchdog Test (#19697) 2020-10-16 16:39:55 -05:00
Jason Smith
f4ff6a673f Allow MAX31865 resistance values configuration (#19695) 2020-10-16 16:39:55 -05:00
qwewer0
cc915a25ed Add REPORT_TRAMMING_MM option (#19682)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2020-10-16 16:39:55 -05:00
Jason Smith
600870f22b Fix motion compile w/out probe-oriented settings (#19684) 2020-10-16 16:39:55 -05:00
Jason Smith
04882e2f34 Fix I2C_ADDRESS sign warning (#19685) 2020-10-16 16:39:55 -05:00
Jason Smith
c6cf3da276 Fix various errors, warnings in example config builds (#19686)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2020-10-16 16:39:55 -05:00
Jason Smith
8a5c3782b8 Fix at90usb1286 build (#19687)
* Skip check for USBCON during dependency detection
* Ignore incompatible Teensy_ADC library, which requires Teensy >= 3
* Add IS_AT90USB

Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2020-10-16 16:39:55 -05:00
Scott Lahteine
beb17d8855 Digipots refactor / cleanup (#19690) 2020-10-16 16:39:55 -05:00
Scott Lahteine
4ee717f7c4 Save PLR on resume from pause (#19676)
Co-Authored-By: shahab <32130261+SHBnik@users.noreply.github.com>
2020-10-16 16:39:55 -05:00
Victor Oliveira
e680196c59 Restore correct STM32 port-bits code (#19678) 2020-10-16 16:39:55 -05:00
Serhiy-K
ce92abfe47 Fixes for TFTGLCD Panel, FastIO (#19614) 2020-10-16 16:39:55 -05:00
Victor Oliveira
50410aaeaa Fix UTF8 handling for Color UI (#19708) 2020-10-16 16:39:55 -05:00
Victor Oliveira
35c40bc376 Implement wait_for_user for Color UI (#19694) 2020-10-16 16:39:55 -05:00
Victor Oliveira
aae644c507 Option to prevent (extra) Watchdog init on STM32 (#19693) 2020-10-16 16:39:55 -05:00
Scott Lahteine
ce830f8a71 Fix screen click reading too often (#19696)
Co-authored-by: andreibobirica <39415547+andreibobirica@users.noreply.github.com>
2020-10-16 16:39:55 -05:00
Keith Bennett
d3d423a322 Sanity-check mutually-exclusive G34 features (#19706) 2020-10-16 16:39:55 -05:00
InsanityAutomation
8b060a3902 G34 Mechanical Gantry Calibration (like Prusa M915) (#18972)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2020-10-16 16:39:55 -05:00
Victor Oliveira
faae900747 TFT Refactoring (#19192)
* split tft folder in two: tft for color ui; tft_io for shared tft code

* after the files got moved, now the code was moved to the right place

* classic ui using TFT IO init lcd codes

* feature to compile tft_io when enabled

* compiling fix

* lvgl spi tft working with tft io init codes

* there is no need for separeted fsmc and spi class in lvgl anymore, as tft io handle everything

* remove debug

* base for TFT rotation and mirroring API, and ILI9488 support

* ST7796S rotate and mirror support

* ST7789V rotate and mirror support

* ST7735 rotate and mirror support

* ILI9341 rotate and mirror support

* ILI9328 rotate and mirror support

* R61505 rotate and mirror support

* MKS TFT definitions

* more configs for mks tfts

* update config

* naming typo

* to configure the user interface

* ANYCUBIC_TFT35

* tft configs

* support for SSD1963

* tft display types

* updated conditionals lcd; first board fully working with the new code - all 3 ui!

* compatiblity

* changed name

* move classic ui file name

* rename TURN -> ROTATE

* GRAPHICAL_TFT_ROTATE_180 deprecated

* first fsmc board fully working - chitu v5

* mks robin nano v1.2 + tft 35 ok!

* right pin name

* anycubic tft tested in a TRIGORILLA_PRO

* chitu v6

* nano 32 tft orientation

* mks tft43

* mks tft43 rotation

* fixed LONGER LK tft setup

* GRAPHICAL_TFT_UPSCALE defined by the display type

* better offsets defaults

* Update Configuration.h

* Update tft_fsmc.cpp

* Update Conditionals_LCD.h

* Tweak comments

* update nano tests

* Revert "update nano tests"

This reverts commit a071ebbfad30e28855a4a5695ec8a726542a1a65.

* default tft

* outdated comments

* to not break non-vscode builds

* upscale tft 35

* support tft 180 rotation for color ui

* Each TFT Driver is responsible for its default color mode.

* use auto detect in mks displays, because some of them could be shipped with diferent drivers

* extra s

* unused code

* wrong -1

* missing mirror options

* Smaller regex pattern

* Comment updates

* Clean up old defines

* Apply pins formatting

* GRAPHICAL_TFT_ROTATE_180 => TFT_ROTATE_180

* MKS_ROBIN_TFT_V1_1R

* merge fix

* correct resolution

* auto is default, dont need be there, and it will allow the user to configure it even for named displays

* to not use rotation with MKS_ROBIN_TFT_V1_1R

* i like () in macros

* avoid sleepy commits

* default for st7789 is rgb

* nano follow up

* to allow ili9328 rotation

* default is rgb

* boards merge follow up

* to match bootloader orientation

* HAS_TOUCH_XPT2046 is not hal specific anymore

* lets not forget LPC

* 180 rotation for ili9328 and R61505

* Clean up whitespace

Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2020-10-16 16:39:55 -05:00
Scott Lahteine
11662bf2b6 Marlin 2.0.7.1 2020-10-16 16:39:55 -05:00
Serhiy-K
887e2637c0 Fixes for TFTGLCD Panel, FastIO (#19614) 2020-10-16 16:39:55 -05:00
ellensp
958f05e4b4 HAS_CHARACTER_LCD => HAS_MARLINUI_HD44780 (#19673) 2020-10-16 16:39:55 -05:00
thinkyhead
9126a2e654 [cron] Bump distribution date (2020-10-10) 2020-10-16 16:39:55 -05:00
Scott Lahteine
5070fae231 Batch appercase hex values 2020-10-16 16:39:54 -05:00
Scott Lahteine
454f9d6319 Optional M42/M226; Add more features filters (#19664) 2020-10-16 16:39:54 -05:00
Victor Oliveira
59b6b32e6e Support for Debug Codes - Dnnn (#19225)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2020-10-16 16:39:54 -05:00
石立枫
6d9709e20d Support for FLY MINI (#19185) 2020-10-16 16:39:54 -05:00
Keith Bennett
7a484959d5 Fix touch ifndefs (#19661) 2020-10-16 16:39:54 -05:00
Giuliano Zaro
78060f55e6 Update Italian language (#19654) 2020-10-16 16:39:54 -05:00
thinkyhead
3fca19fbab [cron] Bump distribution date (2020-10-09) 2020-10-16 16:39:54 -05:00
Samantaz Fox
b8700e0aa8 Fix and improve Makefile / CMake (#19640) 2020-10-16 16:39:54 -05:00
Scott Lahteine
d66bc5cec2 Permit touch calibration override 2020-10-16 16:39:54 -05:00
Scott Lahteine
fb28c6041a Use 0xFF (not 'ff') for byte transfer 2020-10-16 16:39:54 -05:00
ellensp
0f9d57e03a Apply env:mega2560ext to relevant boards (#19624) 2020-10-16 16:39:54 -05:00
qwewer0
32377849da Update PROBE_OFFSET_WIZARD comment (#19652) 2020-10-16 16:39:54 -05:00
thinkyhead
0975c487f0 [cron] Bump distribution date (2020-10-08) 2020-10-16 16:39:54 -05:00
qwewer0
d07ad63016 More accessible PROBE_OFFSET_WIZARD (#19647) 2020-10-16 16:39:54 -05:00
ellensp
1a5a3cf253 Restore ° to 6x9 small info font (#19645) 2020-10-16 16:39:54 -05:00
Scott Lahteine
6f6901180c Chamber vent/fan followup 2020-10-16 16:39:54 -05:00
Scott Lahteine
9cc6297292 Fix small font section directive, mixer warning 2020-10-16 16:39:54 -05:00
thinkyhead
cf53bc2dd2 [cron] Bump distribution date (2020-10-07) 2020-10-16 16:39:54 -05:00
Scott Lahteine
f4f4ea05e1 Update language fonts 2020-10-16 16:39:54 -05:00
ladismrkolj
2b845e5a75 Add Chamber servo vent, auto fan (#19519) 2020-10-16 16:39:54 -05:00
signetica
6fcbf11454 Fix Ender-3 V2 DWIN Stop SD Print (#19642)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2020-10-16 16:39:54 -05:00
Scott Lahteine
8a69147adf Improve retract / unretract labels 2020-10-16 16:39:54 -05:00
thinkyhead
f8ceedea5c [cron] Bump distribution date (2020-10-06) 2020-10-16 16:39:54 -05:00
Scott Lahteine
a4e4226578 Trailing whitespace 2020-10-16 16:39:54 -05:00
Scott Lahteine
e76fd6bd33 Sync config to examples 2020-10-16 16:39:54 -05:00
Mathew Winters
437bee418b Z Probe Offset Wizard (#18866) 2020-10-16 16:39:54 -05:00
Cory Ory
31238de937 Allow bypass for cold E movement (#19606) 2020-10-16 16:39:54 -05:00
thinkyhead
cb8c99c4f8 [cron] Bump distribution date (2020-10-05) 2020-10-16 16:39:54 -05:00
Ryan V1
2fe81d0cb2 Fix Archim1 stepper timing (with new variant) (#19596) 2020-10-16 16:39:54 -05:00
Scott Lahteine
fb7d7ee7b4 Add HAS_FAST_MOVES 2020-10-16 16:39:54 -05:00
ellensp
d99fdcf526 Fix Z_AFTER_HOMING without probe (#19607) 2020-10-16 16:39:54 -05:00
Scott Lahteine
e4d2234a04 Move SF_ARC_FIX option 2020-10-16 16:39:54 -05:00
Speaka
bea919da6e Fix German translation purging/unloading (#19615) 2020-10-16 16:39:54 -05:00
Scott Lahteine
2fb22cc116 Shared singlenozzle item 2020-10-16 16:39:54 -05:00
Scott Lahteine
d4b6542ce1 Fix Tune/Fan edit items
- Fixes #19617
- Followup to #18400
2020-10-16 16:39:53 -05:00
thinkyhead
7d47ee732e [cron] Bump distribution date (2020-10-04) 2020-10-16 16:39:53 -05:00
thinkyhead
6ceacd62f9 [cron] Bump distribution date (2020-10-03) 2020-10-16 16:39:53 -05:00
Ryan V1
2ce6741731 Fix 'bossac' upload on Windows (#19545) 2020-10-16 16:39:53 -05:00
Marcio T
2213eb3317 Touch UI support for X2, Y2 and Z2 (#19538) 2020-10-16 16:39:53 -05:00
ellensp
b947590082 Fix wrappers on HAL/STM32F1 .cpp files (#19581)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2020-10-16 16:39:53 -05:00
ellensp
20bcaa78f6 Fix TEMP_ADC_PROBE support for STM32F1 (#19582)
Co-authored-by: ellensp <ellensp@ellensp-HP-ProBook-6470b.fritz.box>
2020-10-16 16:39:53 -05:00
ellensp
9834a36a17 Fix compile of MMU2 with S-mode disabled (#19584) 2020-10-16 16:39:24 -05:00
bilsef
90801f8815 Fix onboard SD card support for Teensy 3.6 & 4.1 (#19593) 2020-10-16 16:39:24 -05:00
Scott Lahteine
4d1357e318 Adjust HAL platform defines, comments 2020-10-16 16:39:23 -05:00
Scott Lahteine
8d090cbdbb Replace tabs with spaces 2020-10-16 16:38:59 -05:00
Victor Oliveira
ec5b78d18b Minor SPI fixes, systick_callback for STM32F1 HAL compatibility (#19565) 2020-10-16 16:38:59 -05:00
thinkyhead
d33317eadb [cron] Bump distribution date (2020-10-02) 2020-10-16 16:38:59 -05:00
swissnorp
f8375a3ea2 G35 workaround for Pronterface "feature" (#19577) 2020-10-16 16:38:59 -05:00
Stéphane
5a02959d18 Fix Anycubic i3 Mega target temperature display (#19572)
Also includes a workaround for missing (probably un-fetched) long name in file listing
2020-10-16 16:38:58 -05:00
Ilya
cc123bc657 No move on Park = No move on Resume (#19569) 2020-10-16 16:38:58 -05:00
Roman Moravčík
4f6a0605bf Update Slovak language (#19561) 2020-10-16 16:38:58 -05:00
Victor Oliveira
b89700ed35 Fix Buzzer (pin) init for uninitialized FastIO (#19559) 2020-10-16 16:38:58 -05:00
Victor Oliveira
ca853fbe19 Fix Move Screen with disabled Touch (#19558) 2020-10-16 16:38:58 -05:00
thinkyhead
1ba2548fb2 [cron] Bump distribution date (2020-10-01) 2020-10-16 16:38:58 -05:00
thinkyhead
1332be77a5 [cron] Bump distribution date (2020-09-30) 2020-10-16 16:38:58 -05:00
Victor Oliveira
a7f334387c Keep HAL tasks running during PID Autotune (#19671) 2020-10-09 23:37:43 -05:00
Scott Lahteine
e8177735a0 Marlin 2.0.7 2020-09-28 21:02:09 -05:00
Scott Lahteine
aac0326f7f Merge bugfix-2.0.x into 2.0.x 2020-09-28 20:59:49 -05:00
Jason Smith
a52afd2aeb Update stale issue message and parameters (#19412)
* Update stale issue bot

* Update close-stale.yml

* Update close-stale.yml

Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2020-09-17 06:35:10 -05:00
Keith Bennett
9913333c33 Auto-label Feature Requests (#19258) 2020-09-03 23:27:59 -05:00
Scott Lahteine
ca194ca52e Version 2.0.6.1 2020-08-27 23:45:37 -05:00
Scott Lahteine
b90e7c421f Merge remote-tracking branch 'upstream/bugfix-2.0.x' into 2.0.x 2020-08-27 22:17:50 -05:00
Julius Mumme
96e29cd7e5 Fix IS_PROBE_PIN macro (#19024) 2020-08-15 22:52:35 -05:00
ellensp
fd9c6983d3 HW PWM sanity checks for SPINDLE_LASER_FREQUENCY (#18947) 2020-08-07 18:14:40 -05:00
Roman Moravčík
da144dcf3b Update Slovak language (#18884) 2020-08-07 18:13:37 -05:00
Giuliano Zaro
1d92badecd Update Italian language (#18886) 2020-08-07 18:13:18 -05:00
swissnorp
242064fa99 Move Cancel Object menu, fix canceled item index (#18930) 2020-08-07 18:11:20 -05:00
cbaugher
ad2d1b6e31 Fix Z height after tool change (#18951) 2020-08-07 18:07:44 -05:00
Claus Näveke
978e0e49c7 No mks_robin extra_scripts in Trigorilla build (#18872) 2020-08-02 20:40:57 -05:00
ellensp
02a500dc93 Fix Spindle/Laser PWM DC (#18871) 2020-08-02 20:40:06 -05:00
FLYmaker
fa5ca8678c Fix FLYF407ZG pins (#18865) 2020-08-02 20:40:06 -05:00
Sebastien Andrivet
01359cff6b Fix Duplicator i3 Plus pin diagram (#18862) 2020-08-02 20:40:06 -05:00
Scott Lahteine
37b56d6347 Add monitor_flags 2020-07-30 02:24:34 -05:00
Scott Lahteine
ad59adfe24 Update include_tree 2020-07-30 01:51:57 -05:00
Scott Lahteine
121cd42c41 In G28 Z is sort-of known 2020-07-29 20:55:48 -05:00
Scott Lahteine
cf1c57a04d Fix UNKNOWN_Z_NO_RAISE in G28
Bug introduced in 73fc0778b8
2020-07-29 20:55:45 -05:00
swissnorp
5804761b5d Fix Cancel Objects index display (zero-based) (#18841) 2020-07-28 21:29:42 -05:00
natemason
3dd21a2770 Add TEMP_PROBE_PIN for Einsy Rambo (#18823) 2020-07-28 21:18:02 -05:00
MoellerDi
b160e8b93f Fix NEOPIXEL_LED compile w/out PRINTER_EVENT_LEDS (#18824) 2020-07-28 21:17:56 -05:00
Victor Oliveira
de37196760 DISABLE_DEBUG required to free Robin nano Z_DIR_PIN (#18832) 2020-07-28 21:16:21 -05:00
Scott Lahteine
84b96d3d47 Hotfix for first round of post-release hiccups 2020-07-27 20:16:34 -05:00
Scott Lahteine
92076c6560 Marlin Release 2.0.6 2020-07-26 20:03:06 -05:00
Scott Lahteine
5e5daf1ff2 Merge remote-tracking branch 'upstream/bugfix-2.0.x' into release_206 2020-07-26 20:01:40 -05:00
Scott Lahteine
8b637e436c Update links, README, contributing, etc. 2020-07-23 20:59:43 -05:00
Chris Pepper
b73ac40fa3 LPC fix NeoPixel fork 2020-07-14 15:15:19 +01:00
Scott Lahteine
7ed66d06a0 LiquidCrystal@1.0.0 for LPC 2020-07-12 22:35:13 -05:00
Scott Lahteine
c1b2379204 Specify supported library versions 2020-07-11 07:42:35 -05:00
Scott Lahteine
5e0958edbf Fix pid_debug_flag 2020-07-11 07:14:54 -05:00
Scott Lahteine
5513e67512 2.0.5.4 : Use ststm32 < 6.2 2020-07-08 19:36:09 -05:00
Scott Lahteine
354a9e5970 Lock threads updated 2020-07-08 04:38:35 -05:00
Scott Lahteine
ee4910c5d7 Temporarily use patched lock-threads 2020-07-05 19:56:33 -05:00
Scott Lahteine
697ef2636e Add CI for pushed commits
Co-Authored-By: thisiskeithb <13375512+thisiskeithb@users.noreply.github.com>
2020-07-05 15:45:14 -05:00
Scott Lahteine
481b8ff2d9 Limit actions to main 2020-07-05 15:23:07 -05:00
Scott Lahteine
7bf89f2b9f Two lock-closed per day 2020-07-04 17:35:48 -05:00
Scott Lahteine
ed7110838e Patch Bad PR action 2020-07-04 17:32:58 -05:00
Scott Lahteine
842dea4bd5 Updated lock / unlock actions 2020-07-02 17:38:31 -05:00
Scott Lahteine
a73e61078d Add Close / Lock actions 2020-06-23 19:58:00 -05:00
Daniel Aléxis
c352aeb32e Remove "dev" branch reference (for now) (#18242) 2020-06-09 15:27:57 -05:00
Mathias Gartner
e4d8336175 Fix XYZ types multiplication/division (#17826) 2020-05-02 16:17:02 -05:00
thisiskeithb
0518dec60d Correct link to Configurations (#17370) 2020-04-01 14:16:01 -05:00
Scott Lahteine
015c4e6fbd Version 2.0.5.3 2020-03-31 14:44:14 -05:00
Scott Lahteine
0f9a14dfda Merge latest patches 2020-03-31 14:43:42 -05:00
Scott Lahteine
7124b2164d Version 2.0.5.2 2020-03-24 17:11:59 -05:00
Scott Lahteine
efc19260a7 Merge patches from bugfix-2.0.x 2020-03-24 17:10:53 -05:00
Scott Lahteine
d37bfa3b4e Version 2.0.5.1 Release 2020-03-16 17:52:41 -05:00
Scott Lahteine
129b1bb8d4 Merge nightly patches 2020-03-16 17:50:43 -05:00
Scott Lahteine
8dbbcfd382 Version 2.0.5 Release 2020-03-14 00:49:12 -05:00
Scott Lahteine
fa48fbb9b8 Merge bugfix-2.0.x into 2.0.x 2020-03-14 00:35:11 -05:00
Scott Lahteine
d6e767e36b Version 2.0.4.4 Release 2020-02-27 04:15:00 -06:00
Scott Lahteine
b29aae6c0c Merge 'bugfix-2.0.x' into 2.0.x 2020-02-27 04:14:33 -06:00
Scott Lahteine
1955eea1b8 Version 2.0.4.3 Release 2020-02-24 11:01:52 -06:00
Scott Lahteine
42fa9fc570 Fix card_eof error 2020-02-24 11:01:52 -06:00
Marcio T
130d0395d0 Restore tabs in Makefile (#16944) 2020-02-24 11:01:52 -06:00
Marcio T
c5f1ff9ee1 Allow Z_SAFE_HOMING_POINT outside bed (#16945) 2020-02-24 11:01:52 -06:00
Scott Lahteine
089cc68a04 Merge nightly patches 2020-02-24 06:12:15 -06:00
Scott Lahteine
2b759b9e8d Suppress "packed member" warning 2020-02-22 19:26:52 -06:00
Scott Lahteine
5f27f7de47 Version 2.0.4.2 Release 2020-02-22 18:49:59 -06:00
Scott Lahteine
282f4678cd Merge nightly patches 2020-02-22 18:47:09 -06:00
Scott Lahteine
c41f3f8582 Version 2.0.4.1 Release 2020-02-22 07:02:55 -06:00
Scott Lahteine
8670df08a2 CoreXY Babystepping hotfix 2020-02-22 07:02:55 -06:00
Scott Lahteine
730690ea03 Hotfix for Babystepping 2020-02-22 02:55:26 -06:00
Scott Lahteine
3543873da7 Use moves_free in ok_to_send 2020-02-22 02:55:26 -06:00
thinkyhead
c505626c42 [cron] Bump distribution date (2020-02-22) 2020-02-22 02:55:26 -06:00
Scott Lahteine
7e8505fc11 Version 2.0.4 Release 2020-02-21 08:38:14 -06:00
Scott Lahteine
f9aec2685c Merge remote-tracking branch 'upstream/bugfix-2.0.x' into 2.0.x 2020-02-21 08:37:02 -06:00
Scott Lahteine
dd6a7ca197 Fix out-of-order M0 after SD printing
Fixes #14774

Co-Authored-By: tol2cj <tol2cj@users.noreply.github.com>
2020-02-10 16:36:31 -06:00
Scott Lahteine
62b9d7dc73 Direct link to version configs 2020-02-05 00:47:24 -06:00
Scott Lahteine
d83382eb55 Add "PR Bad Target" workflow action 2020-02-04 09:41:26 -06:00
Scott Lahteine
4c76314c26 Scheduled action to bump the date on bugfix-2.0.x 2020-02-03 19:31:41 -06:00
Scott Lahteine
64ab254f26 Use a different Configurations branch for CI 2020-02-03 18:11:52 -06:00
Scott Lahteine
e6a7be922b Version 2.0.3 2020-01-31 04:24:05 -06:00
Scott Lahteine
1525c2530e Merge commit 'dabf3939209fd8ea7f6a6327d764c16743aa22aa' into look_at_201 2020-01-31 04:23:45 -06:00
Scott Lahteine
016e4c0193 Version 2.0.2 2020-01-31 04:22:34 -06:00
Scott Lahteine
be642610ae Merge commit '8bd6b60a0141fa892984f2d5b61f06eadbbf9a5f' into look_at_201 2020-01-31 04:22:09 -06:00
Scott Lahteine
ee17051933 Version 2.0.1 2020-01-13 16:49:49 -06:00
Scott Lahteine
0673f335e1 Merge remote-tracking branch 'upstream/bugfix-2.0.x' into 2.0.x 2019-12-24 00:05:04 -06:00
Scott Lahteine
ac7ee4b94a Release version 2.0.0 2019-12-22 18:03:36 -06:00
929 changed files with 22676 additions and 12981 deletions

157
.github/ISSUE_TEMPLATE/bug_report.yml vendored Normal file
View File

@@ -0,0 +1,157 @@
name: 🪲 Report a bug
description: Create a bug report to help improve Marlin Firmware
title: "[BUG] (bug summary)"
body:
- type: markdown
attributes:
value: >
Do you want to ask a question? Are you looking for support? Please use one of the [support links](https://github.com/MarlinFirmware/Marlin/issues/new/choose).
- type: markdown
attributes:
value: |
**Thank you for reporting a bug in Marlin Firmware!**
## Before Reporting a Bug
- Read and understand Marlin's [Code of Conduct](https://github.com/MarlinFirmware/Marlin/blob/master/.github/code_of_conduct.md). You are expected to comply with it, including treating everyone with respect.
- Test with the [`bugfix-2.0.x` branch](https://github.com/MarlinFirmware/Marlin/archive/bugfix-2.0.x.zip) to see whether the issue still exists.
## Instructions
Please follow the instructions below. Failure to do so may result in your issue being closed. See [Contributing to Marlin](https://github.com/MarlinFirmware/Marlin/blob/2.0.x/.github/contributing.md) for additional guidelines.
1. Provide a good title starting with [BUG].
2. Fill out all sections of this bug report form.
3. Always attach configuration files so we can build and test your setup.
- type: dropdown
attributes:
label: Did you test the latest `bugfix-2.0.x` code?
description: >-
Always try the latest code to make sure the issue you are reporting is not already fixed. To download
the latest code just [click this link](https://github.com/MarlinFirmware/Marlin/archive/bugfix-2.0.x.zip).
options:
- Yes, and the problem still exists.
- No, but I will test it now!
validations:
required: true
- type: markdown
attributes:
value: |
# Bug Details
- type: textarea
attributes:
label: Bug Description
description: >-
Describe the bug in this section. Tell us what you were trying to do and what
happened that you did not expect. Provide a clear and concise description of the
problem and include as many details as possible.
placeholder: |
Marlin doesn't work.
validations:
required: true
- type: input
attributes:
label: Bug Timeline
description: Is this a new bug or an old issue? When did it first start?
- type: textarea
attributes:
label: Expected behavior
description: >-
What did you expect to happen?
placeholder: I expected it to move left.
- type: textarea
attributes:
label: Actual behavior
description: What actually happened instead?
placeholder: It moved right instead of left.
- type: textarea
attributes:
label: Steps to Reproduce
description: >-
Please describe the steps needed to reproduce the issue.
placeholder: |
1. [First Step] ...
2. [Second Step] ...
3. [and so on] ...
- type: markdown
attributes:
value: |
# Your Setup
- type: input
attributes:
label: Version of Marlin Firmware
description: "See the About Menu on the LCD or the output of `M115`. NOTE: For older releases we only patch critical bugs."
validations:
required: true
- type: input
attributes:
label: Printer model
description: Creality Ender 3, Prusa mini, or Kossel Delta?
- type: input
attributes:
label: Electronics
description: Stock electronics, upgrade board, or something else?
- type: input
attributes:
label: Add-ons
description: Please list any hardware add-ons that could be involved.
- type: dropdown
attributes:
label: Your Slicer
description: Do you use Slic3r, Prusa Slicer, Simplify3D, IdeaMaker...?
options:
- Slic3r
- Simplify3D
- Prusa Slicer
- IdeaMaker
- Cura
- Other (explain below)
- type: dropdown
attributes:
label: Host Software
description: Do you use OctoPrint, Repetier Host, Pronterface...?
options:
- SD Card (headless)
- Repetier Host
- OctoPrint
- Pronterface
- Cura
- Same as my slicer
- Other (explain below)
- type: markdown
attributes:
value: >-
## Other things to include
Please also be sure to include these items to help with troubleshooting:
* **A ZIP file** containing your `Configuration.h` and `Configuration_adv.h`.
(Please don't paste lengthy configuration text here.)
* **Log output** from the host. (`M111 S247` for maximum logging.)
* **Images or videos** demonstrating the problem, if it helps to make it clear.
* **A G-Code file** that exposes the problem, if not affecting _all_ G-code.
If you've made any other modifications to the firmware, please describe them in detail in the space provided.
When pasting formatted text into the box below don't forget to put ` ``` ` (on its own line) before and after to make it readable.
- type: textarea
attributes:
label: Additional information & file uploads

20
.github/ISSUE_TEMPLATE/config.yml vendored Normal file
View File

@@ -0,0 +1,20 @@
blank_issues_enabled: false
contact_links:
- name: 📖 Marlin Documentation
url: http://marlinfw.org/
about: Lots of documentation on installing and using Marlin.
- name: 👤 MarlinFirmware Facebook group
url: https://www.facebook.com/groups/1049718498464482
about: Please ask and answer questions here.
- name: 🕹 Marlin on Discord
url: https://discord.gg/n5NJ59y
about: Join the Discord server for support and discussion.
- name: 🔗 Marlin Discussion Forum
url: http://forums.reprap.org/list.php?415
about: A searchable web forum hosted by RepRap dot org.
- name: 📺 Marlin Videos on YouTube
url: https://www.youtube.com/results?search_query=marlin+firmware
about: Tutorials and more from Marlin users all around the world. Great for new users!
- name: 💸 Want to donate?
url: https://www.thinkyhead.com/donate-to-marlin
about: Please take a look at the various options to support Marlin Firmware's development financially!

View File

@@ -0,0 +1,44 @@
name: ✨ Request a feature
description: Request a new Marlin Firmware feature
title: "[FR] (feature summary)"
labels: 'T: Feature Request'
body:
- type: markdown
attributes:
value: >
Do you want to ask a question? Are you looking for support? Please use one of the [support links](https://github.com/MarlinFirmware/Marlin/issues/new/choose).
- type: markdown
attributes:
value: >
**Thank you for requesting a new Marlin Firmware feature!**
## Before Requesting a Feature
- Read and understand Marlin's [Code of Conduct](https://github.com/MarlinFirmware/Marlin/blob/master/.github/code_of_conduct.md). You are expected to comply with it, including treating everyone with respect.
- Check the latest [`bugfix-2.0.x` branch](https://github.com/MarlinFirmware/Marlin/archive/bugfix-2.0.x.zip) to see if the feature already exists.
- Before you proceed with your request, please consider if it is necessary to make it into a firmware feature, or if it may be better suited for a slicer or host feature.
- type: textarea
attributes:
label: Is your feature request related to a problem? Please describe.
description: A clear description of the problem (e.g., "I need X but Marlin can't do it [...]").
- type: textarea
attributes:
label: Are you looking for hardware support?
description: Tell us the printer, board, or peripheral that needs support.
- type: textarea
attributes:
label: Describe the feature you want
description: A clear description of the feature and how you think it should work.
validations:
required: true
- type: textarea
attributes:
label: Additional context
description: Add any other context or screenshots about the feature request here.

View File

@@ -1,23 +1,33 @@
### Requirements
<!--
* Filling out this template is required. Pull Requests without a clear description may be closed at the maintainers' discretion.
Submitting a Pull Request
- Please fill out all sections of this form. You can delete the helpful comments.
- Pull Requests without clear information will take longer and may even be rejected.
- We get a high volume of submissions so please be patient during review.
-->
### Description
<!--
We must be able to understand your proposed change from this description. If we can't understand what the code will do from this description, the Pull Request may be closed at the maintainers' discretion. Keep in mind that the maintainer reviewing this PR may not be familiar with or have worked with the code recently, so please walk us through the concepts.
Clearly describe the submitted changes with lots of details. Include images where helpful. Initial reviewers may not be familiar with the subject, so be as thorough as possible. You can use MarkDown syntax to improve readability with bullet lists, code blocks, and so on. PREVIEW and fix up formatting before submitting.
-->
### Requirements
<!-- Does this PR require a specific board, LCD, etc.? -->
### Benefits
<!-- What does this fix or improve? -->
<!-- What does this PR fix or improve? -->
### Configurations
<!-- Attach any Configuration.h, Configuration_adv.h, or platformio.ini files needed to compile/test your Pull Request. -->
<!-- Attach Configurations ZIP and any other files needed to test this PR. -->
### Related Issues
<!-- Whether this fixes a bug or fulfills a feature request, please list any related Issues here. -->
<!-- Does this PR fix a bug or fulfill a Feature Request? Link related Issues here. -->

35
.github/workflows/bump-date.yml vendored Normal file
View File

@@ -0,0 +1,35 @@
#
# bump-date.yml
# Bump the distribution date once per day
#
name: Bump Distribution Date
on:
schedule:
- cron: '0 0 * * *'
jobs:
bump_date:
name: Bump Distribution Date
if: github.repository == 'MarlinFirmware/Marlin'
runs-on: ubuntu-latest
steps:
- name: Check out bugfix-2.0.x
uses: actions/checkout@v2
with:
ref: bugfix-2.0.x
- name: Bump Distribution Date
run: |
# Inline Bump Script
DIST=$( date +"%Y-%m-%d" )
eval "sed -E -i 's/(#define +STRING_DISTRIBUTION_DATE) .*$/\1 \"$DIST\"/g' Marlin/src/inc/Version.h" && \
git config user.name "${GITHUB_ACTOR}" && \
git config user.email "${GITHUB_ACTOR}@users.noreply.github.com" && \
git add . && \
git commit -m "[cron] Bump distribution date ($DIST)" && \
git push

32
.github/workflows/check-pr.yml vendored Normal file
View File

@@ -0,0 +1,32 @@
#
# check-pr.yml
# Close PRs directed at release branches
#
name: PR Bad Target
on:
pull_request:
branches:
- 1.0.x
- 1.1.x
- 2.0.x
jobs:
bad_target:
name: PR Bad Target
if: github.repository == 'MarlinFirmware/Marlin'
runs-on: ubuntu-latest
steps:
- uses: superbrothers/close-pull-request@v3
with:
comment: >
Thanks for your contribution! Unfortunately we can't accept PRs directed at release branches. We make patches to the bugfix branches and only later do we push them out as releases.
Please redo this PR starting with the `bugfix-2.0.x` branch and be careful to target `bugfix-2.0.x` when resubmitting the PR.
It may help to set your fork's default branch to `bugfix-2.0.x`.
See [this page](http://marlinfw.org/docs/development/getting_started_pull_requests.html) for full instructions.

39
.github/workflows/clean-closed.yml vendored Normal file
View File

@@ -0,0 +1,39 @@
#
# clean-closed.yml
# Remove obsolete labels when an Issue or PR is closed
#
name: Clean Closed
on:
pull_request:
types: [closed]
issues:
types: [closed]
jobs:
remove_label:
runs-on: ubuntu-latest
strategy:
matrix:
label:
- "S: Don't Merge"
- "S: Hold for 2.1"
- "S: Please Merge"
- "S: Please Test"
- "help wanted"
- "Needs: Discussion"
- "Needs: Documentation"
- "Needs: More Data"
- "Needs: Patch"
- "Needs: Testing"
- "Needs: Work"
steps:
- uses: actions/checkout@v2
- name: Remove Labels
uses: actions-ecosystem/action-remove-labels@v1
with:
github_token: ${{ github.token }}
labels: ${{ matrix.label }}

28
.github/workflows/close-stale.yml vendored Normal file
View File

@@ -0,0 +1,28 @@
#
# close-stale.yml
# Close open issues after a period of inactivity
#
name: Close Stale Issues
on:
schedule:
- cron: "22 1 * * *"
jobs:
stale:
name: Close Stale Issues
if: github.repository == 'MarlinFirmware/Marlin'
runs-on: ubuntu-latest
steps:
- uses: actions/stale@v3
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
stale-issue-message: 'This issue has had no activity in the last 60 days. Please add a reply if you want to keep this issue active, otherwise it will be automatically closed within 10 days.'
days-before-stale: 60
days-before-close: 10
stale-issue-label: 'stale-closing-soon'
exempt-all-assignees: true
exempt-issue-labels: 'Bug: Confirmed !,T: Feature Request,Needs: Discussion,Needs: Documentation,Needs: More Data,Needs: Patch,Needs: Work,Needs: Testing,help wanted,no-locking'

32
.github/workflows/lock-closed.yml vendored Normal file
View File

@@ -0,0 +1,32 @@
#
# lock-closed.yml
# Lock closed issues after a period of inactivity
#
name: Lock Closed Issues
on:
schedule:
- cron: '0 1/13 * * *'
jobs:
lock:
name: Lock Closed Issues
if: github.repository == 'MarlinFirmware/Marlin'
runs-on: ubuntu-latest
steps:
- uses: dessant/lock-threads@v2
with:
github-token: ${{ github.token }}
process-only: 'issues'
issue-lock-inactive-days: '60'
issue-exclude-created-before: '2017-07-01T00:00:00Z'
issue-exclude-labels: 'no-locking'
issue-lock-labels: ''
issue-lock-comment: >
This issue has been automatically locked since there
has not been any recent activity after it was closed.
Please open a new issue for related bugs.
issue-lock-reason: ''

View File

@@ -56,28 +56,31 @@ jobs:
# STM32F1 (Maple) Environments
- STM32F103RC_btt
- STM32F103RC_btt_USB
- STM32F103RE_btt
- STM32F103RE_btt_USB
#- STM32F103RC_btt_maple
- STM32F103RC_btt_USB_maple
- STM32F103RC_fysetc
- STM32F103RC_meeb
- jgaurora_a5s_a1
- STM32F103VE_longer
- mks_robin
#- mks_robin_maple
- mks_robin_lite
- mks_robin_pro
- STM32F103RET6_creality
- mks_robin_nano35
#- mks_robin_nano35_maple
#- STM32F103RET6_creality_maple
# STM32 (ST) Environments
- STM32F103RC_btt
#- STM32F103RC_btt_USB
- STM32F103RE_btt
- STM32F103RE_btt_USB
- STM32F103RET6_creality
- STM32F407VE_black
- STM32F401VE_STEVAL
- BIGTREE_BTT002
- BIGTREE_SKR_PRO
- BIGTREE_GTR_V1_0
- mks_robin_stm32
- mks_robin
- ARMED
- FYSETC_S6
- STM32F070CB_malyan
@@ -86,7 +89,8 @@ jobs:
- FLYF407ZG
- rumba32
- LERDGEX
- mks_robin_nano35_stm32
- LERDGEK
- mks_robin_nano35
- NUCLEO_F767ZI
- REMRAM_V1
- BTT_SKR_SE_BX
@@ -105,8 +109,25 @@ jobs:
steps:
- name: Check out the PR
uses: actions/checkout@v2
- name: Cache pip
uses: actions/cache@v2
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }}
restore-keys: |
${{ runner.os }}-pip-
- name: Cache PlatformIO
uses: actions/cache@v2
with:
path: ~/.platformio
key: ${{ runner.os }}-${{ hashFiles('**/lockfiles') }}
- name: Select Python 3.7
uses: actions/setup-python@v1
uses: actions/setup-python@v2
with:
python-version: '3.7' # Version range or exact version of a Python version to use, using semvers version range syntax.
architecture: 'x64' # optional x64 or x86. Defaults to x64 if not specified
@@ -116,9 +137,6 @@ jobs:
pip install -U https://github.com/platformio/platformio-core/archive/develop.zip
platformio update
- name: Check out the PR
uses: actions/checkout@v2
- name: Run ${{ matrix.test-platform }} Tests
run: |
make tests-single-ci TEST_TARGET=${{ matrix.test-platform }}

22
.github/workflows/unlock-reopened.yml vendored Normal file
View File

@@ -0,0 +1,22 @@
#
# unlock-reopened.yml
# Unlock an issue whenever it is re-opened
#
name: "Unlock reopened issue"
on:
issues:
types: [reopened]
jobs:
unlock:
name: Unlock Reopened
if: github.repository == 'MarlinFirmware/Marlin'
runs-on: ubuntu-latest
steps:
- uses: OSDKDev/unlock-issues@v1.1
with:
repo-token: "${{ secrets.GITHUB_TOKEN }}"

View File

@@ -35,7 +35,7 @@
*
* Advanced settings can be found in Configuration_adv.h
*/
#define CONFIGURATION_H_VERSION 020008
#define CONFIGURATION_H_VERSION 02000901
//===========================================================================
//============================= Getting Started =============================
@@ -105,14 +105,9 @@
#define SERIAL_PORT 0
/**
* Select a secondary serial port on the board to use for communication with the host.
* Currently Ethernet (-2) is only supported on Teensy 4.1 boards.
* :[-2, -1, 0, 1, 2, 3, 4, 5, 6, 7]
*/
//#define SERIAL_PORT_2 -1
/**
* This setting determines the communication speed of the printer.
* Serial Port Baud Rate
* This is the default communication speed for all serial ports.
* Set the baud rate defaults for additional serial ports below.
*
* 250000 works in most cases, but you might try a lower speed if
* you commonly experience drop-outs during host printing.
@@ -121,6 +116,23 @@
* :[2400, 9600, 19200, 38400, 57600, 115200, 250000, 500000, 1000000]
*/
#define BAUDRATE 250000
//#define BAUD_RATE_GCODE // Enable G-code M575 to set the baud rate
/**
* Select a secondary serial port on the board to use for communication with the host.
* Currently Ethernet (-2) is only supported on Teensy 4.1 boards.
* :[-2, -1, 0, 1, 2, 3, 4, 5, 6, 7]
*/
//#define SERIAL_PORT_2 -1
//#define BAUDRATE_2 250000 // Enable to override BAUDRATE
/**
* Select a third serial port on the board to use for communication with the host.
* Currently only supported for AVR, DUE, LPC1768/9 and STM32/STM32F1
* :[-1, 0, 1, 2, 3, 4, 5, 6, 7]
*/
//#define SERIAL_PORT_3 1
//#define BAUDRATE_3 250000 // Enable to override BAUDRATE
// Enable the Bluetooth serial interface on AT90USB devices
//#define BLUETOOTH
@@ -137,6 +149,45 @@
// Choose your own or use a service like https://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
/**
* Define the number of coordinated linear axes.
* See https://github.com/DerAndere1/Marlin/wiki
* Each linear axis gets its own stepper control and endstop:
*
* Steppers: *_STEP_PIN, *_ENABLE_PIN, *_DIR_PIN, *_ENABLE_ON
* Endstops: *_STOP_PIN, USE_*MIN_PLUG, USE_*MAX_PLUG
* Axes: *_MIN_POS, *_MAX_POS, INVERT_*_DIR
* Planner: DEFAULT_AXIS_STEPS_PER_UNIT, DEFAULT_MAX_FEEDRATE
* DEFAULT_MAX_ACCELERATION, AXIS_RELATIVE_MODES,
* MICROSTEP_MODES, MANUAL_FEEDRATE
*
* :[3, 4, 5, 6]
*/
//#define LINEAR_AXES 3
/**
* Axis codes for additional axes:
* This defines the axis code that is used in G-code commands to
* reference a specific axis.
* 'A' for rotational axis parallel to X
* 'B' for rotational axis parallel to Y
* 'C' for rotational axis parallel to Z
* 'U' for secondary linear axis parallel to X
* 'V' for secondary linear axis parallel to Y
* 'W' for secondary linear axis parallel to Z
* Regardless of the settings, firmware-internal axis IDs are
* I (AXIS4), J (AXIS5), K (AXIS6).
*/
#if LINEAR_AXES >= 4
#define AXIS4_NAME 'A' // :['A', 'B', 'C', 'U', 'V', 'W']
#endif
#if LINEAR_AXES >= 5
#define AXIS5_NAME 'B' // :['A', 'B', 'C', 'U', 'V', 'W']
#endif
#if LINEAR_AXES >= 6
#define AXIS6_NAME 'C' // :['A', 'B', 'C', 'U', 'V', 'W']
#endif
// @section extruder
// This defines the number of extruders
@@ -421,6 +472,7 @@
#define TEMP_SENSOR_PROBE 0
#define TEMP_SENSOR_CHAMBER 0
#define TEMP_SENSOR_COOLER 0
#define TEMP_SENSOR_REDUNDANT 0
// Dummy thermistor constant temperature readings, for use with 998 and 999
#define DUMMY_THERMISTOR_998_VALUE 25
@@ -432,11 +484,6 @@
//#define MAX31865_SENSOR_OHMS_1 100
//#define MAX31865_CALIBRATION_OHMS_1 430
// Use temp sensor 1 as a redundant sensor with sensor 0. If the readings
// from the two sensors differ too much the print will be aborted.
//#define TEMP_SENSOR_1_AS_REDUNDANT
#define MAX_REDUNDANT_TEMP_SENSOR_DIFF 10
#define TEMP_RESIDENCY_TIME 10 // (seconds) Time to wait for hotend to "settle" in M109
#define TEMP_WINDOW 1 // (°C) Temperature proximity for the "temperature reached" timer
#define TEMP_HYSTERESIS 3 // (°C) Temperature proximity considered "close enough" to the target
@@ -449,6 +496,28 @@
#define TEMP_CHAMBER_WINDOW 1 // (°C) Temperature proximity for the "temperature reached" timer
#define TEMP_CHAMBER_HYSTERESIS 3 // (°C) Temperature proximity considered "close enough" to the target
/**
* Redundant Temperature Sensor (TEMP_SENSOR_REDUNDANT)
*
* Use a temp sensor as a redundant sensor for another reading. Select an unused temperature sensor, and another
* sensor you'd like it to be redundant for. If the two thermistors differ by TEMP_SENSOR_REDUNDANT_MAX_DIFF (°C),
* the print will be aborted. Whichever sensor is selected will have its normal functions disabled; i.e. selecting
* the Bed sensor (-1) will disable bed heating/monitoring.
*
* Use the following to select temp sensors:
* -5 : Cooler
* -4 : Probe
* -3 : not used
* -2 : Chamber
* -1 : Bed
* 0-7 : E0 through E7
*/
#if TEMP_SENSOR_REDUNDANT
#define TEMP_SENSOR_REDUNDANT_SOURCE 1 // The sensor that will provide the redundant reading.
#define TEMP_SENSOR_REDUNDANT_TARGET 0 // The sensor that we are providing a redundant reading for.
#define TEMP_SENSOR_REDUNDANT_MAX_DIFF 10 // (°C) Temperature difference that will trigger a print abort.
#endif
// Below this temperature the heater will be switched off
// because it probably indicates a broken thermistor wire.
#define HEATER_0_MINTEMP 5
@@ -679,9 +748,15 @@
#define USE_XMIN_PLUG
#define USE_YMIN_PLUG
#define USE_ZMIN_PLUG
//#define USE_IMIN_PLUG
//#define USE_JMIN_PLUG
//#define USE_KMIN_PLUG
//#define USE_XMAX_PLUG
//#define USE_YMAX_PLUG
//#define USE_ZMAX_PLUG
//#define USE_IMAX_PLUG
//#define USE_JMAX_PLUG
//#define USE_KMAX_PLUG
// Enable pullup for all endstops to prevent a floating state
#define ENDSTOPPULLUPS
@@ -690,9 +765,15 @@
//#define ENDSTOPPULLUP_XMAX
//#define ENDSTOPPULLUP_YMAX
//#define ENDSTOPPULLUP_ZMAX
//#define ENDSTOPPULLUP_IMAX
//#define ENDSTOPPULLUP_JMAX
//#define ENDSTOPPULLUP_KMAX
//#define ENDSTOPPULLUP_XMIN
//#define ENDSTOPPULLUP_YMIN
//#define ENDSTOPPULLUP_ZMIN
//#define ENDSTOPPULLUP_IMIN
//#define ENDSTOPPULLUP_JMIN
//#define ENDSTOPPULLUP_KMIN
//#define ENDSTOPPULLUP_ZMIN_PROBE
#endif
@@ -703,9 +784,15 @@
//#define ENDSTOPPULLDOWN_XMAX
//#define ENDSTOPPULLDOWN_YMAX
//#define ENDSTOPPULLDOWN_ZMAX
//#define ENDSTOPPULLDOWN_IMAX
//#define ENDSTOPPULLDOWN_JMAX
//#define ENDSTOPPULLDOWN_KMAX
//#define ENDSTOPPULLDOWN_XMIN
//#define ENDSTOPPULLDOWN_YMIN
//#define ENDSTOPPULLDOWN_ZMIN
//#define ENDSTOPPULLDOWN_IMIN
//#define ENDSTOPPULLDOWN_JMIN
//#define ENDSTOPPULLDOWN_KMIN
//#define ENDSTOPPULLDOWN_ZMIN_PROBE
#endif
@@ -713,9 +800,15 @@
#define X_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
#define Y_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
#define Z_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
#define I_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
#define J_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
#define K_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
#define X_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
#define Y_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
#define Z_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
#define I_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
#define J_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
#define K_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
#define Z_MIN_PROBE_ENDSTOP_INVERTING false // Set to true to invert the logic of the probe.
/**
@@ -744,6 +837,9 @@
//#define Z2_DRIVER_TYPE A4988
//#define Z3_DRIVER_TYPE A4988
//#define Z4_DRIVER_TYPE A4988
//#define I_DRIVER_TYPE A4988
//#define J_DRIVER_TYPE A4988
//#define K_DRIVER_TYPE A4988
#define E0_DRIVER_TYPE A4988
//#define E1_DRIVER_TYPE A4988
//#define E2_DRIVER_TYPE A4988
@@ -797,14 +893,14 @@
/**
* Default Axis Steps Per Unit (steps/mm)
* Override with M92
* X, Y, Z, E0 [, E1[, E2...]]
* X, Y, Z [, I [, J [, K]]], E0 [, E1[, E2...]]
*/
#define DEFAULT_AXIS_STEPS_PER_UNIT { 80, 80, 400, 500 }
/**
* Default Max Feed Rate (mm/s)
* Override with M203
* X, Y, Z, E0 [, E1[, E2...]]
* X, Y, Z [, I [, J [, K]]], E0 [, E1[, E2...]]
*/
#define DEFAULT_MAX_FEEDRATE { 300, 300, 5, 25 }
@@ -817,7 +913,7 @@
* Default Max Acceleration (change/s) change = mm/s
* (Maximum start speed for accelerated moves)
* Override with M201
* X, Y, Z, E0 [, E1[, E2...]]
* X, Y, Z [, I [, J [, K]]], E0 [, E1[, E2...]]
*/
#define DEFAULT_MAX_ACCELERATION { 3000, 3000, 100, 10000 }
@@ -851,6 +947,9 @@
#define DEFAULT_XJERK 10.0
#define DEFAULT_YJERK 10.0
#define DEFAULT_ZJERK 0.3
//#define DEFAULT_IJERK 0.3
//#define DEFAULT_JJERK 0.3
//#define DEFAULT_KJERK 0.3
//#define TRAVEL_EXTRA_XYJERK 0.0 // Additional jerk allowance for all travel moves
@@ -1149,7 +1248,8 @@
//#define WAIT_FOR_HOTEND // Wait for hotend to heat back up between probes (to improve accuracy & prevent cold extrude)
#endif
//#define PROBING_FANS_OFF // Turn fans off when probing
//#define PROBING_STEPPERS_OFF // Turn steppers off (unless needed to hold position) when probing
//#define PROBING_ESTEPPERS_OFF // Turn all extruder steppers off when probing
//#define PROBING_STEPPERS_OFF // Turn all steppers off (unless needed to hold position) when probing (including extruders)
//#define DELAY_BEFORE_PROBING 200 // (ms) To prevent vibrations from triggering piezo sensors
// Require minimum nozzle and/or bed temperature for probing
@@ -1165,12 +1265,18 @@
#define Y_ENABLE_ON 0
#define Z_ENABLE_ON 0
#define E_ENABLE_ON 0 // For all extruders
//#define I_ENABLE_ON 0
//#define J_ENABLE_ON 0
//#define K_ENABLE_ON 0
// Disable axis steppers immediately when they're not being stepped.
// WARNING: When motors turn off there is a chance of losing position accuracy!
#define DISABLE_X false
#define DISABLE_Y false
#define DISABLE_Z false
//#define DISABLE_I false
//#define DISABLE_J false
//#define DISABLE_K false
// Turn off the display blinking that warns about possible accuracy reduction
//#define DISABLE_REDUCED_ACCURACY_WARNING
@@ -1186,6 +1292,9 @@
#define INVERT_X_DIR false
#define INVERT_Y_DIR true
#define INVERT_Z_DIR false
//#define INVERT_I_DIR false
//#define INVERT_J_DIR false
//#define INVERT_K_DIR false
// @section extruder
@@ -1221,6 +1330,9 @@
#define X_HOME_DIR -1
#define Y_HOME_DIR -1
#define Z_HOME_DIR -1
//#define I_HOME_DIR -1
//#define J_HOME_DIR -1
//#define K_HOME_DIR -1
// @section machine
@@ -1235,6 +1347,12 @@
#define X_MAX_POS X_BED_SIZE
#define Y_MAX_POS Y_BED_SIZE
#define Z_MAX_POS 200
//#define I_MIN_POS 0
//#define I_MAX_POS 50
//#define J_MIN_POS 0
//#define J_MAX_POS 50
//#define K_MIN_POS 0
//#define K_MAX_POS 50
/**
* Software Endstops
@@ -1251,6 +1369,9 @@
#define MIN_SOFTWARE_ENDSTOP_X
#define MIN_SOFTWARE_ENDSTOP_Y
#define MIN_SOFTWARE_ENDSTOP_Z
#define MIN_SOFTWARE_ENDSTOP_I
#define MIN_SOFTWARE_ENDSTOP_J
#define MIN_SOFTWARE_ENDSTOP_K
#endif
// Max software endstops constrain movement within maximum coordinate bounds
@@ -1259,6 +1380,9 @@
#define MAX_SOFTWARE_ENDSTOP_X
#define MAX_SOFTWARE_ENDSTOP_Y
#define MAX_SOFTWARE_ENDSTOP_Z
#define MAX_SOFTWARE_ENDSTOP_I
#define MAX_SOFTWARE_ENDSTOP_J
#define MAX_SOFTWARE_ENDSTOP_K
#endif
#if EITHER(MIN_SOFTWARE_ENDSTOPS, MAX_SOFTWARE_ENDSTOPS)
@@ -1491,6 +1615,8 @@
//#define UBL_Z_RAISE_WHEN_OFF_MESH 2.5 // When the nozzle is off the mesh, this value is used
// as the Z-Height correction value.
//#define UBL_MESH_WIZARD // Run several commands in a row to get a complete mesh
#elif ENABLED(MESH_BED_LEVELING)
//===========================================================================
@@ -1568,6 +1694,9 @@
//#define MANUAL_X_HOME_POS 0
//#define MANUAL_Y_HOME_POS 0
//#define MANUAL_Z_HOME_POS 0
//#define MANUAL_I_HOME_POS 0
//#define MANUAL_J_HOME_POS 0
//#define MANUAL_K_HOME_POS 0
// Use "Z Safe Homing" to avoid homing with a Z probe outside the bed area.
//
@@ -1810,11 +1939,20 @@
/**
* Print Job Timer
*
* Automatically start and stop the print job timer on M104/M109/M190.
* Automatically start and stop the print job timer on M104/M109/M140/M190/M141/M191.
* The print job timer will only be stopped if the bed/chamber target temp is
* below BED_MINTEMP/CHAMBER_MINTEMP.
*
* M104 (hotend, no wait) - high temp = none, low temp = stop timer
* M109 (hotend, wait) - high temp = start timer, low temp = stop timer
* M190 (bed, wait) - high temp = start timer, low temp = none
* M104 (hotend, no wait) - high temp = none, low temp = stop timer
* M109 (hotend, wait) - high temp = start timer, low temp = stop timer
* M140 (bed, no wait) - high temp = none, low temp = stop timer
* M190 (bed, wait) - high temp = start timer, low temp = none
* M141 (chamber, no wait) - high temp = none, low temp = stop timer
* M191 (chamber, wait) - high temp = start timer, low temp = none
*
* For M104/M109, high temp is anything over EXTRUDE_MINTEMP / 2.
* For M140/M190, high temp is anything over BED_MINTEMP.
* For M141/M191, high temp is anything over CHAMBER_MINTEMP.
*
* The timer can also be controlled with the following commands:
*
@@ -2258,7 +2396,8 @@
// MKS LCD12864A/B with graphic controller and SD support. Follows MKS_MINI_12864 pinout.
// https://www.aliexpress.com/item/33018110072.html
//
//#define MKS_LCD12864
//#define MKS_LCD12864A
//#define MKS_LCD12864B
//
// FYSETC variant of the MINI12864 graphic controller with SD support
@@ -2561,7 +2700,7 @@
//#define DWIN_CREALITY_LCD
//
// ADS7843/XPT2046 ADC Touchscreen such as ILI9341 2.8
// Touch Screen Settings
//
//#define TOUCH_SCREEN
#if ENABLED(TOUCH_SCREEN)
@@ -2675,7 +2814,7 @@
//#define NEOPIXEL_LED
#if ENABLED(NEOPIXEL_LED)
#define NEOPIXEL_TYPE NEO_GRBW // NEO_GRBW / NEO_GRB - four/three channel driver type (defined in Adafruit_NeoPixel.h)
#define NEOPIXEL_PIN 4 // LED driving pin
//#define NEOPIXEL_PIN 4 // LED driving pin
//#define NEOPIXEL2_TYPE NEOPIXEL_TYPE
//#define NEOPIXEL2_PIN 5
#define NEOPIXEL_PIXELS 30 // Number of LEDs in the strip. (Longest strip when NEOPIXEL2_SEPARATE is disabled.)
@@ -2693,10 +2832,11 @@
//#define NEOPIXEL2_INSERIES // Default behavior is NeoPixel 2 in parallel
#endif
// Use a single NeoPixel LED for static (background) lighting
//#define NEOPIXEL_BKGD_LED_INDEX 0 // Index of the LED to use
//#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
//#define NEOPIXEL_BKGD_ALWAYS_ON // Keep the backlight on when other NeoPixels are off
// Use some of the NeoPixel LEDs for static (background) lighting
//#define NEOPIXEL_BKGD_INDEX_FIRST 0 // Index of the first background LED
//#define NEOPIXEL_BKGD_INDEX_LAST 5 // Index of the last background LED
//#define NEOPIXEL_BKGD_COLOR { 255, 255, 255, 0 } // R, G, B, W
//#define NEOPIXEL_BKGD_ALWAYS_ON // Keep the backlight on when other NeoPixels are off
#endif
/**

View File

@@ -30,7 +30,7 @@
*
* Basic settings can be found in Configuration.h
*/
#define CONFIGURATION_ADV_H_VERSION 020008
#define CONFIGURATION_ADV_H_VERSION 02000901
//===========================================================================
//============================= Thermal Settings ============================
@@ -125,6 +125,12 @@
#define PROBE_BETA 3950 // Beta value
#endif
#if TEMP_SENSOR_REDUNDANT == 1000
#define REDUNDANT_PULLUP_RESISTOR_OHMS 4700 // Pullup resistor
#define REDUNDANT_RESISTANCE_25C_OHMS 100000 // Resistance at 25C
#define REDUNDANT_BETA 3950 // Beta value
#endif
//
// Hephestos 2 24V heated bed upgrade kit.
// https://store.bq.com/en/heated-bed-kit-hephestos2
@@ -196,7 +202,7 @@
#define COOLER_MAXTEMP 26 // (°C)
#define COOLER_DEFAULT_TEMP 16 // (°C)
#define TEMP_COOLER_HYSTERESIS 1 // (°C) Temperature proximity considered "close enough" to the target
#define COOLER_PIN 8 // Laser cooler on/off pin used to control power to the cooling element e.g. TEC, External chiller via relay
#define COOLER_PIN 8 // Laser cooler on/off pin used to control power to the cooling element (e.g., TEC, External chiller via relay)
#define COOLER_INVERTING false
#define TEMP_COOLER_PIN 15 // Laser/Cooler temperature sensor pin. ADC is required.
#define COOLER_FAN // Enable a fan on the cooler, Fan# 0,1,2,3 etc.
@@ -526,6 +532,11 @@
//#define USE_OCR2A_AS_TOP
#endif
/**
* Use one of the PWM fans as a redundant part-cooling fan
*/
//#define REDUNDANT_PART_COOLING_FAN 2 // Index of the fan to sync with FAN 0.
// @section extruder
/**
@@ -671,6 +682,12 @@
#endif
#endif
// Drive the E axis with two synchronized steppers
//#define E_DUAL_STEPPER_DRIVERS
#if ENABLED(E_DUAL_STEPPER_DRIVERS)
//#define INVERT_E1_VS_E0_DIR // Enable if the E motors need opposite DIR states
#endif
/**
* Dual X Carriage
*
@@ -734,7 +751,7 @@
* the position of the toolhead relative to the workspace.
*/
//#define SENSORLESS_BACKOFF_MM { 2, 2 } // (mm) Backoff from endstops before sensorless homing
//#define SENSORLESS_BACKOFF_MM { 2, 2, 0 } // (mm) Backoff from endstops before sensorless homing
#define HOMING_BUMP_MM { 5, 5, 2 } // (mm) Backoff from endstops after first bump
#define HOMING_BUMP_DIVISOR { 2, 2, 4 } // Re-Bump Speed Divisor (Divides the Homing Feedrate)
@@ -918,6 +935,9 @@
#define INVERT_X_STEP_PIN false
#define INVERT_Y_STEP_PIN false
#define INVERT_Z_STEP_PIN false
#define INVERT_I_STEP_PIN false
#define INVERT_J_STEP_PIN false
#define INVERT_K_STEP_PIN false
#define INVERT_E_STEP_PIN false
/**
@@ -929,6 +949,9 @@
#define DISABLE_INACTIVE_X true
#define DISABLE_INACTIVE_Y true
#define DISABLE_INACTIVE_Z true // Set 'false' if the nozzle could fall onto your printed part!
#define DISABLE_INACTIVE_I true
#define DISABLE_INACTIVE_J true
#define DISABLE_INACTIVE_K true
#define DISABLE_INACTIVE_E true
// Default Minimum Feedrates for printing and travel moves
@@ -969,7 +992,7 @@
#if ENABLED(BACKLASH_COMPENSATION)
// Define values for backlash distance and correction.
// If BACKLASH_GCODE is enabled these values are the defaults.
#define BACKLASH_DISTANCE_MM { 0, 0, 0 } // (mm)
#define BACKLASH_DISTANCE_MM { 0, 0, 0 } // (mm) One value for each linear axis
#define BACKLASH_CORRECTION 0.0 // 0.0 = no correction; 1.0 = full correction
// Add steps for motor direction changes on CORE kinematics
@@ -1040,6 +1063,13 @@
#define CALIBRATION_MEASURE_LEFT
#define CALIBRATION_MEASURE_BACK
//#define CALIBRATION_MEASURE_IMIN
//#define CALIBRATION_MEASURE_IMAX
//#define CALIBRATION_MEASURE_JMIN
//#define CALIBRATION_MEASURE_JMAX
//#define CALIBRATION_MEASURE_KMIN
//#define CALIBRATION_MEASURE_KMAX
// Probing at the exact top center only works if the center is flat. If
// probing on a screwhead or hollow washer, probe near the edges.
//#define CALIBRATION_MEASURE_AT_TOP_EDGES
@@ -1301,6 +1331,8 @@
//#define BROWSE_MEDIA_ON_INSERT // Open the file browser when media is inserted
//#define MEDIA_MENU_AT_TOP // Force the media menu to be listed on the top of the main menu
#define EVENT_GCODE_SD_ABORT "G28XY" // G-code to run on SD Abort Print (e.g., "G28XY" or "G27")
#if ENABLED(PRINTER_EVENT_LEDS)
@@ -1486,8 +1518,8 @@
#if ENABLED(MULTI_VOLUME)
#define VOLUME_SD_ONBOARD
#define VOLUME_USB_FLASH_DRIVE
#define DEFAULT_VOLUME SD_ONBOARD
#define DEFAULT_SHARED_VOLUME USB_FLASH_DRIVE
#define DEFAULT_VOLUME SV_SD_ONBOARD
#define DEFAULT_SHARED_VOLUME SV_USB_FLASH_DRIVE
#endif
#endif // SDSUPPORT
@@ -1562,7 +1594,7 @@
*/
//#define STATUS_COMBINE_HEATERS // Use combined heater images instead of separate ones
//#define STATUS_HOTEND_NUMBERLESS // Use plain hotend icons instead of numbered ones (with 2+ hotends)
#define STATUS_HOTEND_INVERTED // Show solid nozzle bitmaps when heating (Requires STATUS_HOTEND_ANIM)
#define STATUS_HOTEND_INVERTED // Show solid nozzle bitmaps when heating (Requires STATUS_HOTEND_ANIM for numbered hotends)
#define STATUS_HOTEND_ANIM // Use a second bitmap to indicate hotend heating
#define STATUS_BED_ANIM // Use a second bitmap to indicate bed heating
#define STATUS_CHAMBER_ANIM // Use a second bitmap to indicate chamber heating
@@ -1940,30 +1972,30 @@
//#define USE_TEMP_EXT_COMPENSATION
// Probe temperature calibration generates a table of values starting at PTC_SAMPLE_START
// (e.g. 30), in steps of PTC_SAMPLE_RES (e.g. 5) with PTC_SAMPLE_COUNT (e.g. 10) samples.
// (e.g., 30), in steps of PTC_SAMPLE_RES (e.g., 5) with PTC_SAMPLE_COUNT (e.g., 10) samples.
//#define PTC_SAMPLE_START 30.0f
//#define PTC_SAMPLE_RES 5.0f
//#define PTC_SAMPLE_COUNT 10U
//#define PTC_SAMPLE_START 30 // (°C)
//#define PTC_SAMPLE_RES 5 // (°C)
//#define PTC_SAMPLE_COUNT 10
// Bed temperature calibration builds a similar table.
//#define BTC_SAMPLE_START 60.0f
//#define BTC_SAMPLE_RES 5.0f
//#define BTC_SAMPLE_COUNT 10U
//#define BTC_SAMPLE_START 60 // (°C)
//#define BTC_SAMPLE_RES 5 // (°C)
//#define BTC_SAMPLE_COUNT 10
// The temperature the probe should be at while taking measurements during bed temperature
// calibration.
//#define BTC_PROBE_TEMP 30.0f
//#define BTC_PROBE_TEMP 30 // (°C)
// Height above Z=0.0f to raise the nozzle. Lowering this can help the probe to heat faster.
// Note: the Z=0.0f offset is determined by the probe offset which can be set using M851.
//#define PTC_PROBE_HEATING_OFFSET 0.5f
// Height above Z=0.0 to raise the nozzle. Lowering this can help the probe to heat faster.
// Note: the Z=0.0 offset is determined by the probe offset which can be set using M851.
//#define PTC_PROBE_HEATING_OFFSET 0.5
// Height to raise the Z-probe between heating and taking the next measurement. Some probes
// may fail to untrigger if they have been triggered for a long time, which can be solved by
// increasing the height the probe is raised to.
//#define PTC_PROBE_RAISE 15U
//#define PTC_PROBE_RAISE 15
// If the probe is outside of the defined range, use linear extrapolation using the closest
// point and the PTC_LINEAR_EXTRAPOLATION'th next point. E.g. if set to 4 it will use data[0]
@@ -2078,7 +2110,7 @@
// @section motion
// The number of linear moves that can be in the planner at once.
// The value of BLOCK_BUFFER_SIZE must be a power of 2 (e.g. 8, 16, 32)
// The value of BLOCK_BUFFER_SIZE must be a power of 2 (e.g., 8, 16, 32)
#if BOTH(SDSUPPORT, DIRECT_STEPPING)
#define BLOCK_BUFFER_SIZE 8
#elif ENABLED(SDSUPPORT)
@@ -2114,9 +2146,6 @@
//#define SERIAL_XON_XOFF
#endif
// Add M575 G-code to change the baud rate
//#define BAUD_RATE_GCODE
#if ENABLED(SDSUPPORT)
// Enable this option to collect and display the maximum
// RX queue usage after transferring a file to SD.
@@ -2237,6 +2266,13 @@
//#define EVENT_GCODE_AFTER_TOOLCHANGE "G12X" // Extra G-code to run after tool-change
#endif
/**
* Extra G-code to run while executing tool-change commands. Can be used to use an additional
* stepper motor (I axis, see option LINEAR_AXES in Configuration.h) to drive the tool-changer.
*/
//#define EVENT_GCODE_TOOLCHANGE_T0 "G28 A\nG1 A0" // Extra G-code to run while executing tool-change command T0
//#define EVENT_GCODE_TOOLCHANGE_T1 "G1 A10" // Extra G-code to run while executing tool-change command T1
/**
* Tool Sensors detect when tools have been picked up or dropped.
* Requires the pins TOOL_SENSOR1_PIN, TOOL_SENSOR2_PIN, etc.
@@ -2301,14 +2337,15 @@
#endif // HAS_MULTI_EXTRUDER
/**
* Advanced Pause
* Experimental feature for filament change support and for parking the nozzle when paused.
* Adds the GCode M600 for initiating filament change.
* If PARK_HEAD_ON_PAUSE enabled, adds the GCode M125 to pause printing and park the nozzle.
* Advanced Pause for Filament Change
* - Adds the G-code M600 Filament Change to initiate a filament change.
* - This feature is required for the default FILAMENT_RUNOUT_SCRIPT.
*
* Requires an LCD display.
* Requires NOZZLE_PARK_FEATURE.
* This feature is required for the default FILAMENT_RUNOUT_SCRIPT.
* Requirements:
* - For Filament Change parking enable and configure NOZZLE_PARK_FEATURE.
* - For user interaction enable an LCD display, HOST_PROMPT_SUPPORT, or EMERGENCY_PARSER.
*
* Enable PARK_HEAD_ON_PAUSE to add the G-code M125 Pause and Park.
*/
//#define ADVANCED_PAUSE_FEATURE
#if ENABLED(ADVANCED_PAUSE_FEATURE)
@@ -2413,6 +2450,24 @@
#define Z4_MICROSTEPS Z_MICROSTEPS
#endif
#if AXIS_DRIVER_TYPE_I(TMC26X)
#define I_MAX_CURRENT 1000
#define I_SENSE_RESISTOR 91
#define I_MICROSTEPS 16
#endif
#if AXIS_DRIVER_TYPE_J(TMC26X)
#define J_MAX_CURRENT 1000
#define J_SENSE_RESISTOR 91
#define J_MICROSTEPS 16
#endif
#if AXIS_DRIVER_TYPE_K(TMC26X)
#define K_MAX_CURRENT 1000
#define K_SENSE_RESISTOR 91
#define K_MICROSTEPS 16
#endif
#if AXIS_DRIVER_TYPE_E0(TMC26X)
#define E0_MAX_CURRENT 1000
#define E0_SENSE_RESISTOR 91
@@ -2563,6 +2618,33 @@
//#define Z4_INTERPOLATE true
#endif
#if AXIS_IS_TMC(I)
#define I_CURRENT 800
#define I_CURRENT_HOME I_CURRENT
#define I_MICROSTEPS 16
#define I_RSENSE 0.11
#define I_CHAIN_POS -1
//#define I_INTERPOLATE true
#endif
#if AXIS_IS_TMC(J)
#define J_CURRENT 800
#define J_CURRENT_HOME J_CURRENT
#define J_MICROSTEPS 16
#define J_RSENSE 0.11
#define J_CHAIN_POS -1
//#define J_INTERPOLATE true
#endif
#if AXIS_IS_TMC(K)
#define K_CURRENT 800
#define K_CURRENT_HOME K_CURRENT
#define K_MICROSTEPS 16
#define K_RSENSE 0.11
#define K_CHAIN_POS -1
//#define K_INTERPOLATE true
#endif
#if AXIS_IS_TMC(E0)
#define E0_CURRENT 800
#define E0_MICROSTEPS 16
@@ -2638,6 +2720,10 @@
//#define Y2_CS_PIN -1
//#define Z2_CS_PIN -1
//#define Z3_CS_PIN -1
//#define Z4_CS_PIN -1
//#define I_CS_PIN -1
//#define J_CS_PIN -1
//#define K_CS_PIN -1
//#define E0_CS_PIN -1
//#define E1_CS_PIN -1
//#define E2_CS_PIN -1
@@ -2677,6 +2763,9 @@
//#define Z2_SLAVE_ADDRESS 0
//#define Z3_SLAVE_ADDRESS 0
//#define Z4_SLAVE_ADDRESS 0
//#define I_SLAVE_ADDRESS 0
//#define J_SLAVE_ADDRESS 0
//#define K_SLAVE_ADDRESS 0
//#define E0_SLAVE_ADDRESS 0
//#define E1_SLAVE_ADDRESS 0
//#define E2_SLAVE_ADDRESS 0
@@ -2701,6 +2790,9 @@
*/
#define STEALTHCHOP_XY
#define STEALTHCHOP_Z
#define STEALTHCHOP_I
#define STEALTHCHOP_J
#define STEALTHCHOP_K
#define STEALTHCHOP_E
/**
@@ -2772,6 +2864,9 @@
#define Z2_HYBRID_THRESHOLD 3
#define Z3_HYBRID_THRESHOLD 3
#define Z4_HYBRID_THRESHOLD 3
#define I_HYBRID_THRESHOLD 3
#define J_HYBRID_THRESHOLD 3
#define K_HYBRID_THRESHOLD 3
#define E0_HYBRID_THRESHOLD 30
#define E1_HYBRID_THRESHOLD 30
#define E2_HYBRID_THRESHOLD 30
@@ -2797,7 +2892,7 @@
*
* It is recommended to set HOMING_BUMP_MM to { 0, 0, 0 }.
*
* SPI_ENDSTOPS *** Beta feature! *** TMC2130 Only ***
* SPI_ENDSTOPS *** Beta feature! *** TMC2130/TMC5160 Only ***
* Poll the driver through SPI to determine load when homing.
* Removes the need for a wire from DIAG1 to an endstop pin.
*
@@ -2818,6 +2913,9 @@
//#define Z2_STALL_SENSITIVITY Z_STALL_SENSITIVITY
//#define Z3_STALL_SENSITIVITY Z_STALL_SENSITIVITY
//#define Z4_STALL_SENSITIVITY Z_STALL_SENSITIVITY
//#define I_STALL_SENSITIVITY 8
//#define J_STALL_SENSITIVITY 8
//#define K_STALL_SENSITIVITY 8
//#define SPI_ENDSTOPS // TMC2130 only
//#define IMPROVE_HOMING_RELIABILITY
#endif
@@ -2958,6 +3056,33 @@
#define Z4_SLEW_RATE 1
#endif
#if AXIS_DRIVER_TYPE_I(L6470)
#define I_MICROSTEPS 128
#define I_OVERCURRENT 2000
#define I_STALLCURRENT 1500
#define I_MAX_VOLTAGE 127
#define I_CHAIN_POS -1
#define I_SLEW_RATE 1
#endif
#if AXIS_DRIVER_TYPE_J(L6470)
#define J_MICROSTEPS 128
#define J_OVERCURRENT 2000
#define J_STALLCURRENT 1500
#define J_MAX_VOLTAGE 127
#define J_CHAIN_POS -1
#define J_SLEW_RATE 1
#endif
#if AXIS_DRIVER_TYPE_K(L6470)
#define K_MICROSTEPS 128
#define K_OVERCURRENT 2000
#define K_STALLCURRENT 1500
#define K_MAX_VOLTAGE 127
#define K_CHAIN_POS -1
#define K_SLEW_RATE 1
#endif
#if AXIS_IS_L64XX(E0)
#define E0_MICROSTEPS 128
#define E0_OVERCURRENT 2000
@@ -3166,13 +3291,19 @@
//#define AIR_EVACUATION // Cutter Vacuum / Laser Blower motor control with G-codes M10-M11
#if ENABLED(AIR_EVACUATION)
#define AIR_EVACUATION_ACTIVE LOW // Set to "HIGH" if the on/off function is active HIGH
#define AIR_EVACUATION_PIN 42 // Override the default Cutter Vacuum or Laser Blower pin
//#define AIR_EVACUATION_PIN 42 // Override the default Cutter Vacuum or Laser Blower pin
#endif
//#define SPINDLE_SERVO // A servo converting an angle to spindle power
//#define AIR_ASSIST // Air Assist control with G-codes M8-M9
#if ENABLED(AIR_ASSIST)
#define AIR_ASSIST_ACTIVE LOW // Active state on air assist pin
//#define AIR_ASSIST_PIN 44 // Override the default Air Assist pin
#endif
//#define SPINDLE_SERVO // A servo converting an angle to spindle power
#ifdef SPINDLE_SERVO
#define SPINDLE_SERVO_NR 0 // Index of servo used for spindle control
#define SPINDLE_SERVO_MIN 10 // Minimum angle for servo spindle
#define SPINDLE_SERVO_NR 0 // Index of servo used for spindle control
#define SPINDLE_SERVO_MIN 10 // Minimum angle for servo spindle
#endif
/**
@@ -3301,8 +3432,18 @@
#define SPINDLE_LASER_POWERDOWN_DELAY 50 // (ms) Delay to allow the spindle to stop
#endif
//
// Laser I2C Ammeter (High precision INA226 low/high side module)
//
//#define I2C_AMMETER
#if ENABLED(I2C_AMMETER)
#define I2C_AMMETER_IMAX 0.1 // (Amps) Calibration value for the expected current range
#define I2C_AMMETER_SHUNT_RESISTOR 0.1 // (Ohms) Calibration shunt resistor value
#endif
#endif
#endif
#endif // SPINDLE_FEATURE || LASER_FEATURE
/**
* Synchronous Laser Control with M106/M107
@@ -3409,6 +3550,11 @@
*/
#define AUTO_REPORT_TEMPERATURES
/**
* Auto-report position with M154 S<seconds>
*/
//#define AUTO_REPORT_POSITION
/**
* Include capabilities in M115 output
*/
@@ -3478,7 +3624,7 @@
#define PROPORTIONAL_FONT_RATIO 1.0
/**
* Spend 28 bytes of SRAM to optimize the GCode parser
* Spend 28 bytes of SRAM to optimize the G-code parser
*/
#define FASTER_GCODE_PARSER
@@ -3774,6 +3920,16 @@
#define GANTRY_CALIBRATION_COMMANDS_POST "G28" // G28 highly recommended to ensure an accurate position
#endif
/**
* Instant freeze / unfreeze functionality
* Specified pin has pullup and connecting to ground will instantly pause motion.
* Potentially useful for emergency stop that allows being resumed.
*/
//#define FREEZE_FEATURE
#if ENABLED(FREEZE_FEATURE)
//#define FREEZE_PIN 41 // Override the default (KILL) pin here
#endif
/**
* MAX7219 Debug Matrix
*

View File

@@ -28,7 +28,7 @@
/**
* Marlin release version identifier
*/
//#define SHORT_BUILD_VERSION "bugfix-2.0.x"
//#define SHORT_BUILD_VERSION "2.0.9.1"
/**
* Verbose version identifier which should contain a reference to the location
@@ -41,7 +41,7 @@
* here we define this default string as the date where the latest release
* version was tagged.
*/
//#define STRING_DISTRIBUTION_DATE "2019-07-10"
//#define STRING_DISTRIBUTION_DATE "2021-06-27"
/**
* Defines a generic printer name to be output to the LCD after booting Marlin.

View File

@@ -93,28 +93,35 @@ typedef int8_t pin_t;
#define MYSERIAL1 TERN(BLUETOOTH, btSerial, MSerial0)
#else
#if !WITHIN(SERIAL_PORT, -1, 3)
#error "SERIAL_PORT must be from 0 to 3. You can also use -1 if the board supports Native USB."
#error "SERIAL_PORT must be from 0 to 3, or -1 for USB Serial."
#endif
#define MYSERIAL1 customizedSerial1
#ifdef SERIAL_PORT_2
#if !WITHIN(SERIAL_PORT_2, -1, 3)
#error "SERIAL_PORT_2 must be from 0 to 3. You can also use -1 if the board supports Native USB."
#error "SERIAL_PORT_2 must be from 0 to 3, or -1 for USB Serial."
#endif
#define MYSERIAL2 customizedSerial2
#endif
#ifdef SERIAL_PORT_3
#if !WITHIN(SERIAL_PORT_3, -1, 3)
#error "SERIAL_PORT_3 must be from 0 to 3, or -1 for USB Serial."
#endif
#define MYSERIAL3 customizedSerial3
#endif
#endif
#ifdef MMU2_SERIAL_PORT
#if !WITHIN(MMU2_SERIAL_PORT, -1, 3)
#error "MMU2_SERIAL_PORT must be from 0 to 3. You can also use -1 if the board supports Native USB."
#error "MMU2_SERIAL_PORT must be from 0 to 3, or -1 for USB Serial."
#endif
#define MMU2_SERIAL mmuSerial
#endif
#ifdef LCD_SERIAL_PORT
#if !WITHIN(LCD_SERIAL_PORT, -1, 3)
#error "LCD_SERIAL_PORT must be from 0 to 3. You can also use -1 if the board supports Native USB."
#error "LCD_SERIAL_PORT must be from 0 to 3, or -1 for USB Serial."
#endif
#define LCD_SERIAL lcdSerial
#if HAS_DGUS_LCD
@@ -179,7 +186,7 @@ inline void HAL_adc_init() {
#define GET_PIN_MAP_INDEX(pin) pin
#define PARSED_PIN_INDEX(code, dval) parser.intval(code, dval)
#define HAL_SENSITIVE_PINS 0, 1
#define HAL_SENSITIVE_PINS 0, 1,
#ifdef __AVR_AT90USB1286__
#define JTAG_DISABLE() do{ MCUCR = 0x80; MCUCR = 0x80; }while(0)

View File

@@ -567,7 +567,7 @@ ISR(SERIAL_REGNAME(USART, SERIAL_PORT, _UDRE_vect)) {
// Because of the template definition above, it's required to instantiate the template to have all methods generated
template class MarlinSerial< MarlinSerialCfg<SERIAL_PORT> >;
MSerialT customizedSerial1(MSerialT::HasEmergencyParser);
MSerialT1 customizedSerial1(MSerialT1::HasEmergencyParser);
#ifdef SERIAL_PORT_2
@@ -582,7 +582,24 @@ MSerialT customizedSerial1(MSerialT::HasEmergencyParser);
template class MarlinSerial< MarlinSerialCfg<SERIAL_PORT_2> >;
MSerialT2 customizedSerial2(MSerialT2::HasEmergencyParser);
#endif
#endif // SERIAL_PORT_2
#ifdef SERIAL_PORT_3
// Hookup ISR handlers
ISR(SERIAL_REGNAME(USART, SERIAL_PORT_3, _RX_vect)) {
MarlinSerial<MarlinSerialCfg<SERIAL_PORT_3>>::store_rxd_char();
}
ISR(SERIAL_REGNAME(USART, SERIAL_PORT_3, _UDRE_vect)) {
MarlinSerial<MarlinSerialCfg<SERIAL_PORT_3>>::_tx_udr_empty_irq();
}
template class MarlinSerial< MarlinSerialCfg<SERIAL_PORT_3> >;
MSerialT3 customizedSerial3(MSerialT3::HasEmergencyParser);
#endif // SERIAL_PORT_3
#ifdef MMU2_SERIAL_PORT
@@ -595,8 +612,9 @@ MSerialT customizedSerial1(MSerialT::HasEmergencyParser);
}
template class MarlinSerial< MMU2SerialCfg<MMU2_SERIAL_PORT> >;
MSerialT3 mmuSerial(MSerialT3::HasEmergencyParser);
#endif
MSerialMMU2 mmuSerial(MSerialMMU2::HasEmergencyParser);
#endif // MMU2_SERIAL_PORT
#ifdef LCD_SERIAL_PORT
@@ -609,7 +627,7 @@ MSerialT customizedSerial1(MSerialT::HasEmergencyParser);
}
template class MarlinSerial< LCDSerialCfg<LCD_SERIAL_PORT> >;
MSerialT4 lcdSerial(MSerialT4::HasEmergencyParser);
MSerialLCD lcdSerial(MSerialLCD::HasEmergencyParser);
#if HAS_DGUS_LCD
template<typename Cfg>
@@ -622,13 +640,13 @@ MSerialT customizedSerial1(MSerialT::HasEmergencyParser);
}
#endif
#endif
#endif // LCD_SERIAL_PORT
#endif // !USBCON && (UBRRH || UBRR0H || UBRR1H || UBRR2H || UBRR3H)
// For AT90USB targets use the UART for BT interfacing
#if defined(USBCON) && ENABLED(BLUETOOTH)
MSerialT5 bluetoothSerial(false);
MSerialBT bluetoothSerial(false);
#endif
#endif // __AVR__

View File

@@ -238,14 +238,19 @@
static constexpr bool MAX_RX_QUEUED = ENABLED(SERIAL_STATS_MAX_RX_QUEUED);
};
typedef Serial1Class< MarlinSerial< MarlinSerialCfg<SERIAL_PORT> > > MSerialT;
extern MSerialT customizedSerial1;
typedef Serial1Class< MarlinSerial< MarlinSerialCfg<SERIAL_PORT> > > MSerialT1;
extern MSerialT1 customizedSerial1;
#ifdef SERIAL_PORT_2
typedef Serial1Class< MarlinSerial< MarlinSerialCfg<SERIAL_PORT_2> > > MSerialT2;
extern MSerialT2 customizedSerial2;
#endif
#ifdef SERIAL_PORT_3
typedef Serial1Class< MarlinSerial< MarlinSerialCfg<SERIAL_PORT_3> > > MSerialT3;
extern MSerialT3 customizedSerial3;
#endif
#endif // !USBCON
#ifdef MMU2_SERIAL_PORT
@@ -262,8 +267,8 @@
static constexpr bool RX_OVERRUNS = false;
};
typedef Serial1Class< MarlinSerial< MMU2SerialCfg<MMU2_SERIAL_PORT> > > MSerialT3;
extern MSerialT3 mmuSerial;
typedef Serial1Class< MarlinSerial< MMU2SerialCfg<MMU2_SERIAL_PORT> > > MSerialMMU2;
extern MSerialMMU2 mmuSerial;
#endif
#ifdef LCD_SERIAL_PORT
@@ -281,12 +286,12 @@
static constexpr bool RX_OVERRUNS = BOTH(HAS_DGUS_LCD, SERIAL_STATS_RX_BUFFER_OVERRUNS);
};
typedef Serial1Class< MarlinSerial< LCDSerialCfg<LCD_SERIAL_PORT> > > MSerialT4;
extern MSerialT4 lcdSerial;
typedef Serial1Class< MarlinSerial< LCDSerialCfg<LCD_SERIAL_PORT> > > MSerialLCD;
extern MSerialLCD lcdSerial;
#endif
// Use the UART for Bluetooth in AT90USB configurations
#if defined(USBCON) && ENABLED(BLUETOOTH)
typedef Serial1Class<HardwareSerial> MSerialT5;
extern MSerialT5 bluetoothSerial;
typedef Serial1Class<HardwareSerial> MSerialBT;
extern MSerialBT bluetoothSerial;
#endif

View File

@@ -168,6 +168,51 @@ void setup_endstop_interrupts() {
pciSetup(Z_MIN_PIN);
#endif
#endif
#if HAS_I_MAX
#if (digitalPinToInterrupt(I_MAX_PIN) != NOT_AN_INTERRUPT)
_ATTACH(I_MAX_PIN);
#else
static_assert(digitalPinHasPCICR(I_MAX_PIN), "I_MAX_PIN is not interrupt-capable");
pciSetup(I_MAX_PIN);
#endif
#elif HAS_I_MIN
#if (digitalPinToInterrupt(I_MIN_PIN) != NOT_AN_INTERRUPT)
_ATTACH(I_MIN_PIN);
#else
static_assert(digitalPinHasPCICR(I_MIN_PIN), "I_MIN_PIN is not interrupt-capable");
pciSetup(I_MIN_PIN);
#endif
#endif
#if HAS_J_MAX
#if (digitalPinToInterrupt(J_MAX_PIN) != NOT_AN_INTERRUPT)
_ATTACH(J_MAX_PIN);
#else
static_assert(digitalPinHasPCICR(J_MAX_PIN), "J_MAX_PIN is not interrupt-capable");
pciSetup(J_MAX_PIN);
#endif
#elif HAS_J_MIN
#if (digitalPinToInterrupt(J_MIN_PIN) != NOT_AN_INTERRUPT)
_ATTACH(J_MIN_PIN);
#else
static_assert(digitalPinHasPCICR(J_MIN_PIN), "J_MIN_PIN is not interrupt-capable");
pciSetup(J_MIN_PIN);
#endif
#endif
#if HAS_K_MAX
#if (digitalPinToInterrupt(K_MAX_PIN) != NOT_AN_INTERRUPT)
_ATTACH(K_MAX_PIN);
#else
static_assert(digitalPinHasPCICR(K_MAX_PIN), "K_MAX_PIN is not interrupt-capable");
pciSetup(K_MAX_PIN);
#endif
#elif HAS_K_MIN
#if (digitalPinToInterrupt(K_MIN_PIN) != NOT_AN_INTERRUPT)
_ATTACH(K_MIN_PIN);
#else
static_assert(digitalPinHasPCICR(K_MIN_PIN), "K_MIN_PIN is not interrupt-capable");
pciSetup(K_MIN_PIN);
#endif
#endif
#if HAS_X2_MAX
#if (digitalPinToInterrupt(X2_MAX_PIN) != NOT_AN_INTERRUPT)
_ATTACH(X2_MAX_PIN);
@@ -256,6 +301,5 @@ void setup_endstop_interrupts() {
pciSetup(Z_MIN_PROBE_PIN);
#endif
#endif
// If we arrive here without raising an assertion, each pin has either an EXT-interrupt or a PCI.
}

View File

@@ -38,7 +38,7 @@
// portModeRegister takes a different argument
#define digitalPinToTimer_DEBUG(p) digitalPinToTimer(p)
#define digitalPinToBitMask_DEBUG(p) digitalPinToBitMask(p)
#define digitalPinToPort_DEBUG(p) digitalPinToPort_Teensy(p)
#define digitalPinToPort_DEBUG(p) digitalPinToPort(p)
#define GET_PINMODE(pin) (*portModeRegister(pin) & digitalPinToBitMask_DEBUG(pin))
#elif AVR_ATmega2560_FAMILY_PLUS_70 // So we can access/display all the pins on boards using more than 70

View File

@@ -50,13 +50,12 @@ extern DefaultSerial4 MSerial3;
#define _MSERIAL(X) MSerial##X
#define MSERIAL(X) _MSERIAL(X)
// Define MYSERIAL1/2 before MarlinSerial includes!
#if SERIAL_PORT == -1 || ENABLED(EMERGENCY_PARSER)
#define MYSERIAL1 customizedSerial1
#elif WITHIN(SERIAL_PORT, 0, 3)
#define MYSERIAL1 MSERIAL(SERIAL_PORT)
#else
#error "The required SERIAL_PORT must be from 0 to 3. You can also use -1 if the board supports Native USB."
#error "The required SERIAL_PORT must be from 0 to 3, or -1 for USB Serial."
#endif
#ifdef SERIAL_PORT_2
@@ -65,7 +64,17 @@ extern DefaultSerial4 MSerial3;
#elif WITHIN(SERIAL_PORT_2, 0, 3)
#define MYSERIAL2 MSERIAL(SERIAL_PORT_2)
#else
#error "SERIAL_PORT_2 must be from 0 to 3. You can also use -1 if the board supports Native USB."
#error "SERIAL_PORT_2 must be from 0 to 3, or -1 for USB Serial."
#endif
#endif
#ifdef SERIAL_PORT_3
#if SERIAL_PORT_3 == -1 || ENABLED(EMERGENCY_PARSER)
#define MYSERIAL3 customizedSerial3
#elif WITHIN(SERIAL_PORT_3, 0, 3)
#define MYSERIAL3 MSERIAL(SERIAL_PORT_3)
#else
#error "SERIAL_PORT_3 must be from 0 to 3, or -1 for USB Serial."
#endif
#endif
@@ -78,12 +87,10 @@ extern DefaultSerial4 MSerial3;
#endif
#ifdef LCD_SERIAL_PORT
#if LCD_SERIAL_PORT == -1
#define LCD_SERIAL lcdSerial
#elif WITHIN(LCD_SERIAL_PORT, 0, 3)
#if WITHIN(LCD_SERIAL_PORT, 0, 3)
#define LCD_SERIAL MSERIAL(LCD_SERIAL_PORT)
#else
#error "LCD_SERIAL_PORT must be from 0 to 3. You can also use -1 if the board supports Native USB."
#error "LCD_SERIAL_PORT must be from 0 to 3."
#endif
#endif

View File

@@ -478,7 +478,7 @@ void MarlinSerial<Cfg>::flushTX() {
// If not using the USB port as serial port
#if defined(SERIAL_PORT) && SERIAL_PORT >= 0
template class MarlinSerial< MarlinSerialCfg<SERIAL_PORT> >;
MSerialT customizedSerial1(MarlinSerialCfg<SERIAL_PORT>::EMERGENCYPARSER);
MSerialT1 customizedSerial1(MarlinSerialCfg<SERIAL_PORT>::EMERGENCYPARSER);
#endif
#if defined(SERIAL_PORT_2) && SERIAL_PORT_2 >= 0
@@ -486,4 +486,9 @@ void MarlinSerial<Cfg>::flushTX() {
MSerialT2 customizedSerial2(MarlinSerialCfg<SERIAL_PORT_2>::EMERGENCYPARSER);
#endif
#if defined(SERIAL_PORT_3) && SERIAL_PORT_3 >= 0
template class MarlinSerial< MarlinSerialCfg<SERIAL_PORT_3> >;
MSerialT3 customizedSerial3(MarlinSerialCfg<SERIAL_PORT_3>::EMERGENCYPARSER);
#endif
#endif // ARDUINO_ARCH_SAM

View File

@@ -141,11 +141,16 @@ struct MarlinSerialCfg {
};
#if defined(SERIAL_PORT) && SERIAL_PORT >= 0
typedef Serial1Class< MarlinSerial< MarlinSerialCfg<SERIAL_PORT> > > MSerialT;
extern MSerialT customizedSerial1;
typedef Serial1Class< MarlinSerial< MarlinSerialCfg<SERIAL_PORT> > > MSerialT1;
extern MSerialT1 customizedSerial1;
#endif
#if defined(SERIAL_PORT_2) && SERIAL_PORT_2 >= 0
typedef Serial1Class< MarlinSerial< MarlinSerialCfg<SERIAL_PORT_2> > > MSerialT2;
extern MSerialT2 customizedSerial2;
#endif
#if defined(SERIAL_PORT_3) && SERIAL_PORT_3 >= 0
typedef Serial1Class< MarlinSerial< MarlinSerialCfg<SERIAL_PORT_3> > > MSerialT3;
extern MSerialT3 customizedSerial3;
#endif

View File

@@ -19,13 +19,13 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
*/
#ifdef ARDUINO_ARCH_SAM
/**
* MarlinSerial_Due.cpp - Hardware serial library for Arduino DUE
* Copyright (c) 2017 Eduardo José Tagle. All right reserved
* Based on MarlinSerial for AVR, copyright (c) 2006 Nicholas Zambetti. All right reserved.
*/
#ifdef ARDUINO_ARCH_SAM
#include "../../inc/MarlinConfig.h"
@@ -65,7 +65,7 @@ int MarlinSerialUSB::peek() {
pending_char = udi_cdc_getc();
TERN_(EMERGENCY_PARSER, emergency_parser.update(static_cast<MSerialT*>(this)->emergency_state, (char)pending_char));
TERN_(EMERGENCY_PARSER, emergency_parser.update(static_cast<MSerialT1*>(this)->emergency_state, (char)pending_char));
return pending_char;
}
@@ -87,7 +87,7 @@ int MarlinSerialUSB::read() {
int c = udi_cdc_getc();
TERN_(EMERGENCY_PARSER, emergency_parser.update(static_cast<MSerialT*>(this)->emergency_state, (char)c));
TERN_(EMERGENCY_PARSER, emergency_parser.update(static_cast<MSerialT1*>(this)->emergency_state, (char)c));
return c;
}
@@ -129,10 +129,13 @@ size_t MarlinSerialUSB::write(const uint8_t c) {
// Preinstantiate
#if SERIAL_PORT == -1
MSerialT customizedSerial1(TERN0(EMERGENCY_PARSER, true));
MSerialT1 customizedSerial1(TERN0(EMERGENCY_PARSER, true));
#endif
#if SERIAL_PORT_2 == -1
MSerialT customizedSerial2(TERN0(EMERGENCY_PARSER, true));
MSerialT2 customizedSerial2(TERN0(EMERGENCY_PARSER, true));
#endif
#if SERIAL_PORT_3 == -1
MSerialT3 customizedSerial3(TERN0(EMERGENCY_PARSER, true));
#endif
#endif // HAS_USB_SERIAL

View File

@@ -27,11 +27,9 @@
*/
#include "../../inc/MarlinConfig.h"
#if HAS_USB_SERIAL
#include <WString.h>
#include "../../core/serial_hook.h"
#include <WString.h>
struct MarlinSerialUSB {
void begin(const long);
@@ -50,14 +48,18 @@ struct MarlinSerialUSB {
FORCE_INLINE int rxMaxEnqueued() { return 0; }
#endif
};
typedef Serial1Class<MarlinSerialUSB> MSerialT;
#if SERIAL_PORT == -1
extern MSerialT customizedSerial1;
typedef Serial1Class<MarlinSerialUSB> MSerialT1;
extern MSerialT1 customizedSerial1;
#endif
#if SERIAL_PORT_2 == -1
extern MSerialT customizedSerial2;
typedef Serial1Class<MarlinSerialUSB> MSerialT2;
extern MSerialT2 customizedSerial2;
#endif
#endif // HAS_USB_SERIAL
#if SERIAL_PORT_3 == -1
typedef Serial1Class<MarlinSerialUSB> MSerialT3;
extern MSerialT3 customizedSerial3;
#endif

View File

@@ -64,4 +64,10 @@ void setup_endstop_interrupts() {
TERN_(HAS_Z4_MAX, _ATTACH(Z4_MAX_PIN));
TERN_(HAS_Z4_MIN, _ATTACH(Z4_MIN_PIN));
TERN_(HAS_Z_MIN_PROBE_PIN, _ATTACH(Z_MIN_PROBE_PIN));
TERN_(HAS_I_MAX, _ATTACH(I_MAX_PIN));
TERN_(HAS_I_MIN, _ATTACH(I_MIN_PIN));
TERN_(HAS_J_MAX, _ATTACH(J_MAX_PIN));
TERN_(HAS_J_MIN, _ATTACH(J_MIN_PIN));
TERN_(HAS_K_MAX, _ATTACH(K_MAX_PIN));
TERN_(HAS_K_MIN, _ATTACH(K_MIN_PIN));
}

View File

@@ -33,7 +33,7 @@
* For ARDUINO_ARCH_SAM
* Note the code here was specifically crafted by disassembling what GCC produces
* out of it, so GCC is able to optimize it out as much as possible to the least
* amount of instructions. Be very carefull if you modify them, as "clean code"
* amount of instructions. Be very careful if you modify them, as "clean code"
* leads to less efficient compiled code!!
*/

View File

@@ -29,7 +29,7 @@
#include "wifi.h"
#include <ESPAsyncWebServer.h>
MSerialT webSocketSerial(false);
MSerialWebSocketT webSocketSerial(false);
AsyncWebSocket ws("/ws"); // TODO Move inside the class.
// RingBuffer impl

View File

@@ -81,5 +81,5 @@ public:
#endif
};
typedef Serial1Class<WebSocketSerial> MSerialT;
extern MSerialT webSocketSerial;
typedef Serial1Class<WebSocketSerial> MSerialWebSocketT;
extern MSerialWebSocketT webSocketSerial;

View File

@@ -59,4 +59,10 @@ void setup_endstop_interrupts() {
TERN_(HAS_Z4_MAX, _ATTACH(Z4_MAX_PIN));
TERN_(HAS_Z4_MIN, _ATTACH(Z4_MIN_PIN));
TERN_(HAS_Z_MIN_PROBE_PIN, _ATTACH(Z_MIN_PROBE_PIN));
TERN_(HAS_I_MAX, _ATTACH(I_MAX_PIN));
TERN_(HAS_I_MIN, _ATTACH(I_MIN_PIN));
TERN_(HAS_J_MAX, _ATTACH(J_MAX_PIN));
TERN_(HAS_J_MIN, _ATTACH(J_MIN_PIN));
TERN_(HAS_K_MAX, _ATTACH(K_MAX_PIN));
TERN_(HAS_K_MIN, _ATTACH(K_MIN_PIN));
}

View File

@@ -25,43 +25,6 @@
#include "../../../gcode/parser.h"
uint8_t analog_offset = NUM_DIGITAL_PINS - NUM_ANALOG_INPUTS;
// Get the digital pin for an analog index
pin_t analogInputToDigitalPin(const int8_t p) {
return (WITHIN(p, 0, NUM_ANALOG_INPUTS) ? analog_offset + p : P_NC);
}
// Return the index of a pin number
int16_t GET_PIN_MAP_INDEX(const pin_t pin) {
return pin;
}
// Test whether the pin is valid
bool VALID_PIN(const pin_t p) {
return WITHIN(p, 0, NUM_DIGITAL_PINS);
}
// Get the analog index for a digital pin
int8_t DIGITAL_PIN_TO_ANALOG_PIN(const pin_t p) {
return (WITHIN(p, analog_offset, NUM_DIGITAL_PINS) ? p - analog_offset : P_NC);
}
// Test whether the pin is PWM
bool PWM_PIN(const pin_t p) {
return false;
}
// Test whether the pin is interruptable
bool INTERRUPT_PIN(const pin_t p) {
return false;
}
// Get the pin number at the given index
pin_t GET_PIN_MAP_PIN(const int16_t ind) {
return ind;
}
int16_t PARSED_PIN_INDEX(const char code, const int16_t dval) {
return parser.intval(code, dval);
}

View File

@@ -34,26 +34,32 @@ constexpr uint8_t NUM_ANALOG_INPUTS = 16;
#define HAL_SENSITIVE_PINS
constexpr uint8_t analog_offset = NUM_DIGITAL_PINS - NUM_ANALOG_INPUTS;
// Get the digital pin for an analog index
pin_t analogInputToDigitalPin(const int8_t p);
// Return the index of a pin number
int16_t GET_PIN_MAP_INDEX(const pin_t pin);
// Test whether the pin is valid
bool VALID_PIN(const pin_t p);
constexpr pin_t analogInputToDigitalPin(const int8_t p) {
return (WITHIN(p, 0, NUM_ANALOG_INPUTS) ? analog_offset + p : P_NC);
}
// Get the analog index for a digital pin
int8_t DIGITAL_PIN_TO_ANALOG_PIN(const pin_t p);
constexpr int8_t DIGITAL_PIN_TO_ANALOG_PIN(const pin_t p) {
return (WITHIN(p, analog_offset, NUM_DIGITAL_PINS) ? p - analog_offset : P_NC);
}
// Return the index of a pin number
constexpr int16_t GET_PIN_MAP_INDEX(const pin_t pin) { return pin; }
// Test whether the pin is valid
constexpr bool VALID_PIN(const pin_t p) { return WITHIN(p, 0, NUM_DIGITAL_PINS); }
// Test whether the pin is PWM
bool PWM_PIN(const pin_t p);
constexpr bool PWM_PIN(const pin_t p) { return false; }
// Test whether the pin is interruptable
bool INTERRUPT_PIN(const pin_t p);
constexpr bool INTERRUPT_PIN(const pin_t p) { return false; }
// Get the pin number at the given index
pin_t GET_PIN_MAP_PIN(const int16_t ind);
constexpr pin_t GET_PIN_MAP_PIN(const int16_t ind) { return ind; }
// Parse a G-code word into a pin index
int16_t PARSED_PIN_INDEX(const char code, const int16_t dval);

View File

@@ -84,6 +84,16 @@ extern DefaultSerial1 USBSerial;
#endif
#endif
#ifdef SERIAL_PORT_3
#if SERIAL_PORT_3 == -1
#define MYSERIAL3 USBSerial
#elif WITHIN(SERIAL_PORT_3, 0, 3)
#define MYSERIAL3 MSERIAL(SERIAL_PORT_3)
#else
#error "SERIAL_PORT_3 must be from 0 to 3. You can also use -1 if the board supports Native USB."
#endif
#endif
#ifdef MMU2_SERIAL_PORT
#if MMU2_SERIAL_PORT == -1
#define MMU2_SERIAL USBSerial
@@ -188,7 +198,7 @@ constexpr pin_t GET_PIN_MAP_PIN(const int16_t index) {
// Parse a G-code word into a pin index
int16_t PARSED_PIN_INDEX(const char code, const int16_t dval);
// P0.6 thru P0.9 are for the onboard SD card
#define HAL_SENSITIVE_PINS P0_06, P0_07, P0_08, P0_09
#define HAL_SENSITIVE_PINS P0_06, P0_07, P0_08, P0_09,
#define HAL_IDLETASK 1
void HAL_idletask();

View File

@@ -21,6 +21,7 @@
*/
#ifdef TARGET_LPC1768
#include "../../inc/MarlinConfig.h"
#include "HAL.h"
#if ENABLED(POSTMORTEM_DEBUGGING)

View File

@@ -66,11 +66,7 @@
#include <SoftwareSPI.h>
#ifndef HAL_SPI_SPEED
#define HAL_SPI_SPEED SPI_FULL_SPEED
#endif
static uint8_t SPI_speed = HAL_SPI_SPEED;
static uint8_t SPI_speed = SPI_FULL_SPEED;
static uint8_t spiTransfer(uint8_t b) {
return swSpiTransfer(b, SPI_speed, SD_SCK_PIN, SD_MISO_PIN, SD_MOSI_PIN);
@@ -106,15 +102,13 @@
#else
#ifndef HAL_SPI_SPEED
#ifdef SD_SPI_SPEED
#define HAL_SPI_SPEED SD_SPI_SPEED
#else
#define HAL_SPI_SPEED SPI_FULL_SPEED
#endif
#ifdef SD_SPI_SPEED
#define INIT_SPI_SPEED SD_SPI_SPEED
#else
#define INIT_SPI_SPEED SPI_FULL_SPEED
#endif
void spiBegin() { spiInit(HAL_SPI_SPEED); } // Set up SCK, MOSI & MISO pins for SSP0
void spiBegin() { spiInit(INIT_SPI_SPEED); } // Set up SCK, MOSI & MISO pins for SSP0
void spiInit(uint8_t spiRate) {
#if SD_MISO_PIN == BOARD_SPI1_MISO_PIN

View File

@@ -26,9 +26,9 @@
#include "../../inc/MarlinConfig.h"
#if USING_HW_SERIAL0
MarlinSerial _MSerial(LPC_UART0);
MSerialT MSerial0(true, _MSerial);
extern "C" void UART0_IRQHandler() { _MSerial.IRQHandler(); }
MarlinSerial _MSerial0(LPC_UART0);
MSerialT MSerial0(true, _MSerial0);
extern "C" void UART0_IRQHandler() { _MSerial0.IRQHandler(); }
#endif
#if USING_HW_SERIAL1
MarlinSerial _MSerial1((LPC_UART_TypeDef *) LPC_UART1);
@@ -52,7 +52,7 @@
// Need to figure out which serial port we are and react in consequence (Marlin does not have CONTAINER_OF macro)
if (false) {}
#if USING_HW_SERIAL0
else if (this == &_MSerial) emergency_parser.update(MSerial0.emergency_state, c);
else if (this == &_MSerial0) emergency_parser.update(MSerial0.emergency_state, c);
#endif
#if USING_HW_SERIAL1
else if (this == &_MSerial1) emergency_parser.update(MSerial1.emergency_state, c);

View File

@@ -60,8 +60,8 @@ extern MSerialT MSerial1;
extern MSerialT MSerial2;
extern MSerialT MSerial3;
// Consequently, we can't use a RuntimeSerial either. The workaround would be to use a RuntimeSerial<ForwardSerial<MarlinSerial>> type here
// Right now, let's ignore this until it's actually required.
// Consequently, we can't use a RuntimeSerial either. The workaround would be to use
// a RuntimeSerial<ForwardSerial<MarlinSerial>> type here. Ignore for now until it's actually required.
#if ENABLED(SERIAL_RUNTIME_HOOK)
#error "SERIAL_RUNTIME_HOOK is not yet supported for LPC176x."
#endif

View File

@@ -122,4 +122,37 @@ void setup_endstop_interrupts() {
#endif
_ATTACH(Z_MIN_PROBE_PIN);
#endif
#if HAS_I_MAX
#if !LPC1768_PIN_INTERRUPT_M(I_MAX_PIN)
#error "I_MAX_PIN is not INTERRUPT-capable."
#endif
_ATTACH(I_MAX_PIN);
#elif HAS_I_MIN
#if !LPC1768_PIN_INTERRUPT_M(I_MIN_PIN)
#error "I_MIN_PIN is not INTERRUPT-capable."
#endif
_ATTACH(I_MIN_PIN);
#endif
#if HAS_J_MAX
#if !LPC1768_PIN_INTERRUPT_M(J_MAX_PIN)
#error "J_MAX_PIN is not INTERRUPT-capable."
#endif
_ATTACH(J_MAX_PIN);
#elif HAS_J_MIN
#if !LPC1768_PIN_INTERRUPT_M(J_MIN_PIN)
#error "J_MIN_PIN is not INTERRUPT-capable."
#endif
_ATTACH(J_MIN_PIN);
#endif
#if HAS_K_MAX
#if !LPC1768_PIN_INTERRUPT_M(K_MAX_PIN)
#error "K_MAX_PIN is not INTERRUPT-capable."
#endif
_ATTACH(K_MAX_PIN);
#elif HAS_K_MIN
#if !LPC1768_PIN_INTERRUPT_M(K_MIN_PIN)
#error "K_MIN_PIN is not INTERRUPT-capable."
#endif
_ATTACH(K_MIN_PIN);
#endif
}

View File

@@ -144,7 +144,7 @@ static_assert(DISABLED(BAUD_RATE_GCODE), "BAUD_RATE_GCODE is not yet supported o
#error "Serial port pins (2) conflict with Z4 pins!"
#elif ANY_RX(2, X_DIR_PIN, Y_DIR_PIN)
#error "Serial port pins (2) conflict with other pins!"
#elif Y_HOME_DIR < 0 && IS_TX2(Y_STOP_PIN)
#elif Y_HOME_TO_MIN && IS_TX2(Y_STOP_PIN)
#error "Serial port pins (2) conflict with Y endstop pin!"
#elif HAS_CUSTOM_PROBE_PIN && IS_TX2(Z_MIN_PROBE_PIN)
#error "Serial port pins (2) conflict with probe pin!"

View File

@@ -117,7 +117,7 @@ void HAL_init() {
PinCfg.Pinmode = 2; // no pull-up/pull-down
PINSEL_ConfigPin(&PinCfg);
// now set CLKOUT_EN bit
LPC_SC->CLKOUTCFG |= (1<<8);
SBI(LPC_SC->CLKOUTCFG, 8);
#endif
USB_Init(); // USB Initialization

View File

@@ -22,7 +22,7 @@
#include "../../../inc/MarlinConfig.h"
#if HAS_TFT_XPT2046 || HAS_TOUCH_BUTTONS
#if HAS_TFT_XPT2046 || HAS_RES_TOUCH_BUTTONS
#include "xpt2046.h"
#include <SPI.h>

View File

@@ -54,7 +54,7 @@ enum XPTCoordinate : uint8_t {
XPT2046_Z2 = 0x40 | XPT2046_CONTROL | XPT2046_DFR_MODE,
};
#if !defined(XPT2046_Z1_THRESHOLD)
#ifndef XPT2046_Z1_THRESHOLD
#define XPT2046_Z1_THRESHOLD 10
#endif

View File

@@ -20,101 +20,104 @@ def print_error(e):
'or copy the firmware (.pio/build/%s/firmware.bin) manually to the appropriate disk\n' \
%(e, env.get('PIOENV')))
try:
#
# Find a disk for upload
#
upload_disk = 'Disk not found'
target_file_found = False
target_drive_found = False
if current_OS == 'Windows':
def before_upload(source, target, env):
try:
#
# platformio.ini will accept this for a Windows upload port designation: 'upload_port = L:'
# Windows - doesn't care about the disk's name, only cares about the drive letter
import subprocess,string
from ctypes import windll
# Find a disk for upload
#
upload_disk = 'Disk not found'
target_file_found = False
target_drive_found = False
if current_OS == 'Windows':
#
# platformio.ini will accept this for a Windows upload port designation: 'upload_port = L:'
# Windows - doesn't care about the disk's name, only cares about the drive letter
import subprocess,string
from ctypes import windll
# getting list of drives
# https://stackoverflow.com/questions/827371/is-there-a-way-to-list-all-the-available-drive-letters-in-python
drives = []
bitmask = windll.kernel32.GetLogicalDrives()
for letter in string.ascii_uppercase:
if bitmask & 1:
drives.append(letter)
bitmask >>= 1
# getting list of drives
# https://stackoverflow.com/questions/827371/is-there-a-way-to-list-all-the-available-drive-letters-in-python
drives = []
bitmask = windll.kernel32.GetLogicalDrives()
for letter in string.ascii_uppercase:
if bitmask & 1:
drives.append(letter)
bitmask >>= 1
for drive in drives:
final_drive_name = drive + ':\\'
# print ('disc check: {}'.format(final_drive_name))
try:
volume_info = str(subprocess.check_output('cmd /C dir ' + final_drive_name, stderr=subprocess.STDOUT))
except Exception as e:
print ('error:{}'.format(e))
continue
else:
if target_drive in volume_info and not target_file_found: # set upload if not found target file yet
target_drive_found = True
upload_disk = final_drive_name
if target_filename in volume_info:
if not target_file_found:
for drive in drives:
final_drive_name = drive + ':\\'
# print ('disc check: {}'.format(final_drive_name))
try:
volume_info = str(subprocess.check_output('cmd /C dir ' + final_drive_name, stderr=subprocess.STDOUT))
except Exception as e:
print ('error:{}'.format(e))
continue
else:
if target_drive in volume_info and not target_file_found: # set upload if not found target file yet
target_drive_found = True
upload_disk = final_drive_name
target_file_found = True
if target_filename in volume_info:
if not target_file_found:
upload_disk = final_drive_name
target_file_found = True
elif current_OS == 'Linux':
#
# platformio.ini will accept this for a Linux upload port designation: 'upload_port = /media/media_name/drive'
#
drives = os.listdir(os.path.join(os.sep, 'media', getpass.getuser()))
if target_drive in drives: # If target drive is found, use it.
target_drive_found = True
upload_disk = os.path.join(os.sep, 'media', getpass.getuser(), target_drive) + os.sep
else:
elif current_OS == 'Linux':
#
# platformio.ini will accept this for a Linux upload port designation: 'upload_port = /media/media_name/drive'
#
drives = os.listdir(os.path.join(os.sep, 'media', getpass.getuser()))
if target_drive in drives: # If target drive is found, use it.
target_drive_found = True
upload_disk = os.path.join(os.sep, 'media', getpass.getuser(), target_drive) + os.sep
else:
for drive in drives:
try:
files = os.listdir(os.path.join(os.sep, 'media', getpass.getuser(), drive))
except:
continue
else:
if target_filename in files:
upload_disk = os.path.join(os.sep, 'media', getpass.getuser(), drive) + os.sep
target_file_found = True
break
#
# set upload_port to drive if found
#
if target_file_found or target_drive_found:
env.Replace(
UPLOAD_FLAGS="-P$UPLOAD_PORT"
)
elif current_OS == 'Darwin': # MAC
#
# platformio.ini will accept this for a OSX upload port designation: 'upload_port = /media/media_name/drive'
#
drives = os.listdir('/Volumes') # human readable names
if target_drive in drives and not target_file_found: # set upload if not found target file yet
target_drive_found = True
upload_disk = '/Volumes/' + target_drive + '/'
for drive in drives:
try:
files = os.listdir(os.path.join(os.sep, 'media', getpass.getuser(), drive))
filenames = os.listdir('/Volumes/' + drive + '/') # will get an error if the drive is protected
except:
continue
else:
if target_filename in files:
upload_disk = os.path.join(os.sep, 'media', getpass.getuser(), drive) + os.sep
if target_filename in filenames:
if not target_file_found:
upload_disk = '/Volumes/' + drive + '/'
target_file_found = True
break
#
# set upload_port to drive if found
#
#
# Set upload_port to drive if found
#
if target_file_found or target_drive_found:
env.Replace(
UPLOAD_FLAGS="-P$UPLOAD_PORT"
)
env.Replace(UPLOAD_PORT=upload_disk)
print('\nUpload disk: ', upload_disk, '\n')
else:
print_error('Autodetect Error')
elif current_OS == 'Darwin': # MAC
#
# platformio.ini will accept this for a OSX upload port designation: 'upload_port = /media/media_name/drive'
#
drives = os.listdir('/Volumes') # human readable names
if target_drive in drives and not target_file_found: # set upload if not found target file yet
target_drive_found = True
upload_disk = '/Volumes/' + target_drive + '/'
for drive in drives:
try:
filenames = os.listdir('/Volumes/' + drive + '/') # will get an error if the drive is protected
except:
continue
else:
if target_filename in filenames:
if not target_file_found:
upload_disk = '/Volumes/' + drive + '/'
target_file_found = True
except Exception as e:
print_error(str(e))
#
# Set upload_port to drive if found
#
if target_file_found or target_drive_found:
env.Replace(UPLOAD_PORT=upload_disk)
print('\nUpload disk: ', upload_disk, '\n')
else:
print_error('Autodetect Error')
except Exception as e:
print_error(str(e))
env.AddPreAction("upload", before_upload)

View File

@@ -43,8 +43,6 @@
extern DefaultSerial4 MSerial3;
extern DefaultSerial5 MSerial4;
// MYSERIAL1 required before MarlinSerial includes!
#define __MSERIAL(X) MSerial##X
#define _MSERIAL(X) __MSERIAL(X)
#define MSERIAL(X) _MSERIAL(INCREMENT(X))

View File

@@ -47,80 +47,38 @@
#include "../../module/endstops.h"
#define MATCH_EILINE(P1,P2) (P1 != P2 && PIN_TO_EILINE(P1) == PIN_TO_EILINE(P2))
#if HAS_X_MAX
#define MATCH_X_MAX_EILINE(P) MATCH_EILINE(P, X_MAX_PIN)
#else
#define MATCH_X_MAX_EILINE(P) false
#endif
#if HAS_X_MIN
#define MATCH_X_MIN_EILINE(P) MATCH_EILINE(P, X_MIN_PIN)
#else
#define MATCH_X_MIN_EILINE(P) false
#endif
#if HAS_Y_MAX
#define MATCH_Y_MAX_EILINE(P) MATCH_EILINE(P, Y_MAX_PIN)
#else
#define MATCH_Y_MAX_EILINE(P) false
#endif
#if HAS_Y_MIN
#define MATCH_Y_MIN_EILINE(P) MATCH_EILINE(P, Y_MIN_PIN)
#else
#define MATCH_Y_MIN_EILINE(P) false
#endif
#if HAS_Z_MAX
#define MATCH_Z_MAX_EILINE(P) MATCH_EILINE(P, Z_MAX_PIN)
#else
#define MATCH_Z_MAX_EILINE(P) false
#endif
#if HAS_Z_MIN
#define MATCH_Z_MIN_EILINE(P) MATCH_EILINE(P, Z_MIN_PIN)
#else
#define MATCH_Z_MIN_EILINE(P) false
#endif
#if HAS_Z2_MAX
#define MATCH_Z2_MAX_EILINE(P) MATCH_EILINE(P, Z2_MAX_PIN)
#else
#define MATCH_Z2_MAX_EILINE(P) false
#endif
#if HAS_Z2_MIN
#define MATCH_Z2_MIN_EILINE(P) MATCH_EILINE(P, Z2_MIN_PIN)
#else
#define MATCH_Z2_MIN_EILINE(P) false
#endif
#if HAS_Z3_MAX
#define MATCH_Z3_MAX_EILINE(P) MATCH_EILINE(P, Z3_MAX_PIN)
#else
#define MATCH_Z3_MAX_EILINE(P) false
#endif
#if HAS_Z3_MIN
#define MATCH_Z3_MIN_EILINE(P) MATCH_EILINE(P, Z3_MIN_PIN)
#else
#define MATCH_Z3_MIN_EILINE(P) false
#endif
#if HAS_Z4_MAX
#define MATCH_Z4_MAX_EILINE(P) MATCH_EILINE(P, Z4_MAX_PIN)
#else
#define MATCH_Z4_MAX_EILINE(P) false
#endif
#if HAS_Z4_MIN
#define MATCH_Z4_MIN_EILINE(P) MATCH_EILINE(P, Z4_MIN_PIN)
#else
#define MATCH_Z4_MIN_EILINE(P) false
#endif
#if HAS_Z_MIN_PROBE_PIN
#define MATCH_Z_MIN_PROBE_EILINE(P) MATCH_EILINE(P, Z_MIN_PROBE_PIN)
#else
#define MATCH_Z_MIN_PROBE_EILINE(P) false
#endif
#define AVAILABLE_EILINE(P) (PIN_TO_EILINE(P) != -1 \
&& !MATCH_X_MAX_EILINE(P) && !MATCH_X_MIN_EILINE(P) \
&& !MATCH_Y_MAX_EILINE(P) && !MATCH_Y_MIN_EILINE(P) \
&& !MATCH_Z_MAX_EILINE(P) && !MATCH_Z_MIN_EILINE(P) \
&& !MATCH_Z2_MAX_EILINE(P) && !MATCH_Z2_MIN_EILINE(P) \
&& !MATCH_Z3_MAX_EILINE(P) && !MATCH_Z3_MIN_EILINE(P) \
&& !MATCH_Z4_MAX_EILINE(P) && !MATCH_Z4_MIN_EILINE(P) \
&& !MATCH_Z_MIN_PROBE_EILINE(P))
#define MATCH_EILINE(P1,P2) (P1 != P2 && PIN_TO_EILINE(P1) == PIN_TO_EILINE(P2))
#define MATCH_X_MAX_EILINE(P) TERN0(HAS_X_MAX, DEFER4(MATCH_EILINE)(P, X_MAX_PIN))
#define MATCH_X_MIN_EILINE(P) TERN0(HAS_X_MIN, DEFER4(MATCH_EILINE)(P, X_MIN_PIN))
#define MATCH_Y_MAX_EILINE(P) TERN0(HAS_Y_MAX, DEFER4(MATCH_EILINE)(P, Y_MAX_PIN))
#define MATCH_Y_MIN_EILINE(P) TERN0(HAS_Y_MIN, DEFER4(MATCH_EILINE)(P, Y_MIN_PIN))
#define MATCH_Z_MAX_EILINE(P) TERN0(HAS_Z_MAX, DEFER4(MATCH_EILINE)(P, Z_MAX_PIN))
#define MATCH_Z_MIN_EILINE(P) TERN0(HAS_Z_MIN, DEFER4(MATCH_EILINE)(P, Z_MIN_PIN))
#define MATCH_I_MAX_EILINE(P) TERN0(HAS_I_MAX, DEFER4(MATCH_EILINE)(P, I_MAX_PIN))
#define MATCH_I_MIN_EILINE(P) TERN0(HAS_I_MIN, DEFER4(MATCH_EILINE)(P, I_MIN_PIN))
#define MATCH_J_MAX_EILINE(P) TERN0(HAS_J_MAX, DEFER4(MATCH_EILINE)(P, J_MAX_PIN))
#define MATCH_J_MIN_EILINE(P) TERN0(HAS_J_MIN, DEFER4(MATCH_EILINE)(P, J_MIN_PIN))
#define MATCH_K_MAX_EILINE(P) TERN0(HAS_K_MAX, DEFER4(MATCH_EILINE)(P, K_MAX_PIN))
#define MATCH_K_MIN_EILINE(P) TERN0(HAS_K_MIN, DEFER4(MATCH_EILINE)(P, K_MIN_PIN))
#define MATCH_Z2_MAX_EILINE(P) TERN0(HAS_Z2_MAX, DEFER4(MATCH_EILINE)(P, Z2_MAX_PIN))
#define MATCH_Z2_MIN_EILINE(P) TERN0(HAS_Z2_MIN, DEFER4(MATCH_EILINE)(P, Z2_MIN_PIN))
#define MATCH_Z3_MAX_EILINE(P) TERN0(HAS_Z3_MAX, DEFER4(MATCH_EILINE)(P, Z3_MAX_PIN))
#define MATCH_Z3_MIN_EILINE(P) TERN0(HAS_Z3_MIN, DEFER4(MATCH_EILINE)(P, Z3_MIN_PIN))
#define MATCH_Z4_MAX_EILINE(P) TERN0(HAS_Z4_MAX, DEFER4(MATCH_EILINE)(P, Z4_MAX_PIN))
#define MATCH_Z4_MIN_EILINE(P) TERN0(HAS_Z4_MIN, DEFER4(MATCH_EILINE)(P, Z4_MIN_PIN))
#define MATCH_Z_MIN_PROBE_EILINE(P) TERN0(HAS_Z_MIN_PROBE_PIN, DEFER4(MATCH_EILINE)(P, Z_MIN_PROBE_PIN))
#define AVAILABLE_EILINE(P) ( PIN_TO_EILINE(P) != -1 \
&& !MATCH_X_MAX_EILINE(P) && !MATCH_X_MIN_EILINE(P) \
&& !MATCH_Y_MAX_EILINE(P) && !MATCH_Y_MIN_EILINE(P) \
&& !MATCH_Z_MAX_EILINE(P) && !MATCH_Z_MIN_EILINE(P) \
&& !MATCH_I_MAX_EILINE(P) && !MATCH_I_MIN_EILINE(P) \
&& !MATCH_J_MAX_EILINE(P) && !MATCH_J_MIN_EILINE(P) \
&& !MATCH_K_MAX_EILINE(P) && !MATCH_K_MIN_EILINE(P) \
&& !MATCH_Z2_MAX_EILINE(P) && !MATCH_Z2_MIN_EILINE(P) \
&& !MATCH_Z3_MAX_EILINE(P) && !MATCH_Z3_MIN_EILINE(P) \
&& !MATCH_Z4_MAX_EILINE(P) && !MATCH_Z4_MIN_EILINE(P) \
&& !MATCH_Z_MIN_PROBE_EILINE(P) )
// One ISR for all EXT-Interrupts
void endstop_ISR() { endstops.update(); }
@@ -204,5 +162,37 @@ void setup_endstop_interrupts() {
#error "Z_MIN_PROBE_PIN has no EXTINT line available."
#endif
_ATTACH(Z_MIN_PROBE_PIN);
#elif HAS_I_MAX
#if !AVAILABLE_EILINE(I_MAX_PIN)
#error "I_MAX_PIN has no EXTINT line available."
#endif
attachInterrupt(I_MAX_PIN, endstop_ISR, CHANGE);
#elif HAS_I_MIN
#if !AVAILABLE_EILINE(I_MIN_PIN)
#error "I_MIN_PIN has no EXTINT line available."
#endif
attachInterrupt(I_MIN_PIN, endstop_ISR, CHANGE);
#endif
#if HAS_J_MAX
#if !AVAILABLE_EILINE(J_MAX_PIN)
#error "J_MAX_PIN has no EXTINT line available."
#endif
attachInterrupt(J_MAX_PIN, endstop_ISR, CHANGE);
#elif HAS_J_MIN
#if !AVAILABLE_EILINE(J_MIN_PIN)
#error "J_MIN_PIN has no EXTINT line available."
#endif
attachInterrupt(J_MIN_PIN, endstop_ISR, CHANGE);
#endif
#if HAS_K_MAX
#if !AVAILABLE_EILINE(K_MAX_PIN)
#error "K_MAX_PIN has no EXTINT line available."
#endif
attachInterrupt(K_MAX_PIN, endstop_ISR, CHANGE);
#elif HAS_K_MIN
#if !AVAILABLE_EILINE(K_MIN_PIN)
#error "K_MIN_PIN has no EXTINT line available."
#endif
attachInterrupt(K_MIN_PIN, endstop_ISR, CHANGE);
#endif
}

View File

@@ -96,6 +96,12 @@ void HAL_init() {
#if HAS_SD_HOST_DRIVE
MSC_SD_init(); // Enable USB SD card access
#endif
#if PIN_EXISTS(USB_CONNECT)
OUT_WRITE(USB_CONNECT_PIN, !USB_CONNECT_INVERTING); // USB clear connection
delay(1000); // Give OS time to notice
WRITE(USB_CONNECT_PIN, USB_CONNECT_INVERTING);
#endif
}
// HAL idle task

View File

@@ -37,6 +37,9 @@
#include <stdint.h>
//
// Serial Ports
//
#ifdef USBCON
#include <USBSerial.h>
#include "../../core/serial_hook.h"
@@ -44,9 +47,6 @@
extern DefaultSerial1 MSerial0;
#endif
// ------------------------
// Defines
// ------------------------
#define _MSERIAL(X) MSerial##X
#define MSERIAL(X) _MSERIAL(X)
@@ -68,6 +68,16 @@
#endif
#endif
#ifdef SERIAL_PORT_3
#if SERIAL_PORT_3 == -1
#define MYSERIAL3 MSerial0
#elif WITHIN(SERIAL_PORT_3, 1, 6)
#define MYSERIAL3 MSERIAL(SERIAL_PORT_3)
#else
#error "SERIAL_PORT_3 must be from 1 to 6. You can also use -1 if the board supports Native USB."
#endif
#endif
#ifdef MMU2_SERIAL_PORT
#if MMU2_SERIAL_PORT == -1
#define MMU2_SERIAL MSerial0
@@ -185,6 +195,7 @@ uint16_t HAL_adc_get_result();
#ifdef STM32F1xx
#define JTAG_DISABLE() AFIO_DBGAFR_CONFIG(AFIO_MAPR_SWJ_CFG_JTAGDISABLE)
#define JTAGSWD_DISABLE() AFIO_DBGAFR_CONFIG(AFIO_MAPR_SWJ_CFG_DISABLE)
#define JTAGSWD_RESET() AFIO_DBGAFR_CONFIG(AFIO_MAPR_SWJ_CFG_RESET); // Reset: FULL SWD+JTAG
#endif
#define PLATFORM_M997_SUPPORT

View File

@@ -71,8 +71,8 @@ static void TXBegin() {
volatile uint32_t ICER[32];
};
NVICMin * nvicBase = (NVICMin*)0xE000E100;
nvicBase->ICER[nvicIndex / 32] |= _BV32(nvicIndex % 32);
NVICMin *nvicBase = (NVICMin*)0xE000E100;
SBI32(nvicBase->ICER[nvicIndex >> 5], nvicIndex & 0x1F);
// We NEED memory barriers to ensure Interrupts are actually disabled!
// ( https://dzone.com/articles/nvic-disabling-interrupts-on-arm-cortex-m-and-the )

View File

@@ -163,11 +163,9 @@ static SPISettings spiConfig;
}
spiConfig = SPISettings(clock, MSBFIRST, SPI_MODE0);
#if ENABLED(CUSTOM_SPI_PINS)
SPI.setMISO(SD_MISO_PIN);
SPI.setMOSI(SD_MOSI_PIN);
SPI.setSCLK(SD_SCK_PIN);
#endif
SPI.setMISO(SD_MISO_PIN);
SPI.setMOSI(SD_MOSI_PIN);
SPI.setSCLK(SD_SCK_PIN);
SPI.begin();
}

View File

@@ -0,0 +1,82 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2020 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/>.
*
*/
#ifdef STM32F1
/**
* PersistentStore for Arduino-style EEPROM interface
* with simple implementations supplied by Marlin.
*/
#include "../../inc/MarlinConfig.h"
#if ENABLED(IIC_BL24CXX_EEPROM)
#include "../shared/eeprom_if.h"
#include "../shared/eeprom_api.h"
//
// PersistentStore
//
#ifndef MARLIN_EEPROM_SIZE
#error "MARLIN_EEPROM_SIZE is required for IIC_BL24CXX_EEPROM."
#endif
size_t PersistentStore::capacity() { return MARLIN_EEPROM_SIZE; }
bool PersistentStore::access_start() { eeprom_init(); return true; }
bool PersistentStore::access_finish() { return true; }
bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, uint16_t *crc) {
uint16_t written = 0;
while (size--) {
uint8_t v = *value;
uint8_t * const p = (uint8_t * const)pos;
if (v != eeprom_read_byte(p)) { // EEPROM has only ~100,000 write cycles, so only write bytes that have changed!
eeprom_write_byte(p, v);
if (++written & 0x7F) delay(2); else safe_delay(2); // Avoid triggering watchdog during long EEPROM writes
if (eeprom_read_byte(p) != v) {
SERIAL_ECHO_MSG(STR_ERR_EEPROM_WRITE);
return true;
}
}
crc16(crc, &v, 1);
pos++;
value++;
}
return false;
}
bool PersistentStore::read_data(int &pos, uint8_t *value, size_t size, uint16_t *crc, const bool writing/*=true*/) {
do {
uint8_t * const p = (uint8_t * const)pos;
uint8_t c = eeprom_read_byte(p);
if (writing) *value = c;
crc16(crc, &c, 1);
pos++;
value++;
} while (--size);
return false;
}
#endif // IIC_BL24CXX_EEPROM
#endif // STM32F1

View File

@@ -28,6 +28,10 @@
#include "../shared/eeprom_api.h"
// Better: "utility/stm32_eeprom.h", but only after updating stm32duino to 2.0.0
// Use EEPROM.h for compatibility, for now.
#include <EEPROM.h>
/**
* The STM32 HAL supports chips that deal with "pages" and some with "sectors" and some that
* even have multiple "banks" of flash.

View File

@@ -0,0 +1,54 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2020 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/>.
*
*/
/**
* Platform-independent Arduino functions for I2C EEPROM.
* Enable USE_SHARED_EEPROM if not supplied by the framework.
*/
#ifdef STM32F1
#include "../../inc/MarlinConfig.h"
#if ENABLED(IIC_BL24CXX_EEPROM)
#include "../../libs/BL24CXX.h"
#include "../shared/eeprom_if.h"
void eeprom_init() { BL24CXX::init(); }
// ------------------------
// Public functions
// ------------------------
void eeprom_write_byte(uint8_t *pos, uint8_t value) {
const unsigned eeprom_address = (unsigned)pos;
return BL24CXX::writeOneByte(eeprom_address, value);
}
uint8_t eeprom_read_byte(uint8_t *pos) {
const unsigned eeprom_address = (unsigned)pos;
return BL24CXX::readOneByte(eeprom_address);
}
#endif // IIC_BL24CXX_EEPROM
#endif // STM32F1

View File

@@ -46,4 +46,10 @@ void setup_endstop_interrupts() {
TERN_(HAS_Z4_MAX, _ATTACH(Z4_MAX_PIN));
TERN_(HAS_Z4_MIN, _ATTACH(Z4_MIN_PIN));
TERN_(HAS_Z_MIN_PROBE_PIN, _ATTACH(Z_MIN_PROBE_PIN));
TERN_(HAS_I_MAX, _ATTACH(I_MAX_PIN));
TERN_(HAS_I_MIN, _ATTACH(I_MIN_PIN));
TERN_(HAS_J_MAX, _ATTACH(J_MAX_PIN));
TERN_(HAS_J_MIN, _ATTACH(J_MIN_PIN));
TERN_(HAS_K_MAX, _ATTACH(K_MAX_PIN));
TERN_(HAS_K_MIN, _ATTACH(K_MIN_PIN));
}

View File

@@ -21,7 +21,7 @@
*/
#pragma once
#if defined(USBD_USE_CDC_MSC) && DISABLED(NO_SD_HOST_DRIVE)
#if BOTH(SDSUPPORT, USBD_USE_CDC_MSC) && DISABLED(NO_SD_HOST_DRIVE)
#define HAS_SD_HOST_DRIVE 1
#endif
@@ -30,3 +30,6 @@
#undef F_CPU
#define F_CPU BOARD_F_CPU
#endif
// The Sensitive Pins array is not optimizable
#define RUNTIME_ONLY_ANALOG_TO_DIGITAL

View File

@@ -33,12 +33,12 @@ public:
DiskIODriver* diskIODriver() {
#if ENABLED(MULTI_VOLUME)
#if SHARED_VOLUME_IS(SD_ONBOARD)
return &card.media_sd_spi;
return &card.media_driver_sdcard;
#elif SHARED_VOLUME_IS(USB_FLASH_DRIVE)
return &card.media_usbFlashDrive;
return &card.media_driver_usbFlash;
#endif
#else
return diskIODriver();
return card.diskIODriver();
#endif
}

View File

@@ -0,0 +1,202 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2021 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/>.
*
*/
#if defined(ARDUINO_ARCH_STM32) && !defined(STM32GENERIC)
#include "../../../inc/MarlinConfig.h"
#if ENABLED(TFT_TOUCH_DEVICE_GT911)
#include "gt911.h"
#include "pinconfig.h"
SW_IIC::SW_IIC(uint16_t sda, uint16_t scl) {
scl_pin = scl;
sda_pin = sda;
}
// Software I2C hardware io init
void SW_IIC::init() {
OUT_WRITE(scl_pin, HIGH);
OUT_WRITE(sda_pin, HIGH);
}
// Software I2C start signal
void SW_IIC::start() {
write_sda(HIGH); // SDA = 1
write_scl(HIGH); // SCL = 1
iic_delay(2);
write_sda(LOW); // SDA = 0
iic_delay(1);
write_scl(LOW); // SCL = 0 // keep SCL low, avoid false stop caused by level jump caused by SDA switching IN/OUT
}
// Software I2C stop signal
void SW_IIC::stop() {
write_scl(LOW); // SCL = 0
iic_delay(2);
write_sda(LOW); // SDA = 0
iic_delay(2);
write_scl(HIGH); // SCL = 1
iic_delay(2);
write_sda(HIGH); // SDA = 1
}
// Software I2C sends ACK or NACK signal
void SW_IIC::send_ack(bool ack) {
write_sda(ack ? LOW : HIGH); // SDA = !ack
iic_delay(2);
write_scl(HIGH); // SCL = 1
iic_delay(2);
write_scl(LOW); // SCL = 0
}
// Software I2C read ACK or NACK signal
bool SW_IIC::read_ack() {
bool error = 0;
set_sda_in();
iic_delay(2);
write_scl(HIGH); // SCL = 1
error = read_sda();
iic_delay(2);
write_scl(LOW); // SCL = 0
set_sda_out();
return error;
}
void SW_IIC::send_byte(uint8_t txd) {
LOOP_L_N(i, 8) {
write_sda(txd & 0x80); // write data bit
txd <<= 1;
iic_delay(1);
write_scl(HIGH); // SCL = 1
iic_delay(2);
write_scl(LOW); // SCL = 0
iic_delay(1);
}
read_ack(); // wait ack
}
uint8_t SW_IIC::read_byte(bool ack) {
uint8_t data = 0;
set_sda_in();
LOOP_L_N(i, 8) {
write_scl(HIGH); // SCL = 1
iic_delay(1);
data <<= 1;
if (read_sda()) data++;
write_scl(LOW); // SCL = 0
iic_delay(2);
}
set_sda_out();
send_ack(ack);
return data;
}
GT911_REG_MAP GT911::reg;
SW_IIC GT911::sw_iic = SW_IIC(GT911_SW_I2C_SDA_PIN, GT911_SW_I2C_SCL_PIN);
void GT911::write_reg(uint16_t reg, uint8_t reg_len, uint8_t* w_data, uint8_t w_len) {
sw_iic.start();
sw_iic.send_byte(gt911_slave_address); // Set IIC Slave address
LOOP_L_N(i, reg_len) { // Set reg address
uint8_t r = (reg >> (8 * (reg_len - 1 - i))) & 0xFF;
sw_iic.send_byte(r);
}
LOOP_L_N(i, w_len) { // Write data to reg
sw_iic.send_byte(w_data[i]);
}
sw_iic.stop();
}
void GT911::read_reg(uint16_t reg, uint8_t reg_len, uint8_t* r_data, uint8_t r_len) {
sw_iic.start();
sw_iic.send_byte(gt911_slave_address); // Set IIC Slave address
LOOP_L_N(i, reg_len) { // Set reg address
uint8_t r = (reg >> (8 * (reg_len - 1 - i))) & 0xFF;
sw_iic.send_byte(r);
}
sw_iic.start();
sw_iic.send_byte(gt911_slave_address + 1); // Set read mode
LOOP_L_N(i, r_len) {
r_data[i] = sw_iic.read_byte(1); // Read data from reg
}
sw_iic.stop();
}
void GT911::Init() {
OUT_WRITE(GT911_RST_PIN, LOW);
OUT_WRITE(GT911_INT_PIN, LOW);
delay(20);
WRITE(GT911_RST_PIN, HIGH);
SET_INPUT(GT911_INT_PIN);
sw_iic.init();
uint8_t clear_reg = 0x0000;
write_reg(0x814E, 2, &clear_reg, 2); // Reset to 0 for start
}
bool GT911::getFirstTouchPoint(int16_t *x, int16_t *y) {
read_reg(0x814E, 2, &reg.REG.status, 1);
if (reg.REG.status & 0x80) {
uint8_t clear_reg = 0x00;
write_reg(0x814E, 2, &clear_reg, 1); // Reset to 0 for start
read_reg(0x8150, 2, reg.map + 2, 8 * (reg.REG.status & 0x0F));
// First touch point
*x = ((reg.REG.point[0].xh & 0x0F) << 8) | reg.REG.point[0].xl;
*y = ((reg.REG.point[0].yh & 0x0F) << 8) | reg.REG.point[0].yl;
return true;
}
return false;
}
bool GT911::getPoint(int16_t *x, int16_t *y) {
static bool touched = 0;
static int16_t read_x = 0, read_y = 0;
static millis_t next_time = 0;
if (ELAPSED(millis(), next_time)) {
touched = getFirstTouchPoint(&read_x, &read_y);
next_time = millis() + 20;
}
*x = read_x;
*y = read_y;
return touched;
}
#endif // TFT_TOUCH_DEVICE_GT911
#endif // ARDUINO_ARCH_STM32 && !STM32GENERIC

View File

@@ -0,0 +1,120 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2021 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/>.
*
*/
#pragma once
#include "../../../inc/MarlinConfig.h"
#define GT911_SLAVE_ADDRESS 0xBA
#if !PIN_EXISTS(GT911_RST)
#error "GT911_RST_PIN is not defined."
#elif !PIN_EXISTS(GT911_INT)
#error "GT911_INT_PIN is not defined."
#elif !PIN_EXISTS(GT911_SW_I2C_SCL)
#error "GT911_SW_I2C_SCL_PIN is not defined."
#elif !PIN_EXISTS(GT911_SW_I2C_SDA)
#error "GT911_SW_I2C_SDA_PIN is not defined."
#endif
class SW_IIC {
private:
uint16_t scl_pin;
uint16_t sda_pin;
void write_scl(bool level)
{
WRITE(scl_pin, level);
}
void write_sda(bool level)
{
WRITE(sda_pin, level);
}
bool read_sda()
{
return READ(sda_pin);
}
void set_sda_out()
{
SET_OUTPUT(sda_pin);
}
void set_sda_in()
{
SET_INPUT_PULLUP(sda_pin);
}
static void iic_delay(uint8_t t)
{
delayMicroseconds(t);
}
public:
SW_IIC(uint16_t sda, uint16_t scl);
// setSCL/SDA have to be called before begin()
void setSCL(uint16_t scl)
{
scl_pin = scl;
};
void setSDA(uint16_t sda)
{
sda_pin = sda;
};
void init(); // Initialize the IO port of IIC
void start(); // Send IIC start signal
void stop(); // Send IIC stop signal
void send_byte(uint8_t txd); // IIC sends a byte
uint8_t read_byte(bool ack); // IIC reads a byte
void send_ack(bool ack); // IIC sends ACK or NACK signal
bool read_ack();
};
typedef struct __attribute__((__packed__)) {
uint8_t xl;
uint8_t xh;
uint8_t yl;
uint8_t yh;
uint8_t sizel;
uint8_t sizeh;
uint8_t reserved;
uint8_t track_id;
} GT911_POINT;
typedef union __attribute__((__packed__)) {
uint8_t map[42];
struct {
uint8_t status; // 0x814E
uint8_t track_id; // 0x814F
GT911_POINT point[5]; // [0]:0x8150 - 0x8157 / [1]:0x8158 - 0x815F / [2]:0x8160 - 0x8167 / [3]:0x8168 - 0x816F / [4]:0x8170 - 0x8177
} REG;
} GT911_REG_MAP;
class GT911 {
private:
static const uint8_t gt911_slave_address = GT911_SLAVE_ADDRESS;
static GT911_REG_MAP reg;
static SW_IIC sw_iic;
static void write_reg(uint16_t reg, uint8_t reg_len, uint8_t* w_data, uint8_t w_len);
static void read_reg(uint16_t reg, uint8_t reg_len, uint8_t* r_data, uint8_t r_len);
public:
static void Init();
static bool getFirstTouchPoint(int16_t *x, int16_t *y);
static bool getPoint(int16_t *x, int16_t *y);
};

View File

@@ -45,7 +45,6 @@
#define SDRAM_MODEREG_WRITEBURST_MODE_PROGRAMMED ((uint16_t)0x0000)
#define SDRAM_MODEREG_WRITEBURST_MODE_SINGLE ((uint16_t)0x0200)
void SDRAM_Initialization_Sequence(SDRAM_HandleTypeDef *hsdram, FMC_SDRAM_CommandTypeDef *Command) {
__IO uint32_t tmpmrd =0;
@@ -192,7 +191,7 @@ void LTDC_Config() {
hltdc_F.Instance = LTDC;
/* Layer0 Configuration ------------------------------------------------------*/
/* Layer0 Configuration ------------------------------------------------------*/
/* Windowing configuration */
pLayerCfg.WindowX0 = 0;
@@ -289,22 +288,21 @@ void TFT_LTDC::DrawRect(uint16_t sx, uint16_t sy, uint16_t ex, uint16_t ey, uint
uint16_t offline = TFT_WIDTH - (ex - sx);
uint32_t addr = (uint32_t)&framebuffer[(TFT_WIDTH * sy) + sx];
DMA2D->CR &= ~(1 << 0);
CBI(DMA2D->CR, 0);
DMA2D->CR = 3 << 16;
DMA2D->OPFCCR = 0X02;
DMA2D->OOR = offline;
DMA2D->OMAR = addr;
DMA2D->NLR = (ey - sy) | ((ex - sx) << 16);
DMA2D->OCOLR = color;
DMA2D->CR |= 1<<0;
SBI(DMA2D->CR, 0);
uint32_t timeout = 0;
while((DMA2D->ISR & (1<<1)) == 0)
{
while (!TEST(DMA2D->ISR, 1)) {
timeout++;
if(timeout>0X1FFFFF)break;
if (timeout > 0x1FFFFF) break;
}
DMA2D->IFCR |= 1<<1;
SBI(DMA2D->IFCR, 1);
}
void TFT_LTDC::DrawImage(uint16_t sx, uint16_t sy, uint16_t ex, uint16_t ey, uint16_t *colors) {
@@ -314,7 +312,7 @@ void TFT_LTDC::DrawImage(uint16_t sx, uint16_t sy, uint16_t ex, uint16_t ey, uin
uint16_t offline = TFT_WIDTH - (ex - sx);
uint32_t addr = (uint32_t)&framebuffer[(TFT_WIDTH * sy) + sx];
DMA2D->CR &= ~(1 << 0);
CBI(DMA2D->CR, 0);
DMA2D->CR = 0 << 16;
DMA2D->FGPFCCR = 0X02;
DMA2D->FGOR = 0;
@@ -322,15 +320,14 @@ void TFT_LTDC::DrawImage(uint16_t sx, uint16_t sy, uint16_t ex, uint16_t ey, uin
DMA2D->FGMAR = (uint32_t)colors;
DMA2D->OMAR = addr;
DMA2D->NLR = (ey - sy) | ((ex - sx) << 16);
DMA2D->CR |= 1<<0;
SBI(DMA2D->CR, 0);
uint32_t timeout = 0;
while((DMA2D->ISR & (1<<1)) == 0)
{
while (!TEST(DMA2D->ISR, 1)) {
timeout++;
if(timeout>0X1FFFFF)break;
if (timeout > 0x1FFFFF) break;
}
DMA2D->IFCR |= 1<<1;
SBI(DMA2D->IFCR, 1);
}
void TFT_LTDC::WriteData(uint16_t data) {

View File

@@ -125,12 +125,20 @@ void TFT_SPI::DataTransferBegin(uint16_t DataSize) {
WRITE(TFT_CS_PIN, LOW);
}
#ifdef TFT_DEFAULT_DRIVER
#include "../../../lcd/tft_io/tft_ids.h"
#endif
uint32_t TFT_SPI::GetID() {
uint32_t id;
id = ReadID(LCD_READ_ID);
if ((id & 0xFFFF) == 0 || (id & 0xFFFF) == 0xFFFF)
if ((id & 0xFFFF) == 0 || (id & 0xFFFF) == 0xFFFF) {
id = ReadID(LCD_READ_ID4);
#ifdef TFT_DEFAULT_DRIVER
if ((id & 0xFFFF) == 0 || (id & 0xFFFF) == 0xFFFF)
id = TFT_DEFAULT_DRIVER;
#endif
}
return id;
}

View File

@@ -23,7 +23,7 @@
#include "../../../inc/MarlinConfig.h"
#if HAS_TFT_XPT2046 || HAS_TOUCH_BUTTONS
#if HAS_TFT_XPT2046 || HAS_RES_TOUCH_BUTTONS
#include "xpt2046.h"
#include "pinconfig.h"

View File

@@ -56,7 +56,7 @@ enum XPTCoordinate : uint8_t {
XPT2046_Z2 = 0x40 | XPT2046_CONTROL | XPT2046_DFR_MODE,
};
#if !defined(XPT2046_Z1_THRESHOLD)
#ifndef XPT2046_Z1_THRESHOLD
#define XPT2046_Z1_THRESHOLD 10
#endif

View File

@@ -21,15 +21,12 @@
*/
#pragma once
#include <stdint.h>
#include "../../inc/MarlinConfig.h"
// ------------------------
// Defines
// ------------------------
#define FORCE_INLINE __attribute__((always_inline)) inline
// STM32 timers may be 16 or 32 bit. Limiting HAL_TIMER_TYPE_MAX to 16 bits
// avoids issues with STM32F0 MCUs, which seem to pause timers if UINT32_MAX
// is written to the register. STM32F4 timers do not manifest this issue,

View File

@@ -293,7 +293,7 @@ void HAL_init() {
#if PIN_EXISTS(USB_CONNECT)
OUT_WRITE(USB_CONNECT_PIN, !USB_CONNECT_INVERTING); // USB clear connection
delay(1000); // Give OS time to notice
OUT_WRITE(USB_CONNECT_PIN, USB_CONNECT_INVERTING);
WRITE(USB_CONNECT_PIN, USB_CONNECT_INVERTING);
#endif
TERN_(POSTMORTEM_DEBUGGING, install_min_serial()); // Install the minimal serial handler
}

View File

@@ -36,7 +36,6 @@
#include "fastio.h"
#include "watchdog.h"
#include <stdint.h>
#include <util/atomic.h>
@@ -63,11 +62,10 @@
#ifdef SERIAL_USB
typedef ForwardSerial1Class< USBSerial > DefaultSerial1;
extern DefaultSerial1 MSerial0;
#if !HAS_SD_HOST_DRIVE
#define UsbSerial MSerial0
#else
#if HAS_SD_HOST_DRIVE
#define UsbSerial MarlinCompositeSerial
#else
#define UsbSerial MSerial0
#endif
#endif
@@ -86,11 +84,7 @@
#define MYSERIAL1 MSERIAL(SERIAL_PORT)
#else
#define MYSERIAL1 MSERIAL(1) // dummy port
#if NUM_UARTS == 5
#error "SERIAL_PORT must be from 1 to 5. You can also use -1 if the board supports Native USB."
#else
#error "SERIAL_PORT must be from 1 to 3. You can also use -1 if the board supports Native USB."
#endif
static_assert(false, "SERIAL_PORT must be from 1 to " STRINGIFY(NUM_UARTS) ". You can also use -1 if the board supports Native USB.")
#endif
#ifdef SERIAL_PORT_2
@@ -100,11 +94,18 @@
#define MYSERIAL2 MSERIAL(SERIAL_PORT_2)
#else
#define MYSERIAL2 MSERIAL(1) // dummy port
#if NUM_UARTS == 5
#error "SERIAL_PORT_2 must be from 1 to 5. You can also use -1 if the board supports Native USB."
#else
#error "SERIAL_PORT_2 must be from 1 to 3. You can also use -1 if the board supports Native USB."
#endif
static_assert(false, "SERIAL_PORT_2 must be from 1 to " STRINGIFY(NUM_UARTS) ". You can also use -1 if the board supports Native USB.")
#endif
#endif
#ifdef SERIAL_PORT_3
#if SERIAL_PORT_3 == -1
#define MYSERIAL3 UsbSerial
#elif WITHIN(SERIAL_PORT_3, 1, NUM_UARTS)
#define MYSERIAL3 MSERIAL(SERIAL_PORT_3)
#else
#define MYSERIAL3 MSERIAL(1) // dummy port
static_assert(false, "SERIAL_PORT_3 must be from 1 to " STRINGIFY(NUM_UARTS) ". You can also use -1 if the board supports Native USB.")
#endif
#endif
@@ -115,11 +116,7 @@
#define MMU2_SERIAL MSERIAL(MMU2_SERIAL_PORT)
#else
#define MMU2_SERIAL MSERIAL(1) // dummy port
#if NUM_UARTS == 5
#error "MMU2_SERIAL_PORT must be from 1 to 5. You can also use -1 if the board supports Native USB."
#else
#error "MMU2_SERIAL_PORT must be from 1 to 3. You can also use -1 if the board supports Native USB."
#endif
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.")
#endif
#endif
@@ -130,11 +127,7 @@
#define LCD_SERIAL MSERIAL(LCD_SERIAL_PORT)
#else
#define LCD_SERIAL MSERIAL(1) // dummy port
#if NUM_UARTS == 5
#error "LCD_SERIAL_PORT must be from 1 to 5. You can also use -1 if the board supports Native USB."
#else
#error "LCD_SERIAL_PORT must be from 1 to 3. You can also use -1 if the board supports Native USB."
#endif
static_assert(false, "LCD_SERIAL_PORT must be from 1 to " STRINGIFY(NUM_UARTS) ". You can also use -1 if the board supports Native USB.")
#endif
#if HAS_DGUS_LCD
#define SERIAL_GET_TX_BUFFER_FREE() LCD_SERIAL.availableForWrite()

View File

@@ -55,7 +55,7 @@ static void TXBegin() {
nvic_irq_disable(dev->irq_num);
// Use this if removing libmaple
//NVIC_BASE->ICER[1] |= _BV(irq - 32);
//SBI(NVIC_BASE->ICER[1], irq - 32);
// We NEED memory barriers to ensure Interrupts are actually disabled!
// ( https://dzone.com/articles/nvic-disabling-interrupts-on-arm-cortex-m-and-the )

View File

@@ -167,6 +167,15 @@ constexpr bool IsSerialClassAllowed(const HardwareSerial&) { return false; }
#if AXIS_HAS_HW_SERIAL(Z4)
CHECK_AXIS_SERIAL(Z4);
#endif
#if AXIS_HAS_HW_SERIAL(I)
CHECK_AXIS_SERIAL(I);
#endif
#if AXIS_HAS_HW_SERIAL(J)
CHECK_AXIS_SERIAL(J);
#endif
#if AXIS_HAS_HW_SERIAL(K)
CHECK_AXIS_SERIAL(K);
#endif
#if AXIS_HAS_HW_SERIAL(E0)
CHECK_AXIS_SERIAL(E0);
#endif

View File

@@ -11,6 +11,7 @@ if __name__ == "__main__":
"-fsigned-char",
"-fno-move-loop-invariants",
"-fno-strict-aliasing",
"-fsingle-precision-constant",
"--specs=nano.specs",
"--specs=nosys.specs",

View File

@@ -71,4 +71,10 @@ void setup_endstop_interrupts() {
TERN_(HAS_Z4_MAX, _ATTACH(Z4_MAX_PIN));
TERN_(HAS_Z4_MIN, _ATTACH(Z4_MIN_PIN));
TERN_(HAS_Z_MIN_PROBE_PIN, _ATTACH(Z_MIN_PROBE_PIN));
TERN_(HAS_I_MAX, _ATTACH(I_MAX_PIN));
TERN_(HAS_I_MIN, _ATTACH(I_MIN_PIN));
TERN_(HAS_J_MAX, _ATTACH(J_MAX_PIN));
TERN_(HAS_J_MIN, _ATTACH(J_MIN_PIN));
TERN_(HAS_K_MAX, _ATTACH(K_MAX_PIN));
TERN_(HAS_K_MIN, _ATTACH(K_MIN_PIN));
}

View File

@@ -38,8 +38,8 @@
#define SPI_CLOCK_MAX SPI_BAUD_PCLK_DIV_2
#endif
#define CS_LOW() WRITE(ONBOARD_SD_CS_PIN, LOW) /* Set OnboardSPI cs low */
#define CS_HIGH() WRITE(ONBOARD_SD_CS_PIN, HIGH) /* Set OnboardSPI cs high */
#define CS_LOW() WRITE(ONBOARD_SD_CS_PIN, LOW) // Set OnboardSPI cs low
#define CS_HIGH() WRITE(ONBOARD_SD_CS_PIN, HIGH) // Set OnboardSPI cs high
#define FCLK_FAST() ONBOARD_SD_SPI.setClockDivider(SPI_CLOCK_MAX)
#define FCLK_SLOW() ONBOARD_SD_SPI.setClockDivider(SPI_BAUD_PCLK_DIV_256)
@@ -49,32 +49,32 @@
---------------------------------------------------------------------------*/
/* MMC/SD command */
#define CMD0 (0) /* GO_IDLE_STATE */
#define CMD1 (1) /* SEND_OP_COND (MMC) */
#define ACMD41 (0x80+41) /* SEND_OP_COND (SDC) */
#define CMD8 (8) /* SEND_IF_COND */
#define CMD9 (9) /* SEND_CSD */
#define CMD10 (10) /* SEND_CID */
#define CMD12 (12) /* STOP_TRANSMISSION */
#define ACMD13 (0x80+13) /* SD_STATUS (SDC) */
#define CMD16 (16) /* SET_BLOCKLEN */
#define CMD17 (17) /* READ_SINGLE_BLOCK */
#define CMD18 (18) /* READ_MULTIPLE_BLOCK */
#define CMD23 (23) /* SET_BLOCK_COUNT (MMC) */
#define ACMD23 (0x80+23) /* SET_WR_BLK_ERASE_COUNT (SDC) */
#define CMD24 (24) /* WRITE_BLOCK */
#define CMD25 (25) /* WRITE_MULTIPLE_BLOCK */
#define CMD32 (32) /* ERASE_ER_BLK_START */
#define CMD33 (33) /* ERASE_ER_BLK_END */
#define CMD38 (38) /* ERASE */
#define CMD48 (48) /* READ_EXTR_SINGLE */
#define CMD49 (49) /* WRITE_EXTR_SINGLE */
#define CMD55 (55) /* APP_CMD */
#define CMD58 (58) /* READ_OCR */
#define CMD0 (0) // GO_IDLE_STATE
#define CMD1 (1) // SEND_OP_COND (MMC)
#define ACMD41 (0x80+41) // SEND_OP_COND (SDC)
#define CMD8 (8) // SEND_IF_COND
#define CMD9 (9) // SEND_CSD
#define CMD10 (10) // SEND_CID
#define CMD12 (12) // STOP_TRANSMISSION
#define ACMD13 (0x80+13) // SD_STATUS (SDC)
#define CMD16 (16) // SET_BLOCKLEN
#define CMD17 (17) // READ_SINGLE_BLOCK
#define CMD18 (18) // READ_MULTIPLE_BLOCK
#define CMD23 (23) // SET_BLOCK_COUNT (MMC)
#define ACMD23 (0x80+23) // SET_WR_BLK_ERASE_COUNT (SDC)
#define CMD24 (24) // WRITE_BLOCK
#define CMD25 (25) // WRITE_MULTIPLE_BLOCK
#define CMD32 (32) // ERASE_ER_BLK_START
#define CMD33 (33) // ERASE_ER_BLK_END
#define CMD38 (38) // ERASE
#define CMD48 (48) // READ_EXTR_SINGLE
#define CMD49 (49) // WRITE_EXTR_SINGLE
#define CMD55 (55) // APP_CMD
#define CMD58 (58) // READ_OCR
static volatile DSTATUS Stat = STA_NOINIT; /* Physical drive status */
static volatile DSTATUS Stat = STA_NOINIT; // Physical drive status
static volatile UINT timeout;
static BYTE CardType; /* Card type flags */
static BYTE CardType; // Card type flags
/*-----------------------------------------------------------------------*/
/* Send/Receive data to the MMC (Platform dependent) */
@@ -82,7 +82,7 @@ static BYTE CardType; /* Card type flags */
/* Exchange a byte */
static BYTE xchg_spi (
BYTE dat /* Data to send */
BYTE dat // Data to send
) {
BYTE returnByte = ONBOARD_SD_SPI.transfer(dat);
return returnByte;
@@ -90,18 +90,18 @@ static BYTE xchg_spi (
/* Receive multiple byte */
static void rcvr_spi_multi (
BYTE *buff, /* Pointer to data buffer */
UINT btr /* Number of bytes to receive (16, 64 or 512) */
BYTE *buff, // Pointer to data buffer
UINT btr // Number of bytes to receive (16, 64 or 512)
) {
ONBOARD_SD_SPI.dmaTransfer(0, const_cast<uint8_t*>(buff), btr);
}
#if _DISKIO_WRITE
/* Send multiple bytes */
// Send multiple bytes
static void xmit_spi_multi (
const BYTE *buff, /* Pointer to the data */
UINT btx /* Number of bytes to send (multiple of 16) */
const BYTE *buff, // Pointer to the data
UINT btx // Number of bytes to send (multiple of 16)
) {
ONBOARD_SD_SPI.dmaSend(const_cast<uint8_t*>(buff), btx);
}
@@ -112,16 +112,15 @@ static void rcvr_spi_multi (
/* Wait for card ready */
/*-----------------------------------------------------------------------*/
static int wait_ready ( /* 1:Ready, 0:Timeout */
UINT wt /* Timeout [ms] */
static int wait_ready ( // 1:Ready, 0:Timeout
UINT wt // Timeout [ms]
) {
BYTE d;
timeout = millis() + wt;
do {
d = xchg_spi(0xFF);
/* This loop takes a while. Insert rot_rdq() here for multitask environment. */
} while (d != 0xFF && (timeout > millis())); /* Wait for card goes ready or timeout */
// This loop takes a while. Insert rot_rdq() here for multitask environment.
} while (d != 0xFF && (timeout > millis())); // Wait for card goes ready or timeout
return (d == 0xFF) ? 1 : 0;
}
@@ -131,21 +130,21 @@ static int wait_ready ( /* 1:Ready, 0:Timeout */
/*-----------------------------------------------------------------------*/
static void deselect() {
CS_HIGH(); /* CS = H */
xchg_spi(0xFF); /* Dummy clock (force DO hi-z for multiple slave SPI) */
CS_HIGH(); // CS = H
xchg_spi(0xFF); // Dummy clock (force DO hi-z for multiple slave SPI)
}
/*-----------------------------------------------------------------------*/
/* Select card and wait for ready */
/*-----------------------------------------------------------------------*/
static int select() { /* 1:OK, 0:Timeout */
CS_LOW(); /* CS = L */
xchg_spi(0xFF); /* Dummy clock (force DO enabled) */
static int select() { // 1:OK, 0:Timeout
CS_LOW(); // CS = L
xchg_spi(0xFF); // Dummy clock (force DO enabled)
if (wait_ready(500)) return 1; /* Leading busy check: Wait for card ready */
if (wait_ready(500)) return 1; // Leading busy check: Wait for card ready
deselect(); /* Timeout */
deselect(); // Timeout
return 0;
}
@@ -153,16 +152,18 @@ static int select() { /* 1:OK, 0:Timeout */
/* Control SPI module (Platform dependent) */
/*-----------------------------------------------------------------------*/
static void power_on() { /* Enable SSP module and attach it to I/O pads */
// Enable SSP module and attach it to I/O pads
static void sd_power_on() {
ONBOARD_SD_SPI.setModule(ONBOARD_SPI_DEVICE);
ONBOARD_SD_SPI.begin();
ONBOARD_SD_SPI.setBitOrder(MSBFIRST);
ONBOARD_SD_SPI.setDataMode(SPI_MODE0);
OUT_WRITE(ONBOARD_SD_CS_PIN, HIGH); /* Set CS# high */
OUT_WRITE(ONBOARD_SD_CS_PIN, HIGH); // Set CS# high
}
static void power_off() { /* Disable SPI function */
select(); /* Wait for card ready */
// Disable SPI function
static void sd_power_off() {
select(); // Wait for card ready
deselect();
}
@@ -170,23 +171,23 @@ static void power_off() { /* Disable SPI function */
/* Receive a data packet from the MMC */
/*-----------------------------------------------------------------------*/
static int rcvr_datablock ( /* 1:OK, 0:Error */
BYTE *buff, /* Data buffer */
UINT btr /* Data block length (byte) */
static int rcvr_datablock ( // 1:OK, 0:Error
BYTE *buff, // Data buffer
UINT btr // Data block length (byte)
) {
BYTE token;
timeout = millis() + 200;
do { /* Wait for DataStart token in timeout of 200ms */
do { // Wait for DataStart token in timeout of 200ms
token = xchg_spi(0xFF);
/* This loop will take a while. Insert rot_rdq() here for multitask environment. */
// This loop will take a while. Insert rot_rdq() here for multitask environment.
} while ((token == 0xFF) && (timeout > millis()));
if (token != 0xFE) return 0; /* Function fails if invalid DataStart token or timeout */
if (token != 0xFE) return 0; // Function fails if invalid DataStart token or timeout
rcvr_spi_multi(buff, btr); /* Store trailing data to the buffer */
xchg_spi(0xFF); xchg_spi(0xFF); /* Discard CRC */
rcvr_spi_multi(buff, btr); // Store trailing data to the buffer
xchg_spi(0xFF); xchg_spi(0xFF); // Discard CRC
return 1; /* Function succeeded */
return 1; // Function succeeded
}
/*-----------------------------------------------------------------------*/
@@ -195,25 +196,25 @@ static int rcvr_datablock ( /* 1:OK, 0:Error */
#if _DISKIO_WRITE
static int xmit_datablock ( /* 1:OK, 0:Failed */
const BYTE *buff, /* Ponter to 512 byte data to be sent */
BYTE token /* Token */
static int xmit_datablock( // 1:OK, 0:Failed
const BYTE *buff, // Pointer to 512 byte data to be sent
BYTE token // Token
) {
BYTE resp;
if (!wait_ready(500)) return 0; /* Leading busy check: Wait for card ready to accept data block */
if (!wait_ready(500)) return 0; // Leading busy check: Wait for card ready to accept data block
xchg_spi(token); /* Send token */
if (token == 0xFD) return 1; /* Do not send data if token is StopTran */
xchg_spi(token); // Send token
if (token == 0xFD) return 1; // Do not send data if token is StopTran
xmit_spi_multi(buff, 512); /* Data */
xchg_spi(0xFF); xchg_spi(0xFF); /* Dummy CRC */
xmit_spi_multi(buff, 512); // Data
xchg_spi(0xFF); xchg_spi(0xFF); // Dummy CRC
resp = xchg_spi(0xFF); /* Receive data resp */
resp = xchg_spi(0xFF); // Receive data resp
return (resp & 0x1F) == 0x05 ? 1 : 0; /* Data was accepted or not */
return (resp & 0x1F) == 0x05 ? 1 : 0; // Data was accepted or not
/* Busy check is done at next transmission */
// Busy check is done at next transmission
}
#endif // _DISKIO_WRITE
@@ -222,43 +223,43 @@ static int rcvr_datablock ( /* 1:OK, 0:Error */
/* Send a command packet to the MMC */
/*-----------------------------------------------------------------------*/
static BYTE send_cmd ( /* Return value: R1 resp (bit7==1:Failed to send) */
BYTE cmd, /* Command index */
DWORD arg /* Argument */
static BYTE send_cmd( // Return value: R1 resp (bit7==1:Failed to send)
BYTE cmd, // Command index
DWORD arg // Argument
) {
BYTE n, res;
if (cmd & 0x80) { /* Send a CMD55 prior to ACMD<n> */
if (cmd & 0x80) { // Send a CMD55 prior to ACMD<n>
cmd &= 0x7F;
res = send_cmd(CMD55, 0);
if (res > 1) return res;
}
/* Select the card and wait for ready except to stop multiple block read */
// Select the card and wait for ready except to stop multiple block read
if (cmd != CMD12) {
deselect();
if (!select()) return 0xFF;
}
/* Send command packet */
xchg_spi(0x40 | cmd); /* Start + command index */
xchg_spi((BYTE)(arg >> 24)); /* Argument[31..24] */
xchg_spi((BYTE)(arg >> 16)); /* Argument[23..16] */
xchg_spi((BYTE)(arg >> 8)); /* Argument[15..8] */
xchg_spi((BYTE)arg); /* Argument[7..0] */
n = 0x01; /* Dummy CRC + Stop */
if (cmd == CMD0) n = 0x95; /* Valid CRC for CMD0(0) */
if (cmd == CMD8) n = 0x87; /* Valid CRC for CMD8(0x1AA) */
// Send command packet
xchg_spi(0x40 | cmd); // Start + command index
xchg_spi((BYTE)(arg >> 24)); // Argument[31..24]
xchg_spi((BYTE)(arg >> 16)); // Argument[23..16]
xchg_spi((BYTE)(arg >> 8)); // Argument[15..8]
xchg_spi((BYTE)arg); // Argument[7..0]
n = 0x01; // Dummy CRC + Stop
if (cmd == CMD0) n = 0x95; // Valid CRC for CMD0(0)
if (cmd == CMD8) n = 0x87; // Valid CRC for CMD8(0x1AA)
xchg_spi(n);
/* Receive command resp */
if (cmd == CMD12) xchg_spi(0xFF); /* Diacard following one byte when CMD12 */
n = 10; /* Wait for response (10 bytes max) */
// Receive command response
if (cmd == CMD12) xchg_spi(0xFF); // Discard the following byte when CMD12
n = 10; // Wait for response (10 bytes max)
do
res = xchg_spi(0xFF);
while ((res & 0x80) && --n);
return res; /* Return received response */
return res; // Return received response
}
/*--------------------------------------------------------------------------
@@ -270,49 +271,52 @@ static BYTE send_cmd ( /* Return value: R1 resp (bit7==1:Failed to send) */
/*-----------------------------------------------------------------------*/
DSTATUS disk_initialize (
BYTE drv /* Physical drive number (0) */
BYTE drv // Physical drive number (0)
) {
BYTE n, cmd, ty, ocr[4];
if (drv) return STA_NOINIT; /* Supports only drive 0 */
power_on(); /* Initialize SPI */
if (drv) return STA_NOINIT; // Supports only drive 0
sd_power_on(); // Initialize SPI
if (Stat & STA_NODISK) return Stat; /* Is a card existing in the soket? */
if (Stat & STA_NODISK) return Stat; // Is a card existing in the soket?
FCLK_SLOW();
for (n = 10; n; n--) xchg_spi(0xFF); /* Send 80 dummy clocks */
for (n = 10; n; n--) xchg_spi(0xFF); // Send 80 dummy clocks
ty = 0;
if (send_cmd(CMD0, 0) == 1) { /* Put the card SPI state */
timeout = millis() + 1000; /* Initialization timeout = 1 sec */
if (send_cmd(CMD8, 0x1AA) == 1) { /* Is the catd SDv2? */
for (n = 0; n < 4; n++) ocr[n] = xchg_spi(0xFF); /* Get 32 bit return value of R7 resp */
if (ocr[2] == 0x01 && ocr[3] == 0xAA) { /* Does the card support 2.7-3.6V? */
while ((timeout > millis()) && send_cmd(ACMD41, 1UL << 30)) ; /* Wait for end of initialization with ACMD41(HCS) */
if ((timeout > millis()) && send_cmd(CMD58, 0) == 0) { /* Check CCS bit in the OCR */
if (send_cmd(CMD0, 0) == 1) { // Put the card SPI state
timeout = millis() + 1000; // Initialization timeout = 1 sec
if (send_cmd(CMD8, 0x1AA) == 1) { // Is the catd SDv2?
for (n = 0; n < 4; n++) ocr[n] = xchg_spi(0xFF); // Get 32 bit return value of R7 resp
if (ocr[2] == 0x01 && ocr[3] == 0xAA) { // Does the card support 2.7-3.6V?
while ((timeout > millis()) && send_cmd(ACMD41, 1UL << 30)); // Wait for end of initialization with ACMD41(HCS)
if ((timeout > millis()) && send_cmd(CMD58, 0) == 0) { // Check CCS bit in the OCR
for (n = 0; n < 4; n++) ocr[n] = xchg_spi(0xFF);
ty = (ocr[0] & 0x40) ? CT_SD2 | CT_BLOCK : CT_SD2; /* Check if the card is SDv2 */
ty = (ocr[0] & 0x40) ? CT_SD2 | CT_BLOCK : CT_SD2; // Check if the card is SDv2
}
}
} else { /* Not an SDv2 card */
if (send_cmd(ACMD41, 0) <= 1) { /* SDv1 or MMCv3? */
ty = CT_SD1; cmd = ACMD41; /* SDv1 (ACMD41(0)) */
} else {
ty = CT_MMC; cmd = CMD1; /* MMCv3 (CMD1(0)) */
}
else { // Not an SDv2 card
if (send_cmd(ACMD41, 0) <= 1) { // SDv1 or MMCv3?
ty = CT_SD1; cmd = ACMD41; // SDv1 (ACMD41(0))
}
while ((timeout > millis()) && send_cmd(cmd, 0)) ; /* Wait for the card leaves idle state */
if (!(timeout > millis()) || send_cmd(CMD16, 512) != 0) /* Set block length: 512 */
else {
ty = CT_MMC; cmd = CMD1; // MMCv3 (CMD1(0))
}
while ((timeout > millis()) && send_cmd(cmd, 0)); // Wait for the card leaves idle state
if (!(timeout > millis()) || send_cmd(CMD16, 512) != 0) // Set block length: 512
ty = 0;
}
}
CardType = ty; /* Card type */
CardType = ty; // Card type
deselect();
if (ty) { /* OK */
FCLK_FAST(); /* Set fast clock */
Stat &= ~STA_NOINIT; /* Clear STA_NOINIT flag */
} else { /* Failed */
power_off();
if (ty) { // OK
FCLK_FAST(); // Set fast clock
Stat &= ~STA_NOINIT; // Clear STA_NOINIT flag
}
else { // Failed
sd_power_off();
Stat = STA_NOINIT;
}
@@ -324,10 +328,10 @@ DSTATUS disk_initialize (
/*-----------------------------------------------------------------------*/
DSTATUS disk_status (
BYTE drv /* Physical drive number (0) */
BYTE drv // Physical drive number (0)
) {
if (drv) return STA_NOINIT; /* Supports only drive 0 */
return Stat; /* Return disk status */
if (drv) return STA_NOINIT; // Supports only drive 0
return Stat; // Return disk status
}
/*-----------------------------------------------------------------------*/
@@ -335,28 +339,28 @@ DSTATUS disk_status (
/*-----------------------------------------------------------------------*/
DRESULT disk_read (
BYTE drv, /* Physical drive number (0) */
BYTE *buff, /* Pointer to the data buffer to store read data */
DWORD sector, /* Start sector number (LBA) */
UINT count /* Number of sectors to read (1..128) */
BYTE drv, // Physical drive number (0)
BYTE *buff, // Pointer to the data buffer to store read data
DWORD sector, // Start sector number (LBA)
UINT count // Number of sectors to read (1..128)
) {
BYTE cmd;
if (drv || !count) return RES_PARERR; /* Check parameter */
if (Stat & STA_NOINIT) return RES_NOTRDY; /* Check if drive is ready */
if (!(CardType & CT_BLOCK)) sector *= 512; /* LBA ot BA conversion (byte addressing cards) */
if (drv || !count) return RES_PARERR; // Check parameter
if (Stat & STA_NOINIT) return RES_NOTRDY; // Check if drive is ready
if (!(CardType & CT_BLOCK)) sector *= 512; // LBA ot BA conversion (byte addressing cards)
FCLK_FAST();
cmd = count > 1 ? CMD18 : CMD17; /* READ_MULTIPLE_BLOCK : READ_SINGLE_BLOCK */
cmd = count > 1 ? CMD18 : CMD17; // READ_MULTIPLE_BLOCK : READ_SINGLE_BLOCK
if (send_cmd(cmd, sector) == 0) {
do {
if (!rcvr_datablock(buff, 512)) break;
buff += 512;
} while (--count);
if (cmd == CMD18) send_cmd(CMD12, 0); /* STOP_TRANSMISSION */
if (cmd == CMD18) send_cmd(CMD12, 0); // STOP_TRANSMISSION
}
deselect();
return count ? RES_ERROR : RES_OK; /* Return result */
return count ? RES_ERROR : RES_OK; // Return result
}
/*-----------------------------------------------------------------------*/
@@ -366,36 +370,36 @@ DRESULT disk_read (
#if _DISKIO_WRITE
DRESULT disk_write(
BYTE drv, /* Physical drive number (0) */
const BYTE *buff, /* Ponter to the data to write */
DWORD sector, /* Start sector number (LBA) */
UINT count /* Number of sectors to write (1..128) */
BYTE drv, // Physical drive number (0)
const BYTE *buff, // Pointer to the data to write
DWORD sector, // Start sector number (LBA)
UINT count // Number of sectors to write (1..128)
) {
if (drv || !count) return RES_PARERR; /* Check parameter */
if (Stat & STA_NOINIT) return RES_NOTRDY; /* Check drive status */
if (Stat & STA_PROTECT) return RES_WRPRT; /* Check write protect */
if (drv || !count) return RES_PARERR; // Check parameter
if (Stat & STA_NOINIT) return RES_NOTRDY; // Check drive status
if (Stat & STA_PROTECT) return RES_WRPRT; // Check write protect
FCLK_FAST();
if (!(CardType & CT_BLOCK)) sector *= 512; /* LBA ==> BA conversion (byte addressing cards) */
if (!(CardType & CT_BLOCK)) sector *= 512; // LBA ==> BA conversion (byte addressing cards)
if (count == 1) { /* Single sector write */
if ((send_cmd(CMD24, sector) == 0) /* WRITE_BLOCK */
if (count == 1) { // Single sector write
if ((send_cmd(CMD24, sector) == 0) // WRITE_BLOCK
&& xmit_datablock(buff, 0xFE)) {
count = 0;
}
}
else { /* Multiple sector write */
if (CardType & CT_SDC) send_cmd(ACMD23, count); /* Predefine number of sectors */
if (send_cmd(CMD25, sector) == 0) { /* WRITE_MULTIPLE_BLOCK */
else { // Multiple sector write
if (CardType & CT_SDC) send_cmd(ACMD23, count); // Predefine number of sectors
if (send_cmd(CMD25, sector) == 0) { // WRITE_MULTIPLE_BLOCK
do {
if (!xmit_datablock(buff, 0xFC)) break;
buff += 512;
} while (--count);
if (!xmit_datablock(0, 0xFD)) count = 1; /* STOP_TRAN token */
if (!xmit_datablock(0, 0xFD)) count = 1; // STOP_TRAN token
}
}
deselect();
return count ? RES_ERROR : RES_OK; /* Return result */
return count ? RES_ERROR : RES_OK; // Return result
}
#endif // _DISKIO_WRITE
@@ -407,9 +411,9 @@ DRESULT disk_read (
#if _DISKIO_IOCTL
DRESULT disk_ioctl (
BYTE drv, /* Physical drive number (0) */
BYTE cmd, /* Control command code */
void *buff /* Pointer to the conrtol data */
BYTE drv, // Physical drive number (0)
BYTE cmd, // Control command code
void *buff // Pointer to the conrtol data
) {
DRESULT res;
BYTE n, csd[16], *ptr = (BYTE *)buff;
@@ -420,22 +424,23 @@ DRESULT disk_read (
UINT dc;
#endif
if (drv) return RES_PARERR; /* Check parameter */
if (Stat & STA_NOINIT) return RES_NOTRDY; /* Check if drive is ready */
if (drv) return RES_PARERR; // Check parameter
if (Stat & STA_NOINIT) return RES_NOTRDY; // Check if drive is ready
res = RES_ERROR;
FCLK_FAST();
switch (cmd) {
case CTRL_SYNC: /* Wait for end of internal write process of the drive */
case CTRL_SYNC: // Wait for end of internal write process of the drive
if (select()) res = RES_OK;
break;
case GET_SECTOR_COUNT: /* Get drive capacity in unit of sector (DWORD) */
case GET_SECTOR_COUNT: // Get drive capacity in unit of sector (DWORD)
if ((send_cmd(CMD9, 0) == 0) && rcvr_datablock(csd, 16)) {
if ((csd[0] >> 6) == 1) { /* SDC ver 2.00 */
if ((csd[0] >> 6) == 1) { // SDC ver 2.00
csize = csd[9] + ((WORD)csd[8] << 8) + ((DWORD)(csd[7] & 63) << 16) + 1;
*(DWORD*)buff = csize << 10;
} else { /* SDC ver 1.XX or MMC ver 3 */
}
else { // SDC ver 1.XX or MMC ver 3
n = (csd[5] & 15) + ((csd[10] & 128) >> 7) + ((csd[9] & 3) << 1) + 2;
csize = (csd[8] >> 6) + ((WORD)csd[7] << 2) + ((WORD)(csd[6] & 3) << 10) + 1;
*(DWORD*)buff = csize << (n - 9);
@@ -444,21 +449,23 @@ DRESULT disk_read (
}
break;
case GET_BLOCK_SIZE: /* Get erase block size in unit of sector (DWORD) */
if (CardType & CT_SD2) { /* SDC ver 2.00 */
if (send_cmd(ACMD13, 0) == 0) { /* Read SD status */
case GET_BLOCK_SIZE: // Get erase block size in unit of sector (DWORD)
if (CardType & CT_SD2) { // SDC ver 2.00
if (send_cmd(ACMD13, 0) == 0) { // Read SD status
xchg_spi(0xFF);
if (rcvr_datablock(csd, 16)) { /* Read partial block */
for (n = 64 - 16; n; n--) xchg_spi(0xFF); /* Purge trailing data */
if (rcvr_datablock(csd, 16)) { // Read partial block
for (n = 64 - 16; n; n--) xchg_spi(0xFF); // Purge trailing data
*(DWORD*)buff = 16UL << (csd[10] >> 4);
res = RES_OK;
}
}
} else { /* SDC ver 1.XX or MMC */
if ((send_cmd(CMD9, 0) == 0) && rcvr_datablock(csd, 16)) { /* Read CSD */
if (CardType & CT_SD1) { /* SDC ver 1.XX */
}
else { // SDC ver 1.XX or MMC
if ((send_cmd(CMD9, 0) == 0) && rcvr_datablock(csd, 16)) { // Read CSD
if (CardType & CT_SD1) { // SDC ver 1.XX
*(DWORD*)buff = (((csd[10] & 63) << 1) + ((WORD)(csd[11] & 128) >> 7) + 1) << ((csd[13] >> 6) - 1);
} else { /* MMC */
}
else { // MMC
*(DWORD*)buff = ((WORD)((csd[10] & 124) >> 2) + 1) * (((csd[11] & 3) << 3) + ((csd[11] & 224) >> 5) + 1);
}
res = RES_OK;
@@ -466,47 +473,47 @@ DRESULT disk_read (
}
break;
case CTRL_TRIM: /* Erase a block of sectors (used when _USE_TRIM in ffconf.h is 1) */
if (!(CardType & CT_SDC)) break; /* Check if the card is SDC */
if (disk_ioctl(drv, MMC_GET_CSD, csd)) break; /* Get CSD */
if (!(csd[0] >> 6) && !(csd[10] & 0x40)) break; /* Check if sector erase can be applied to the card */
dp = (DWORD *)buff; st = dp[0]; ed = dp[1]; /* Load sector block */
case CTRL_TRIM: // Erase a block of sectors (used when _USE_TRIM in ffconf.h is 1)
if (!(CardType & CT_SDC)) break; // Check if the card is SDC
if (disk_ioctl(drv, MMC_GET_CSD, csd)) break; // Get CSD
if (!(csd[0] >> 6) && !(csd[10] & 0x40)) break; // Check if sector erase can be applied to the card
dp = (DWORD *)buff; st = dp[0]; ed = dp[1]; // Load sector block
if (!(CardType & CT_BLOCK)) {
st *= 512; ed *= 512;
}
if (send_cmd(CMD32, st) == 0 && send_cmd(CMD33, ed) == 0 && send_cmd(CMD38, 0) == 0 && wait_ready(30000)) { /* Erase sector block */
res = RES_OK; /* FatFs does not check result of this command */
if (send_cmd(CMD32, st) == 0 && send_cmd(CMD33, ed) == 0 && send_cmd(CMD38, 0) == 0 && wait_ready(30000)) { // Erase sector block
res = RES_OK; // FatFs does not check result of this command
}
break;
/* Following commands are never used by FatFs module */
// The following commands are never used by FatFs module
case MMC_GET_TYPE: /* Get MMC/SDC type (BYTE) */
case MMC_GET_TYPE: // Get MMC/SDC type (BYTE)
*ptr = CardType;
res = RES_OK;
break;
case MMC_GET_CSD: /* Read CSD (16 bytes) */
if (send_cmd(CMD9, 0) == 0 && rcvr_datablock(ptr, 16)) { /* READ_CSD */
case MMC_GET_CSD: // Read CSD (16 bytes)
if (send_cmd(CMD9, 0) == 0 && rcvr_datablock(ptr, 16)) {
res = RES_OK;
}
break;
case MMC_GET_CID: /* Read CID (16 bytes) */
if (send_cmd(CMD10, 0) == 0 && rcvr_datablock(ptr, 16)) { /* READ_CID */
case MMC_GET_CID: // Read CID (16 bytes)
if (send_cmd(CMD10, 0) == 0 && rcvr_datablock(ptr, 16)) {
res = RES_OK;
}
break;
case MMC_GET_OCR: /* Read OCR (4 bytes) */
if (send_cmd(CMD58, 0) == 0) { /* READ_OCR */
case MMC_GET_OCR: // Read OCR (4 bytes)
if (send_cmd(CMD58, 0) == 0) {
for (n = 4; n; n--) *ptr++ = xchg_spi(0xFF);
res = RES_OK;
}
break;
case MMC_GET_SDSTAT: /* Read SD status (64 bytes) */
if (send_cmd(ACMD13, 0) == 0) { /* SD_STATUS */
case MMC_GET_SDSTAT: // Read SD status (64 bytes)
if (send_cmd(ACMD13, 0) == 0) {
xchg_spi(0xFF);
if (rcvr_datablock(ptr, 64)) res = RES_OK;
}

View File

@@ -90,12 +90,20 @@ void TFT_SPI::DataTransferBegin(uint16_t DataSize) {
TFT_CS_L;
}
#ifdef TFT_DEFAULT_DRIVER
#include "../../../lcd/tft_io/tft_ids.h"
#endif
uint32_t TFT_SPI::GetID() {
uint32_t id;
id = ReadID(LCD_READ_ID);
if ((id & 0xFFFF) == 0 || (id & 0xFFFF) == 0xFFFF)
if ((id & 0xFFFF) == 0 || (id & 0xFFFF) == 0xFFFF) {
id = ReadID(LCD_READ_ID4);
#ifdef TFT_DEFAULT_DRIVER
if ((id & 0xFFFF) == 0 || (id & 0xFFFF) == 0xFFFF)
id = TFT_DEFAULT_DRIVER;
#endif
}
return id;
}

View File

@@ -22,7 +22,7 @@
#include "../../../inc/MarlinConfig.h"
#if HAS_TFT_XPT2046 || HAS_TOUCH_BUTTONS
#if HAS_TFT_XPT2046 || HAS_RES_TOUCH_BUTTONS
#include "xpt2046.h"
#include <SPI.h>

View File

@@ -54,7 +54,7 @@ enum XPTCoordinate : uint8_t {
XPT2046_Z2 = 0x40 | XPT2046_CONTROL | XPT2046_DFR_MODE,
};
#if !defined(XPT2046_Z1_THRESHOLD)
#ifndef XPT2046_Z1_THRESHOLD
#define XPT2046_Z1_THRESHOLD 10
#endif

View File

@@ -25,9 +25,10 @@
* HAL for stm32duino.com based on Libmaple and compatible (STM32F1)
*/
#include <stdint.h>
#include "../../inc/MarlinConfig.h"
#include "HAL.h"
#include <libmaple/timer.h>
#include "../../core/boards.h"
// ------------------------
// Defines
@@ -37,7 +38,6 @@
* TODO: Check and confirm what timer we will use for each Temps and stepper driving.
* We should probable drive temps with PWM.
*/
#define FORCE_INLINE __attribute__((always_inline)) inline
typedef uint16_t hal_timer_t;
#define HAL_TIMER_TYPE_MAX 0xFFFF
@@ -80,7 +80,7 @@ typedef uint16_t hal_timer_t;
//#define TEMP_TIMER_NUM 4 // 2->4, Timer 2 for Stepper Current PWM
#endif
#if MB(BTT_SKR_MINI_E3_V1_0, BTT_SKR_E3_DIP, BTT_SKR_MINI_E3_V1_2, MKS_ROBIN_LITE)
#if MB(BTT_SKR_MINI_E3_V1_0, BTT_SKR_E3_DIP, BTT_SKR_MINI_E3_V1_2, MKS_ROBIN_LITE, MKS_ROBIN_E3D, MKS_ROBIN_E3)
// SKR Mini E3 boards use PA8 as FAN_PIN, so TIMER 1 is used for Fan PWM.
#ifdef STM32_HIGH_DENSITY
#define SERVO0_TIMER_NUM 8 // tone.cpp uses Timer 4

View File

@@ -68,6 +68,8 @@ extern USBSerialType USBSerial;
#elif WITHIN(SERIAL_PORT, 0, 3)
DECLARE_SERIAL(SERIAL_PORT);
#define MYSERIAL1 MSERIAL(SERIAL_PORT)
#else
#error "The required SERIAL_PORT must be from 0 to 3, or -1 for Native USB."
#endif
#define HAL_SERVO_LIB libServo

View File

@@ -21,11 +21,12 @@
*/
#ifdef __MK20DX256__
#include "../../inc/MarlinConfig.h"
#include "HAL.h"
#include <SPI.h>
#include <pins_arduino.h>
#include "spi_pins.h"
#include "../../core/macros.h"
static SPISettings spiConfig;

View File

@@ -64,4 +64,10 @@ void setup_endstop_interrupts() {
TERN_(HAS_Z4_MAX, _ATTACH(Z4_MAX_PIN));
TERN_(HAS_Z4_MIN, _ATTACH(Z4_MIN_PIN));
TERN_(HAS_Z_MIN_PROBE_PIN, _ATTACH(Z_MIN_PROBE_PIN));
TERN_(HAS_I_MAX, _ATTACH(I_MAX_PIN));
TERN_(HAS_I_MIN, _ATTACH(I_MIN_PIN));
TERN_(HAS_J_MAX, _ATTACH(J_MAX_PIN));
TERN_(HAS_J_MIN, _ATTACH(J_MIN_PIN));
TERN_(HAS_K_MAX, _ATTACH(K_MAX_PIN));
TERN_(HAS_K_MIN, _ATTACH(K_MIN_PIN));
}

View File

@@ -26,11 +26,12 @@
#if defined(__MK64FX512__) || defined(__MK66FX1M0__)
#include "../../inc/MarlinConfig.h"
#include "HAL.h"
#include <SPI.h>
#include <pins_arduino.h>
#include "spi_pins.h"
#include "../../core/macros.h"
static SPISettings spiConfig;

View File

@@ -63,4 +63,10 @@ void setup_endstop_interrupts() {
TERN_(HAS_Z4_MAX, _ATTACH(Z4_MAX_PIN));
TERN_(HAS_Z4_MIN, _ATTACH(Z4_MIN_PIN));
TERN_(HAS_Z_MIN_PROBE_PIN, _ATTACH(Z_MIN_PROBE_PIN));
TERN_(HAS_I_MAX, _ATTACH(I_MAX_PIN));
TERN_(HAS_I_MIN, _ATTACH(I_MIN_PIN));
TERN_(HAS_J_MAX, _ATTACH(J_MAX_PIN));
TERN_(HAS_J_MIN, _ATTACH(J_MIN_PIN));
TERN_(HAS_K_MAX, _ATTACH(K_MAX_PIN));
TERN_(HAS_K_MIN, _ATTACH(K_MIN_PIN));
}

View File

@@ -26,10 +26,11 @@
#ifdef __IMXRT1062__
#include "../../inc/MarlinConfig.h"
#include "HAL.h"
#include "../shared/Delay.h"
#include "timers.h"
#include <Wire.h>
#define _IMPLEMENT_SERIAL(X) DefaultSerial##X MSerial##X(false, Serial##X)

View File

@@ -26,11 +26,12 @@
#ifdef __IMXRT1062__
#include "../../inc/MarlinConfig.h"
#include "HAL.h"
#include <SPI.h>
#include <pins_arduino.h>
#include "spi_pins.h"
#include "../../core/macros.h"
static SPISettings spiConfig;

View File

@@ -63,4 +63,10 @@ void setup_endstop_interrupts() {
TERN_(HAS_Z4_MAX, _ATTACH(Z4_MAX_PIN));
TERN_(HAS_Z4_MIN, _ATTACH(Z4_MIN_PIN));
TERN_(HAS_Z_MIN_PROBE_PIN, _ATTACH(Z_MIN_PROBE_PIN));
TERN_(HAS_I_MAX, _ATTACH(I_MAX_PIN));
TERN_(HAS_I_MIN, _ATTACH(I_MIN_PIN));
TERN_(HAS_J_MAX, _ATTACH(J_MAX_PIN));
TERN_(HAS_J_MIN, _ATTACH(J_MIN_PIN));
TERN_(HAS_K_MAX, _ATTACH(K_MAX_PIN));
TERN_(HAS_K_MIN, _ATTACH(K_MIN_PIN));
}

View File

@@ -82,4 +82,8 @@
#define UNUSED(x) ((void)(x))
#endif
#ifndef FORCE_INLINE
#define FORCE_INLINE inline __attribute__((always_inline))
#endif
#include "progmem.h"

View File

@@ -30,11 +30,17 @@
#if ENABLED(I2C_EEPROM)
#include "eeprom_if.h"
#include <Wire.h>
#if ENABLED(SOFT_I2C_EEPROM)
#include <SlowSoftWire.h>
SlowSoftWire Wire = SlowSoftWire(I2C_SDA_PIN, I2C_SCL_PIN, true);
#else
#include <Wire.h>
#endif
void eeprom_init() {
Wire.begin(
#if PINS_EXIST(I2C_SCL, I2C_SDA)
#if PINS_EXIST(I2C_SCL, I2C_SDA) && DISABLED(SOFT_I2C_EEPROM)
uint8_t(I2C_SDA_PIN), uint8_t(I2C_SCL_PIN)
#endif
);
@@ -55,11 +61,24 @@ static constexpr uint8_t eeprom_device_address = I2C_ADDRESS(EEPROM_DEVICE_ADDRE
// Public functions
// ------------------------
#define SMALL_EEPROM (MARLIN_EEPROM_SIZE <= 2048)
// Combine Address high bits into the device address on <=16Kbit (2K) and >512Kbit (64K) EEPROMs.
// Note: MARLIN_EEPROM_SIZE is specified in bytes, whereas EEPROM model numbers refer to bits.
// e.g., The "16" in BL24C16 indicates a 16Kbit (2KB) size.
static uint8_t _eeprom_calc_device_address(uint8_t * const pos) {
const unsigned eeprom_address = (unsigned)pos;
return (SMALL_EEPROM || MARLIN_EEPROM_SIZE > 65536)
? uint8_t(eeprom_device_address | ((eeprom_address >> (SMALL_EEPROM ? 8 : 16)) & 0x07))
: eeprom_device_address;
}
static void _eeprom_begin(uint8_t * const pos) {
const unsigned eeprom_address = (unsigned)pos;
Wire.beginTransmission(eeprom_device_address);
Wire.write(int(eeprom_address >> 8)); // Address High
Wire.write(int(eeprom_address & 0xFF)); // Address Low
Wire.beginTransmission(_eeprom_calc_device_address(pos));
if (!SMALL_EEPROM)
Wire.write(uint8_t((eeprom_address >> 8) & 0xFF)); // Address High, if needed
Wire.write(uint8_t(eeprom_address & 0xFF)); // Address Low
}
void eeprom_write_byte(uint8_t *pos, uint8_t value) {
@@ -75,7 +94,7 @@ void eeprom_write_byte(uint8_t *pos, uint8_t value) {
uint8_t eeprom_read_byte(uint8_t *pos) {
_eeprom_begin(pos);
Wire.endTransmission();
Wire.requestFrom(eeprom_device_address, (byte)1);
Wire.requestFrom(_eeprom_calc_device_address(pos), (byte)1);
return Wire.available() ? Wire.read() : 0xFF;
}

View File

@@ -68,9 +68,9 @@
#endif
#if HAS_TFT_LVGL_UI
#include "lcd/extui/lib/mks_ui/tft_lvgl_configuration.h"
#include "lcd/extui/lib/mks_ui/draw_ui.h"
#include "lcd/extui/lib/mks_ui/mks_hardware_test.h"
#include "lcd/extui/mks_ui/tft_lvgl_configuration.h"
#include "lcd/extui/mks_ui/draw_ui.h"
#include "lcd/extui/mks_ui/mks_hardware_test.h"
#include <lvgl.h>
#endif
@@ -229,7 +229,7 @@
#endif
#if ENABLED(DGUS_LCD_UI_MKS)
#include "lcd/extui/lib/dgus/DGUSScreenHandler.h"
#include "lcd/extui/dgus/DGUSScreenHandler.h"
#endif
#if HAS_DRIVER_SAFE_POWER_PROTECT
@@ -282,12 +282,22 @@ bool wait_for_heatup = true;
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wnarrowing"
#ifndef RUNTIME_ONLY_ANALOG_TO_DIGITAL
template <pin_t ...D>
constexpr pin_t OnlyPins<_SP_END, D...>::table[sizeof...(D)];
#endif
bool pin_is_protected(const pin_t pin) {
static const pin_t sensitive_pins[] PROGMEM = SENSITIVE_PINS;
LOOP_L_N(i, COUNT(sensitive_pins)) {
pin_t sensitive_pin;
memcpy_P(&sensitive_pin, &sensitive_pins[i], sizeof(pin_t));
if (pin == sensitive_pin) return true;
#ifdef RUNTIME_ONLY_ANALOG_TO_DIGITAL
static const pin_t sensitive_pins[] PROGMEM = { SENSITIVE_PINS };
const size_t pincount = COUNT(sensitive_pins);
#else
static constexpr size_t pincount = OnlyPins<SENSITIVE_PINS>::size;
static const pin_t (&sensitive_pins)[pincount] PROGMEM = OnlyPins<SENSITIVE_PINS>::table;
#endif
LOOP_L_N(i, pincount) {
const pin_t * const pptr = &sensitive_pins[i];
if (pin == (sizeof(pin_t) == 2 ? (pin_t)pgm_read_word(pptr) : (pin_t)pgm_read_byte(pptr))) return true;
}
return false;
}
@@ -304,6 +314,9 @@ void enable_all_steppers() {
ENABLE_AXIS_X();
ENABLE_AXIS_Y();
ENABLE_AXIS_Z();
ENABLE_AXIS_I(); // Marlin 6-axis support by DerAndere (https://github.com/DerAndere1/Marlin/wiki)
ENABLE_AXIS_J();
ENABLE_AXIS_K();
enable_e_steppers();
TERN_(EXTENSIBLE_UI, ExtUI::onSteppersEnabled());
@@ -317,7 +330,7 @@ void disable_e_steppers() {
void disable_e_stepper(const uint8_t e) {
#define _CASE_DIS_E(N) case N: DISABLE_AXIS_E##N(); break;
switch (e) {
REPEAT(EXTRUDERS, _CASE_DIS_E)
REPEAT(E_STEPPERS, _CASE_DIS_E)
}
}
@@ -325,24 +338,23 @@ void disable_all_steppers() {
DISABLE_AXIS_X();
DISABLE_AXIS_Y();
DISABLE_AXIS_Z();
DISABLE_AXIS_I();
DISABLE_AXIS_J();
DISABLE_AXIS_K();
disable_e_steppers();
TERN_(EXTENSIBLE_UI, ExtUI::onSteppersDisabled());
}
/**
* A Print Job exists when the timer is running or SD printing
* A Print Job exists when the timer is running or SD is printing
*/
bool printJobOngoing() {
return print_job_timer.isRunning() || IS_SD_PRINTING();
}
bool printJobOngoing() { return print_job_timer.isRunning() || IS_SD_PRINTING(); }
/**
* Printing is active when the print job timer is running
* Printing is active when a job is underway but not paused
*/
bool printingIsActive() {
return !did_pause_print && (print_job_timer.isRunning() || IS_SD_PRINTING());
}
bool printingIsActive() { return !did_pause_print && printJobOngoing(); }
/**
* Printing is paused according to SD or host indicators
@@ -367,7 +379,7 @@ void startOrResumeJob() {
inline void abortSDPrinting() {
IF_DISABLED(NO_SD_AUTOSTART, card.autofile_cancel());
card.endFilePrint(TERN_(SD_RESORT, true));
card.abortFilePrintNow(TERN_(SD_RESORT, true));
queue.clear();
quickstop_stepper();
@@ -390,8 +402,8 @@ void startOrResumeJob() {
}
inline void finishSDPrinting() {
if (queue.enqueue_one_P(PSTR("M1001"))) {
marlin_state = MF_RUNNING;
if (queue.enqueue_one_P(PSTR("M1001"))) { // Keep trying until it gets queued
marlin_state = MF_RUNNING; // Signal to stop trying
TERN_(PASSWORD_AFTER_SD_PRINT_END, password.lock_machine());
TERN_(DGUS_LCD_UI_MKS, ScreenHandler.SDPrintingFinished());
}
@@ -412,19 +424,18 @@ void startOrResumeJob() {
* - Check if an idle but hot extruder needs filament extruded (EXTRUDER_RUNOUT_PREVENT)
* - Pulse FET_SAFETY_PIN if it exists
*/
inline void manage_inactivity(const bool ignore_stepper_queue=false) {
inline void manage_inactivity(const bool no_stepper_sleep=false) {
queue.get_available_commands();
const millis_t ms = millis();
// Prevent steppers timing-out in the middle of M600
// unless PAUSE_PARK_NO_STEPPER_TIMEOUT is disabled
const bool parked_or_ignoring = ignore_stepper_queue
// Prevent steppers timing-out
const bool do_reset_timeout = no_stepper_sleep
|| TERN0(PAUSE_PARK_NO_STEPPER_TIMEOUT, did_pause_print);
// Reset both the M18/M84 activity timeout and the M85 max 'kill' timeout
if (parked_or_ignoring) gcode.reset_stepper_timeout(ms);
if (do_reset_timeout) gcode.reset_stepper_timeout(ms);
if (gcode.stepper_max_timed_out(ms)) {
SERIAL_ERROR_MSG(STR_KILL_INACTIVE_TIME, parser.command_ptr);
@@ -440,7 +451,7 @@ inline void manage_inactivity(const bool ignore_stepper_queue=false) {
// activity timeout and the M85 max 'kill' timeout
if (planner.has_blocks_queued())
gcode.reset_stepper_timeout(ms);
else if (!parked_or_ignoring && gcode.stepper_inactive_timeout()) {
else if (!do_reset_timeout && gcode.stepper_inactive_timeout()) {
if (!already_shutdown_steppers) {
already_shutdown_steppers = true; // L6470 SPI will consume 99% of free time without this
@@ -448,6 +459,9 @@ inline void manage_inactivity(const bool ignore_stepper_queue=false) {
if (ENABLED(DISABLE_INACTIVE_X)) DISABLE_AXIS_X();
if (ENABLED(DISABLE_INACTIVE_Y)) DISABLE_AXIS_Y();
if (ENABLED(DISABLE_INACTIVE_Z)) DISABLE_AXIS_Z();
if (ENABLED(DISABLE_INACTIVE_I)) DISABLE_AXIS_I();
if (ENABLED(DISABLE_INACTIVE_J)) DISABLE_AXIS_J();
if (ENABLED(DISABLE_INACTIVE_K)) DISABLE_AXIS_K();
if (ENABLED(DISABLE_INACTIVE_E)) disable_e_steppers();
TERN_(AUTO_BED_LEVELING_UBL, ubl.steppers_were_disabled());
@@ -487,6 +501,10 @@ inline void manage_inactivity(const bool ignore_stepper_queue=false) {
}
#endif
#if HAS_FREEZE_PIN
Stepper::frozen = !READ(FREEZE_PIN);
#endif
#if HAS_HOME
// Handle a standalone HOME button
constexpr millis_t HOME_DEBOUNCE_DELAY = 1000UL;
@@ -716,14 +734,14 @@ inline void manage_inactivity(const bool ignore_stepper_queue=false) {
* - Update the Průša MMU2
* - Handle Joystick jogging
*/
void idle(TERN_(ADVANCED_PAUSE_FEATURE, bool no_stepper_sleep/*=false*/)) {
void idle(bool no_stepper_sleep/*=false*/) {
#if ENABLED(MARLIN_DEV_MODE)
static uint16_t idle_depth = 0;
if (++idle_depth > 5) SERIAL_ECHOLNPAIR("idle() call depth: ", idle_depth);
#endif
// Core Marlin activities
manage_inactivity(TERN_(ADVANCED_PAUSE_FEATURE, no_stepper_sleep));
manage_inactivity(no_stepper_sleep);
// Manage Heaters (and Watchdog)
thermalManager.manage_heater();
@@ -748,7 +766,7 @@ void idle(TERN_(ADVANCED_PAUSE_FEATURE, bool no_stepper_sleep/*=false*/)) {
// Handle Power-Loss Recovery
#if ENABLED(POWER_LOSS_RECOVERY) && PIN_EXISTS(POWER_LOSS)
if (printJobOngoing()) recovery.outage();
if (IS_SD_PRINTING()) recovery.outage();
#endif
// Run StallGuard endstop checks
@@ -796,6 +814,7 @@ void idle(TERN_(ADVANCED_PAUSE_FEATURE, bool no_stepper_sleep/*=false*/)) {
if (!gcode.autoreport_paused) {
TERN_(AUTO_REPORT_TEMPERATURES, thermalManager.auto_reporter.tick());
TERN_(AUTO_REPORT_SD_STATUS, card.auto_reporter.tick());
TERN_(AUTO_REPORT_POSITION, position_auto_reporter.tick());
}
#endif
@@ -825,18 +844,19 @@ void kill(PGM_P const lcd_error/*=nullptr*/, PGM_P const lcd_component/*=nullptr
TERN_(HAS_CUTTER, cutter.kill()); // Full cutter shutdown including ISR control
SERIAL_ERROR_MSG(STR_ERR_KILLED);
// Echo the LCD message to serial for extra context
if (lcd_error) { SERIAL_ECHO_START(); SERIAL_ECHOLNPGM_P(lcd_error); }
#if HAS_DISPLAY
ui.kill_screen(lcd_error ?: GET_TEXT(MSG_KILLED), lcd_component ?: NUL_STR);
#else
UNUSED(lcd_error);
UNUSED(lcd_component);
UNUSED(lcd_error); UNUSED(lcd_component);
#endif
#if HAS_TFT_LVGL_UI
lv_draw_error_message(lcd_error);
#endif
TERN_(HAS_TFT_LVGL_UI, lv_draw_error_message(lcd_error));
// "Error:Printer halted. kill() called!"
SERIAL_ERROR_MSG(STR_ERR_KILLED);
#ifdef ACTION_ON_KILL
host_action_kill();
@@ -900,7 +920,7 @@ void stop() {
thermalManager.set_fans_paused(false); // Un-pause fans for safety
#endif
if (IsRunning()) {
if (!IsStopped()) {
SERIAL_ERROR_MSG(STR_ERR_STOPPED);
LCD_MESSAGEPGM(MSG_STOPPED);
safe_delay(350); // allow enough time for messages to get out before stopping
@@ -933,6 +953,15 @@ inline void tmc_standby_setup() {
#if PIN_EXISTS(Z4_STDBY)
SET_INPUT_PULLDOWN(Z4_STDBY_PIN);
#endif
#if PIN_EXISTS(I_STDBY)
SET_INPUT_PULLDOWN(I_STDBY_PIN);
#endif
#if PIN_EXISTS(J_STDBY)
SET_INPUT_PULLDOWN(J_STDBY_PIN);
#endif
#if PIN_EXISTS(K_STDBY)
SET_INPUT_PULLDOWN(K_STDBY_PIN);
#endif
#if PIN_EXISTS(E0_STDBY)
SET_INPUT_PULLDOWN(E0_STDBY_PIN);
#endif
@@ -1071,9 +1100,20 @@ void setup() {
while (!MYSERIAL1.connected() && PENDING(millis(), serial_connect_timeout)) { /*nada*/ }
#if HAS_MULTI_SERIAL && !HAS_ETHERNET
MYSERIAL2.begin(BAUDRATE);
#ifndef BAUDRATE_2
#define BAUDRATE_2 BAUDRATE
#endif
MYSERIAL2.begin(BAUDRATE_2);
serial_connect_timeout = millis() + 1000UL;
while (!MYSERIAL2.connected() && PENDING(millis(), serial_connect_timeout)) { /*nada*/ }
#ifdef SERIAL_PORT_3
#ifndef BAUDRATE_3
#define BAUDRATE_3 BAUDRATE
#endif
MYSERIAL3.begin(BAUDRATE_3);
serial_connect_timeout = millis() + 1000UL;
while (!MYSERIAL3.connected() && PENDING(millis(), serial_connect_timeout)) { /*nada*/ }
#endif
#endif
SERIAL_ECHOLNPGM("start");
@@ -1087,16 +1127,29 @@ void setup() {
#endif
#endif
#if HAS_FREEZE_PIN
SETUP_LOG("FREEZE_PIN");
SET_INPUT_PULLUP(FREEZE_PIN);
#endif
#if HAS_SUICIDE
SETUP_LOG("SUICIDE_PIN");
OUT_WRITE(SUICIDE_PIN, !SUICIDE_PIN_INVERTING);
#endif
#ifdef JTAGSWD_RESET
SETUP_LOG("JTAGSWD_RESET");
JTAGSWD_RESET();
#endif
#if EITHER(DISABLE_DEBUG, DISABLE_JTAG)
delay(10);
// Disable any hardware debug to free up pins for IO
#if ENABLED(DISABLE_DEBUG) && defined(JTAGSWD_DISABLE)
SETUP_LOG("JTAGSWD_DISABLE");
JTAGSWD_DISABLE();
#elif defined(JTAG_DISABLE)
SETUP_LOG("JTAG_DISABLE");
JTAG_DISABLE();
#else
#error "DISABLE_(DEBUG|JTAG) is not supported for the selected MCU/Board."
@@ -1115,10 +1168,10 @@ void setup() {
SETUP_RUN(HAL_init());
// Init and disable SPI thermocouples; this is still needed
#if TEMP_SENSOR_0_IS_MAX_TC
#if TEMP_SENSOR_0_IS_MAX_TC || (TEMP_SENSOR_REDUNDANT_IS_MAX_TC && TEMP_SENSOR_REDUNDANT_SOURCE == 0)
OUT_WRITE(MAX6675_SS_PIN, HIGH); // Disable
#endif
#if TEMP_SENSOR_1_IS_MAX_TC
#if TEMP_SENSOR_1_IS_MAX_TC || (TEMP_SENSOR_REDUNDANT_IS_MAX_TC && TEMP_SENSOR_REDUNDANT_SOURCE == 1)
OUT_WRITE(MAX6675_SS2_PIN, HIGH); // Disable
#endif
@@ -1406,10 +1459,7 @@ void setup() {
#endif
#if HAS_PRUSA_MMU1
SETUP_LOG("Prusa MMU1");
SET_OUTPUT(E_MUX0_PIN);
SET_OUTPUT(E_MUX1_PIN);
SET_OUTPUT(E_MUX2_PIN);
SETUP_RUN(mmu_init());
#endif
#if HAS_FANMUX
@@ -1477,7 +1527,7 @@ void setup() {
#endif
#if HAS_TRINAMIC_CONFIG && DISABLED(PSU_DEFAULT_OFF)
SETUP_RUN(test_tmc_connection(true, true, true, true));
SETUP_RUN(test_tmc_connection());
#endif
#if HAS_DRIVER_SAFE_POWER_PROTECT

View File

@@ -34,8 +34,8 @@
void stop();
// Pass true to keep steppers from timing out
void idle(TERN_(ADVANCED_PAUSE_FEATURE, bool no_stepper_sleep=false));
inline void idle_no_sleep() { idle(TERN_(ADVANCED_PAUSE_FEATURE, true)); }
void idle(bool no_stepper_sleep=false);
inline void idle_no_sleep() { idle(true); }
#if ENABLED(G38_PROBE_TARGET)
extern uint8_t G38_move; // Flag to tell the ISR that G38 is in progress, and the type
@@ -56,20 +56,21 @@ void minkill(const bool steppers_off=false);
// Global State of the firmware
enum MarlinState : uint8_t {
MF_INITIALIZING = 0,
MF_RUNNING = _BV(0),
MF_PAUSED = _BV(1),
MF_WAITING = _BV(2),
MF_STOPPED = _BV(3),
MF_SD_COMPLETE = _BV(4),
MF_KILLED = _BV(7)
MF_INITIALIZING = 0,
MF_STOPPED,
MF_KILLED,
MF_RUNNING,
MF_SD_COMPLETE,
MF_PAUSED,
MF_WAITING,
};
extern MarlinState marlin_state;
inline bool IsRunning() { return marlin_state == MF_RUNNING; }
inline bool IsStopped() { return marlin_state != MF_RUNNING; }
inline bool IsRunning() { return marlin_state >= MF_RUNNING; }
inline bool IsStopped() { return marlin_state == MF_STOPPED; }
bool printingIsActive();
bool printJobOngoing();
bool printingIsPaused();
void startOrResumeJob();

View File

@@ -159,6 +159,7 @@
#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 gcode only)
//
// ATmega1281, ATmega2561
@@ -320,7 +321,7 @@
#define BOARD_BTT_SKR_MINI_V1_1 4023 // BigTreeTech SKR Mini v1.1 (STM32F103RC)
#define BOARD_BTT_SKR_MINI_E3_V1_0 4024 // BigTreeTech SKR Mini E3 (STM32F103RC)
#define BOARD_BTT_SKR_MINI_E3_V1_2 4025 // BigTreeTech SKR Mini E3 V1.2 (STM32F103RC)
#define BOARD_BTT_SKR_MINI_E3_V2_0 4026 // BigTreeTech SKR Mini E3 V2.0 (STM32F103RC)
#define BOARD_BTT_SKR_MINI_E3_V2_0 4026 // BigTreeTech SKR Mini E3 V2.0 (STM32F103RC / STM32F103RE)
#define BOARD_BTT_SKR_MINI_MZ_V1_0 4027 // BigTreeTech SKR Mini MZ V1.0 (STM32F103RC)
#define BOARD_BTT_SKR_E3_DIP 4028 // BigTreeTech SKR E3 DIP V1.0 (STM32F103RC / STM32F103RE)
#define BOARD_BTT_SKR_CR6 4029 // BigTreeTech SKR CR6 v1.0 (STM32F103RE)
@@ -367,22 +368,26 @@
#define BOARD_BTT_SKR_PRO_V1_2 4208 // BigTreeTech SKR Pro v1.2 (STM32F407ZGT6)
#define BOARD_BTT_BTT002_V1_0 4209 // BigTreeTech BTT002 v1.0 (STM32F407VGT6)
#define BOARD_BTT_E3_RRF 4210 // BigTreeTech E3 RRF (STM32F407VGT6)
#define BOARD_BTT_SKR_V2_0 4211 // BigTreeTech SKR v2.0 (STM32F407VGT6)
#define BOARD_BTT_GTR_V1_0 4212 // BigTreeTech GTR v1.0 (STM32F407IGT)
#define BOARD_LERDGE_K 4213 // Lerdge K (STM32F407ZG)
#define BOARD_LERDGE_S 4214 // Lerdge S (STM32F407VE)
#define BOARD_LERDGE_X 4215 // Lerdge X (STM32F407VE)
#define BOARD_VAKE403D 4216 // VAkE 403D (STM32F446VET6)
#define BOARD_FYSETC_S6 4217 // FYSETC S6 (STM32F446VET6)
#define BOARD_FYSETC_S6_V2_0 4218 // FYSETC S6 v2.0 (STM32F446VET6)
#define BOARD_FYSETC_SPIDER 4219 // FYSETC Spider (STM32F446VET6)
#define BOARD_FLYF407ZG 4220 // FLYF407ZG (STM32F407ZG)
#define BOARD_MKS_ROBIN2 4221 // MKS_ROBIN2 (STM32F407ZE)
#define BOARD_MKS_ROBIN_PRO_V2 4222 // MKS Robin Pro V2 (STM32F407VE)
#define BOARD_MKS_ROBIN_NANO_V3 4223 // MKS Robin Nano V3 (STM32F407VG)
#define BOARD_ANET_ET4 4224 // ANET ET4 V1.x (STM32F407VGT6)
#define BOARD_ANET_ET4P 4225 // ANET ET4P V1.x (STM32F407VGT6)
#define BOARD_FYSETC_CHEETAH_V20 4226 // FYSETC Cheetah V2.0
#define BOARD_BTT_SKR_V2_0_REV_A 4211 // BigTreeTech SKR v2.0 Rev A (STM32F407VGT6)
#define BOARD_BTT_SKR_V2_0_REV_B 4212 // BigTreeTech SKR v2.0 Rev B (STM32F407VGT6)
#define BOARD_BTT_GTR_V1_0 4213 // BigTreeTech GTR v1.0 (STM32F407IGT)
#define BOARD_BTT_OCTOPUS_V1_0 4214 // BigTreeTech Octopus v1.0 (STM32F446ZET6)
#define BOARD_BTT_OCTOPUS_V1_1 4215 // BigTreeTech Octopus v1.1 (STM32F446ZET6)
#define BOARD_LERDGE_K 4216 // Lerdge K (STM32F407ZG)
#define BOARD_LERDGE_S 4217 // Lerdge S (STM32F407VE)
#define BOARD_LERDGE_X 4218 // Lerdge X (STM32F407VE)
#define BOARD_VAKE403D 4219 // VAkE 403D (STM32F446VET6)
#define BOARD_FYSETC_S6 4220 // FYSETC S6 (STM32F446VET6)
#define BOARD_FYSETC_S6_V2_0 4221 // FYSETC S6 v2.0 (STM32F446VET6)
#define BOARD_FYSETC_SPIDER 4222 // FYSETC Spider (STM32F446VET6)
#define BOARD_FLYF407ZG 4223 // FLYF407ZG (STM32F407ZG)
#define BOARD_MKS_ROBIN2 4224 // MKS_ROBIN2 (STM32F407ZE)
#define BOARD_MKS_ROBIN_PRO_V2 4225 // MKS Robin Pro V2 (STM32F407VE)
#define BOARD_MKS_ROBIN_NANO_V3 4226 // MKS Robin Nano V3 (STM32F407VG)
#define BOARD_ANET_ET4 4227 // ANET ET4 V1.x (STM32F407VGT6)
#define BOARD_ANET_ET4P 4228 // ANET ET4P V1.x (STM32F407VGT6)
#define BOARD_FYSETC_CHEETAH_V20 4229 // FYSETC Cheetah V2.0
//
// ARM Cortex M7

View File

@@ -44,6 +44,6 @@ private:
SERIAL_ECHOPGM_P(the_msg);
}
SERIAL_CHAR(' ');
print_xyz(current_position);
print_pos(current_position);
}
};

View File

@@ -60,6 +60,9 @@
#define AXIS_DRIVER_TYPE_X(T) _AXIS_DRIVER_TYPE(X,T)
#define AXIS_DRIVER_TYPE_Y(T) _AXIS_DRIVER_TYPE(Y,T)
#define AXIS_DRIVER_TYPE_Z(T) _AXIS_DRIVER_TYPE(Z,T)
#define AXIS_DRIVER_TYPE_I(T) _AXIS_DRIVER_TYPE(I,T)
#define AXIS_DRIVER_TYPE_J(T) _AXIS_DRIVER_TYPE(J,T)
#define AXIS_DRIVER_TYPE_K(T) _AXIS_DRIVER_TYPE(K,T)
#define AXIS_DRIVER_TYPE_X2(T) (EITHER(X_DUAL_STEPPER_DRIVERS, DUAL_X_CARRIAGE) && _AXIS_DRIVER_TYPE(X2,T))
#define AXIS_DRIVER_TYPE_Y2(T) (ENABLED(Y_DUAL_STEPPER_DRIVERS) && _AXIS_DRIVER_TYPE(Y2,T))
@@ -83,6 +86,7 @@
#define HAS_E_DRIVER(T) (0 RREPEAT2(E_STEPPERS, _OR_ADTE, T))
#define HAS_DRIVER(T) ( AXIS_DRIVER_TYPE_X(T) || AXIS_DRIVER_TYPE_Y(T) || AXIS_DRIVER_TYPE_Z(T) \
|| AXIS_DRIVER_TYPE_I(T) || AXIS_DRIVER_TYPE_J(T) || AXIS_DRIVER_TYPE_K(T) \
|| AXIS_DRIVER_TYPE_X2(T) || AXIS_DRIVER_TYPE_Y2(T) || AXIS_DRIVER_TYPE_Z2(T) \
|| AXIS_DRIVER_TYPE_Z3(T) || AXIS_DRIVER_TYPE_Z4(T) || HAS_E_DRIVER(T) )
@@ -153,9 +157,11 @@
#define _OR_EAH(N,T) || AXIS_HAS_##T(E##N)
#define E_AXIS_HAS(T) (0 _OR_EAH(0,T) _OR_EAH(1,T) _OR_EAH(2,T) _OR_EAH(3,T) _OR_EAH(4,T) _OR_EAH(5,T) _OR_EAH(6,T) _OR_EAH(7,T))
#define ANY_AXIS_HAS(T) ( AXIS_HAS_##T(X) || AXIS_HAS_##T(Y) || AXIS_HAS_##T(Z) \
|| AXIS_HAS_##T(X2) || AXIS_HAS_##T(Y2) || AXIS_HAS_##T(Z2) \
|| AXIS_HAS_##T(Z3) || AXIS_HAS_##T(Z4) || E_AXIS_HAS(T) )
#define ANY_AXIS_HAS(T) ( AXIS_HAS_##T(X) || AXIS_HAS_##T(X2) \
|| AXIS_HAS_##T(Y) || AXIS_HAS_##T(Y2) \
|| AXIS_HAS_##T(Z) || AXIS_HAS_##T(Z2) || AXIS_HAS_##T(Z3) || AXIS_HAS_##T(Z4) \
|| AXIS_HAS_##T(I) || AXIS_HAS_##T(J) || AXIS_HAS_##T(K) \
|| E_AXIS_HAS(T) )
#if ANY_AXIS_HAS(STEALTHCHOP)
#define HAS_STEALTHCHOP 1

View File

@@ -140,25 +140,7 @@
#define STR_RESEND "Resend: "
#define STR_UNKNOWN_COMMAND "Unknown command: \""
#define STR_ACTIVE_EXTRUDER "Active Extruder: "
#define STR_X_MIN "x_min"
#define STR_X_MAX "x_max"
#define STR_X2_MIN "x2_min"
#define STR_X2_MAX "x2_max"
#define STR_Y_MIN "y_min"
#define STR_Y_MAX "y_max"
#define STR_Y2_MIN "y2_min"
#define STR_Y2_MAX "y2_max"
#define STR_Z_MIN "z_min"
#define STR_Z_MAX "z_max"
#define STR_Z2_MIN "z2_min"
#define STR_Z2_MAX "z2_max"
#define STR_Z3_MIN "z3_min"
#define STR_Z3_MAX "z3_max"
#define STR_Z4_MIN "z4_min"
#define STR_Z4_MAX "z4_max"
#define STR_Z_PROBE "z_probe"
#define STR_PROBE_EN "probe_en"
#define STR_FILAMENT_RUNOUT_SENSOR "filament"
#define STR_PROBE_OFFSET "Probe Offset"
#define STR_SKEW_MIN "min_skew_factor: "
#define STR_SKEW_MAX "max_skew_factor: "
@@ -277,17 +259,43 @@
#define STR_REMINDER_SAVE_SETTINGS "Remember to save!"
#define STR_PASSWORD_SET "Password is "
// LCD Menu Messages
//
// Endstop Names used by Endstops::report_states
//
#define STR_X_MIN "x_min"
#define STR_X_MAX "x_max"
#define STR_X2_MIN "x2_min"
#define STR_X2_MAX "x2_max"
#define LANGUAGE_DATA_INCL_(M) STRINGIFY_(fontdata/langdata_##M.h)
#define LANGUAGE_DATA_INCL(M) LANGUAGE_DATA_INCL_(M)
#if HAS_Y_AXIS
#define STR_Y_MIN "y_min"
#define STR_Y_MAX "y_max"
#define STR_Y2_MIN "y2_min"
#define STR_Y2_MAX "y2_max"
#endif
#define LANGUAGE_INCL_(M) STRINGIFY_(../lcd/language/language_##M.h)
#define LANGUAGE_INCL(M) LANGUAGE_INCL_(M)
#if HAS_Z_AXIS
#define STR_Z_MIN "z_min"
#define STR_Z_MAX "z_max"
#define STR_Z2_MIN "z2_min"
#define STR_Z2_MAX "z2_max"
#define STR_Z3_MIN "z3_min"
#define STR_Z3_MAX "z3_max"
#define STR_Z4_MIN "z4_min"
#define STR_Z4_MAX "z4_max"
#endif
#define STR_Z_PROBE "z_probe"
#define STR_PROBE_EN "probe_en"
#define STR_FILAMENT_RUNOUT_SENSOR "filament"
// General axis names
#define STR_X "X"
#define STR_Y "Y"
#define STR_Z "Z"
#define STR_I AXIS4_STR
#define STR_J AXIS5_STR
#define STR_K AXIS6_STR
#define STR_E "E"
#if IS_KINEMATIC
#define STR_A "A"
@@ -307,8 +315,114 @@
#define LCD_STR_A STR_A
#define LCD_STR_B STR_B
#define LCD_STR_C STR_C
#define LCD_STR_I STR_I
#define LCD_STR_J STR_J
#define LCD_STR_K STR_K
#define LCD_STR_E STR_E
// Extra Axis and Endstop Names
#if LINEAR_AXES >= 4
#if AXIS4_NAME == 'A'
#define AXIS4_STR "A"
#define STR_I_MIN "a_min"
#define STR_I_MAX "a_max"
#elif AXIS4_NAME == 'B'
#define AXIS4_STR "B"
#define STR_I_MIN "b_min"
#define STR_I_MAX "b_max"
#elif AXIS4_NAME == 'C'
#define AXIS4_STR "C"
#define STR_I_MIN "c_min"
#define STR_I_MAX "c_max"
#elif AXIS4_NAME == 'U'
#define AXIS4_STR "U"
#define STR_I_MIN "u_min"
#define STR_I_MAX "u_max"
#elif AXIS4_NAME == 'V'
#define AXIS4_STR "V"
#define STR_I_MIN "v_min"
#define STR_I_MAX "v_max"
#elif AXIS4_NAME == 'W'
#define AXIS4_STR "W"
#define STR_I_MIN "w_min"
#define STR_I_MAX "w_max"
#else
#define AXIS4_STR "A"
#define STR_I_MIN "a_min"
#define STR_I_MAX "a_max"
#endif
#else
#define AXIS4_STR ""
#endif
#if LINEAR_AXES >= 5
#if AXIS5_NAME == 'A'
#define AXIS5_STR "A"
#define STR_J_MIN "a_min"
#define STR_J_MAX "a_max"
#elif AXIS5_NAME == 'B'
#define AXIS5_STR "B"
#define STR_J_MIN "b_min"
#define STR_J_MAX "b_max"
#elif AXIS5_NAME == 'C'
#define AXIS5_STR "C"
#define STR_J_MIN "c_min"
#define STR_J_MAX "c_max"
#elif AXIS5_NAME == 'U'
#define AXIS5_STR "U"
#define STR_J_MIN "u_min"
#define STR_J_MAX "u_max"
#elif AXIS5_NAME == 'V'
#define AXIS5_STR "V"
#define STR_J_MIN "v_min"
#define STR_J_MAX "v_max"
#elif AXIS5_NAME == 'W'
#define AXIS5_STR "W"
#define STR_J_MIN "w_min"
#define STR_J_MAX "w_max"
#else
#define AXIS5_STR "B"
#define STR_J_MIN "b_min"
#define STR_J_MAX "b_max"
#endif
#else
#define AXIS5_STR ""
#endif
#if LINEAR_AXES >= 6
#if AXIS6_NAME == 'A'
#define AXIS6_STR "A"
#define STR_K_MIN "a_min"
#define STR_K_MAX "a_max"
#elif AXIS6_NAME == 'B'
#define AXIS6_STR "B"
#define STR_K_MIN "b_min"
#define STR_K_MAX "b_max"
#elif AXIS6_NAME == 'C'
#define AXIS6_STR "C"
#define STR_K_MIN "c_min"
#define STR_K_MAX "c_max"
#elif AXIS6_NAME == 'U'
#define AXIS6_STR "U"
#define STR_K_MIN "u_min"
#define STR_K_MAX "u_max"
#elif AXIS6_NAME == 'V'
#define AXIS6_STR "V"
#define STR_K_MIN "v_min"
#define STR_K_MAX "v_max"
#elif AXIS6_NAME == 'W'
#define AXIS6_STR "W"
#define STR_K_MIN "w_min"
#define STR_K_MAX "w_max"
#else
#define AXIS6_STR "C"
#define STR_K_MIN "c_min"
#define STR_K_MAX "c_max"
#endif
#else
#define AXIS6_STR ""
#endif
#if EITHER(HAS_MARLINUI_HD44780, IS_TFTGLCD_PANEL)
// Custom characters defined in the first 8 characters of the LCD
@@ -386,6 +500,14 @@
#define LCD_STR_E6 "E" LCD_STR_N6
#define LCD_STR_E7 "E" LCD_STR_N7
// Include localized LCD Menu Messages
#define LANGUAGE_DATA_INCL_(M) STRINGIFY_(fontdata/langdata_##M.h)
#define LANGUAGE_DATA_INCL(M) LANGUAGE_DATA_INCL_(M)
#define LANGUAGE_INCL_(M) STRINGIFY_(../lcd/language/language_##M.h)
#define LANGUAGE_INCL(M) LANGUAGE_INCL_(M)
// Use superscripts, if possible. Evaluated at point of use.
#define SUPERSCRIPT_TWO TERN(NOT_EXTENDED_ISO10646_1_5X7, "^2", "²")
#define SUPERSCRIPT_THREE TERN(NOT_EXTENDED_ISO10646_1_5X7, "^3", "³")

View File

@@ -36,12 +36,21 @@
#define _XMIN_ 100
#define _YMIN_ 200
#define _ZMIN_ 300
#define _IMIN_ 500
#define _JMIN_ 600
#define _KMIN_ 700
#define _XMAX_ 101
#define _YMAX_ 201
#define _ZMAX_ 301
#define _IMAX_ 501
#define _JMAX_ 601
#define _KMAX_ 701
#define _XDIAG_ 102
#define _YDIAG_ 202
#define _ZDIAG_ 302
#define _IDIAG_ 502
#define _JDIAG_ 602
#define _KDIAG_ 702
#define _E0DIAG_ 400
#define _E1DIAG_ 401
#define _E2DIAG_ 402
@@ -195,6 +204,11 @@
#define __TERN(T,V...) ___TERN(_CAT(_NO,T),V) // Prepend '_NO' to get '_NOT_0' or '_NOT_1'
#define ___TERN(P,V...) THIRD(P,V) // If first argument has a comma, A. Else B.
#define _OPTARG(A) , A
#define OPTARG(O,A) TERN_(O,DEFER4(_OPTARG)(A))
#define _OPTCODE(A) A;
#define OPTCODE(O,A) TERN_(O,DEFER4(_OPTCODE)(A))
// Macros to avoid 'f + 0.0' which is not always optimized away. Minus included for symmetry.
// Compiler flags -fno-signed-zeros -ffinite-math-only also cover 'f * 1.0', 'f - f', etc.
#define PLUS_TERN0(O,A) _TERN(_ENA_1(O),,+ (A)) // OPTION ? '+ (A)' : '<nul>'
@@ -237,6 +251,38 @@
memcpy(&a[0],&b[0],_MIN(sizeof(a),sizeof(b))); \
}while(0)
#define CODE_9( A,B,C,D,E,F,G,H,I,...) A; B; C; D; E; F; G; H; I
#define CODE_8( A,B,C,D,E,F,G,H,...) A; B; C; D; E; F; G; H
#define CODE_7( A,B,C,D,E,F,G,...) A; B; C; D; E; F; G
#define CODE_6( A,B,C,D,E,F,...) A; B; C; D; E; F
#define CODE_5( A,B,C,D,E,...) A; B; C; D; E
#define CODE_4( A,B,C,D,...) A; B; C; D
#define CODE_3( A,B,C,...) A; B; C
#define CODE_2( A,B,...) A; B
#define CODE_1( A,...) A
#define _CODE_N(N,V...) CODE_##N(V)
#define CODE_N(N,V...) _CODE_N(N,V)
#define GANG_16(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,...) A B C D E F G H I J K L M N O P
#define GANG_15(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,...) A B C D E F G H I J K L M N O
#define GANG_14(A,B,C,D,E,F,G,H,I,J,K,L,M,N,...) A B C D E F G H I J K L M N
#define GANG_13(A,B,C,D,E,F,G,H,I,J,K,L,M...) A B C D E F G H I J K L M
#define GANG_12(A,B,C,D,E,F,G,H,I,J,K,L...) A B C D E F G H I J K L
#define GANG_11(A,B,C,D,E,F,G,H,I,J,K,...) A B C D E F G H I J K
#define GANG_10(A,B,C,D,E,F,G,H,I,J,...) A B C D E F G H I J
#define GANG_9( A,B,C,D,E,F,G,H,I,...) A B C D E F G H I
#define GANG_8( A,B,C,D,E,F,G,H,...) A B C D E F G H
#define GANG_7( A,B,C,D,E,F,G,...) A B C D E F G
#define GANG_6( A,B,C,D,E,F,...) A B C D E F
#define GANG_5( A,B,C,D,E,...) A B C D E
#define GANG_4( A,B,C,D,...) A B C D
#define GANG_3( A,B,C,...) A B C
#define GANG_2( A,B,...) A B
#define GANG_1( A,...) A
#define _GANG_N(N,V...) GANG_##N(V)
#define GANG_N(N,V...) _GANG_N(N,V)
#define GANG_N_1(N,K) _GANG_N(N,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K)
// Macros for initializing arrays
#define LIST_16(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,...) A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P
#define LIST_15(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,...) A,B,C,D,E,F,G,H,I,J,K,L,M,N,O
@@ -254,10 +300,13 @@
#define LIST_3( A,B,C,...) A,B,C
#define LIST_2( A,B,...) A,B
#define LIST_1( A,...) A
#define LIST_0(...)
#define _LIST_N(N,V...) LIST_##N(V)
#define LIST_N(N,V...) _LIST_N(N,V)
#define LIST_N_1(N,K) _LIST_N(N,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K,K)
#define ARRAY_N(N,V...) { _LIST_N(N,V) }
#define ARRAY_N_1(N,K) { LIST_N_1(N,K) }
#define _JOIN_1(O) (O)
#define JOIN_N(N,C,V...) (DO(JOIN,C,LIST_N(N,V)))
@@ -301,8 +350,12 @@
#define HYPOT(x,y) SQRT(HYPOT2(x,y))
// Use NUM_ARGS(__VA_ARGS__) to get the number of variadic arguments
#define _NUM_ARGS(_,Z,Y,X,W,V,U,T,S,R,Q,P,O,N,M,L,K,J,I,H,G,F,E,D,C,B,A,OUT,...) OUT
#define NUM_ARGS(V...) _NUM_ARGS(0,V,26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0)
#define _NUM_ARGS(_,n,m,l,k,j,i,h,g,f,e,d,c,b,a,Z,Y,X,W,V,U,T,S,R,Q,P,O,N,M,L,K,J,I,H,G,F,E,D,C,B,A,OUT,...) OUT
#define NUM_ARGS(V...) _NUM_ARGS(0,V,40,39,38,37,36,35,34,33,32,31,30,29,28,27,26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0)
// Use TWO_ARGS(__VA_ARGS__) to get whether there are 1, 2, or >2 arguments
#define _TWO_ARGS(_,n,m,l,k,j,i,h,g,f,e,d,c,b,a,Z,Y,X,W,V,U,T,S,R,Q,P,O,N,M,L,K,J,I,H,G,F,E,D,C,B,A,OUT,...) OUT
#define TWO_ARGS(V...) _TWO_ARGS(0,V,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,1,0)
#ifdef __cplusplus
@@ -414,31 +467,19 @@
#else
#define MIN_2(a,b) ((a)<(b)?(a):(b))
#define MIN_3(a,V...) MIN_2(a,MIN_2(V))
#define MIN_4(a,V...) MIN_2(a,MIN_3(V))
#define MIN_5(a,V...) MIN_2(a,MIN_4(V))
#define MIN_6(a,V...) MIN_2(a,MIN_5(V))
#define MIN_7(a,V...) MIN_2(a,MIN_6(V))
#define MIN_8(a,V...) MIN_2(a,MIN_7(V))
#define MIN_9(a,V...) MIN_2(a,MIN_8(V))
#define MIN_10(a,V...) MIN_2(a,MIN_9(V))
#define __MIN_N(N,V...) MIN_##N(V)
#define _MIN_N(N,V...) __MIN_N(N,V)
#define _MIN(V...) _MIN_N(NUM_ARGS(V), V)
#define _MIN_N_REF() _MIN_N
#define _MIN(V...) EVAL(_MIN_N(TWO_ARGS(V),V))
#define MIN_2(a,b) ((a)<(b)?(a):(b))
#define MIN_3(a,V...) MIN_2(a,DEFER2(_MIN_N_REF)()(TWO_ARGS(V),V))
#define MAX_2(a,b) ((a)>(b)?(a):(b))
#define MAX_3(a,V...) MAX_2(a,MAX_2(V))
#define MAX_4(a,V...) MAX_2(a,MAX_3(V))
#define MAX_5(a,V...) MAX_2(a,MAX_4(V))
#define MAX_6(a,V...) MAX_2(a,MAX_5(V))
#define MAX_7(a,V...) MAX_2(a,MAX_6(V))
#define MAX_8(a,V...) MAX_2(a,MAX_7(V))
#define MAX_9(a,V...) MAX_2(a,MAX_8(V))
#define MAX_10(a,V...) MAX_2(a,MAX_9(V))
#define __MAX_N(N,V...) MAX_##N(V)
#define _MAX_N(N,V...) __MAX_N(N,V)
#define _MAX(V...) _MAX_N(NUM_ARGS(V), V)
#define _MAX_N_REF() _MAX_N
#define _MAX(V...) EVAL(_MAX_N(TWO_ARGS(V),V))
#define MAX_2(a,b) ((a)>(b)?(a):(b))
#define MAX_3(a,V...) MAX_2(a,DEFER2(_MAX_N_REF)()(TWO_ARGS(V),V))
#endif
@@ -473,6 +514,9 @@
#define ADD8(N) ADD4(ADD4(N))
#define ADD9(N) ADD4(ADD5(N))
#define ADD10(N) ADD5(ADD5(N))
#define SUM(A,B) _CAT(ADD,A)(B)
#define DOUBLE_(n) ADD##n(n)
#define DOUBLE(n) DOUBLE_(n)
// Macros for subtracting
#define DEC_0 0
@@ -581,6 +625,7 @@
// Repeat a macro passing S...N-1.
#define REPEAT_S(S,N,OP) EVAL(_REPEAT(S,SUB##S(N),OP))
#define REPEAT(N,OP) REPEAT_S(0,N,OP)
#define REPEAT_1(N,OP) REPEAT_S(1,INCREMENT(N),OP)
// Repeat a macro passing 0...N-1 plus additional arguments.
#define REPEAT2_S(S,N,OP,V...) EVAL(_REPEAT2(S,SUB##S(N),OP,V))

View File

@@ -36,6 +36,10 @@ PGMSTR(X_LBL, "X:"); PGMSTR(Y_LBL, "Y:"); PGMSTR(Z_LBL, "Z:"); PGMST
PGMSTR(SP_A_STR, " A"); PGMSTR(SP_B_STR, " B"); PGMSTR(SP_C_STR, " C");
PGMSTR(SP_X_STR, " X"); PGMSTR(SP_Y_STR, " Y"); PGMSTR(SP_Z_STR, " Z"); PGMSTR(SP_E_STR, " E");
PGMSTR(SP_X_LBL, " X:"); PGMSTR(SP_Y_LBL, " Y:"); PGMSTR(SP_Z_LBL, " Z:"); PGMSTR(SP_E_LBL, " E:");
PGMSTR(I_STR, AXIS4_STR); PGMSTR(J_STR, AXIS5_STR); PGMSTR(K_STR, AXIS6_STR);
PGMSTR(I_LBL, AXIS4_STR ":"); PGMSTR(J_LBL, AXIS5_STR ":"); PGMSTR(K_LBL, AXIS6_STR ":");
PGMSTR(SP_I_STR, " " AXIS4_STR); PGMSTR(SP_J_STR, " " AXIS5_STR); PGMSTR(SP_K_STR, " " AXIS6_STR);
PGMSTR(SP_I_LBL, " " AXIS4_STR ":"); PGMSTR(SP_J_LBL, " " AXIS5_STR ":"); PGMSTR(SP_K_LBL, " " AXIS6_STR ":");
// Hook Meatpack if it's enabled on the first leaf
#if ENABLED(MEATPACK_ON_SERIAL_PORT_1)
@@ -44,6 +48,9 @@ PGMSTR(SP_X_LBL, " X:"); PGMSTR(SP_Y_LBL, " Y:"); PGMSTR(SP_Z_LBL, " Z:"); PGMST
#if ENABLED(MEATPACK_ON_SERIAL_PORT_2)
SerialLeafT2 mpSerial2(false, _SERIAL_LEAF_2);
#endif
#if ENABLED(MEATPACK_ON_SERIAL_PORT_3)
SerialLeafT3 mpSerial3(false, _SERIAL_LEAF_3);
#endif
// Step 2: For multiserial, handle the second serial port as well
#if HAS_MULTI_SERIAL
@@ -52,7 +59,14 @@ PGMSTR(SP_X_LBL, " X:"); PGMSTR(SP_Y_LBL, " Y:"); PGMSTR(SP_Z_LBL, " Z:"); PGMST
SerialLeafT2 msSerial2(ethernet.have_telnet_client, MYSERIAL2, false);
#endif
SerialOutputT multiSerial(SERIAL_LEAF_1, SERIAL_LEAF_2);
#define __S_LEAF(N) ,SERIAL_LEAF_##N
#define _S_LEAF(N) __S_LEAF(N)
SerialOutputT multiSerial( SERIAL_LEAF_1 REPEAT_S(2, INCREMENT(NUM_SERIAL), _S_LEAF) );
#undef __S_LEAF
#undef _S_LEAF
#endif
void serialprintPGM(PGM_P str) {
@@ -91,8 +105,10 @@ void print_bin(uint16_t val) {
}
}
void print_xyz(const_float_t x, const_float_t y, const_float_t z, PGM_P const prefix/*=nullptr*/, PGM_P const suffix/*=nullptr*/) {
void print_pos(LINEAR_AXIS_ARGS(const_float_t), PGM_P const prefix/*=nullptr*/, PGM_P const suffix/*=nullptr*/) {
if (prefix) serialprintPGM(prefix);
SERIAL_ECHOPAIR_P(SP_X_STR, x, SP_Y_STR, y, SP_Z_STR, z);
SERIAL_ECHOPAIR_P(
LIST_N(DOUBLE(LINEAR_AXES), SP_X_STR, x, SP_Y_STR, y, SP_Z_STR, z, SP_I_STR, i, SP_J_STR, j, SP_K_STR, k)
);
if (suffix) serialprintPGM(suffix); else SERIAL_EOL();
}

View File

@@ -29,12 +29,16 @@
#endif
// Commonly-used strings in serial output
extern const char NUL_STR[], SP_P_STR[], SP_T_STR[],
extern const char NUL_STR[],
SP_X_STR[], SP_Y_STR[], SP_Z_STR[],
SP_A_STR[], SP_B_STR[], SP_C_STR[], SP_E_STR[],
SP_X_LBL[], SP_Y_LBL[], SP_Z_LBL[], SP_E_LBL[],
SP_I_STR[], SP_J_STR[], SP_K_STR[],
SP_I_LBL[], SP_J_LBL[], SP_K_LBL[],
SP_P_STR[], SP_T_STR[],
X_STR[], Y_STR[], Z_STR[], E_STR[],
X_LBL[], Y_LBL[], Z_LBL[], E_LBL[],
SP_A_STR[], SP_B_STR[], SP_C_STR[],
SP_X_STR[], SP_Y_STR[], SP_Z_STR[], SP_E_STR[],
SP_X_LBL[], SP_Y_LBL[], SP_Z_LBL[], SP_E_LBL[];
I_LBL[], J_LBL[], K_LBL[];
//
// Debugging flags for use by M111
@@ -62,11 +66,11 @@ extern uint8_t marlin_debug_flags;
//
// Serial redirection
//
// Step 1: Find what's the first serial leaf
// Step 1: Find out what the first serial leaf is
#if BOTH(HAS_MULTI_SERIAL, SERIAL_CATCHALL)
#define _SERIAL_LEAF_1 MYSERIAL
#define _SERIAL_LEAF_1 MYSERIAL
#else
#define _SERIAL_LEAF_1 MYSERIAL1
#define _SERIAL_LEAF_1 MYSERIAL1
#endif
// Hook Meatpack if it's enabled on the first leaf
@@ -78,7 +82,8 @@ extern uint8_t marlin_debug_flags;
#define SERIAL_LEAF_1 _SERIAL_LEAF_1
#endif
// Step 2: For multiserial, handle the second serial port as well
// Step 2: For multiserial wrap all serial ports in a single
// interface with the ability to output to multiple serial ports.
#if HAS_MULTI_SERIAL
#define _PORT_REDIRECT(n,p) REMEMBER(n,multiSerial.portMask,p)
#define _PORT_RESTORE(n,p) RESTORE(n)
@@ -86,18 +91,17 @@ extern uint8_t marlin_debug_flags;
// If we have a catchall, use that directly
#ifdef SERIAL_CATCHALL
#define _SERIAL_LEAF_2 SERIAL_CATCHALL
#elif HAS_ETHERNET
typedef ConditionalSerial<decltype(MYSERIAL2)> SerialLeafT2; // We need to create an instance here
extern SerialLeafT2 msSerial2;
#define _SERIAL_LEAF_2 msSerial2
#else
#if HAS_ETHERNET
// We need to create an instance here
typedef ConditionalSerial<decltype(MYSERIAL2)> SerialLeafT2;
extern SerialLeafT2 msSerial2;
#define _SERIAL_LEAF_2 msSerial2
#else
// Don't create a useless instance here, directly use the existing instance
#define _SERIAL_LEAF_2 MYSERIAL2
#endif
#define _SERIAL_LEAF_2 MYSERIAL2 // Don't create a useless instance here, directly use the existing instance
#endif
// Nothing complicated here
#define _SERIAL_LEAF_3 MYSERIAL3
// Hook Meatpack if it's enabled on the second leaf
#if ENABLED(MEATPACK_ON_SERIAL_PORT_2)
typedef MeatpackSerial<decltype(_SERIAL_LEAF_2)> SerialLeafT2;
@@ -107,7 +111,23 @@ extern uint8_t marlin_debug_flags;
#define SERIAL_LEAF_2 _SERIAL_LEAF_2
#endif
typedef MultiSerial<decltype(SERIAL_LEAF_1), decltype(SERIAL_LEAF_2), 0> SerialOutputT;
// Hook Meatpack if it's enabled on the third leaf
#if ENABLED(MEATPACK_ON_SERIAL_PORT_3)
typedef MeatpackSerial<decltype(_SERIAL_LEAF_3)> SerialLeafT3;
extern SerialLeafT3 mpSerial3;
#define SERIAL_LEAF_3 mpSerial3
#else
#define SERIAL_LEAF_3 _SERIAL_LEAF_3
#endif
#define __S_MULTI(N) decltype(SERIAL_LEAF_##N),
#define _S_MULTI(N) __S_MULTI(N)
typedef MultiSerial< REPEAT_1(NUM_SERIAL, _S_MULTI) 0> SerialOutputT;
#undef __S_MULTI
#undef _S_MULTI
extern SerialOutputT multiSerial;
#define SERIAL_IMPL multiSerial
#else
@@ -166,139 +186,45 @@ inline void SERIAL_FLUSHTX() { SERIAL_IMPL.flushTX(); }
// Print a single PROGMEM string to serial
void serialprintPGM(PGM_P str);
// SERIAL_ECHOPAIR / SERIAL_ECHOPAIR_P is used to output a key value pair. The key must be a string and the value can be anything
// Print up to 12 pairs of values. Odd elements auto-wrapped in PSTR().
#define __SEP_N(N,V...) _SEP_##N(V)
#define _SEP_N(N,V...) __SEP_N(N,V)
#define _SEP_1(PRE) SERIAL_ECHOPGM(PRE)
#define _SEP_2(PRE,V) serial_echopair_PGM(PSTR(PRE),V)
#define _SEP_3(a,b,c) do{ _SEP_2(a,b); SERIAL_ECHOPGM(c); }while(0)
#define _SEP_4(a,b,V...) do{ _SEP_2(a,b); _SEP_2(V); }while(0)
#define _SEP_5(a,b,V...) do{ _SEP_2(a,b); _SEP_3(V); }while(0)
#define _SEP_6(a,b,V...) do{ _SEP_2(a,b); _SEP_4(V); }while(0)
#define _SEP_7(a,b,V...) do{ _SEP_2(a,b); _SEP_5(V); }while(0)
#define _SEP_8(a,b,V...) do{ _SEP_2(a,b); _SEP_6(V); }while(0)
#define _SEP_9(a,b,V...) do{ _SEP_2(a,b); _SEP_7(V); }while(0)
#define _SEP_10(a,b,V...) do{ _SEP_2(a,b); _SEP_8(V); }while(0)
#define _SEP_11(a,b,V...) do{ _SEP_2(a,b); _SEP_9(V); }while(0)
#define _SEP_12(a,b,V...) do{ _SEP_2(a,b); _SEP_10(V); }while(0)
#define _SEP_13(a,b,V...) do{ _SEP_2(a,b); _SEP_11(V); }while(0)
#define _SEP_14(a,b,V...) do{ _SEP_2(a,b); _SEP_12(V); }while(0)
#define _SEP_15(a,b,V...) do{ _SEP_2(a,b); _SEP_13(V); }while(0)
#define _SEP_16(a,b,V...) do{ _SEP_2(a,b); _SEP_14(V); }while(0)
#define _SEP_17(a,b,V...) do{ _SEP_2(a,b); _SEP_15(V); }while(0)
#define _SEP_18(a,b,V...) do{ _SEP_2(a,b); _SEP_16(V); }while(0)
#define _SEP_19(a,b,V...) do{ _SEP_2(a,b); _SEP_17(V); }while(0)
#define _SEP_20(a,b,V...) do{ _SEP_2(a,b); _SEP_18(V); }while(0)
#define _SEP_21(a,b,V...) do{ _SEP_2(a,b); _SEP_19(V); }while(0)
#define _SEP_22(a,b,V...) do{ _SEP_2(a,b); _SEP_20(V); }while(0)
#define _SEP_23(a,b,V...) do{ _SEP_2(a,b); _SEP_21(V); }while(0)
#define _SEP_24(a,b,V...) do{ _SEP_2(a,b); _SEP_22(V); }while(0)
//
// SERIAL_ECHOPAIR... macros are used to output string-value pairs.
//
#define SERIAL_ECHOPAIR(V...) _SEP_N(NUM_ARGS(V),V)
// Print up to 20 pairs of values. Odd elements must be literal strings.
#define __SEP_N(N,V...) _SEP_##N(V)
#define _SEP_N(N,V...) __SEP_N(N,V)
#define _SEP_N_REF() _SEP_N
#define _SEP_1(s) SERIAL_ECHOPGM(s);
#define _SEP_2(s,v) serial_echopair_PGM(PSTR(s),v);
#define _SEP_3(s,v,V...) _SEP_2(s,v); DEFER2(_SEP_N_REF)()(TWO_ARGS(V),V);
#define SERIAL_ECHOPAIR(V...) do{ EVAL(_SEP_N(TWO_ARGS(V),V)); }while(0)
// Print up to 12 pairs of values. Odd elements must be PSTR pointers.
#define __SEP_N_P(N,V...) _SEP_##N##_P(V)
#define _SEP_N_P(N,V...) __SEP_N_P(N,V)
#define _SEP_1_P(PRE) serialprintPGM(PRE)
#define _SEP_2_P(PRE,V) serial_echopair_PGM(PRE,V)
#define _SEP_3_P(a,b,c) do{ _SEP_2_P(a,b); serialprintPGM(c); }while(0)
#define _SEP_4_P(a,b,V...) do{ _SEP_2_P(a,b); _SEP_2_P(V); }while(0)
#define _SEP_5_P(a,b,V...) do{ _SEP_2_P(a,b); _SEP_3_P(V); }while(0)
#define _SEP_6_P(a,b,V...) do{ _SEP_2_P(a,b); _SEP_4_P(V); }while(0)
#define _SEP_7_P(a,b,V...) do{ _SEP_2_P(a,b); _SEP_5_P(V); }while(0)
#define _SEP_8_P(a,b,V...) do{ _SEP_2_P(a,b); _SEP_6_P(V); }while(0)
#define _SEP_9_P(a,b,V...) do{ _SEP_2_P(a,b); _SEP_7_P(V); }while(0)
#define _SEP_10_P(a,b,V...) do{ _SEP_2_P(a,b); _SEP_8_P(V); }while(0)
#define _SEP_11_P(a,b,V...) do{ _SEP_2_P(a,b); _SEP_9_P(V); }while(0)
#define _SEP_12_P(a,b,V...) do{ _SEP_2_P(a,b); _SEP_10_P(V); }while(0)
#define _SEP_13_P(a,b,V...) do{ _SEP_2_P(a,b); _SEP_11_P(V); }while(0)
#define _SEP_14_P(a,b,V...) do{ _SEP_2_P(a,b); _SEP_12_P(V); }while(0)
#define _SEP_15_P(a,b,V...) do{ _SEP_2_P(a,b); _SEP_13_P(V); }while(0)
#define _SEP_16_P(a,b,V...) do{ _SEP_2_P(a,b); _SEP_14_P(V); }while(0)
#define _SEP_17_P(a,b,V...) do{ _SEP_2_P(a,b); _SEP_15_P(V); }while(0)
#define _SEP_18_P(a,b,V...) do{ _SEP_2_P(a,b); _SEP_16_P(V); }while(0)
#define _SEP_19_P(a,b,V...) do{ _SEP_2_P(a,b); _SEP_17_P(V); }while(0)
#define _SEP_20_P(a,b,V...) do{ _SEP_2_P(a,b); _SEP_18_P(V); }while(0)
#define _SEP_21_P(a,b,V...) do{ _SEP_2_P(a,b); _SEP_19_P(V); }while(0)
#define _SEP_22_P(a,b,V...) do{ _SEP_2_P(a,b); _SEP_20_P(V); }while(0)
#define _SEP_23_P(a,b,V...) do{ _SEP_2_P(a,b); _SEP_21_P(V); }while(0)
#define _SEP_24_P(a,b,V...) do{ _SEP_2_P(a,b); _SEP_22_P(V); }while(0)
// Print up to 20 pairs of values followed by newline. Odd elements must be literal strings.
#define __SELP_N(N,V...) _SELP_##N(V)
#define _SELP_N(N,V...) __SELP_N(N,V)
#define _SELP_N_REF() _SELP_N
#define _SELP_1(s) SERIAL_ECHOLNPGM(s);
#define _SELP_2(s,v) serial_echopair_PGM(PSTR(s),v); SERIAL_EOL();
#define _SELP_3(s,v,V...) _SEP_2(s,v); DEFER2(_SELP_N_REF)()(TWO_ARGS(V),V);
#define SERIAL_ECHOLNPAIR(V...) do{ EVAL(_SELP_N(TWO_ARGS(V),V)); }while(0)
// SERIAL_ECHOPAIR_P is used to output a key value pair. Unlike SERIAL_ECHOPAIR, the key must be a PGM string already and the value can be anything
#define SERIAL_ECHOPAIR_P(V...) _SEP_N_P(NUM_ARGS(V),V)
// Print up to 20 pairs of values. Odd elements must be PSTR pointers.
#define __SEP_N_P(N,V...) _SEP_##N##_P(V)
#define _SEP_N_P(N,V...) __SEP_N_P(N,V)
#define _SEP_N_P_REF() _SEP_N_P
#define _SEP_1_P(s) serialprintPGM(s);
#define _SEP_2_P(s,v) serial_echopair_PGM(s,v);
#define _SEP_3_P(s,v,V...) _SEP_2_P(s,v); DEFER2(_SEP_N_P_REF)()(TWO_ARGS(V),V);
#define SERIAL_ECHOPAIR_P(V...) do{ EVAL(_SEP_N_P(TWO_ARGS(V),V)); }while(0)
// Print up to 12 pairs of values followed by newline
#define __SELP_N(N,V...) _SELP_##N(V)
#define _SELP_N(N,V...) __SELP_N(N,V)
#define _SELP_1(PRE) SERIAL_ECHOLNPGM(PRE)
#define _SELP_2(PRE,V) do{ serial_echopair_PGM(PSTR(PRE),V); SERIAL_EOL(); }while(0)
#define _SELP_3(a,b,c) do{ _SEP_2(a,b); SERIAL_ECHOLNPGM(c); }while(0)
#define _SELP_4(a,b,V...) do{ _SEP_2(a,b); _SELP_2(V); }while(0)
#define _SELP_5(a,b,V...) do{ _SEP_2(a,b); _SELP_3(V); }while(0)
#define _SELP_6(a,b,V...) do{ _SEP_2(a,b); _SELP_4(V); }while(0)
#define _SELP_7(a,b,V...) do{ _SEP_2(a,b); _SELP_5(V); }while(0)
#define _SELP_8(a,b,V...) do{ _SEP_2(a,b); _SELP_6(V); }while(0)
#define _SELP_9(a,b,V...) do{ _SEP_2(a,b); _SELP_7(V); }while(0)
#define _SELP_10(a,b,V...) do{ _SEP_2(a,b); _SELP_8(V); }while(0)
#define _SELP_11(a,b,V...) do{ _SEP_2(a,b); _SELP_9(V); }while(0)
#define _SELP_12(a,b,V...) do{ _SEP_2(a,b); _SELP_10(V); }while(0)
#define _SELP_13(a,b,V...) do{ _SEP_2(a,b); _SELP_11(V); }while(0)
#define _SELP_14(a,b,V...) do{ _SEP_2(a,b); _SELP_12(V); }while(0)
#define _SELP_15(a,b,V...) do{ _SEP_2(a,b); _SELP_13(V); }while(0)
#define _SELP_16(a,b,V...) do{ _SEP_2(a,b); _SELP_14(V); }while(0)
#define _SELP_17(a,b,V...) do{ _SEP_2(a,b); _SELP_15(V); }while(0)
#define _SELP_18(a,b,V...) do{ _SEP_2(a,b); _SELP_16(V); }while(0)
#define _SELP_19(a,b,V...) do{ _SEP_2(a,b); _SELP_17(V); }while(0)
#define _SELP_20(a,b,V...) do{ _SEP_2(a,b); _SELP_18(V); }while(0)
#define _SELP_21(a,b,V...) do{ _SEP_2(a,b); _SELP_19(V); }while(0)
#define _SELP_22(a,b,V...) do{ _SEP_2(a,b); _SELP_20(V); }while(0)
#define _SELP_23(a,b,V...) do{ _SEP_2(a,b); _SELP_21(V); }while(0)
#define _SELP_24(a,b,V...) do{ _SEP_2(a,b); _SELP_22(V); }while(0)
#define _SELP_25(a,b,V...) do{ _SEP_2(a,b); _SELP_23(V); }while(0)
#define _SELP_26(a,b,V...) do{ _SEP_2(a,b); _SELP_24(V); }while(0)
#define _SELP_27(a,b,V...) do{ _SEP_2(a,b); _SELP_25(V); }while(0)
#define _SELP_28(a,b,V...) do{ _SEP_2(a,b); _SELP_26(V); }while(0)
#define _SELP_29(a,b,V...) do{ _SEP_2(a,b); _SELP_27(V); }while(0)
#define _SELP_30(a,b,V...) do{ _SEP_2(a,b); _SELP_28(V); }while(0) // Eat two args, pass the rest up
#define SERIAL_ECHOLNPAIR(V...) _SELP_N(NUM_ARGS(V),V)
// Print up to 12 pairs of values followed by newline
#define __SELP_N_P(N,V...) _SELP_##N##_P(V)
#define _SELP_N_P(N,V...) __SELP_N_P(N,V)
#define _SELP_1_P(PRE) serialprintPGM(PRE)
#define _SELP_2_P(PRE,V) do{ serial_echopair_PGM(PRE,V); SERIAL_EOL(); }while(0)
#define _SELP_3_P(a,b,c) do{ _SEP_2_P(a,b); serialprintPGM(c); }while(0)
#define _SELP_4_P(a,b,V...) do{ _SEP_2_P(a,b); _SELP_2_P(V); }while(0)
#define _SELP_5_P(a,b,V...) do{ _SEP_2_P(a,b); _SELP_3_P(V); }while(0)
#define _SELP_6_P(a,b,V...) do{ _SEP_2_P(a,b); _SELP_4_P(V); }while(0)
#define _SELP_7_P(a,b,V...) do{ _SEP_2_P(a,b); _SELP_5_P(V); }while(0)
#define _SELP_8_P(a,b,V...) do{ _SEP_2_P(a,b); _SELP_6_P(V); }while(0)
#define _SELP_9_P(a,b,V...) do{ _SEP_2_P(a,b); _SELP_7_P(V); }while(0)
#define _SELP_10_P(a,b,V...) do{ _SEP_2_P(a,b); _SELP_8_P(V); }while(0)
#define _SELP_11_P(a,b,V...) do{ _SEP_2_P(a,b); _SELP_9_P(V); }while(0)
#define _SELP_12_P(a,b,V...) do{ _SEP_2_P(a,b); _SELP_10_P(V); }while(0)
#define _SELP_13_P(a,b,V...) do{ _SEP_2_P(a,b); _SELP_11_P(V); }while(0)
#define _SELP_14_P(a,b,V...) do{ _SEP_2_P(a,b); _SELP_12_P(V); }while(0)
#define _SELP_15_P(a,b,V...) do{ _SEP_2_P(a,b); _SELP_13_P(V); }while(0)
#define _SELP_16_P(a,b,V...) do{ _SEP_2_P(a,b); _SELP_14_P(V); }while(0)
#define _SELP_17_P(a,b,V...) do{ _SEP_2_P(a,b); _SELP_15_P(V); }while(0)
#define _SELP_18_P(a,b,V...) do{ _SEP_2_P(a,b); _SELP_16_P(V); }while(0)
#define _SELP_19_P(a,b,V...) do{ _SEP_2_P(a,b); _SELP_17_P(V); }while(0)
#define _SELP_20_P(a,b,V...) do{ _SEP_2_P(a,b); _SELP_18_P(V); }while(0)
#define _SELP_21_P(a,b,V...) do{ _SEP_2_P(a,b); _SELP_19_P(V); }while(0)
#define _SELP_22_P(a,b,V...) do{ _SEP_2_P(a,b); _SELP_20_P(V); }while(0)
#define _SELP_23_P(a,b,V...) do{ _SEP_2_P(a,b); _SELP_21_P(V); }while(0)
#define _SELP_24_P(a,b,V...) do{ _SEP_2_P(a,b); _SELP_22_P(V); }while(0)
#define _SELP_25_P(a,b,V...) do{ _SEP_2_P(a,b); _SELP_23_P(V); }while(0)
#define _SELP_26_P(a,b,V...) do{ _SEP_2_P(a,b); _SELP_24_P(V); }while(0)
#define _SELP_27_P(a,b,V...) do{ _SEP_2_P(a,b); _SELP_25_P(V); }while(0)
#define _SELP_28_P(a,b,V...) do{ _SEP_2_P(a,b); _SELP_26_P(V); }while(0)
#define _SELP_29_P(a,b,V...) do{ _SEP_2_P(a,b); _SELP_27_P(V); }while(0)
#define _SELP_30_P(a,b,V...) do{ _SEP_2_P(a,b); _SELP_28_P(V); }while(0) // Eat two args, pass the rest up
#define SERIAL_ECHOLNPAIR_P(V...) _SELP_N_P(NUM_ARGS(V),V)
// Print up to 20 pairs of values followed by newline. Odd elements must be PSTR pointers.
#define __SELP_N_P(N,V...) _SELP_##N##_P(V)
#define _SELP_N_P(N,V...) __SELP_N_P(N,V)
#define _SELP_N_P_REF() _SELP_N_P
#define _SELP_1_P(s) { serialprintPGM(s); SERIAL_EOL(); }
#define _SELP_2_P(s,v) { serial_echopair_PGM(s,v); SERIAL_EOL(); }
#define _SELP_3_P(s,v,V...) { _SEP_2_P(s,v); DEFER2(_SELP_N_P_REF)()(TWO_ARGS(V),V); }
#define SERIAL_ECHOLNPAIR_P(V...) do{ EVAL(_SELP_N_P(TWO_ARGS(V),V)); }while(0)
#ifdef AllowDifferentTypeInList
@@ -388,11 +314,11 @@ void serialprint_truefalse(const bool tf);
void serial_spaces(uint8_t count);
void print_bin(const uint16_t val);
void print_xyz(const_float_t x, const_float_t y, const_float_t z, PGM_P const prefix=nullptr, PGM_P const suffix=nullptr);
void print_pos(LINEAR_AXIS_ARGS(const_float_t), PGM_P const prefix=nullptr, PGM_P const suffix=nullptr);
inline void print_xyz(const xyz_pos_t &xyz, PGM_P const prefix=nullptr, PGM_P const suffix=nullptr) {
print_xyz(xyz.x, xyz.y, xyz.z, prefix, suffix);
inline void print_pos(const xyz_pos_t &xyz, PGM_P const prefix=nullptr, PGM_P const suffix=nullptr) {
print_pos(LINEAR_AXIS_ELEM(xyz), prefix, suffix);
}
#define SERIAL_POS(SUFFIX,VAR) do { print_xyz(VAR, PSTR(" " STRINGIFY(VAR) "="), PSTR(" : " SUFFIX "\n")); }while(0)
#define SERIAL_XYZ(PREFIX,V...) do { print_xyz(V, PSTR(PREFIX), nullptr); }while(0)
#define SERIAL_POS(SUFFIX,VAR) do { print_pos(VAR, PSTR(" " STRINGIFY(VAR) "="), PSTR(" : " SUFFIX "\n")); }while(0)
#define SERIAL_XYZ(PREFIX,V...) do { print_pos(V, PSTR(PREFIX), nullptr); }while(0)

View File

@@ -67,7 +67,7 @@ struct BaseSerial : public SerialBase< BaseSerial<SerialT> >, public SerialT {
SerialFeature features(serial_index_t index) const { return CALL_IF_EXISTS(SerialFeature, static_cast<const SerialT*>(this), features, index); }
// We have 2 implementation of the same method in both base class, let's say which one we want
// Two implementations of the same method exist in both base classes so indicate the right one
using SerialT::available;
using SerialT::read;
using SerialT::begin;
@@ -134,7 +134,7 @@ struct ForwardSerial : public SerialBase< ForwardSerial<SerialT> > {
ForwardSerial(const bool e, SerialT & out) : BaseClassT(e), out(out) {}
};
// A class that's can be hooked and unhooked at runtime, useful to capturing the output of the serial interface
// A class that can be hooked and unhooked at runtime, useful to capture the output of the serial interface
template <class SerialT>
struct RuntimeSerial : public SerialBase< RuntimeSerial<SerialT> >, public SerialT {
typedef SerialBase< RuntimeSerial<SerialT> > BaseClassT;
@@ -195,54 +195,71 @@ struct RuntimeSerial : public SerialBase< RuntimeSerial<SerialT> >, public Seria
RuntimeSerial(const bool e, Args... args) : BaseClassT(e), SerialT(args...), writeHook(0), eofHook(0), userPointer(0) {}
};
// A class that duplicates its output conditionally to 2 serial interfaces
template <class Serial0T, class Serial1T, const uint8_t offset = 0, const uint8_t step = 1>
struct MultiSerial : public SerialBase< MultiSerial<Serial0T, Serial1T, offset, step> > {
typedef SerialBase< MultiSerial<Serial0T, Serial1T, offset, step> > BaseClassT;
#define _S_CLASS(N) class Serial##N##T,
#define _S_NAME(N) Serial##N##T,
template < REPEAT(NUM_SERIAL, _S_CLASS) const uint8_t offset=0, const uint8_t step=1 >
struct MultiSerial : public SerialBase< MultiSerial< REPEAT(NUM_SERIAL, _S_NAME) offset, step > > {
typedef SerialBase< MultiSerial< REPEAT(NUM_SERIAL, _S_NAME) offset, step > > BaseClassT;
#undef _S_CLASS
#undef _S_NAME
SerialMask portMask;
Serial0T & serial0;
Serial1T & serial1;
static constexpr uint8_t Usage = ((1 << step) - 1); // A bit mask containing as many bits as step
static constexpr uint8_t FirstOutput = (Usage << offset);
static constexpr uint8_t SecondOutput = (Usage << (offset + step));
static constexpr uint8_t Both = FirstOutput | SecondOutput;
#define _S_DECLARE(N) Serial##N##T & serial##N;
REPEAT(NUM_SERIAL, _S_DECLARE);
#undef _S_DECLARE
static constexpr uint8_t Usage = _BV(step) - 1; // A bit mask containing 'step' bits
#define _OUT_PORT(N) (Usage << (offset + (step * N))),
static constexpr uint8_t output[] = { REPEAT(NUM_SERIAL, _OUT_PORT) };
#undef _OUT_PORT
#define _OUT_MASK(N) | output[N]
static constexpr uint8_t ALL = 0 REPEAT(NUM_SERIAL, _OUT_MASK);
#undef _OUT_MASK
NO_INLINE void write(uint8_t c) {
if (portMask.enabled(FirstOutput)) serial0.write(c);
if (portMask.enabled(SecondOutput)) serial1.write(c);
#define _S_WRITE(N) if (portMask.enabled(output[N])) serial##N.write(c);
REPEAT(NUM_SERIAL, _S_WRITE);
#undef _S_WRITE
}
NO_INLINE void msgDone() {
if (portMask.enabled(FirstOutput)) serial0.msgDone();
if (portMask.enabled(SecondOutput)) serial1.msgDone();
#define _S_DONE(N) if (portMask.enabled(output[N])) serial##N.msgDone();
REPEAT(NUM_SERIAL, _S_DONE);
#undef _S_DONE
}
int available(serial_index_t index) {
if (index.within(0 + offset, step + offset - 1))
return serial0.available(index);
else if (index.within(step + offset, 2 * step + offset - 1))
return serial1.available(index);
uint8_t pos = offset;
#define _S_AVAILABLE(N) if (index.within(pos, pos + step - 1)) return serial##N.available(index); else pos += step;
REPEAT(NUM_SERIAL, _S_AVAILABLE);
#undef _S_AVAILABLE
return false;
}
int read(serial_index_t index) {
if (index.within(0 + offset, step + offset - 1))
return serial0.read(index);
else if (index.within(step + offset, 2 * step + offset - 1))
return serial1.read(index);
uint8_t pos = offset;
#define _S_READ(N) if (index.within(pos, pos + step - 1)) return serial##N.read(index); else pos += step;
REPEAT(NUM_SERIAL, _S_READ);
#undef _S_READ
return -1;
}
void begin(const long br) {
if (portMask.enabled(FirstOutput)) serial0.begin(br);
if (portMask.enabled(SecondOutput)) serial1.begin(br);
#define _S_BEGIN(N) if (portMask.enabled(output[N])) serial##N.begin(br);
REPEAT(NUM_SERIAL, _S_BEGIN);
#undef _S_BEGIN
}
void end() {
if (portMask.enabled(FirstOutput)) serial0.end();
if (portMask.enabled(SecondOutput)) serial1.end();
#define _S_END(N) if (portMask.enabled(output[N])) serial##N.end();
REPEAT(NUM_SERIAL, _S_END);
#undef _S_END
}
bool connected() {
bool ret = true;
if (portMask.enabled(FirstOutput)) ret = CALL_IF_EXISTS(bool, &serial0, connected);
if (portMask.enabled(SecondOutput)) ret = ret && CALL_IF_EXISTS(bool, &serial1, connected);
#define _S_CONNECTED(N) if (portMask.enabled(output[N]) && !CALL_IF_EXISTS(bool, &serial##N, connected)) ret = false;
REPEAT(NUM_SERIAL, _S_CONNECTED);
#undef _S_CONNECTED
return ret;
}
@@ -250,27 +267,32 @@ struct MultiSerial : public SerialBase< MultiSerial<Serial0T, Serial1T, offset,
using BaseClassT::read;
// Redirect flush
NO_INLINE void flush() {
if (portMask.enabled(FirstOutput)) serial0.flush();
if (portMask.enabled(SecondOutput)) serial1.flush();
NO_INLINE void flush() {
#define _S_FLUSH(N) if (portMask.enabled(output[N])) serial##N.flush();
REPEAT(NUM_SERIAL, _S_FLUSH);
#undef _S_FLUSH
}
NO_INLINE void flushTX() {
if (portMask.enabled(FirstOutput)) CALL_IF_EXISTS(void, &serial0, flushTX);
if (portMask.enabled(SecondOutput)) CALL_IF_EXISTS(void, &serial1, flushTX);
NO_INLINE void flushTX() {
#define _S_FLUSHTX(N) if (portMask.enabled(output[N])) CALL_IF_EXISTS(void, &serial0, flushTX);
REPEAT(NUM_SERIAL, _S_FLUSHTX);
#undef _S_FLUSHTX
}
// Forward feature queries
SerialFeature features(serial_index_t index) const {
if (index.within(0 + offset, step + offset - 1))
return serial0.features(index);
else if (index.within(step + offset, 2 * step + offset - 1))
return serial1.features(index);
SerialFeature features(serial_index_t index) const {
uint8_t pos = offset;
#define _S_FEATURES(N) if (index.within(pos, pos + step - 1)) return serial##N.features(index); else pos += step;
REPEAT(NUM_SERIAL, _S_FEATURES);
#undef _S_FEATURES
return SerialFeature::None;
}
MultiSerial(Serial0T & serial0, Serial1T & serial1, const SerialMask mask = Both, const bool e = false) :
BaseClassT(e),
portMask(mask), serial0(serial0), serial1(serial1) {}
#define _S_REFS(N) Serial##N##T & serial##N,
#define _S_INIT(N) ,serial##N (serial##N)
MultiSerial(REPEAT(NUM_SERIAL, _S_REFS) const SerialMask mask = ALL, const bool e = false)
: BaseClassT(e), portMask(mask) REPEAT(NUM_SERIAL, _S_INIT) {}
};
// Build the actual serial object depending on current configuration
@@ -278,4 +300,7 @@ struct MultiSerial : public SerialBase< MultiSerial<Serial0T, Serial1T, offset,
#define ForwardSerial1Class TERN(SERIAL_RUNTIME_HOOK, RuntimeSerial, ForwardSerial)
#ifdef HAS_MULTI_SERIAL
#define Serial2Class ConditionalSerial
#if NUM_SERIAL >= 3
#define Serial3Class ConditionalSerial
#endif
#endif

View File

@@ -29,34 +29,6 @@
class __FlashStringHelper;
typedef const __FlashStringHelper *progmem_str;
//
// Enumerated axis indices
//
// - X_AXIS, Y_AXIS, and Z_AXIS should be used for axes in Cartesian space
// - A_AXIS, B_AXIS, and C_AXIS should be used for Steppers, corresponding to XYZ on Cartesians
// - X_HEAD, Y_HEAD, and Z_HEAD should be used for Steppers on Core kinematics
//
enum AxisEnum : uint8_t {
X_AXIS = 0, A_AXIS = 0,
Y_AXIS = 1, B_AXIS = 1,
Z_AXIS = 2, C_AXIS = 2,
E_AXIS = 3,
X_HEAD = 4, Y_HEAD = 5, Z_HEAD = 6,
E0_AXIS = 3,
E1_AXIS, E2_AXIS, E3_AXIS, E4_AXIS, E5_AXIS, E6_AXIS, E7_AXIS,
ALL_AXES = 0xFE, NO_AXIS = 0xFF
};
//
// Loop over XYZE axes
//
#define LOOP_XYZ(VAR) LOOP_S_LE_N(VAR, X_AXIS, Z_AXIS)
#define LOOP_XYZE(VAR) LOOP_S_LE_N(VAR, X_AXIS, E_AXIS)
#define LOOP_XYZE_N(VAR) LOOP_S_L_N(VAR, X_AXIS, XYZE_N)
#define LOOP_ABC(VAR) LOOP_S_LE_N(VAR, A_AXIS, C_AXIS)
#define LOOP_ABCE(VAR) LOOP_S_LE_N(VAR, A_AXIS, E_AXIS)
#define LOOP_ABCE_N(VAR) LOOP_S_L_N(VAR, A_AXIS, XYZE_N)
//
// Conditional type assignment magic. For example...
//
@@ -67,6 +39,85 @@ struct IF { typedef R type; };
template <class L, class R>
struct IF<true, L, R> { typedef L type; };
#define LINEAR_AXIS_GANG(V...) GANG_N(LINEAR_AXES, V)
#define LINEAR_AXIS_CODE(V...) CODE_N(LINEAR_AXES, V)
#define LINEAR_AXIS_LIST(V...) LIST_N(LINEAR_AXES, V)
#define LINEAR_AXIS_ARRAY(V...) { LINEAR_AXIS_LIST(V) }
#define LINEAR_AXIS_ARGS(T...) LINEAR_AXIS_LIST(T x, T y, T z, T i, T j, T k)
#define LINEAR_AXIS_ELEM(O) LINEAR_AXIS_LIST(O.x, O.y, O.z, O.i, O.j, O.k)
#define LINEAR_AXIS_DEFS(T,V) LINEAR_AXIS_LIST(T x=V, T y=V, T z=V, T i=V, T j=V, T k=V)
#define LOGICAL_AXIS_GANG(E,V...) LINEAR_AXIS_GANG(V) GANG_ITEM_E(E)
#define LOGICAL_AXIS_CODE(E,V...) LINEAR_AXIS_CODE(V) CODE_ITEM_E(E)
#define LOGICAL_AXIS_LIST(E,V...) LINEAR_AXIS_LIST(V) LIST_ITEM_E(E)
#define LOGICAL_AXIS_ARRAY(E,V...) { LOGICAL_AXIS_LIST(E,V) }
#define LOGICAL_AXIS_ARGS(T...) LOGICAL_AXIS_LIST(T e, T x, T y, T z, T i, T j, T k)
#define LOGICAL_AXIS_ELEM(O) LOGICAL_AXIS_LIST(O.e, O.x, O.y, O.z, O.i, O.j, O.k)
#define LOGICAL_AXIS_DECL(T,V) LOGICAL_AXIS_LIST(T e=V, T x=V, T y=V, T z=V, T i=V, T j=V, T k=V)
#if HAS_EXTRUDERS
#define LIST_ITEM_E(N) , N
#define CODE_ITEM_E(N) ; N
#define GANG_ITEM_E(N) N
#else
#define LIST_ITEM_E(N)
#define CODE_ITEM_E(N)
#define GANG_ITEM_E(N)
#endif
//
// Enumerated axis indices
//
// - X_AXIS, Y_AXIS, and Z_AXIS should be used for axes in Cartesian space
// - A_AXIS, B_AXIS, and C_AXIS should be used for Steppers, corresponding to XYZ on Cartesians
// - X_HEAD, Y_HEAD, and Z_HEAD should be used for Steppers on Core kinematics
//
enum AxisEnum : uint8_t {
// Linear axes may be controlled directly or indirectly
LINEAR_AXIS_LIST(X_AXIS, Y_AXIS, Z_AXIS, I_AXIS, J_AXIS, K_AXIS)
// Extruder axes may be considered distinctly
#define _EN_ITEM(N) , E##N##_AXIS
REPEAT(EXTRUDERS, _EN_ITEM)
#undef _EN_ITEM
// Core also keeps toolhead directions
#if EITHER(IS_CORE, MARKFORGED_XY)
, X_HEAD, Y_HEAD, Z_HEAD
#endif
// Distinct axes, including all E and Core
, NUM_AXIS_ENUMS
// Most of the time we refer only to the single E_AXIS
#if HAS_EXTRUDERS
, E_AXIS = E0_AXIS
#endif
// A, B, and C are for DELTA, SCARA, etc.
, A_AXIS = X_AXIS
#if LINEAR_AXES >= 2
, B_AXIS = Y_AXIS
#endif
#if LINEAR_AXES >= 3
, C_AXIS = Z_AXIS
#endif
// To refer to all or none
, ALL_AXES_ENUM = 0xFE, NO_AXIS_ENUM = 0xFF
};
typedef IF<(NUM_AXIS_ENUMS > 8), uint16_t, uint8_t>::type axis_bits_t;
//
// Loop over axes
//
#define LOOP_ABC(VAR) LOOP_S_LE_N(VAR, A_AXIS, C_AXIS)
#define LOOP_LINEAR_AXES(VAR) LOOP_S_L_N(VAR, X_AXIS, LINEAR_AXES)
#define LOOP_LOGICAL_AXES(VAR) LOOP_S_L_N(VAR, X_AXIS, LOGICAL_AXES)
#define LOOP_DISTINCT_AXES(VAR) LOOP_S_L_N(VAR, X_AXIS, DISTINCT_AXES)
//
// feedRate_t is just a humble float
//
@@ -187,7 +238,7 @@ void toNative(xyz_pos_t &raw);
void toNative(xyze_pos_t &raw);
//
// XY coordinates, counters, etc.
// Paired XY coordinates, counters, flags, etc.
//
template<typename T>
struct XYval {
@@ -196,18 +247,34 @@ struct XYval {
struct { T a, b; };
T pos[2];
};
FI void set(const T px) { x = px; }
FI void set(const T px, const T py) { x = px; y = py; }
FI void set(const T (&arr)[XY]) { x = arr[0]; y = arr[1]; }
FI void set(const T (&arr)[XYZ]) { x = arr[0]; y = arr[1]; }
FI void set(const T (&arr)[XYZE]) { x = arr[0]; y = arr[1]; }
#if XYZE_N > XYZE
FI void set(const T (&arr)[XYZE_N]) { x = arr[0]; y = arr[1]; }
#endif
// Set all to 0
FI void reset() { x = y = 0; }
// Setters taking struct types and arrays
FI void set(const T px) { x = px; }
#if HAS_Y_AXIS
FI void set(const T px, const T py) { x = px; y = py; }
FI void set(const T (&arr)[XY]) { x = arr[0]; y = arr[1]; }
#endif
#if LINEAR_AXES > XY
FI void set(const T (&arr)[LINEAR_AXES]) { x = arr[0]; y = arr[1]; }
#endif
#if LOGICAL_AXES > LINEAR_AXES
FI void set(const T (&arr)[LOGICAL_AXES]) { x = arr[0]; y = arr[1]; }
#if DISTINCT_AXES > LOGICAL_AXES
FI void set(const T (&arr)[DISTINCT_AXES]) { x = arr[0]; y = arr[1]; }
#endif
#endif
// Length reduced to one dimension
FI T magnitude() const { return (T)sqrtf(x*x + y*y); }
// Pointer to the data as a simple array
FI operator T* () { return pos; }
// If any element is true then it's true
FI operator bool() { return x || y; }
// Explicit copy and copies with conversion
FI XYval<T> copy() const { return *this; }
FI XYval<T> ABS() const { return { T(_ABS(x)), T(_ABS(y)) }; }
FI XYval<int16_t> asInt() { return { int16_t(x), int16_t(y) }; }
@@ -219,17 +286,27 @@ struct XYval {
FI XYval<float> asFloat() { return { static_cast<float>(x), static_cast<float>(y) }; }
FI XYval<float> asFloat() const { return { static_cast<float>(x), static_cast<float>(y) }; }
FI XYval<float> reciprocal() const { return { _RECIP(x), _RECIP(y) }; }
// Marlin workspace shifting is done with G92 and M206
FI XYval<float> asLogical() const { XYval<float> o = asFloat(); toLogical(o); return o; }
FI XYval<float> asNative() const { XYval<float> o = asFloat(); toNative(o); return o; }
// Cast to a type with more fields by making a new object
FI operator XYZval<T>() { return { x, y }; }
FI operator XYZval<T>() const { return { x, y }; }
FI operator XYZEval<T>() { return { x, y }; }
FI operator XYZEval<T>() const { return { x, y }; }
FI T& operator[](const int i) { return pos[i]; }
FI const T& operator[](const int i) const { return pos[i]; }
// Accessor via an AxisEnum (or any integer) [index]
FI T& operator[](const int n) { return pos[n]; }
FI const T& operator[](const int n) const { return pos[n]; }
// Assignment operator overrides do the expected thing
FI XYval<T>& operator= (const T v) { set(v, v ); return *this; }
FI XYval<T>& operator= (const XYZval<T> &rs) { set(rs.x, rs.y); return *this; }
FI XYval<T>& operator= (const XYZEval<T> &rs) { set(rs.x, rs.y); return *this; }
// Override other operators to get intuitive behaviors
FI XYval<T> operator+ (const XYval<T> &rs) const { XYval<T> ls = *this; ls.x += rs.x; ls.y += rs.y; return ls; }
FI XYval<T> operator+ (const XYval<T> &rs) { XYval<T> ls = *this; ls.x += rs.x; ls.y += rs.y; return ls; }
FI XYval<T> operator- (const XYval<T> &rs) const { XYval<T> ls = *this; ls.x -= rs.x; ls.y -= rs.y; return ls; }
@@ -266,6 +343,10 @@ struct XYval {
FI XYval<T> operator>>(const int &v) { XYval<T> ls = *this; _RS(ls.x); _RS(ls.y); return ls; }
FI XYval<T> operator<<(const int &v) const { XYval<T> ls = *this; _LS(ls.x); _LS(ls.y); return ls; }
FI XYval<T> operator<<(const int &v) { XYval<T> ls = *this; _LS(ls.x); _LS(ls.y); return ls; }
FI const XYval<T> operator-() const { XYval<T> o = *this; o.x = -x; o.y = -y; return o; }
FI XYval<T> operator-() { XYval<T> o = *this; o.x = -x; o.y = -y; return o; }
// Modifier operators
FI XYval<T>& operator+=(const XYval<T> &rs) { x += rs.x; y += rs.y; return *this; }
FI XYval<T>& operator-=(const XYval<T> &rs) { x -= rs.x; y -= rs.y; return *this; }
FI XYval<T>& operator*=(const XYval<T> &rs) { x *= rs.x; y *= rs.y; return *this; }
@@ -279,6 +360,8 @@ struct XYval {
FI XYval<T>& operator*=(const int &v) { x *= v; y *= v; return *this; }
FI XYval<T>& operator>>=(const int &v) { _RS(x); _RS(y); return *this; }
FI XYval<T>& operator<<=(const int &v) { _LS(x); _LS(y); return *this; }
// Exact comparisons. For floats a "NEAR" operation may be better.
FI bool operator==(const XYval<T> &rs) { return x == rs.x && y == rs.y; }
FI bool operator==(const XYZval<T> &rs) { return x == rs.x && y == rs.y; }
FI bool operator==(const XYZEval<T> &rs) { return x == rs.x && y == rs.y; }
@@ -291,224 +374,291 @@ struct XYval {
FI bool operator!=(const XYval<T> &rs) const { return !operator==(rs); }
FI bool operator!=(const XYZval<T> &rs) const { return !operator==(rs); }
FI bool operator!=(const XYZEval<T> &rs) const { return !operator==(rs); }
FI XYval<T> operator-() { XYval<T> o = *this; o.x = -x; o.y = -y; return o; }
FI const XYval<T> operator-() const { XYval<T> o = *this; o.x = -x; o.y = -y; return o; }
};
//
// XYZ coordinates, counters, etc.
// Linear Axes coordinates, counters, flags, etc.
//
template<typename T>
struct XYZval {
union {
struct { T x, y, z; };
struct { T a, b, c; };
T pos[3];
struct { T LINEAR_AXIS_ARGS(); };
struct { T LINEAR_AXIS_LIST(a, b, c, u, v, w); };
T pos[LINEAR_AXES];
};
// Set all to 0
FI void reset() { LINEAR_AXIS_GANG(x =, y =, z =, i =, j =, k =) 0; }
// Setters taking struct types and arrays
FI void set(const T px) { x = px; }
FI void set(const T px, const T py) { x = px; y = py; }
FI void set(const T px, const T py, const T pz) { x = px; y = py; z = pz; }
FI void set(const XYval<T> pxy, const T pz) { x = pxy.x; y = pxy.y; z = pz; }
FI void set(const XYval<T> pxy) { x = pxy.x; y = pxy.y; }
FI void set(const XYval<T> pxy, const T pz) { LINEAR_AXIS_CODE(x = pxy.x, y = pxy.y, z = pz, NOOP, NOOP, NOOP); }
FI void set(const T (&arr)[XY]) { x = arr[0]; y = arr[1]; }
FI void set(const T (&arr)[XYZ]) { x = arr[0]; y = arr[1]; z = arr[2]; }
FI void set(const T (&arr)[XYZE]) { x = arr[0]; y = arr[1]; z = arr[2]; }
#if XYZE_N > XYZE
FI void set(const T (&arr)[XYZE_N]) { x = arr[0]; y = arr[1]; z = arr[2]; }
#if HAS_Z_AXIS
FI void set(const T (&arr)[LINEAR_AXES]) { LINEAR_AXIS_CODE(x = arr[0], y = arr[1], z = arr[2], i = arr[3], j = arr[4], k = arr[5]); }
FI void set(LINEAR_AXIS_ARGS(const T)) { LINEAR_AXIS_CODE(a = x, b = y, c = z, u = i, v = j, w = k ); }
#endif
FI void reset() { x = y = z = 0; }
FI T magnitude() const { return (T)sqrtf(x*x + y*y + z*z); }
#if LOGICAL_AXES > LINEAR_AXES
FI void set(const T (&arr)[LOGICAL_AXES]) { LINEAR_AXIS_CODE(x = arr[0], y = arr[1], z = arr[2], i = arr[3], j = arr[4], k = arr[5]); }
FI void set(LOGICAL_AXIS_ARGS(const T)) { LINEAR_AXIS_CODE(a = x, b = y, c = z, u = i, v = j, w = k ); }
#if DISTINCT_AXES > LOGICAL_AXES
FI void set(const T (&arr)[DISTINCT_AXES]) { LINEAR_AXIS_CODE(x = arr[0], y = arr[1], z = arr[2], i = arr[3], j = arr[4], k = arr[5]); }
#endif
#endif
#if LINEAR_AXES >= 4
FI void set(const T px, const T py, const T pz) { x = px; y = py; z = pz; }
#endif
#if LINEAR_AXES >= 5
FI void set(const T px, const T py, const T pz, const T pi) { x = px; y = py; z = pz; i = pi; }
#endif
#if LINEAR_AXES >= 6
FI void set(const T px, const T py, const T pz, const T pi, const T pj) { x = px; y = py; z = pz; i = pi; j = pj; }
#endif
// Length reduced to one dimension
FI T magnitude() const { return (T)sqrtf(LINEAR_AXIS_GANG(x*x, + y*y, + z*z, + i*i, + j*j, + k*k)); }
// Pointer to the data as a simple array
FI operator T* () { return pos; }
FI operator bool() { return z || x || y; }
// If any element is true then it's true
FI operator bool() { return LINEAR_AXIS_GANG(x, || y, || z, || i, || j, || k); }
// Explicit copy and copies with conversion
FI XYZval<T> copy() const { XYZval<T> o = *this; return o; }
FI XYZval<T> ABS() const { return { T(_ABS(x)), T(_ABS(y)), T(_ABS(z)) }; }
FI XYZval<int16_t> asInt() { return { int16_t(x), int16_t(y), int16_t(z) }; }
FI XYZval<int16_t> asInt() const { return { int16_t(x), int16_t(y), int16_t(z) }; }
FI XYZval<int32_t> asLong() { return { int32_t(x), int32_t(y), int32_t(z) }; }
FI XYZval<int32_t> asLong() const { return { int32_t(x), int32_t(y), int32_t(z) }; }
FI XYZval<int32_t> ROUNDL() { return { int32_t(LROUND(x)), int32_t(LROUND(y)), int32_t(LROUND(z)) }; }
FI XYZval<int32_t> ROUNDL() const { return { int32_t(LROUND(x)), int32_t(LROUND(y)), int32_t(LROUND(z)) }; }
FI XYZval<float> asFloat() { return { static_cast<float>(x), static_cast<float>(y), static_cast<float>(z) }; }
FI XYZval<float> asFloat() const { return { static_cast<float>(x), static_cast<float>(y), static_cast<float>(z) }; }
FI XYZval<float> reciprocal() const { return { _RECIP(x), _RECIP(y), _RECIP(z) }; }
FI XYZval<T> ABS() const { return LINEAR_AXIS_ARRAY(T(_ABS(x)), T(_ABS(y)), T(_ABS(z)), T(_ABS(i)), T(_ABS(j)), T(_ABS(k))); }
FI XYZval<int16_t> asInt() { return LINEAR_AXIS_ARRAY(int16_t(x), int16_t(y), int16_t(z), int16_t(i), int16_t(j), int16_t(k)); }
FI XYZval<int16_t> asInt() const { return LINEAR_AXIS_ARRAY(int16_t(x), int16_t(y), int16_t(z), int16_t(i), int16_t(j), int16_t(k)); }
FI XYZval<int32_t> asLong() { return LINEAR_AXIS_ARRAY(int32_t(x), int32_t(y), int32_t(z), int32_t(i), int32_t(j), int32_t(k)); }
FI XYZval<int32_t> asLong() const { return LINEAR_AXIS_ARRAY(int32_t(x), int32_t(y), int32_t(z), int32_t(i), int32_t(j), int32_t(k)); }
FI XYZval<int32_t> ROUNDL() { return LINEAR_AXIS_ARRAY(int32_t(LROUND(x)), int32_t(LROUND(y)), int32_t(LROUND(z)), int32_t(LROUND(i)), int32_t(LROUND(j)), int32_t(LROUND(k))); }
FI XYZval<int32_t> ROUNDL() const { return LINEAR_AXIS_ARRAY(int32_t(LROUND(x)), int32_t(LROUND(y)), int32_t(LROUND(z)), int32_t(LROUND(i)), int32_t(LROUND(j)), int32_t(LROUND(k))); }
FI XYZval<float> asFloat() { return LINEAR_AXIS_ARRAY(static_cast<float>(x), static_cast<float>(y), static_cast<float>(z), static_cast<float>(i), static_cast<float>(j), static_cast<float>(k)); }
FI XYZval<float> asFloat() const { return LINEAR_AXIS_ARRAY(static_cast<float>(x), static_cast<float>(y), static_cast<float>(z), static_cast<float>(i), static_cast<float>(j), static_cast<float>(k)); }
FI XYZval<float> reciprocal() const { return LINEAR_AXIS_ARRAY(_RECIP(x), _RECIP(y), _RECIP(z), _RECIP(i), _RECIP(j), _RECIP(k)); }
// Marlin workspace shifting is done with G92 and M206
FI XYZval<float> asLogical() const { XYZval<float> o = asFloat(); toLogical(o); return o; }
FI XYZval<float> asNative() const { XYZval<float> o = asFloat(); toNative(o); return o; }
// In-place cast to types having fewer fields
FI operator XYval<T>&() { return *(XYval<T>*)this; }
FI operator const XYval<T>&() const { return *(const XYval<T>*)this; }
FI operator XYZEval<T>() const { return { x, y, z }; }
FI T& operator[](const int i) { return pos[i]; }
FI const T& operator[](const int i) const { return pos[i]; }
FI XYZval<T>& operator= (const T v) { set(v, v, v ); return *this; }
// Cast to a type with more fields by making a new object
FI operator XYZEval<T>() const { return LINEAR_AXIS_ARRAY(x, y, z, i, j, k); }
// Accessor via an AxisEnum (or any integer) [index]
FI T& operator[](const int n) { return pos[n]; }
FI const T& operator[](const int n) const { return pos[n]; }
// Assignment operator overrides do the expected thing
FI XYZval<T>& operator= (const T v) { set(ARRAY_N_1(LINEAR_AXES, v)); return *this; }
FI XYZval<T>& operator= (const XYval<T> &rs) { set(rs.x, rs.y ); return *this; }
FI XYZval<T>& operator= (const XYZEval<T> &rs) { set(rs.x, rs.y, rs.z); return *this; }
FI XYZval<T> operator+ (const XYval<T> &rs) const { XYZval<T> ls = *this; ls.x += rs.x; ls.y += rs.y; return ls; }
FI XYZval<T> operator+ (const XYval<T> &rs) { XYZval<T> ls = *this; ls.x += rs.x; ls.y += rs.y; return ls; }
FI XYZval<T> operator- (const XYval<T> &rs) const { XYZval<T> ls = *this; ls.x -= rs.x; ls.y -= rs.y; return ls; }
FI XYZval<T> operator- (const XYval<T> &rs) { XYZval<T> ls = *this; ls.x -= rs.x; ls.y -= rs.y; return ls; }
FI XYZval<T> operator* (const XYval<T> &rs) const { XYZval<T> ls = *this; ls.x *= rs.x; ls.y *= rs.y; return ls; }
FI XYZval<T> operator* (const XYval<T> &rs) { XYZval<T> ls = *this; ls.x *= rs.x; ls.y *= rs.y; return ls; }
FI XYZval<T> operator/ (const XYval<T> &rs) const { XYZval<T> ls = *this; ls.x /= rs.x; ls.y /= rs.y; return ls; }
FI XYZval<T> operator/ (const XYval<T> &rs) { XYZval<T> ls = *this; ls.x /= rs.x; ls.y /= rs.y; return ls; }
FI XYZval<T> operator+ (const XYZval<T> &rs) const { XYZval<T> ls = *this; ls.x += rs.x; ls.y += rs.y; ls.z += rs.z; return ls; }
FI XYZval<T> operator+ (const XYZval<T> &rs) { XYZval<T> ls = *this; ls.x += rs.x; ls.y += rs.y; ls.z += rs.z; return ls; }
FI XYZval<T> operator- (const XYZval<T> &rs) const { XYZval<T> ls = *this; ls.x -= rs.x; ls.y -= rs.y; ls.z -= rs.z; return ls; }
FI XYZval<T> operator- (const XYZval<T> &rs) { XYZval<T> ls = *this; ls.x -= rs.x; ls.y -= rs.y; ls.z -= rs.z; return ls; }
FI XYZval<T> operator* (const XYZval<T> &rs) const { XYZval<T> ls = *this; ls.x *= rs.x; ls.y *= rs.y; ls.z *= rs.z; return ls; }
FI XYZval<T> operator* (const XYZval<T> &rs) { XYZval<T> ls = *this; ls.x *= rs.x; ls.y *= rs.y; ls.z *= rs.z; return ls; }
FI XYZval<T> operator/ (const XYZval<T> &rs) const { XYZval<T> ls = *this; ls.x /= rs.x; ls.y /= rs.y; ls.z /= rs.z; return ls; }
FI XYZval<T> operator/ (const XYZval<T> &rs) { XYZval<T> ls = *this; ls.x /= rs.x; ls.y /= rs.y; ls.z /= rs.z; return ls; }
FI XYZval<T> operator+ (const XYZEval<T> &rs) const { XYZval<T> ls = *this; ls.x += rs.x; ls.y += rs.y; ls.z += rs.z; return ls; }
FI XYZval<T> operator+ (const XYZEval<T> &rs) { XYZval<T> ls = *this; ls.x += rs.x; ls.y += rs.y; ls.z += rs.z; return ls; }
FI XYZval<T> operator- (const XYZEval<T> &rs) const { XYZval<T> ls = *this; ls.x -= rs.x; ls.y -= rs.y; ls.z -= rs.z; return ls; }
FI XYZval<T> operator- (const XYZEval<T> &rs) { XYZval<T> ls = *this; ls.x -= rs.x; ls.y -= rs.y; ls.z -= rs.z; return ls; }
FI XYZval<T> operator* (const XYZEval<T> &rs) const { XYZval<T> ls = *this; ls.x *= rs.x; ls.y *= rs.y; ls.z *= rs.z; return ls; }
FI XYZval<T> operator* (const XYZEval<T> &rs) { XYZval<T> ls = *this; ls.x *= rs.x; ls.y *= rs.y; ls.z *= rs.z; return ls; }
FI XYZval<T> operator/ (const XYZEval<T> &rs) const { XYZval<T> ls = *this; ls.x /= rs.x; ls.y /= rs.y; ls.z /= rs.z; return ls; }
FI XYZval<T> operator/ (const XYZEval<T> &rs) { XYZval<T> ls = *this; ls.x /= rs.x; ls.y /= rs.y; ls.z /= rs.z; return ls; }
FI XYZval<T> operator* (const float &v) const { XYZval<T> ls = *this; ls.x *= v; ls.y *= v; ls.z *= v; return ls; }
FI XYZval<T> operator* (const float &v) { XYZval<T> ls = *this; ls.x *= v; ls.y *= v; ls.z *= v; return ls; }
FI XYZval<T> operator* (const int &v) const { XYZval<T> ls = *this; ls.x *= v; ls.y *= v; ls.z *= v; return ls; }
FI XYZval<T> operator* (const int &v) { XYZval<T> ls = *this; ls.x *= v; ls.y *= v; ls.z *= v; return ls; }
FI XYZval<T> operator/ (const float &v) const { XYZval<T> ls = *this; ls.x /= v; ls.y /= v; ls.z /= v; return ls; }
FI XYZval<T> operator/ (const float &v) { XYZval<T> ls = *this; ls.x /= v; ls.y /= v; ls.z /= v; return ls; }
FI XYZval<T> operator/ (const int &v) const { XYZval<T> ls = *this; ls.x /= v; ls.y /= v; ls.z /= v; return ls; }
FI XYZval<T> operator/ (const int &v) { XYZval<T> ls = *this; ls.x /= v; ls.y /= v; ls.z /= v; return ls; }
FI XYZval<T> operator>>(const int &v) const { XYZval<T> ls = *this; _RS(ls.x); _RS(ls.y); _RS(ls.z); return ls; }
FI XYZval<T> operator>>(const int &v) { XYZval<T> ls = *this; _RS(ls.x); _RS(ls.y); _RS(ls.z); return ls; }
FI XYZval<T> operator<<(const int &v) const { XYZval<T> ls = *this; _LS(ls.x); _LS(ls.y); _LS(ls.z); return ls; }
FI XYZval<T> operator<<(const int &v) { XYZval<T> ls = *this; _LS(ls.x); _LS(ls.y); _LS(ls.z); return ls; }
FI XYZval<T>& operator+=(const XYval<T> &rs) { x += rs.x; y += rs.y; return *this; }
FI XYZval<T>& operator-=(const XYval<T> &rs) { x -= rs.x; y -= rs.y; return *this; }
FI XYZval<T>& operator*=(const XYval<T> &rs) { x *= rs.x; y *= rs.y; return *this; }
FI XYZval<T>& operator/=(const XYval<T> &rs) { x /= rs.x; y /= rs.y; return *this; }
FI XYZval<T>& operator+=(const XYZval<T> &rs) { x += rs.x; y += rs.y; z += rs.z; return *this; }
FI XYZval<T>& operator-=(const XYZval<T> &rs) { x -= rs.x; y -= rs.y; z -= rs.z; return *this; }
FI XYZval<T>& operator*=(const XYZval<T> &rs) { x *= rs.x; y *= rs.y; z *= rs.z; return *this; }
FI XYZval<T>& operator/=(const XYZval<T> &rs) { x /= rs.x; y /= rs.y; z /= rs.z; return *this; }
FI XYZval<T>& operator+=(const XYZEval<T> &rs) { x += rs.x; y += rs.y; z += rs.z; return *this; }
FI XYZval<T>& operator-=(const XYZEval<T> &rs) { x -= rs.x; y -= rs.y; z -= rs.z; return *this; }
FI XYZval<T>& operator*=(const XYZEval<T> &rs) { x *= rs.x; y *= rs.y; z *= rs.z; return *this; }
FI XYZval<T>& operator/=(const XYZEval<T> &rs) { x /= rs.x; y /= rs.y; z /= rs.z; return *this; }
FI XYZval<T>& operator*=(const float &v) { x *= v; y *= v; z *= v; return *this; }
FI XYZval<T>& operator*=(const int &v) { x *= v; y *= v; z *= v; return *this; }
FI XYZval<T>& operator>>=(const int &v) { _RS(x); _RS(y); _RS(z); return *this; }
FI XYZval<T>& operator<<=(const int &v) { _LS(x); _LS(y); _LS(z); return *this; }
FI bool operator==(const XYZEval<T> &rs) { return x == rs.x && y == rs.y && z == rs.z; }
FI XYZval<T>& operator= (const XYZEval<T> &rs) { set(LINEAR_AXIS_ELEM(rs)); return *this; }
// Override other operators to get intuitive behaviors
FI XYZval<T> operator+ (const XYval<T> &rs) const { XYZval<T> ls = *this; LINEAR_AXIS_CODE(ls.x += rs.x, ls.y += rs.y, NOOP , NOOP , NOOP , NOOP ); return ls; }
FI XYZval<T> operator+ (const XYval<T> &rs) { XYZval<T> ls = *this; LINEAR_AXIS_CODE(ls.x += rs.x, ls.y += rs.y, NOOP , NOOP , NOOP , NOOP ); return ls; }
FI XYZval<T> operator- (const XYval<T> &rs) const { XYZval<T> ls = *this; LINEAR_AXIS_CODE(ls.x -= rs.x, ls.y -= rs.y, NOOP , NOOP , NOOP , NOOP ); return ls; }
FI XYZval<T> operator- (const XYval<T> &rs) { XYZval<T> ls = *this; LINEAR_AXIS_CODE(ls.x -= rs.x, ls.y -= rs.y, NOOP , NOOP , NOOP , NOOP ); return ls; }
FI XYZval<T> operator* (const XYval<T> &rs) const { XYZval<T> ls = *this; LINEAR_AXIS_CODE(ls.x *= rs.x, ls.y *= rs.y, NOOP , NOOP , NOOP , NOOP ); return ls; }
FI XYZval<T> operator* (const XYval<T> &rs) { XYZval<T> ls = *this; LINEAR_AXIS_CODE(ls.x *= rs.x, ls.y *= rs.y, NOOP , NOOP , NOOP , NOOP ); return ls; }
FI XYZval<T> operator/ (const XYval<T> &rs) const { XYZval<T> ls = *this; LINEAR_AXIS_CODE(ls.x /= rs.x, ls.y /= rs.y, NOOP , NOOP , NOOP , NOOP ); return ls; }
FI XYZval<T> operator/ (const XYval<T> &rs) { XYZval<T> ls = *this; LINEAR_AXIS_CODE(ls.x /= rs.x, ls.y /= rs.y, NOOP , NOOP , NOOP , NOOP ); return ls; }
FI XYZval<T> operator+ (const XYZval<T> &rs) const { XYZval<T> ls = *this; LINEAR_AXIS_CODE(ls.x += rs.x, ls.y += rs.y, ls.z += rs.z, ls.i += rs.i, ls.j += rs.j, ls.k += rs.k); return ls; }
FI XYZval<T> operator+ (const XYZval<T> &rs) { XYZval<T> ls = *this; LINEAR_AXIS_CODE(ls.x += rs.x, ls.y += rs.y, ls.z += rs.z, ls.i += rs.i, ls.j += rs.j, ls.k += rs.k); return ls; }
FI XYZval<T> operator- (const XYZval<T> &rs) const { XYZval<T> ls = *this; LINEAR_AXIS_CODE(ls.x -= rs.x, ls.y -= rs.y, ls.z -= rs.z, ls.i -= rs.i, ls.j -= rs.j, ls.k -= rs.k); return ls; }
FI XYZval<T> operator- (const XYZval<T> &rs) { XYZval<T> ls = *this; LINEAR_AXIS_CODE(ls.x -= rs.x, ls.y -= rs.y, ls.z -= rs.z, ls.i -= rs.i, ls.j -= rs.j, ls.k -= rs.k); return ls; }
FI XYZval<T> operator* (const XYZval<T> &rs) const { XYZval<T> ls = *this; LINEAR_AXIS_CODE(ls.x *= rs.x, ls.y *= rs.y, ls.z *= rs.z, ls.i *= rs.i, ls.j *= rs.j, ls.k *= rs.k); return ls; }
FI XYZval<T> operator* (const XYZval<T> &rs) { XYZval<T> ls = *this; LINEAR_AXIS_CODE(ls.x *= rs.x, ls.y *= rs.y, ls.z *= rs.z, ls.i *= rs.i, ls.j *= rs.j, ls.k *= rs.k); return ls; }
FI XYZval<T> operator/ (const XYZval<T> &rs) const { XYZval<T> ls = *this; LINEAR_AXIS_CODE(ls.x /= rs.x, ls.y /= rs.y, ls.z /= rs.z, ls.i /= rs.i, ls.j /= rs.j, ls.k /= rs.k); return ls; }
FI XYZval<T> operator/ (const XYZval<T> &rs) { XYZval<T> ls = *this; LINEAR_AXIS_CODE(ls.x /= rs.x, ls.y /= rs.y, ls.z /= rs.z, ls.i /= rs.i, ls.j /= rs.j, ls.k /= rs.k); return ls; }
FI XYZval<T> operator+ (const XYZEval<T> &rs) const { XYZval<T> ls = *this; LINEAR_AXIS_CODE(ls.x += rs.x, ls.y += rs.y, ls.z += rs.z, ls.i += rs.i, ls.j += rs.j, ls.k += rs.k); return ls; }
FI XYZval<T> operator+ (const XYZEval<T> &rs) { XYZval<T> ls = *this; LINEAR_AXIS_CODE(ls.x += rs.x, ls.y += rs.y, ls.z += rs.z, ls.i += rs.i, ls.j += rs.j, ls.k += rs.k); return ls; }
FI XYZval<T> operator- (const XYZEval<T> &rs) const { XYZval<T> ls = *this; LINEAR_AXIS_CODE(ls.x -= rs.x, ls.y -= rs.y, ls.z -= rs.z, ls.i -= rs.i, ls.j -= rs.j, ls.k -= rs.k); return ls; }
FI XYZval<T> operator- (const XYZEval<T> &rs) { XYZval<T> ls = *this; LINEAR_AXIS_CODE(ls.x -= rs.x, ls.y -= rs.y, ls.z -= rs.z, ls.i -= rs.i, ls.j -= rs.j, ls.k -= rs.k); return ls; }
FI XYZval<T> operator* (const XYZEval<T> &rs) const { XYZval<T> ls = *this; LINEAR_AXIS_CODE(ls.x *= rs.x, ls.y *= rs.y, ls.z *= rs.z, ls.i *= rs.i, ls.j *= rs.j, ls.k *= rs.k); return ls; }
FI XYZval<T> operator* (const XYZEval<T> &rs) { XYZval<T> ls = *this; LINEAR_AXIS_CODE(ls.x *= rs.x, ls.y *= rs.y, ls.z *= rs.z, ls.i *= rs.i, ls.j *= rs.j, ls.k *= rs.k); return ls; }
FI XYZval<T> operator/ (const XYZEval<T> &rs) const { XYZval<T> ls = *this; LINEAR_AXIS_CODE(ls.x /= rs.x, ls.y /= rs.y, ls.z /= rs.z, ls.i /= rs.i, ls.j /= rs.j, ls.k /= rs.k); return ls; }
FI XYZval<T> operator/ (const XYZEval<T> &rs) { XYZval<T> ls = *this; LINEAR_AXIS_CODE(ls.x /= rs.x, ls.y /= rs.y, ls.z /= rs.z, ls.i /= rs.i, ls.j /= rs.j, ls.k /= rs.k); return ls; }
FI XYZval<T> operator* (const float &v) const { XYZval<T> ls = *this; LINEAR_AXIS_CODE(ls.x *= v, ls.y *= v, ls.z *= v, ls.i *= v, ls.j *= v, ls.k *= v ); return ls; }
FI XYZval<T> operator* (const float &v) { XYZval<T> ls = *this; LINEAR_AXIS_CODE(ls.x *= v, ls.y *= v, ls.z *= v, ls.i *= v, ls.j *= v, ls.k *= v ); return ls; }
FI XYZval<T> operator* (const int &v) const { XYZval<T> ls = *this; LINEAR_AXIS_CODE(ls.x *= v, ls.y *= v, ls.z *= v, ls.i *= v, ls.j *= v, ls.k *= v ); return ls; }
FI XYZval<T> operator* (const int &v) { XYZval<T> ls = *this; LINEAR_AXIS_CODE(ls.x *= v, ls.y *= v, ls.z *= v, ls.i *= v, ls.j *= v, ls.k *= v ); return ls; }
FI XYZval<T> operator/ (const float &v) const { XYZval<T> ls = *this; LINEAR_AXIS_CODE(ls.x /= v, ls.y /= v, ls.z /= v, ls.i /= v, ls.j /= v, ls.k /= v ); return ls; }
FI XYZval<T> operator/ (const float &v) { XYZval<T> ls = *this; LINEAR_AXIS_CODE(ls.x /= v, ls.y /= v, ls.z /= v, ls.i /= v, ls.j /= v, ls.k /= v ); return ls; }
FI XYZval<T> operator/ (const int &v) const { XYZval<T> ls = *this; LINEAR_AXIS_CODE(ls.x /= v, ls.y /= v, ls.z /= v, ls.i /= v, ls.j /= v, ls.k /= v ); return ls; }
FI XYZval<T> operator/ (const int &v) { XYZval<T> ls = *this; LINEAR_AXIS_CODE(ls.x /= v, ls.y /= v, ls.z /= v, ls.i /= v, ls.j /= v, ls.k /= v ); return ls; }
FI XYZval<T> operator>>(const int &v) const { XYZval<T> ls = *this; LINEAR_AXIS_CODE(_RS(ls.x), _RS(ls.y), _RS(ls.z), _RS(ls.i), _RS(ls.j), _RS(ls.k) ); return ls; }
FI XYZval<T> operator>>(const int &v) { XYZval<T> ls = *this; LINEAR_AXIS_CODE(_RS(ls.x), _RS(ls.y), _RS(ls.z), _RS(ls.i), _RS(ls.j), _RS(ls.k) ); return ls; }
FI XYZval<T> operator<<(const int &v) const { XYZval<T> ls = *this; LINEAR_AXIS_CODE(_LS(ls.x), _LS(ls.y), _LS(ls.z), _LS(ls.i), _LS(ls.j), _LS(ls.k) ); return ls; }
FI XYZval<T> operator<<(const int &v) { XYZval<T> ls = *this; LINEAR_AXIS_CODE(_LS(ls.x), _LS(ls.y), _LS(ls.z), _LS(ls.i), _LS(ls.j), _LS(ls.k) ); return ls; }
FI const XYZval<T> operator-() const { XYZval<T> o = *this; LINEAR_AXIS_CODE(o.x = -x, o.y = -y, o.z = -z, o.i = -i, o.j = -j, o.k = -k); return o; }
FI XYZval<T> operator-() { XYZval<T> o = *this; LINEAR_AXIS_CODE(o.x = -x, o.y = -y, o.z = -z, o.i = -i, o.j = -j, o.k = -k); return o; }
// Modifier operators
FI XYZval<T>& operator+=(const XYval<T> &rs) { LINEAR_AXIS_CODE(x += rs.x, y += rs.y, NOOP, NOOP, NOOP, NOOP ); return *this; }
FI XYZval<T>& operator-=(const XYval<T> &rs) { LINEAR_AXIS_CODE(x -= rs.x, y -= rs.y, NOOP, NOOP, NOOP, NOOP ); return *this; }
FI XYZval<T>& operator*=(const XYval<T> &rs) { LINEAR_AXIS_CODE(x *= rs.x, y *= rs.y, NOOP, NOOP, NOOP, NOOP ); return *this; }
FI XYZval<T>& operator/=(const XYval<T> &rs) { LINEAR_AXIS_CODE(x /= rs.x, y /= rs.y, NOOP, NOOP, NOOP, NOOP ); return *this; }
FI XYZval<T>& operator+=(const XYZval<T> &rs) { LINEAR_AXIS_CODE(x += rs.x, y += rs.y, z += rs.z, i += rs.i, j += rs.j, k += rs.k); return *this; }
FI XYZval<T>& operator-=(const XYZval<T> &rs) { LINEAR_AXIS_CODE(x -= rs.x, y -= rs.y, z -= rs.z, i -= rs.i, j -= rs.j, k -= rs.k); return *this; }
FI XYZval<T>& operator*=(const XYZval<T> &rs) { LINEAR_AXIS_CODE(x *= rs.x, y *= rs.y, z *= rs.z, i *= rs.i, j *= rs.j, k *= rs.k); return *this; }
FI XYZval<T>& operator/=(const XYZval<T> &rs) { LINEAR_AXIS_CODE(x /= rs.x, y /= rs.y, z /= rs.z, i /= rs.i, j /= rs.j, k /= rs.k); return *this; }
FI XYZval<T>& operator+=(const XYZEval<T> &rs) { LINEAR_AXIS_CODE(x += rs.x, y += rs.y, z += rs.z, i += rs.i, j += rs.j, k += rs.k); return *this; }
FI XYZval<T>& operator-=(const XYZEval<T> &rs) { LINEAR_AXIS_CODE(x -= rs.x, y -= rs.y, z -= rs.z, i -= rs.i, j -= rs.j, k -= rs.k); return *this; }
FI XYZval<T>& operator*=(const XYZEval<T> &rs) { LINEAR_AXIS_CODE(x *= rs.x, y *= rs.y, z *= rs.z, i *= rs.i, j *= rs.j, k *= rs.k); return *this; }
FI XYZval<T>& operator/=(const XYZEval<T> &rs) { LINEAR_AXIS_CODE(x /= rs.x, y /= rs.y, z /= rs.z, i /= rs.i, j /= rs.j, k /= rs.k); return *this; }
FI XYZval<T>& operator*=(const float &v) { LINEAR_AXIS_CODE(x *= v, y *= v, z *= v, i *= v, j *= v, k *= v); return *this; }
FI XYZval<T>& operator*=(const int &v) { LINEAR_AXIS_CODE(x *= v, y *= v, z *= v, i *= v, j *= v, k *= v); return *this; }
FI XYZval<T>& operator>>=(const int &v) { LINEAR_AXIS_CODE(_RS(x), _RS(y), _RS(z), _RS(i), _RS(j), _RS(k)); return *this; }
FI XYZval<T>& operator<<=(const int &v) { LINEAR_AXIS_CODE(_LS(x), _LS(y), _LS(z), _LS(i), _LS(j), _LS(k)); return *this; }
// Exact comparisons. For floats a "NEAR" operation may be better.
FI bool operator==(const XYZEval<T> &rs) { return true LINEAR_AXIS_GANG(&& x == rs.x, && y == rs.y, && z == rs.z, && i == rs.i, && j == rs.j, && k == rs.k); }
FI bool operator==(const XYZEval<T> &rs) const { return true LINEAR_AXIS_GANG(&& x == rs.x, && y == rs.y, && z == rs.z, && i == rs.i, && j == rs.j, && k == rs.k); }
FI bool operator!=(const XYZEval<T> &rs) { return !operator==(rs); }
FI bool operator==(const XYZEval<T> &rs) const { return x == rs.x && y == rs.y && z == rs.z; }
FI bool operator!=(const XYZEval<T> &rs) const { return !operator==(rs); }
FI XYZval<T> operator-() { XYZval<T> o = *this; o.x = -x; o.y = -y; o.z = -z; return o; }
FI const XYZval<T> operator-() const { XYZval<T> o = *this; o.x = -x; o.y = -y; o.z = -z; return o; }
};
//
// XYZE coordinates, counters, etc.
// Logical Axes coordinates, counters, etc.
//
template<typename T>
struct XYZEval {
union {
struct{ T x, y, z, e; };
struct{ T a, b, c; };
T pos[4];
struct { T LOGICAL_AXIS_ARGS(); };
struct { T LOGICAL_AXIS_LIST(_e, a, b, c, u, v, w); };
T pos[LOGICAL_AXES];
};
FI void reset() { x = y = z = e = 0; }
FI T magnitude() const { return (T)sqrtf(x*x + y*y + z*z + e*e); }
FI operator T* () { return pos; }
FI operator bool() { return e || z || x || y; }
FI void set(const T px) { x = px; }
FI void set(const T px, const T py) { x = px; y = py; }
FI void set(const T px, const T py, const T pz) { x = px; y = py; z = pz; }
FI void set(const T px, const T py, const T pz, const T pe) { x = px; y = py; z = pz; e = pe; }
FI void set(const XYval<T> pxy) { x = pxy.x; y = pxy.y; }
FI void set(const XYval<T> pxy, const T pz) { x = pxy.x; y = pxy.y; z = pz; }
FI void set(const XYZval<T> pxyz) { x = pxyz.x; y = pxyz.y; z = pxyz.z; }
FI void set(const XYval<T> pxy, const T pz, const T pe) { x = pxy.x; y = pxy.y; z = pz; e = pe; }
FI void set(const XYval<T> pxy, const XYval<T> pze) { x = pxy.x; y = pxy.y; z = pze.z; e = pze.e; }
FI void set(const XYZval<T> pxyz, const T pe) { x = pxyz.x; y = pxyz.y; z = pxyz.z; e = pe; }
FI void set(const T (&arr)[XY]) { x = arr[0]; y = arr[1]; }
FI void set(const T (&arr)[XYZ]) { x = arr[0]; y = arr[1]; z = arr[2]; }
FI void set(const T (&arr)[XYZE]) { x = arr[0]; y = arr[1]; z = arr[2]; e = arr[3]; }
#if XYZE_N > XYZE
FI void set(const T (&arr)[XYZE_N]) { x = arr[0]; y = arr[1]; z = arr[2]; e = arr[3]; }
// Reset all to 0
FI void reset() { LOGICAL_AXIS_GANG(e =, x =, y =, z =, i =, j =, k =) 0; }
// Setters taking struct types and arrays
FI void set(const T px) { x = px; }
FI void set(const T px, const T py) { x = px; y = py; }
FI void set(const XYval<T> pxy) { x = pxy.x; y = pxy.y; }
FI void set(const XYZval<T> pxyz) { set(LINEAR_AXIS_ELEM(pxyz)); }
#if HAS_Z_AXIS
FI void set(LINEAR_AXIS_ARGS(const T)) { LINEAR_AXIS_CODE(a = x, b = y, c = z, u = i, v = j, w = k); }
#endif
FI XYZEval<T> copy() const { return *this; }
FI XYZEval<T> ABS() const { return { T(_ABS(x)), T(_ABS(y)), T(_ABS(z)), T(_ABS(e)) }; }
FI XYZEval<int16_t> asInt() { return { int16_t(x), int16_t(y), int16_t(z), int16_t(e) }; }
FI XYZEval<int16_t> asInt() const { return { int16_t(x), int16_t(y), int16_t(z), int16_t(e) }; }
FI XYZEval<int32_t> asLong() { return { int32_t(x), int32_t(y), int32_t(z), int32_t(e) }; }
FI XYZEval<int32_t> asLong() const { return { int32_t(x), int32_t(y), int32_t(z), int32_t(e) }; }
FI XYZEval<int32_t> ROUNDL() { return { int32_t(LROUND(x)), int32_t(LROUND(y)), int32_t(LROUND(z)), int32_t(LROUND(e)) }; }
FI XYZEval<int32_t> ROUNDL() const { return { int32_t(LROUND(x)), int32_t(LROUND(y)), int32_t(LROUND(z)), int32_t(LROUND(e)) }; }
FI XYZEval<float> asFloat() { return { static_cast<float>(x), static_cast<float>(y), static_cast<float>(z), static_cast<float>(e) }; }
FI XYZEval<float> asFloat() const { return { static_cast<float>(x), static_cast<float>(y), static_cast<float>(z), static_cast<float>(e) }; }
FI XYZEval<float> reciprocal() const { return { _RECIP(x), _RECIP(y), _RECIP(z), _RECIP(e) }; }
FI XYZEval<float> asLogical() const { XYZEval<float> o = asFloat(); toLogical(o); return o; }
FI XYZEval<float> asNative() const { XYZEval<float> o = asFloat(); toNative(o); return o; }
FI operator XYval<T>&() { return *(XYval<T>*)this; }
FI operator const XYval<T>&() const { return *(const XYval<T>*)this; }
FI operator XYZval<T>&() { return *(XYZval<T>*)this; }
FI operator const XYZval<T>&() const { return *(const XYZval<T>*)this; }
FI T& operator[](const int i) { return pos[i]; }
FI const T& operator[](const int i) const { return pos[i]; }
FI XYZEval<T>& operator= (const T v) { set(v, v, v, v); return *this; }
FI XYZEval<T>& operator= (const XYval<T> &rs) { set(rs.x, rs.y); return *this; }
FI XYZEval<T>& operator= (const XYZval<T> &rs) { set(rs.x, rs.y, rs.z); return *this; }
FI XYZEval<T> operator+ (const XYval<T> &rs) const { XYZEval<T> ls = *this; ls.x += rs.x; ls.y += rs.y; return ls; }
FI XYZEval<T> operator+ (const XYval<T> &rs) { XYZEval<T> ls = *this; ls.x += rs.x; ls.y += rs.y; return ls; }
FI XYZEval<T> operator- (const XYval<T> &rs) const { XYZEval<T> ls = *this; ls.x -= rs.x; ls.y -= rs.y; return ls; }
FI XYZEval<T> operator- (const XYval<T> &rs) { XYZEval<T> ls = *this; ls.x -= rs.x; ls.y -= rs.y; return ls; }
FI XYZEval<T> operator* (const XYval<T> &rs) const { XYZEval<T> ls = *this; ls.x *= rs.x; ls.y *= rs.y; return ls; }
FI XYZEval<T> operator* (const XYval<T> &rs) { XYZEval<T> ls = *this; ls.x *= rs.x; ls.y *= rs.y; return ls; }
FI XYZEval<T> operator/ (const XYval<T> &rs) const { XYZEval<T> ls = *this; ls.x /= rs.x; ls.y /= rs.y; return ls; }
FI XYZEval<T> operator/ (const XYval<T> &rs) { XYZEval<T> ls = *this; ls.x /= rs.x; ls.y /= rs.y; return ls; }
FI XYZEval<T> operator+ (const XYZval<T> &rs) const { XYZEval<T> ls = *this; ls.x += rs.x; ls.y += rs.y; ls.z += rs.z; return ls; }
FI XYZEval<T> operator+ (const XYZval<T> &rs) { XYZEval<T> ls = *this; ls.x += rs.x; ls.y += rs.y; ls.z += rs.z; return ls; }
FI XYZEval<T> operator- (const XYZval<T> &rs) const { XYZEval<T> ls = *this; ls.x -= rs.x; ls.y -= rs.y; ls.z -= rs.z; return ls; }
FI XYZEval<T> operator- (const XYZval<T> &rs) { XYZEval<T> ls = *this; ls.x -= rs.x; ls.y -= rs.y; ls.z -= rs.z; return ls; }
FI XYZEval<T> operator* (const XYZval<T> &rs) const { XYZEval<T> ls = *this; ls.x *= rs.x; ls.y *= rs.y; ls.z *= rs.z; return ls; }
FI XYZEval<T> operator* (const XYZval<T> &rs) { XYZEval<T> ls = *this; ls.x *= rs.x; ls.y *= rs.y; ls.z *= rs.z; return ls; }
FI XYZEval<T> operator/ (const XYZval<T> &rs) const { XYZEval<T> ls = *this; ls.x /= rs.x; ls.y /= rs.y; ls.z /= rs.z; return ls; }
FI XYZEval<T> operator/ (const XYZval<T> &rs) { XYZEval<T> ls = *this; ls.x /= rs.x; ls.y /= rs.y; ls.z /= rs.z; return ls; }
FI XYZEval<T> operator+ (const XYZEval<T> &rs) const { XYZEval<T> ls = *this; ls.x += rs.x; ls.y += rs.y; ls.z += rs.z; ls.e += rs.e; return ls; }
FI XYZEval<T> operator+ (const XYZEval<T> &rs) { XYZEval<T> ls = *this; ls.x += rs.x; ls.y += rs.y; ls.z += rs.z; ls.e += rs.e; return ls; }
FI XYZEval<T> operator- (const XYZEval<T> &rs) const { XYZEval<T> ls = *this; ls.x -= rs.x; ls.y -= rs.y; ls.z -= rs.z; ls.e -= rs.e; return ls; }
FI XYZEval<T> operator- (const XYZEval<T> &rs) { XYZEval<T> ls = *this; ls.x -= rs.x; ls.y -= rs.y; ls.z -= rs.z; ls.e -= rs.e; return ls; }
FI XYZEval<T> operator* (const XYZEval<T> &rs) const { XYZEval<T> ls = *this; ls.x *= rs.x; ls.y *= rs.y; ls.z *= rs.z; ls.e *= rs.e; return ls; }
FI XYZEval<T> operator* (const XYZEval<T> &rs) { XYZEval<T> ls = *this; ls.x *= rs.x; ls.y *= rs.y; ls.z *= rs.z; ls.e *= rs.e; return ls; }
FI XYZEval<T> operator/ (const XYZEval<T> &rs) const { XYZEval<T> ls = *this; ls.x /= rs.x; ls.y /= rs.y; ls.z /= rs.z; ls.e /= rs.e; return ls; }
FI XYZEval<T> operator/ (const XYZEval<T> &rs) { XYZEval<T> ls = *this; ls.x /= rs.x; ls.y /= rs.y; ls.z /= rs.z; ls.e /= rs.e; return ls; }
FI XYZEval<T> operator* (const float &v) const { XYZEval<T> ls = *this; ls.x *= v; ls.y *= v; ls.z *= v; ls.e *= v; return ls; }
FI XYZEval<T> operator* (const float &v) { XYZEval<T> ls = *this; ls.x *= v; ls.y *= v; ls.z *= v; ls.e *= v; return ls; }
FI XYZEval<T> operator* (const int &v) const { XYZEval<T> ls = *this; ls.x *= v; ls.y *= v; ls.z *= v; ls.e *= v; return ls; }
FI XYZEval<T> operator* (const int &v) { XYZEval<T> ls = *this; ls.x *= v; ls.y *= v; ls.z *= v; ls.e *= v; return ls; }
FI XYZEval<T> operator/ (const float &v) const { XYZEval<T> ls = *this; ls.x /= v; ls.y /= v; ls.z /= v; ls.e /= v; return ls; }
FI XYZEval<T> operator/ (const float &v) { XYZEval<T> ls = *this; ls.x /= v; ls.y /= v; ls.z /= v; ls.e /= v; return ls; }
FI XYZEval<T> operator/ (const int &v) const { XYZEval<T> ls = *this; ls.x /= v; ls.y /= v; ls.z /= v; ls.e /= v; return ls; }
FI XYZEval<T> operator/ (const int &v) { XYZEval<T> ls = *this; ls.x /= v; ls.y /= v; ls.z /= v; ls.e /= v; return ls; }
FI XYZEval<T> operator>>(const int &v) const { XYZEval<T> ls = *this; _RS(ls.x); _RS(ls.y); _RS(ls.z); _RS(ls.e); return ls; }
FI XYZEval<T> operator>>(const int &v) { XYZEval<T> ls = *this; _RS(ls.x); _RS(ls.y); _RS(ls.z); _RS(ls.e); return ls; }
FI XYZEval<T> operator<<(const int &v) const { XYZEval<T> ls = *this; _LS(ls.x); _LS(ls.y); _LS(ls.z); _LS(ls.e); return ls; }
FI XYZEval<T> operator<<(const int &v) { XYZEval<T> ls = *this; _LS(ls.x); _LS(ls.y); _LS(ls.z); _LS(ls.e); return ls; }
FI XYZEval<T>& operator+=(const XYval<T> &rs) { x += rs.x; y += rs.y; return *this; }
FI XYZEval<T>& operator-=(const XYval<T> &rs) { x -= rs.x; y -= rs.y; return *this; }
FI XYZEval<T>& operator*=(const XYval<T> &rs) { x *= rs.x; y *= rs.y; return *this; }
FI XYZEval<T>& operator/=(const XYval<T> &rs) { x /= rs.x; y /= rs.y; return *this; }
FI XYZEval<T>& operator+=(const XYZval<T> &rs) { x += rs.x; y += rs.y; z += rs.z; return *this; }
FI XYZEval<T>& operator-=(const XYZval<T> &rs) { x -= rs.x; y -= rs.y; z -= rs.z; return *this; }
FI XYZEval<T>& operator*=(const XYZval<T> &rs) { x *= rs.x; y *= rs.y; z *= rs.z; return *this; }
FI XYZEval<T>& operator/=(const XYZval<T> &rs) { x /= rs.x; y /= rs.y; z /= rs.z; return *this; }
FI XYZEval<T>& operator+=(const XYZEval<T> &rs) { x += rs.x; y += rs.y; z += rs.z; e += rs.e; return *this; }
FI XYZEval<T>& operator-=(const XYZEval<T> &rs) { x -= rs.x; y -= rs.y; z -= rs.z; e -= rs.e; return *this; }
FI XYZEval<T>& operator*=(const XYZEval<T> &rs) { x *= rs.x; y *= rs.y; z *= rs.z; e *= rs.e; return *this; }
FI XYZEval<T>& operator/=(const XYZEval<T> &rs) { x /= rs.x; y /= rs.y; z /= rs.z; e /= rs.e; return *this; }
FI XYZEval<T>& operator*=(const T &v) { x *= v; y *= v; z *= v; e *= v; return *this; }
FI XYZEval<T>& operator>>=(const int &v) { _RS(x); _RS(y); _RS(z); _RS(e); return *this; }
FI XYZEval<T>& operator<<=(const int &v) { _LS(x); _LS(y); _LS(z); _LS(e); return *this; }
FI bool operator==(const XYZval<T> &rs) { return x == rs.x && y == rs.y && z == rs.z; }
FI bool operator!=(const XYZval<T> &rs) { return !operator==(rs); }
FI bool operator==(const XYZval<T> &rs) const { return x == rs.x && y == rs.y && z == rs.z; }
FI bool operator!=(const XYZval<T> &rs) const { return !operator==(rs); }
FI XYZEval<T> operator-() { return { -x, -y, -z, -e }; }
FI const XYZEval<T> operator-() const { return { -x, -y, -z, -e }; }
#if LOGICAL_AXES > LINEAR_AXES
FI void set(const XYval<T> pxy, const T pe) { set(pxy); e = pe; }
FI void set(const XYZval<T> pxyz, const T pe) { set(pxyz); e = pe; }
FI void set(LOGICAL_AXIS_ARGS(const T)) { LOGICAL_AXIS_CODE(_e = e, a = x, b = y, c = z, u = i, v = j, w = k); }
#endif
#if LINEAR_AXES >= 4
FI void set(const T px, const T py, const T pz) { x = px; y = py; z = pz; }
#endif
#if LINEAR_AXES >= 5
FI void set(const T px, const T py, const T pz, const T pi) { x = px; y = py; z = pz; i = pi; }
#endif
#if LINEAR_AXES >= 6
FI void set(const T px, const T py, const T pz, const T pi, const T pj) { x = px; y = py; z = pz; i = pi; j = pj; }
#endif
// Length reduced to one dimension
FI T magnitude() const { return (T)sqrtf(LOGICAL_AXIS_GANG(+ e*e, + x*x, + y*y, + z*z, + i*i, + j*j, + k*k)); }
// Pointer to the data as a simple array
FI operator T* () { return pos; }
// If any element is true then it's true
FI operator bool() { return 0 LOGICAL_AXIS_GANG(|| e, || x, || y, || z, || i, || j, || k); }
// Explicit copy and copies with conversion
FI XYZEval<T> copy() const { XYZEval<T> o = *this; return o; }
FI XYZEval<T> ABS() const { return LOGICAL_AXIS_ARRAY(T(_ABS(e)), T(_ABS(x)), T(_ABS(y)), T(_ABS(z)), T(_ABS(i)), T(_ABS(j)), T(_ABS(k))); }
FI XYZEval<int16_t> asInt() { return LOGICAL_AXIS_ARRAY(int16_t(e), int16_t(x), int16_t(y), int16_t(z), int16_t(i), int16_t(j), int16_t(k)); }
FI XYZEval<int16_t> asInt() const { return LOGICAL_AXIS_ARRAY(int16_t(e), int16_t(x), int16_t(y), int16_t(z), int16_t(i), int16_t(j), int16_t(k)); }
FI XYZEval<int32_t> asLong() { return LOGICAL_AXIS_ARRAY(int32_t(e), int32_t(x), int32_t(y), int32_t(z), int32_t(i), int32_t(j), int32_t(k)); }
FI XYZEval<int32_t> asLong() const { return LOGICAL_AXIS_ARRAY(int32_t(e), int32_t(x), int32_t(y), int32_t(z), int32_t(i), int32_t(j), int32_t(k)); }
FI XYZEval<int32_t> ROUNDL() { return LOGICAL_AXIS_ARRAY(int32_t(LROUND(e)), int32_t(LROUND(x)), int32_t(LROUND(y)), int32_t(LROUND(z)), int32_t(LROUND(i)), int32_t(LROUND(j)), int32_t(LROUND(k))); }
FI XYZEval<int32_t> ROUNDL() const { return LOGICAL_AXIS_ARRAY(int32_t(LROUND(e)), int32_t(LROUND(x)), int32_t(LROUND(y)), int32_t(LROUND(z)), int32_t(LROUND(i)), int32_t(LROUND(j)), int32_t(LROUND(k))); }
FI XYZEval<float> asFloat() { return LOGICAL_AXIS_ARRAY(static_cast<float>(e), static_cast<float>(x), static_cast<float>(y), static_cast<float>(z), static_cast<float>(i), static_cast<float>(j), static_cast<float>(k)); }
FI XYZEval<float> asFloat() const { return LOGICAL_AXIS_ARRAY(static_cast<float>(e), static_cast<float>(x), static_cast<float>(y), static_cast<float>(z), static_cast<float>(i), static_cast<float>(j), static_cast<float>(k)); }
FI XYZEval<float> reciprocal() const { return LOGICAL_AXIS_ARRAY(_RECIP(e), _RECIP(x), _RECIP(y), _RECIP(z), _RECIP(i), _RECIP(j), _RECIP(k)); }
// Marlin workspace shifting is done with G92 and M206
FI XYZEval<float> asLogical() const { XYZEval<float> o = asFloat(); toLogical(o); return o; }
FI XYZEval<float> asNative() const { XYZEval<float> o = asFloat(); toNative(o); return o; }
// In-place cast to types having fewer fields
FI operator XYval<T>&() { return *(XYval<T>*)this; }
FI operator const XYval<T>&() const { return *(const XYval<T>*)this; }
FI operator XYZval<T>&() { return *(XYZval<T>*)this; }
FI operator const XYZval<T>&() const { return *(const XYZval<T>*)this; }
// Accessor via an AxisEnum (or any integer) [index]
FI T& operator[](const int n) { return pos[n]; }
FI const T& operator[](const int n) const { return pos[n]; }
// Assignment operator overrides do the expected thing
FI XYZEval<T>& operator= (const T v) { set(LIST_N_1(LINEAR_AXES, v)); return *this; }
FI XYZEval<T>& operator= (const XYval<T> &rs) { set(rs.x, rs.y); return *this; }
FI XYZEval<T>& operator= (const XYZval<T> &rs) { set(LINEAR_AXIS_ELEM(rs)); return *this; }
// Override other operators to get intuitive behaviors
FI XYZEval<T> operator+ (const XYval<T> &rs) const { XYZEval<T> ls = *this; ls.x += rs.x; ls.y += rs.y; return ls; }
FI XYZEval<T> operator+ (const XYval<T> &rs) { XYZEval<T> ls = *this; ls.x += rs.x; ls.y += rs.y; return ls; }
FI XYZEval<T> operator- (const XYval<T> &rs) const { XYZEval<T> ls = *this; ls.x -= rs.x; ls.y -= rs.y; return ls; }
FI XYZEval<T> operator- (const XYval<T> &rs) { XYZEval<T> ls = *this; ls.x -= rs.x; ls.y -= rs.y; return ls; }
FI XYZEval<T> operator* (const XYval<T> &rs) const { XYZEval<T> ls = *this; ls.x *= rs.x; ls.y *= rs.y; return ls; }
FI XYZEval<T> operator* (const XYval<T> &rs) { XYZEval<T> ls = *this; ls.x *= rs.x; ls.y *= rs.y; return ls; }
FI XYZEval<T> operator/ (const XYval<T> &rs) const { XYZEval<T> ls = *this; ls.x /= rs.x; ls.y /= rs.y; return ls; }
FI XYZEval<T> operator/ (const XYval<T> &rs) { XYZEval<T> ls = *this; ls.x /= rs.x; ls.y /= rs.y; return ls; }
FI XYZEval<T> operator+ (const XYZval<T> &rs) const { XYZval<T> ls = *this; LINEAR_AXIS_CODE(ls.x += rs.x, ls.y += rs.y, ls.z += rs.z, ls.i += rs.i, ls.j += rs.j, ls.k += rs.k); return ls; }
FI XYZEval<T> operator+ (const XYZval<T> &rs) { XYZval<T> ls = *this; LINEAR_AXIS_CODE(ls.x += rs.x, ls.y += rs.y, ls.z += rs.z, ls.i += rs.i, ls.j += rs.j, ls.k += rs.k); return ls; }
FI XYZEval<T> operator- (const XYZval<T> &rs) const { XYZval<T> ls = *this; LINEAR_AXIS_CODE(ls.x -= rs.x, ls.y -= rs.y, ls.z -= rs.z, ls.i -= rs.i, ls.j -= rs.j, ls.k -= rs.k); return ls; }
FI XYZEval<T> operator- (const XYZval<T> &rs) { XYZval<T> ls = *this; LINEAR_AXIS_CODE(ls.x -= rs.x, ls.y -= rs.y, ls.z -= rs.z, ls.i -= rs.i, ls.j -= rs.j, ls.k -= rs.k); return ls; }
FI XYZEval<T> operator* (const XYZval<T> &rs) const { XYZval<T> ls = *this; LINEAR_AXIS_CODE(ls.x *= rs.x, ls.y *= rs.y, ls.z *= rs.z, ls.i *= rs.i, ls.j *= rs.j, ls.k *= rs.k); return ls; }
FI XYZEval<T> operator* (const XYZval<T> &rs) { XYZval<T> ls = *this; LINEAR_AXIS_CODE(ls.x *= rs.x, ls.y *= rs.y, ls.z *= rs.z, ls.i *= rs.i, ls.j *= rs.j, ls.k *= rs.k); return ls; }
FI XYZEval<T> operator/ (const XYZval<T> &rs) const { XYZval<T> ls = *this; LINEAR_AXIS_CODE(ls.x /= rs.x, ls.y /= rs.y, ls.z /= rs.z, ls.i /= rs.i, ls.j /= rs.j, ls.k /= rs.k); return ls; }
FI XYZEval<T> operator/ (const XYZval<T> &rs) { XYZval<T> ls = *this; LINEAR_AXIS_CODE(ls.x /= rs.x, ls.y /= rs.y, ls.z /= rs.z, ls.i /= rs.i, ls.j /= rs.j, ls.k /= rs.k); return ls; }
FI XYZEval<T> operator+ (const XYZEval<T> &rs) const { XYZEval<T> ls = *this; LOGICAL_AXIS_CODE(ls.e += rs.e, ls.x += rs.x, ls.y += rs.y, ls.z += rs.z, ls.i += rs.i, ls.j += rs.j, ls.k += rs.k); return ls; }
FI XYZEval<T> operator+ (const XYZEval<T> &rs) { XYZEval<T> ls = *this; LOGICAL_AXIS_CODE(ls.e += rs.e, ls.x += rs.x, ls.y += rs.y, ls.z += rs.z, ls.i += rs.i, ls.j += rs.j, ls.k += rs.k); return ls; }
FI XYZEval<T> operator- (const XYZEval<T> &rs) const { XYZEval<T> ls = *this; LOGICAL_AXIS_CODE(ls.e -= rs.e, ls.x -= rs.x, ls.y -= rs.y, ls.z -= rs.z, ls.i -= rs.i, ls.j -= rs.j, ls.k -= rs.k); return ls; }
FI XYZEval<T> operator- (const XYZEval<T> &rs) { XYZEval<T> ls = *this; LOGICAL_AXIS_CODE(ls.e -= rs.e, ls.x -= rs.x, ls.y -= rs.y, ls.z -= rs.z, ls.i -= rs.i, ls.j -= rs.j, ls.k -= rs.k); return ls; }
FI XYZEval<T> operator* (const XYZEval<T> &rs) const { XYZEval<T> ls = *this; LOGICAL_AXIS_CODE(ls.e *= rs.e, ls.x *= rs.x, ls.y *= rs.y, ls.z *= rs.z, ls.i *= rs.i, ls.j *= rs.j, ls.k *= rs.k); return ls; }
FI XYZEval<T> operator* (const XYZEval<T> &rs) { XYZEval<T> ls = *this; LOGICAL_AXIS_CODE(ls.e *= rs.e, ls.x *= rs.x, ls.y *= rs.y, ls.z *= rs.z, ls.i *= rs.i, ls.j *= rs.j, ls.k *= rs.k); return ls; }
FI XYZEval<T> operator/ (const XYZEval<T> &rs) const { XYZEval<T> ls = *this; LOGICAL_AXIS_CODE(ls.e /= rs.e, ls.x /= rs.x, ls.y /= rs.y, ls.z /= rs.z, ls.i /= rs.i, ls.j /= rs.j, ls.k /= rs.k); return ls; }
FI XYZEval<T> operator/ (const XYZEval<T> &rs) { XYZEval<T> ls = *this; LOGICAL_AXIS_CODE(ls.e /= rs.e, ls.x /= rs.x, ls.y /= rs.y, ls.z /= rs.z, ls.i /= rs.i, ls.j /= rs.j, ls.k /= rs.k); return ls; }
FI XYZEval<T> operator* (const float &v) const { XYZEval<T> ls = *this; LOGICAL_AXIS_CODE(ls.e *= v, ls.x *= v, ls.y *= v, ls.z *= v, ls.i *= v, ls.j *= v, ls.k *= v ); return ls; }
FI XYZEval<T> operator* (const float &v) { XYZEval<T> ls = *this; LOGICAL_AXIS_CODE(ls.e *= v, ls.x *= v, ls.y *= v, ls.z *= v, ls.i *= v, ls.j *= v, ls.k *= v ); return ls; }
FI XYZEval<T> operator* (const int &v) const { XYZEval<T> ls = *this; LOGICAL_AXIS_CODE(ls.e *= v, ls.x *= v, ls.y *= v, ls.z *= v, ls.i *= v, ls.j *= v, ls.k *= v ); return ls; }
FI XYZEval<T> operator* (const int &v) { XYZEval<T> ls = *this; LOGICAL_AXIS_CODE(ls.e *= v, ls.x *= v, ls.y *= v, ls.z *= v, ls.i *= v, ls.j *= v, ls.k *= v ); return ls; }
FI XYZEval<T> operator/ (const float &v) const { XYZEval<T> ls = *this; LOGICAL_AXIS_CODE(ls.e /= v, ls.x /= v, ls.y /= v, ls.z /= v, ls.i /= v, ls.j /= v, ls.k /= v ); return ls; }
FI XYZEval<T> operator/ (const float &v) { XYZEval<T> ls = *this; LOGICAL_AXIS_CODE(ls.e /= v, ls.x /= v, ls.y /= v, ls.z /= v, ls.i /= v, ls.j /= v, ls.k /= v ); return ls; }
FI XYZEval<T> operator/ (const int &v) const { XYZEval<T> ls = *this; LOGICAL_AXIS_CODE(ls.e /= v, ls.x /= v, ls.y /= v, ls.z /= v, ls.i /= v, ls.j /= v, ls.k /= v ); return ls; }
FI XYZEval<T> operator/ (const int &v) { XYZEval<T> ls = *this; LOGICAL_AXIS_CODE(ls.e /= v, ls.x /= v, ls.y /= v, ls.z /= v, ls.i /= v, ls.j /= v, ls.k /= v ); return ls; }
FI XYZEval<T> operator>>(const int &v) const { XYZEval<T> ls = *this; LOGICAL_AXIS_CODE(_RS(ls.e), _RS(ls.x), _RS(ls.y), _RS(ls.z), _RS(ls.i), _RS(ls.j), _RS(ls.k) ); return ls; }
FI XYZEval<T> operator>>(const int &v) { XYZEval<T> ls = *this; LOGICAL_AXIS_CODE(_RS(ls.e), _RS(ls.x), _RS(ls.y), _RS(ls.z), _RS(ls.i), _RS(ls.j), _RS(ls.k) ); return ls; }
FI XYZEval<T> operator<<(const int &v) const { XYZEval<T> ls = *this; LOGICAL_AXIS_CODE(_LS(ls.e), _LS(ls.x), _LS(ls.y), _LS(ls.z), _LS(ls.i), _LS(ls.j), _LS(ls.k) ); return ls; }
FI XYZEval<T> operator<<(const int &v) { XYZEval<T> ls = *this; LOGICAL_AXIS_CODE(_LS(ls.e), _LS(ls.x), _LS(ls.y), _LS(ls.z), _LS(ls.i), _LS(ls.j), _LS(ls.k) ); return ls; }
FI const XYZEval<T> operator-() const { return LOGICAL_AXIS_ARRAY(-e, -x, -y, -z, -i, -j, -k); }
FI XYZEval<T> operator-() { return LOGICAL_AXIS_ARRAY(-e, -x, -y, -z, -i, -j, -k); }
// Modifier operators
FI XYZEval<T>& operator+=(const XYval<T> &rs) { x += rs.x; y += rs.y; return *this; }
FI XYZEval<T>& operator-=(const XYval<T> &rs) { x -= rs.x; y -= rs.y; return *this; }
FI XYZEval<T>& operator*=(const XYval<T> &rs) { x *= rs.x; y *= rs.y; return *this; }
FI XYZEval<T>& operator/=(const XYval<T> &rs) { x /= rs.x; y /= rs.y; return *this; }
FI XYZEval<T>& operator+=(const XYZval<T> &rs) { LINEAR_AXIS_CODE(x += rs.x, y += rs.y, z += rs.z, i += rs.i, j += rs.j, k += rs.k); return *this; }
FI XYZEval<T>& operator-=(const XYZval<T> &rs) { LINEAR_AXIS_CODE(x -= rs.x, y -= rs.y, z -= rs.z, i -= rs.i, j -= rs.j, k -= rs.k); return *this; }
FI XYZEval<T>& operator*=(const XYZval<T> &rs) { LINEAR_AXIS_CODE(x *= rs.x, y *= rs.y, z *= rs.z, i *= rs.i, j *= rs.j, k *= rs.k); return *this; }
FI XYZEval<T>& operator/=(const XYZval<T> &rs) { LINEAR_AXIS_CODE(x /= rs.x, y /= rs.y, z /= rs.z, i /= rs.i, j /= rs.j, k /= rs.k); return *this; }
FI XYZEval<T>& operator+=(const XYZEval<T> &rs) { LOGICAL_AXIS_CODE(e += rs.e, x += rs.x, y += rs.y, z += rs.z, i += rs.i, j += rs.j, k += rs.k); return *this; }
FI XYZEval<T>& operator-=(const XYZEval<T> &rs) { LOGICAL_AXIS_CODE(e -= rs.e, x -= rs.x, y -= rs.y, z -= rs.z, i -= rs.i, j -= rs.j, k -= rs.k); return *this; }
FI XYZEval<T>& operator*=(const XYZEval<T> &rs) { LOGICAL_AXIS_CODE(e *= rs.e, x *= rs.x, y *= rs.y, z *= rs.z, i *= rs.i, j *= rs.j, k *= rs.k); return *this; }
FI XYZEval<T>& operator/=(const XYZEval<T> &rs) { LOGICAL_AXIS_CODE(e /= rs.e, x /= rs.x, y /= rs.y, z /= rs.z, i /= rs.i, j /= rs.j, k /= rs.k); return *this; }
FI XYZEval<T>& operator*=(const T &v) { LOGICAL_AXIS_CODE(e *= v, x *= v, y *= v, z *= v, i *= v, j *= v, k *= v); return *this; }
FI XYZEval<T>& operator>>=(const int &v) { LOGICAL_AXIS_CODE(_RS(e), _RS(x), _RS(y), _RS(z), _RS(i), _RS(j), _RS(k)); return *this; }
FI XYZEval<T>& operator<<=(const int &v) { LOGICAL_AXIS_CODE(_LS(e), _LS(x), _LS(y), _LS(z), _LS(i), _LS(j), _LS(k)); return *this; }
// Exact comparisons. For floats a "NEAR" operation may be better.
FI bool operator==(const XYZval<T> &rs) { return true LINEAR_AXIS_GANG(&& x == rs.x, && y == rs.y, && z == rs.z, && i == rs.i, && j == rs.j, && k == rs.k); }
FI bool operator==(const XYZval<T> &rs) const { return true LINEAR_AXIS_GANG(&& x == rs.x, && y == rs.y, && z == rs.z, && i == rs.i, && j == rs.j, && k == rs.k); }
FI bool operator!=(const XYZval<T> &rs) { return !operator==(rs); }
FI bool operator!=(const XYZval<T> &rs) const { return !operator==(rs); }
};
#undef _RECIP
@@ -516,6 +666,3 @@ struct XYZEval {
#undef _LS
#undef _RS
#undef FI
const xyze_char_t axis_codes { 'X', 'Y', 'Z', 'E' };
#define XYZ_CHAR(A) ((char)('X' + A))

View File

@@ -35,18 +35,6 @@ void safe_delay(millis_t ms) {
thermalManager.manage_heater(); // This keeps us safe if too many small safe_delay() calls are made
}
#if ENABLED(MARLIN_DEV_MODE)
void early_safe_delay(millis_t ms) {
while (ms > 50) {
ms -= 50;
delay(50);
watchdog_refresh();
}
delay(ms);
watchdog_refresh();
}
#endif
// A delay to provide brittle hosts time to receive bytes
#if ENABLED(SERIAL_OVERRUN_PROTECTION)
@@ -134,10 +122,10 @@ void safe_delay(millis_t ms) {
SERIAL_ECHOLNPAIR("Z Fade: ", planner.z_fade_height);
#endif
#if ABL_PLANAR
SERIAL_ECHOPGM("ABL Adjustment X");
LOOP_XYZ(a) {
SERIAL_ECHOPGM("ABL Adjustment");
LOOP_LINEAR_AXES(a) {
const float v = planner.get_axis_position_mm(AxisEnum(a)) - current_position[a];
SERIAL_CHAR(' ', XYZ_CHAR(a));
SERIAL_CHAR(' ', AXIS_CHAR(a));
if (v > 0) SERIAL_CHAR('+');
SERIAL_DECIMAL(v);
}

View File

@@ -26,11 +26,6 @@
#include "../core/millis_t.h"
void safe_delay(millis_t ms); // Delay ensuring that temperatures are updated and the watchdog is kept alive.
#if ENABLED(MARLIN_DEV_MODE)
void early_safe_delay(millis_t ms); // Delay ensuring that the watchdog is kept alive. Can be used before the Temperature ISR starts.
#else
inline void early_safe_delay(millis_t ms) { safe_delay(ms); }
#endif
#if ENABLED(SERIAL_OVERRUN_PROTECTION)
void serial_delay(const millis_t ms);
@@ -81,3 +76,11 @@ public:
// Converts from an uint8_t in the range of 0-255 to an uint8_t
// in the range 0-100 while avoiding rounding artifacts
constexpr uint8_t ui8_to_percent(const uint8_t i) { return (int(i) * 100 + 127) / 255; }
const xyze_char_t axis_codes LOGICAL_AXIS_ARRAY('E', 'X', 'Y', 'Z', AXIS4_NAME, AXIS5_NAME, AXIS6_NAME);
#if LINEAR_AXES <= XYZ
#define AXIS_CHAR(A) ((char)('X' + A))
#else
#define AXIS_CHAR(A) axis_codes[A]
#endif

View File

@@ -0,0 +1,54 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2021 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/MarlinConfig.h"
#if ENABLED(I2C_AMMETER)
#include "ammeter.h"
#ifndef I2C_AMMETER_IMAX
#define I2C_AMMETER_IMAX 0.500 // Calibration range 500 Milliamps
#endif
INA226 ina;
Ammeter ammeter;
float Ammeter::scale;
float Ammeter::current;
void Ammeter::init() {
ina.begin();
ina.configure(INA226_AVERAGES_16, INA226_BUS_CONV_TIME_1100US, INA226_SHUNT_CONV_TIME_1100US, INA226_MODE_SHUNT_BUS_CONT);
ina.calibrate(I2C_AMMETER_SHUNT_RESISTOR, I2C_AMMETER_IMAX);
}
float Ammeter::read() {
scale = 1;
current = ina.readShuntCurrent();
if (current <= 0.0001f) current = 0; // Clean up least-significant-bit amplification errors
if (current < 0.1f) scale = 1000;
return current * scale;
}
#endif // I2C_AMMETER

View File

@@ -0,0 +1,39 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2021 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/>.
*
*/
#pragma once
#include "../inc/MarlinConfigPre.h"
#include <Wire.h>
#include <INA226.h>
class Ammeter {
private:
static float scale;
public:
static float current;
static void init();
static float read();
};
extern Ammeter ammeter;

View File

@@ -104,7 +104,7 @@ void Backlash::add_correction_steps(const int32_t &da, const int32_t &db, const
const float f_corr = float(correction) / 255.0f;
LOOP_XYZ(axis) {
LOOP_LINEAR_AXES(axis) {
if (distance_mm[axis]) {
const bool reversing = TEST(dm,axis);

View File

@@ -24,7 +24,7 @@
#include "../../inc/MarlinConfigPre.h"
#if EITHER(RESTORE_LEVELING_AFTER_G28, ENABLE_LEVELING_AFTER_G28)
#define G28_L0_ENSURES_LEVELING_OFF 1
#define CAN_SET_LEVELING_AFTER_G28 1
#endif
#if ENABLED(PROBE_MANUALLY)

View File

@@ -103,9 +103,7 @@ public:
}
static float get_z(const xy_pos_t &pos
#if ENABLED(ENABLE_LEVELING_FADE_HEIGHT)
, const_float_t factor=1.0f
#endif
OPTARG(ENABLE_LEVELING_FADE_HEIGHT, const_float_t factor=1.0f)
) {
#if DISABLED(ENABLE_LEVELING_FADE_HEIGHT)
constexpr float factor = 1.0f;

Some files were not shown because too many files have changed in this diff Show More