Compare commits

..

683 Commits

Author SHA1 Message Date
Sven Soost
d60a566cd2 Merge branch '2.1---sv' of https://git.soost.dev/sv/Marlin into 2.1---sv 2024-01-02 11:30:58 +01:00
Sven Soost
07df92fb03 help 2024-01-02 11:26:43 +01:00
Sven Soost
32d88bb983 upped fw version
corrected board type
2024-01-02 11:26:43 +01:00
Scott Lahteine
969a7bcd29 🔨 Specify versions in INI 2024-01-02 11:26:42 +01:00
Scott Lahteine
ef7b2a00f8 🔖 Marlin 2.1.0.1 2024-01-02 11:26:32 +01:00
Scott Lahteine
6fde6ce9c4 🔨 PlatformIO 6 compatibility 2024-01-02 11:24:09 +01:00
efflicto
eee1018122 tweaks 2024-01-02 11:23:53 +01:00
efflicto
c7e0f6e129 tweaks 2024-01-02 11:23:53 +01:00
efflicto
1ea8481194 tweaks 2024-01-02 11:23:53 +01:00
efflicto
1b742e6e01 Tweaks 2024-01-02 11:23:53 +01:00
efflicto
e6c84f6245 fix 2024-01-02 11:23:53 +01:00
efflicto
db5500815e fixes 2024-01-02 11:23:53 +01:00
efflicto
9c82457bef pid tunning 2024-01-02 11:23:53 +01:00
efflicto
7707c21bd1 tweaks 2024-01-02 11:23:53 +01:00
efflicto
33f614aaf5 Fixes and changes for BL and other stuff 2024-01-02 11:23:53 +01:00
76d6f47b05 fixed extruder 2024-01-02 11:23:53 +01:00
sv
ac4b0f41dc Added homing parameters 2024-01-02 11:23:53 +01:00
9a9bb290dc Remeasured extruder steps after extruder metal replacement 2024-01-02 11:23:53 +01:00
efflicto
735b54d32e chagnes and tweaks, enabled BL 2024-01-02 11:23:53 +01:00
efflicto
75a32fdc69 revert MULTI_VOLUME 2024-01-02 11:23:53 +01:00
efflicto
f610f4449a tweaks 2024-01-02 11:23:53 +01:00
efflicto
cea093c0a1 tweaks 2024-01-02 11:23:53 +01:00
efflicto
20a2f46e10 fixes for fans 2024-01-02 11:23:53 +01:00
efflicto
e63a15ce07 Bootscreen added
Adjusted bed PID
2024-01-02 11:22:24 +01:00
efflicto
1f922c98f8 disabled HYBRID_THRESHOLD 2024-01-02 11:22:24 +01:00
efflicto
e249879310 Added host communication
Corrected feeding rate
2024-01-02 11:22:24 +01:00
efflicto
3b5a2f33e8 Fixed fan related stuff 2024-01-02 11:22:24 +01:00
efflicto
331fc693f3 enabled lcd_bed_leveling 2024-01-02 11:22:24 +01:00
efflicto
91f27a5591 switched back to en 2024-01-02 11:22:23 +01:00
efflicto
91dfaec623 fixes for lin_advance & version 2024-01-02 11:22:23 +01:00
efflicto
0112b260fa Initial Setup 2024-01-02 11:22:23 +01:00
sv
0762338343 Initial commit 2024-01-02 11:22:23 +01:00
Scott Lahteine
d5813db0b9 🩹 Fix G33 output
See #26299
2024-01-02 11:22:23 +01:00
Scott Lahteine
5161465a2d 🔖 Version 2.1.2.1 2024-01-02 11:22:23 +01:00
Giuliano Zaro
7e24de9180 🐛 Fix G2/G3 limiting_speed (#25988) 2024-01-02 11:22:23 +01:00
Scott Lahteine
7aeea3f322 🩹 Prevent Z drop with G28 X/Y 2024-01-02 11:22:23 +01:00
Scott Lahteine
ecf5dcbc9d 🩹 Fix TFT LVGL compile error (#25865)
Fixes regression from #24302
2024-01-02 11:22:23 +01:00
Scott Lahteine
2db055d004 🚸 Improve EEPROM validation (#25860) 2024-01-02 11:22:23 +01:00
Scott Lahteine
85f486e037 🩹 Fix null pwm_details 2024-01-02 11:22:22 +01:00
Scott Lahteine
de1ccb20e8 🩹 Improve edit menu rounding 2024-01-02 11:22:22 +01:00
Scott Lahteine
e728cc69ae 🧑‍💻 ftdi_language 2024-01-02 11:22:22 +01:00
Scott Lahteine
50f9493afe 📌 TH3D EZBoard SD_DETECT_PIN 27 2024-01-02 11:22:22 +01:00
Chris Bagwell
1d8be142c8 🔧 Fix SHAPING_MIN_FREQ check (#25358) 2024-01-02 11:22:22 +01:00
Scott Lahteine
c6e4e7fa82 🧑‍💻 M43 updates 2024-01-02 11:22:22 +01:00
Giuliano Zaro
8784b581bb 🔧 Move SOFT_PWM_SCALE fallback to cpp (#25800)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2024-01-02 11:22:22 +01:00
Scott Lahteine
e1d59948a9 🚸 Faster default Marlin feedrate 2024-01-02 11:22:22 +01:00
ellensp
03baefab85 🔨 MKS Robin2 PIO Env (#25792) 2024-01-02 11:22:22 +01:00
Scott Lahteine
c3f24d61ac 🎨 Move G28O inside ProUI 2024-01-02 11:22:21 +01:00
Scott Mikutsky
d3c9bcd7a2 🐛 Fix STM32 USB disconnect behavior (#25762) 2024-01-02 11:22:21 +01:00
Scott Lahteine
2bf73b415c 🔧 Fix X2/Y2 axis pins check 2024-01-02 11:22:21 +01:00
Scott Lahteine
69dc14d494 🔧 Move MMU section 2024-01-02 11:22:21 +01:00
Scott Lahteine
b31296b7d8 🩹 Fix TFT sanity error 2024-01-02 11:22:21 +01:00
Scott Lahteine
c7e6e65ffb 🧑‍💻 Use NUM_AXIS_ARRAY 2024-01-02 11:22:21 +01:00
Scott Lahteine
ef949a54f9 🔨 Servo Timer 1 with STM32F103RC_fysetc (#25741) 2024-01-02 11:22:21 +01:00
Scott Lahteine
472b14678d 🔧 Update config.ini script 2024-01-02 11:22:21 +01:00
Scott Lahteine
0fe8cd2b7a 🧑‍💻 Change HAL_PATH macro for easier HAL relocation (#25743) 2024-01-02 11:22:21 +01:00
Scott Lahteine
84ad4c9f61 🔧 Extra axis endstop defaults 2024-01-02 11:22:20 +01:00
Anson Liu
bd1db04ccd 🔨 Prevent SlowSoftWire + Wire name conflict (#25707) 2024-01-02 11:22:20 +01:00
Scott Lahteine
b1c1cefef3 📝 Developer note in boards.h 2024-01-02 11:22:20 +01:00
Scott Lahteine
0b0a38c7f9 🚸 Improve PAUSE_PROBE_DEPLOY_WHEN_TRIGGERED (#25681) 2024-01-02 11:22:20 +01:00
Scott Lahteine
cee8622475 🩹 Fix UBL safe measure move with extra axes
Followup to 7e79fc5b
2024-01-02 11:22:20 +01:00
Alexey D. Filimonov
800fd1e2ee 🎨 Clean up TFT Color UI display items (#25712)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2024-01-02 11:22:20 +01:00
Keith Bennett
7ad2bd1f86 🚸 Permit G38 with Core (#25713) 2024-01-02 11:22:20 +01:00
Jay Robson
6ada8b091c 🐛 Fix G38 with Z, support 9 axes (#25691)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2024-01-02 11:22:20 +01:00
Keith Bennett
2f5e70f03f 🔧 Check renamed LIN_ADVANCE_K (#25710) 2024-01-02 11:22:20 +01:00
ellensp
2f3f002c27 🩹 Correctly add JSON to mc.zip (#25706) 2024-01-02 11:22:20 +01:00
Scott Lahteine
d35ceb0aa2 🧑‍💻 Minor SpindleLaser::set_enabled tweak 2024-01-02 11:22:19 +01:00
Alexey D. Filimonov
ddb3033268 🩹 Fix Spindle/Laser ENA pin test (#25622) 2024-01-02 11:22:19 +01:00
Bob Kuhn
6d67142f7b 🩹 Fix laser with no PWM compile (#25290) 2024-01-02 11:22:19 +01:00
Dennis Lawler
1407f43f32 🚸 Echo G30 out-of-bounds (#25671) 2024-01-02 11:22:19 +01:00
Giuliano Zaro
a6f8679eda 🩹 Bail on 'mc.zip' write error (#25695)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2024-01-02 11:22:19 +01:00
ellensp
a2a566337d 🔨 Fix, clean up STM32F1 envs (#25697)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2024-01-02 11:22:19 +01:00
Giuliano Zaro
faf3a25f20 🐛 Fix Configuration Embedding (#25688) 2024-01-02 11:22:19 +01:00
ellensp
4620d00adb 🩹 Status / Host Prompt followup (#25720)
Followup to #25679

Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2024-01-02 11:22:19 +01:00
Scott Lahteine
84dde2e9f8 🧑‍💻 HostUI::continue_prompt method 2024-01-02 11:22:19 +01:00
Scott Lahteine
1e61e7e19c 🧑‍💻 Status Message cleanup 2024-01-02 11:22:19 +01:00
Scott Lahteine
6ceeca432d 🧑‍💻 JyersUI code cleanup 2024-01-02 11:22:18 +01:00
Scott Lahteine
2854dd98d0 🧑‍💻 Apply simplified ?: 2024-01-02 11:22:18 +01:00
Scott Lahteine
9c00146e43 🔧 Trigorilla / Chiron updates
Followup to c3f34e4e
2024-01-02 11:22:18 +01:00
Scott Lahteine
be0cf33e4d 🔨 Improve runout script check 2024-01-02 11:22:18 +01:00
Scott Lahteine
109960a386 🩹 Fix AUTOFAN_CASE
Followup to #25554
2024-01-02 11:22:18 +01:00
Scott Lahteine
5df4e1ab13 🔧 Move FIL_RUNOUT_PIN for Chiron + GLCD 2024-01-02 11:22:18 +01:00
Scott Lahteine
6ceedafab0 🧑‍💻 Clarify G28 R / R0 2024-01-02 11:22:18 +01:00
Scott Lahteine
c49013becf 🚸 Minor M43 improvements 2024-01-02 11:22:18 +01:00
David Fries
bb61af4fe5 ️ Skip a redundant BLTouch::command (#25656) 2024-01-02 11:22:18 +01:00
Scott Lahteine
c6298ae610 🔧 Move TFT sanity checks 2024-01-02 11:22:18 +01:00
Scott Lahteine
a88627394b 🎨 Detab some build files 2024-01-02 11:22:17 +01:00
Scott Lahteine
1fb57947b9 🎨 Apply const (#25643) 2024-01-02 11:22:17 +01:00
ellensp
e9ec79e12e 🚸 Support CoreXY without Z (#25630) 2024-01-02 11:22:17 +01:00
Scott Lahteine
815d65e262 📝 Update Ender # labels 2024-01-02 11:22:17 +01:00
Scott Lahteine
ef646f2114 🧑‍💻 Update pinsformat.js 2024-01-02 11:22:17 +01:00
Scott Lahteine
1e3a5b0ac3 🐛 Ensure root for 'M503 C' 2024-01-02 11:22:17 +01:00
Giuliano Zaro
563a5da9e7 🌐 Update Italian language (#25587) 2024-01-02 11:22:17 +01:00
Scott Lahteine
3924c398c2 🩹 Fix displayed mix percentages 2024-01-02 11:22:17 +01:00
Scott Lahteine
a05af1b8be 🩹 Fix Ender-3 V2 with no fan 2024-01-02 11:22:16 +01:00
Chris Pepper
775d03bcdf 🔨 MarlinSimUI updates (#25589) 2024-01-02 11:22:16 +01:00
John Unland
be8cc5c4fe 🔨 Improve Docker local tests support (#25583) 2024-01-02 11:22:16 +01:00
Andrew
90474c2553 🎨 Remove unused ProUI : UBLValidMesh (#25591) 2024-01-02 11:22:11 +01:00
Scott Lahteine
f19ea05601 🔧 Fix up WiFi options (#25586) 2024-01-02 11:22:11 +01:00
Scott Lahteine
6bc106c48b 🔨 INI Updates
Co-Authored-By: Martin Turski <turningtides@outlook.de>
2024-01-02 11:22:11 +01:00
Eduard Sukharev
b9e05fd6bd 🐛 Fix M23 long filename support (#25540) 2024-01-02 11:22:11 +01:00
Scott Lahteine
bfd678bd62 🧑‍💻 Auto Fan / Cooler Fan updates (#25554) 2024-01-02 11:22:11 +01:00
Keith Bennett
1298acac83 🩹 Fix Touch Calibration first point (#25298) 2024-01-02 11:22:11 +01:00
Scott Lahteine
21f6f41a6d 🎨 Timer tweaks 2024-01-02 11:22:11 +01:00
ellensp
2569f74ade 🩹 Fix Chitu3D V6 default probe pin (#25552) 2024-01-02 11:22:11 +01:00
Scott Lahteine
90af917a29 🩹 Update TRONXY_V10 SPI_FLASH pins 2024-01-02 11:22:10 +01:00
Scott Lahteine
375c61aaa3 🎨 LPC_SOFTWARE_SPI => SOFTWARE_SPI
Co-Authored-By: Martin Turski <turningtides@outlook.de>
2024-01-02 11:22:10 +01:00
Scott Lahteine
df743d755a 🎨 Pins header comments
Co-Authored-By: Martin Turski <turningtides@outlook.de>
2024-01-02 11:22:10 +01:00
Martin Turski
78f854613c 🩹 Reset touch screen calibration on failure (#25334)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2024-01-02 11:22:09 +01:00
Scott Lahteine
3c6f086f2d 🎨 calibration_stage => stage 2024-01-02 11:22:09 +01:00
Scott Lahteine
81d279906b 🩹 Fix a serial_ternary 2024-01-02 11:22:09 +01:00
ellensp
707797f5d0 🩹 Fix Ender 2 stock LCD (#25538) 2024-01-02 11:22:09 +01:00
George Fu
66e5a906fb 🐛 Fix FYSETC Cheetah v2.0 Servo/Probe pins (#24635)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2024-01-02 11:22:09 +01:00
Scott Lahteine
4a3e84c5b9 ️ Misc. optimizations 2024-01-02 11:22:09 +01:00
Davide Rombolà
aa460bd936 🎨 Suppress warning (#25529) 2024-01-02 11:22:09 +01:00
Scott Lahteine
dbf7ea8796 🧑‍💻 More IntelliSense-friendly declares 2024-01-02 11:22:09 +01:00
Michael Hill
8583551557 Sovol v1.3.1 (Sovol SV06) (#25267) 2024-01-02 11:22:09 +01:00
dwzg
e469b04f9a 🩹 Fix DWIN MarlinUI Fan/E/XY (#25502) 2024-01-02 11:22:09 +01:00
Scott Lahteine
9f65ab96e4 🩹 Fan Menu / Status fixes
Followup to #21888
2024-01-02 11:22:08 +01:00
Abdullah YILMAZ
22ce4e5b22 🌐 Update Turkish language (#25447) 2024-01-02 11:22:08 +01:00
Giuliano Zaro
97e9f63286 🌐 Update Italian language (#25454) 2024-01-02 11:22:08 +01:00
Scott Lahteine
b7a3afe85d 📝 Fix a comment 2024-01-02 11:22:08 +01:00
jamespearson04
dc36389ea7 🐛 Fix UBL 'G29 J' mesh tilt (#25453)
Fix regression from #24214
2024-01-02 11:22:08 +01:00
Marcio T
ed992427e7 🚸 Improve CocoaPress Touch UI (#25446) 2024-01-02 11:22:08 +01:00
ellensp
7aa0454712 📝 Link to archived RA Control Panel page (#25424) 2024-01-02 11:22:08 +01:00
Giuliano Zaro
18aa56fa63 🌐 Update Italian language (#25309) 2024-01-02 11:22:08 +01:00
Roman Moravčík
9c4de0056a 🌐 Update Slovak language (#25305) 2024-01-02 11:22:08 +01:00
ellensp
47c00a59bd 🧑‍💻 Add IA_CREALITY CI test (#25434) 2024-01-02 11:22:07 +01:00
Scott Lahteine
e77686cfd9 🔨 Use 'build_src_filter' 2024-01-02 11:22:07 +01:00
Scott Lahteine
18a55a58f5 🔨 Fix thread-unsafe deque iteration 2024-01-02 11:22:03 +01:00
ellensp
3d4c6e5ca3 🐛 Fix MKS Robin Nano 1.3 F4 pin collision (#25838) 2024-01-02 11:21:55 +01:00
ellensp
94b4bd5c1e 🔧 Update thermocouple 2 pin sanity check (#25627) 2024-01-02 11:21:55 +01:00
ellensp
effeb5a4f2 🩹 Fix MARLIN_F446Zx_TRONXY variant (#25659)
Followup to 9be1554f
2024-01-02 11:21:55 +01:00
Chris Pepper
0935cdf7eb 🩹 Fix SD partitionTable packing (#25648) 2024-01-02 11:21:55 +01:00
Jason Smith
7f53cb3ce6 🎨 Suppress M122 sign warning (#25613) 2024-01-02 11:21:54 +01:00
Eduard Sukharev
4287eb83d2 🐛 Fix long filename read/report (#25509) 2024-01-02 11:21:54 +01:00
John Robertson
49ea4714fe 🔧 Sanity-check PRINTCOUNTER_SAVE_INTERVAL + ESP32 I2S Exp (#25527)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2024-01-02 11:21:54 +01:00
Keith Bennett
979313597a 🐛 Fix Anet ET4 SD_SS_PIN (#25492) 2024-01-02 11:21:54 +01:00
Scott Lahteine
25f3acab4c ️ Exit from ISR on AVR already does sei
Co-Authored-By: tombrazier <68918209+tombrazier@users.noreply.github.com>
2024-01-02 11:21:54 +01:00
Keith Bennett
aec1322585 BTT Octopus Max EZ 1.0, SKR 3.0 / 3.0 EZ (#25387, #25495, #25535) 2024-01-02 11:21:54 +01:00
Sion Williams
d57586b6a5 🔨 VSCode + Devcontainer support (#22420) 2024-01-02 11:21:53 +01:00
alextrical
094c9c38e4 🐛 Fix Flash EEPROM for STM32G0B1CB (#25469) 2024-01-02 11:21:53 +01:00
Hans-Christian Ebke
9b7acf8f40 🐛 Fix apply_power for SPINDLE_SERVO (#25465) 2024-01-02 11:21:53 +01:00
tombrazier
d8e232b120 🐛 Fix LA retract/feedrate edge case (#25445)
Followup to #25442
2024-01-02 11:21:53 +01:00
Scott Lahteine
fe7a60dc91 🔨 Improve config.ini example fetch 2024-01-02 11:21:53 +01:00
Scott Lahteine
29b392fa01 🌐 Regenerate language data 2024-01-02 11:21:53 +01:00
Scott Lahteine
bc915a2bb8 🧑‍💻 Script to make non-accented languages 2024-01-02 11:21:53 +01:00
Scott Lahteine
5a50118884 🔨 Update font scripts 2024-01-02 11:21:53 +01:00
ellensp
e55d4c9bfc 🔧 Fix Sensorless Probe sanity-check err (#25417) 2024-01-02 11:21:53 +01:00
tombrazier
27edbb21d3 🐛 Fix Linear Advance E position tracking (#25442)
Fix regression from #24951
2024-01-02 11:21:53 +01:00
tombrazier
32e0662783 🐛 Fix ISR_SHAPING_LOOP_CYCLES (#25335) 2024-01-02 11:21:52 +01:00
ellensp
bbf3083af6 🔨 Fix 'step' type in createTemperatureLookupMarlin.py (#25455) 2024-01-02 11:21:52 +01:00
Keith Bennett
1d6da05b6b 🔨 Fix env STM32G0B1RE_btt, add …_manta_btt (#25431) 2024-01-02 11:21:52 +01:00
Scott Lahteine
32ebc98f66 🎨 Use LIMIT macro 2024-01-02 11:21:52 +01:00
Guðni Már Gilbert
37287b234d ️ Reduce edit_screen code size (#25420) 2024-01-02 11:21:52 +01:00
Scott Lahteine
65443c3b15 🔧 Fix Einsy Rambo TMC driver check 2024-01-02 11:21:52 +01:00
tombrazier
0bd007abe6 🐛 Fix AVR maths used by Stepper (#25338) 2024-01-02 11:21:41 +01:00
ellensp
1de5d24780 🔨 Encrypt some MKS Robin (#25349) 2024-01-02 11:21:41 +01:00
Scott Lahteine
da0307daba 🧑‍💻 Fix preheat tests (nested macro limit ~256)
Followup to #25407
2024-01-02 11:21:41 +01:00
ellensp
cb6135f8f0 🔧 Sanity-check hotend max / preheat temps (#25407)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2024-01-02 11:21:41 +01:00
ellensp
fd20299a5d 📺 Update Re-ARM VIKI2 SPI pins (#25411) 2024-01-02 11:21:41 +01:00
Scott Lahteine
19ebcac9e3 🚸 Interruptible PLR (#25395) 2024-01-02 11:21:41 +01:00
ellensp
0325a0335c 🐛 Fix FastPWM calculations (#25343)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2024-01-02 11:21:41 +01:00
Trevin Small
42b7aa50ef ✏️ Fix README typo (#25388) 2024-01-02 11:21:41 +01:00
Scott Lahteine
ea122a1ce1 🎨 Tweak VALIDATE_MESH_TILT 2024-01-02 11:21:41 +01:00
Frederik Kemner
ea198b2cf3 🚸 SPI endstops for X/Y Dual and Core (#25371) 2024-01-02 11:21:41 +01:00
Radek
68621d7cb9 📝 Fix BTT_MINI_12864_V1 comment (#25366) 2024-01-02 11:21:40 +01:00
Scott Lahteine
ef96d439c8 🔨 Suppress native build warnings 2024-01-02 11:21:40 +01:00
EvilGremlin
b8913b19af 🔨 Adjust INI comments (#25183) 2024-01-02 11:21:40 +01:00
Scott Lahteine
f58ebcbbc1 🩹 Extra axis min home with Delta Sensorless Probe 2024-01-02 11:21:40 +01:00
Scott Lahteine
c023781f41 🩹 Extra axes for Tool Change 2024-01-02 11:21:40 +01:00
Scott Lahteine
002b48a52a 🩹 Various simple fixes 2024-01-02 11:21:40 +01:00
Scott Lahteine
f7f50a267a 🩹 Safe Bed Leveling updates 2024-01-02 11:21:40 +01:00
Scott Lahteine
7429633b29 🩹 Misc. extra axis updates 2024-01-02 11:21:40 +01:00
Scott Lahteine
6034a3e502 🩹 Use 'M205 D' when 'B' is an axis 2024-01-02 11:21:40 +01:00
Scott Lahteine
a581ba7107 🔧 Add a test for extra axes 2024-01-02 11:21:39 +01:00
Keith Bennett
6768759d96 BigTreeTech Manta M4P, M5P, M8P V1.0 / 1.1, E3 EZ (#25001) 2024-01-02 11:21:39 +01:00
Victor Oliveira
d58daf80f5 🧑‍💻 General 'MediaFile' type alias (#24424) 2024-01-02 11:21:39 +01:00
vyacheslav-shubin
2e019225d4 🧑‍💻 Add SD Card 'hide' method for dev usage (#22425) 2024-01-02 11:21:39 +01:00
Keith Bennett
63bca6fdd0 📝 Fix Z*_ENDSTOP_ADJUSTMENT comments (#25295) 2024-01-02 11:21:39 +01:00
kg333
670a37640b 📺 Melzi v4 with BTT SKR Mini E3 (#25321) 2024-01-02 11:21:38 +01:00
Martin Turski
32236c84d4 🔨 Fix test build path with spaces (#25329) 2024-01-02 11:21:38 +01:00
Bob Kuhn
79b3bcd3b1 🔧 Fix SD sorting sanity checks (#25318) 2024-01-02 11:21:38 +01:00
Scott Lahteine
ccc0d88a0e 🔧 Fix build with no Y axis (#25311) 2024-01-02 11:21:38 +01:00
Bob Kuhn
c45a880382 🩹 Fix G61 axis parameters with no offset (#25312) 2024-01-02 11:21:38 +01:00
Darren Garnier
44de068229 🔨 Fix config.ini URL fetch (#25313) 2024-01-02 11:21:38 +01:00
avionix-g
7154eea1fe 🐛 Fix MKS board Ultipanel support (#25278) 2024-01-02 11:21:38 +01:00
xBiohazardx
2fc5e21a18 ✏️ Fix probe invert flag (#25282) 2024-01-02 11:21:38 +01:00
Scott Lahteine
2c872dd096 🔧 Refine Input Shaping check (#25280) 2024-01-02 11:21:37 +01:00
Scott Lahteine
d1ebbcfbbe SDIO retry, hsd clock, etc. 2024-01-02 11:21:37 +01:00
Scott Lahteine
05a3ecb438 🔧 Overridable Stepper EN init 2024-01-02 11:21:37 +01:00
Bob Kuhn
fb860e69a8 🐛 Fix Ender-2 Stock Display with Melzi (#25258) 2024-01-02 11:21:37 +01:00
MarkMan0
f49f5ebd02 🐛 Fix, Refactor PID scaling (#25096) 2024-01-02 11:21:37 +01:00
John Robertson
c62005f750 🐛 Fix potential I2S buffer overwrite (#25113) 2024-01-02 11:21:37 +01:00
Scott Lahteine
ec57fcc4d1 🎨 Heading cleanup 2024-01-02 11:21:37 +01:00
Scott Lahteine
7a1d662fc2 🎨 Language / menu cleanup 2024-01-02 11:21:36 +01:00
Scott Lahteine
0df6ae413e ✏️ ProUI followup 2024-01-02 11:21:36 +01:00
Scott Lahteine
68b6ca53cf 🔧 Added MOTHERBOARD error text 2024-01-02 11:21:36 +01:00
Scott Lahteine
78375bbbd4 🎨 Misc. formatting 2024-01-02 11:21:36 +01:00
Scott Lahteine
2087a56624 🧑‍💻 Fix D5 warning 2024-01-02 11:21:36 +01:00
Scott Lahteine
f0b1090e6a 🐛 Fix homing_needed_error 2024-01-02 11:21:36 +01:00
Scott Lahteine
f1895947a8 🔧 Input Shaping sanity checks 2024-01-02 11:21:36 +01:00
Scott Lahteine
1378e3fb2b 🩹 Fix Sim with USE_WATCHDOG disabled 2024-01-02 11:21:35 +01:00
Scott Lahteine
38a954e9fa 🔨 Improve config.ini parser 2024-01-02 11:21:35 +01:00
Alex Z
98bf7cbfeb 🐛 Fix Chitu V6 Z_STOP_PIN (#25227) 2024-01-02 11:21:35 +01:00
Miguel Risco-Castillo
55e4de0144 🚸 ProUI updates (#25176) 2024-01-02 11:21:35 +01:00
Sebastien BLAISOT
e3a64464ee 🐛 Fix Neopixel 1 startup (#25203) 2024-01-02 11:21:35 +01:00
Vlad Popescu
9f7f6ab10f 🩹 Fix E3V2 MarlinUI XYZ frame (#25206) 2024-01-02 11:21:35 +01:00
Richard Layton
dd6791bb45 📝 Linux Sim apt-get line (#25208) 2024-01-02 11:21:35 +01:00
Richard Layton
91fe29319f 📝 More native.ini docs (#25201) 2024-01-02 11:21:34 +01:00
ellensp
f7a9a73f91 🩹 Update MKS_GEN_13 MOSFET pins (#25126) 2024-01-02 11:21:34 +01:00
ellensp
b6267b7ffa 🩹 Replace pow() with _BV() (#25186) 2024-01-02 11:21:34 +01:00
Mike Bignell
8debbc213c 🩹 Fix missing IS_MELZI (#25190) 2024-01-02 11:21:34 +01:00
Ashley 'DrToxic' Devine
9435483b74 🎨 Misc. cleanup (#25194)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2024-01-02 11:21:34 +01:00
Vovodroid
6d1df38a5b 🚸 Attach USB media (#25120) 2024-01-02 11:21:34 +01:00
Scott Lahteine
e3b2324c13 🧑‍💻 Add Temperature::is_above_target 2024-01-02 11:21:34 +01:00
Scott Lahteine
7ac6609d7d 🎨 Rename *_temp_error to *temp_error 2024-01-02 11:21:34 +01:00
Timothy Hoogland
30c1d06300 🩹 Remove extraneous EZBoard V1 autofans (#25182) 2024-01-02 11:21:34 +01:00
Scott Lahteine
6dfe711846 🎨 Misc. IS cleanup 2024-01-02 11:21:34 +01:00
Giuliano Zaro
4147b41e58 🚸 MarlinUI edit steps/mm to 2 decimal places (#25144) 2024-01-02 11:21:33 +01:00
ellensp
6f5648ae41 🧑‍💻 Fix type warning (#25149) 2024-01-02 11:21:33 +01:00
ellensp
105569c93b 🔨 FILAMENT_RUNOUT_SCRIPT sanity check (#25150) 2024-01-02 11:21:33 +01:00
Lukas Erlacher
222079c7aa 🔧 Add H8 to Creality 4.2.2 stepper warning (#25154) 2024-01-02 11:21:33 +01:00
Lukas Erlacher
84b8d64cda 🚸 Z Servo Probe is HAS_STOWABLE_PROBE (#25158) 2024-01-02 11:21:33 +01:00
Timothy Hoogland
f421096af2 🩹 Remove extraneous EZBoard V2 autofans (#25166) 2024-01-02 11:21:33 +01:00
Scott Lahteine
3efe91aa95 🚸 Hide IS menu while busy 2024-01-02 11:21:33 +01:00
Vlad Popescu
12e066b41f 🐛 Avoid lambda for menu items (#25169) 2024-01-02 11:21:33 +01:00
Stefan Kalscheuer
d37c967754 🐛 Fix Mesh Bed Leveling Z correction (#25122) 2024-01-02 11:21:33 +01:00
Keith Bennett
cc79ceb830 📝 Fix Configs URL (#25167) 2024-01-02 11:21:32 +01:00
Scott Lahteine
a62911210b 🧑‍💻 Fix ONBOARD_FLASH_SIZE 2024-01-02 11:21:27 +01:00
Scott Lahteine
e92d8ed620 🔖 Version 2.1.2 2024-01-02 11:21:27 +01:00
Scott Lahteine
9e4623344c 📝 Update 2.1.x README 2024-01-02 11:21:04 +01:00
Scott Lahteine
60e7acb96b 🧑‍💻 M593 F "min" freq 2024-01-02 11:21:04 +01:00
Scott Lahteine
02171faf35 🐛 Fix Melzi encoder 2024-01-02 11:21:04 +01:00
Scott Lahteine
c74da8b595 🩹 Fix LCD_FOR_MELZI with Tronxy Melzi 2024-01-02 11:21:04 +01:00
EvilGremlin
fef48d3c26 🐛 Fix DOGM time overflow, alignment (#25103) 2024-01-02 11:21:03 +01:00
ellensp
ec409acc7d 🎨 Suppress warning (#25101) 2024-01-02 11:21:03 +01:00
ellensp
a8394ad94a BTT Octopus with STM32-F407 (#25031) 2024-01-02 11:21:03 +01:00
alextrical
6288fb639f BigTreeTech EBB42 v1.1 (#24964) 2024-01-02 11:21:03 +01:00
ils15
e254a806cf 🔧 Use multi-XYZ 'STOP' pins for MIN/MAX (#24855)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2024-01-02 11:21:03 +01:00
Scott Lahteine
d1e0dffff3 Robin Nano v1 CDC (USB mod)
Followup to #24619
2024-01-02 11:21:03 +01:00
Dipl.-Ing. Raoul Rubien, BSc
46777d86d0 🩹 Fix M115_GEOMETRY_REPORT (#25092) 2024-01-02 11:21:02 +01:00
ellensp
bb34b41608 🩹 Inverted probe pin flag (K8400) (#25085) 2024-01-02 11:21:02 +01:00
Scott Lahteine
e48537fe50 🩹 Fix M502 init of default motion
Fix regression from #25035
2024-01-02 11:21:02 +01:00
alextrical
6dd559184f 🩹 Use custom I2C pins for OLED (#24970) 2024-01-02 11:21:02 +01:00
Bart Meijer
4b52aed9a8 SAMD21 HAL / Minitronics v2.0 (#24976) 2024-01-02 11:21:02 +01:00
Alexander Gavrilenko
ed3ae09e66 TFT_COLOR_UI async DMA SPI (#24980) 2024-01-02 11:21:01 +01:00
Scott Lahteine
903f9b2ac0 📝 Replace Twitter with Fosstodon 2024-01-02 11:21:01 +01:00
Simon Pilepich
4dd5b0e7e3 🔧 Anycubic alternate Z1/Z2 wiring (#25071) 2024-01-02 11:21:01 +01:00
Krzysztof Błażewicz
e2e50a05eb JyersUI TMC Settings (#25048) 2024-01-02 11:21:01 +01:00
Keith Bennett
a20ef4ca63 🔧 Custom Menu Sanity Check (#25079) 2024-01-02 11:21:01 +01:00
Scott Lahteine
b5e0ff331c 🔨 Updated 'mfconfig init' 2024-01-02 11:21:01 +01:00
ellensp
5de18e548a 🔨 No env:mega1280 for MIGHTYBOARD_REVE (#25080) 2024-01-02 11:21:00 +01:00
tombrazier
4e9ed5990b ️ Better IS buffer size calc (#25035) 2024-01-02 11:21:00 +01:00
Vovodroid
c62f686ecc Two controller fans (#24995) 2024-01-02 11:21:00 +01:00
ellensp
6a4a6d8c07 📌 Pins updates for Longer LK5, etc. (#25012)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2024-01-02 11:21:00 +01:00
EvilGremlin
065eb12f51 🚸 Progress display followup (#24879) 2024-01-02 11:21:00 +01:00
Sebastien BLAISOT
9a07f768bf M150 S default index (#23066)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2024-01-02 11:21:00 +01:00
Scott Lahteine
1911ed13de 🔨 Return error on mftest exit 2024-01-02 11:20:59 +01:00
Scott Lahteine
751316598e 📝 Update config comments 2024-01-02 11:20:59 +01:00
ellensp
acb2e452bb 🐛 Fix Fast PWM on AVR (#25030)
Followup to #25005
2024-01-02 11:20:59 +01:00
kisslorand
8e2c013c57 ✏️ Fix missing ) (#25055) 2024-01-02 11:20:59 +01:00
Scott Lahteine
855b6de9e7 🔨 Fix CI Test clean step (2) 2024-01-02 11:20:59 +01:00
Scott Lahteine
b8b65e7bcb 🎨 Misc. cleanup 2024-01-02 11:20:59 +01:00
Scott Lahteine
6f119178f2 🔨 Fix CI Test clean step 2024-01-02 11:20:59 +01:00
tombrazier
ac3d422a46 🐛 Fix TMC5160 + Input Shaping overcurrent (#25050) 2024-01-02 11:20:59 +01:00
Taylor Talkington
d1ad6d7481 🩹 Ender 3v2 DWIN MarlinUI Fixup (#24984) 2024-01-02 11:20:58 +01:00
Scott Lahteine
c7e3054b67 🎨 Trailing whitespace 2024-01-02 11:20:58 +01:00
ellensp
258b812eef 🔨 Update renamed.ini (#25042) 2024-01-02 11:20:58 +01:00
ellensp
fb4c69407f 🩹 Fix MSG_MOVE_N_MM substitution (#25043) 2024-01-02 11:20:58 +01:00
kisslorand
94a4101f22 🚸 G30 move to logical XY (#24953) 2024-01-02 11:20:58 +01:00
Scott Lahteine
6b3533a946 🎨 Misc. cleanup 2024-01-02 11:20:58 +01:00
Scott Lahteine
ee4bf53e3b 🧑‍💻 Use spaces indent for Python 2024-01-02 11:20:58 +01:00
トトも
5efd79b282 📝 Formatted Team Overview (#25029) 2024-01-02 11:20:57 +01:00
Scott Lahteine
acfa61728c 🐛 Fix G-code resend race condition
As pointed out in #24972 by @silycr, but simplified.
2024-01-02 11:20:57 +01:00
Taylor Talkington
47263b0411 Ender-3 V2 DWIN for BTT Octopus V1.1 (#24983) 2024-01-02 11:20:57 +01:00
Chris Bagwell
04fb7b322a ️ More SCURVE cycles on unoptimized cortex-m0 (#24955) 2024-01-02 11:20:57 +01:00
tombrazier
a1439ca445 ️ Input Shaping improvements (#24951) 2024-01-02 11:20:57 +01:00
Trivalik
3f46baa323 🐛 Fix missing va_end in UnwPrintf (#25027) 2024-01-02 11:20:56 +01:00
studiodyne
118eb82993 🐛 Fix MILLISECONDS_PREHEAT_TIME / mintemp (#24967) 2024-01-02 11:20:56 +01:00
Marcio T
7d44a3ab46 🩹 Fix ADVANCE_K + DISTINCT_E_FACTORS sanity check (#25007) 2024-01-02 11:20:56 +01:00
Manuel McLure
b340de5e9d 🔧 Merge TMC26X with TMC config (#24373) 2024-01-02 11:20:56 +01:00
Radek
eefaa70893 🐛 Fix SKR mini E2 V2 + BTT_MINI_12864_V1 (#24827)
See https://github.com/bigtreetech/BIGTREETECH-SKR-mini-E3/issues/686#issuecomment-1296545443
2024-01-02 11:20:56 +01:00
Vasily Evseenko
868258fca9 🍻 Fix Z increase on toolchange without UBL (#22942) 2024-01-02 11:20:56 +01:00
ellensp
2b79b66f66 🩹 Fix UBL menu compile (#25020) 2024-01-02 11:20:56 +01:00
mikemerryguy
5c31f99178 🚸 Add 50mm manual move (#24884) 2024-01-02 11:20:55 +01:00
Thomas Buck
bc7aaa6120 🚸 Optional Cutter/Laser status for HD44780 (#25003) 2024-01-02 11:20:55 +01:00
Tanguy Pruvot
ec7af0ca4c 🚸 COLOR_UI sleep timeout / setting (#24994) 2024-01-02 11:20:55 +01:00
ellensp
fe962b1e4c 🔧 Fix TPARA (…SCARA, DELTA) settings (#25016) 2024-01-02 11:20:55 +01:00
Tanguy Pruvot
a7b982ed67 ✏️ Fix Robin nano env typo (#24993) 2024-01-02 11:20:55 +01:00
ellensp
dab181c464 📺 FYSETC_MINI_12864_2_1 with BTT_SKR_E3_DIP (#24986) 2024-01-02 11:20:55 +01:00
ellensp
81f47a9d28 🩹 Fix planner typo (#24977) 2024-01-02 11:20:55 +01:00
ellensp
0bdbc656d6 🐛 MKS_MINI_12864 on SKR 1.3 needs FORCE_SOFT_SPI (#24850) 2024-01-02 11:20:54 +01:00
EvilGremlin
a8a16eaf6b 🔧 Check Delta homing direction (#24865) 2024-01-02 11:20:54 +01:00
phigjm
4eeb38a1e8 🩹 Fix SERVICE_INTERVAL reset (#24888) 2024-01-02 11:20:54 +01:00
Marcio T
4998bee1b8 Fix FAST_PWM_FAN / TouchUI with NO_MOTION_BEFORE_HOMING (#25005)
Fix regressions from #20323, #23463
2024-01-02 11:20:54 +01:00
ellensp
b743c6c1de 🩹 Fix 2 thermocouples (#24982)
Followup to #24898
2024-01-02 11:20:54 +01:00
Scott Lahteine
f930d870c3 🐛 Fix M808 starting count
Reported by adcurtin on Discord
2024-01-02 11:20:54 +01:00
Justin Hartmann
af2dbae015 🩹 Fix Overlord compile (#24947) 2024-01-02 11:20:54 +01:00
Pascal de Bruijn
8c9354c897 🚸 M306: Indicate MPC Autotune (#24949) 2024-01-02 11:20:54 +01:00
ellensp
53691bbecb 🩹 Allow max endstops MKS Monster 8 V2 (#24944) 2024-01-02 11:20:54 +01:00
Scott Lahteine
2c4a35e042 🐛 Fix Anycubic / Trigorilla pins, etc. (#24971) 2024-01-02 11:20:54 +01:00
Scott Lahteine
05fbc97759 🎨 Prefer axis element over index 2024-01-02 11:20:53 +01:00
Scott Lahteine
28544fe5f6 🩹 Fix EEPROM write for !LIN_ADVANCE
Fixes #24963
Followup to #24821
2024-01-02 11:20:53 +01:00
Scott Lahteine
af62eef5d5 🩹 MAX Thermocouple followup
Followup to #24898
2024-01-02 11:20:53 +01:00
Scott Lahteine
55c6d815a1 🩹 leds.update needed for reset_timeout
Followup to #23590
2024-01-02 11:20:53 +01:00
Scott Lahteine
e6cfaeef2c 🧑‍💻 More direct encoder spin 2024-01-02 11:20:53 +01:00
Scott Lahteine
9f29c582d0 🎨 Update SAMD51 headers 2024-01-02 11:20:53 +01:00
Scott Lahteine
6c17e643c4 🎨 Format some lib-uhs3 code 2024-01-02 11:20:53 +01:00
ellensp
ba7cda7a3d 📌 ZRIB V52-V53 Servo Pins (#24880) 2024-01-02 11:20:53 +01:00
InsanityAutomation
343d1da462 Tenlog MB1V23 IDEX board (#24896) 2024-01-02 11:20:52 +01:00
Giuliano Zaro
20bbb1f56b 🌐 Update Italian language (#24915) 2024-01-02 11:20:52 +01:00
ellensp
aedd655cef 📌 Remove unused RX/TX pins (#24932) 2024-01-02 11:20:52 +01:00
Keith Bennett
e01912fb96 🔧 Update Display Sleep LCD Check (#24934) 2024-01-02 11:20:52 +01:00
Justin Hartmann
5f9aae26c4 🩹 Buttons Followup (#24935)
Followup to #24878
2024-01-02 11:20:52 +01:00
Scott Lahteine
6f25c2b1c7 🩹 Allow for last non-servo extruder 2024-01-02 11:20:52 +01:00
ellensp
000fa4b199 🐛 Fix move_extruder_servo (#24908) 2024-01-02 11:20:52 +01:00
InsanityAutomation
4b591c6c3f 🐛 Fix FTDUI Status Screen Timeout (#24899) 2024-01-02 11:20:52 +01:00
Manuel McLure
15c9a6dffa 🩹 Fix spurious "bad command" (#24923) 2024-01-02 11:20:52 +01:00
Scott Lahteine
aefcffa413 🩹 Fix M593 report 2024-01-02 11:20:51 +01:00
kurtis-potier-geofabrica
d33ef1f094 🚸 Up to 3 MAX Thermocouples (#24898) 2024-01-02 11:20:51 +01:00
Scott Lahteine
11b910d4d6 🔧 Clean up unused ESP_WIFI pins 2024-01-02 11:20:51 +01:00
tombrazier
7c88f2ea86 🚀 ZV Input Shaping (#24797) 2024-01-02 11:20:51 +01:00
Scott Lahteine
4cac625bb0 🔨 gcc-12 for macOS native 2024-01-02 11:20:51 +01:00
InsanityAutomation
a932657403 Controllerfan PWM scaling, kickstart (#24873) 2024-01-02 11:20:45 +01:00
silycr
8bbe7481a1 🚸 Probe pins for Chitu V5 (#24910) 2024-01-02 11:20:45 +01:00
ellensp
a73a88917b 🔧 Some STM32 UART Sanity Checks (#24795) 2024-01-02 11:20:45 +01:00
Scott Lahteine
ca407c7934 🎨 Misc. variant cleanup, translation
Followup to #24787
2024-01-02 11:20:45 +01:00
InsanityAutomation
60eb1ef736 🐛 Fix Print Timer stop with MarlinUI abort (#24902) 2024-01-02 11:20:45 +01:00
ellensp
4e4d5aa021 🔧 No Native USB on AVR (#24906) 2024-01-02 11:20:44 +01:00
Scott Lahteine
2d02703af8 🧑‍💻 Pins and debug list cleanup (#24878) 2024-01-02 11:20:44 +01:00
Scott Lahteine
e352cf20c2 🎨 CONF_SERIAL_IS => SERIAL_IN_USE 2024-01-02 11:20:44 +01:00
ellensp
cb0a760200 Tronxy v10 (#24787) 2024-01-02 11:20:44 +01:00
Keith Bennett
8cbb620180 🔧 No Sleep for CR-10 Stock Display (#24875) 2024-01-02 11:20:44 +01:00
karliss
29f0cbcbd6 🐛 Fix compile without Y/Z (#24858)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2024-01-02 11:20:44 +01:00
Keith Bennett
10e96c64ac 🔧 Check Sensorless Homing on all axes (#24872) 2024-01-02 11:20:44 +01:00
InsanityAutomation
44fdd877fd 🐛 Fix bed/chamber PID P edit (#24861) 2024-01-02 11:20:44 +01:00
Scott Lahteine
62cbe127f1 🎨 HAS_SPI_FLASH => SPI_FLASH 2024-01-02 11:20:43 +01:00
Dan Royer
b12267148e 🐛 Fix and improve Polargraph (#24847)
Co-Authored-By: Scott Lahteine <thinkyhead@users.noreply.github.com>
2024-01-02 11:20:43 +01:00
ellensp
c1d9bea3e0 🐛 Fix operators for V axis (#24866)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2024-01-02 11:20:43 +01:00
mjbogusz
73d4db77d7 🩹 Fix TFT LCD in Simulation (#24871) 2024-01-02 11:20:43 +01:00
Scott Lahteine
a59cfecc16 🎨 MMU2 cleanup 2024-01-02 11:20:43 +01:00
Scott Lahteine
4aaf2d2b82 🐛 Fix M876 without emergency parser
Fix regression from 1fb2fffdbf
2024-01-02 11:20:43 +01:00
adam3654
e0aad89105 DOGM Display Sleep (#24829) 2024-01-02 11:20:43 +01:00
EvilGremlin
48622d27f0 🩹 Fix temperature include (#24834) 2024-01-02 11:20:43 +01:00
Scott Lahteine
cde06bba6a 🎨 Misc. variant cleanup 2024-01-02 11:20:42 +01:00
Scott Lahteine
14d9774f93 🧑‍💻 Min and max for base types 2024-01-02 11:20:42 +01:00
EvilGremlin
eae02513d7 MKS SKIPR board (#24791) 2024-01-02 11:20:42 +01:00
Scott Lahteine
d1ae2e5a8b 🔨 Update mfinfo for 2.1.x 2024-01-02 11:20:42 +01:00
Scott Lahteine
594be2c248 🧑‍💻 Min and max for base types 2024-01-02 11:20:42 +01:00
Giuliano Zaro
4eaea9cd29 ADVANCE_K per-extruder (#24821)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2024-01-02 11:20:42 +01:00
EvilGremlin
41ffff26a4 ♻️ Set Progress without LCD (#24767)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2024-01-02 11:20:42 +01:00
EvilGremlin
1c4b9de530 🩹 Fix Color UI touchscreen sleep (#24826) 2024-01-02 11:20:41 +01:00
Adam
6b54b8c409 🩹 Fix Switching Toolhead compile (#24814) 2024-01-02 11:20:41 +01:00
ellensp
986a5c9b80 🧑‍💻 Einsy Rambo EXP headers (#24825) 2024-01-02 11:20:41 +01:00
ellensp
b5f7b7919d 🔨 Detect feature parsing error (#24824) 2024-01-02 11:20:41 +01:00
ellensp
0d88b8b461 Creality v5.2.1 board (#24815)
Followup to #24760
2024-01-02 11:20:41 +01:00
Keith Bennett
009fbc85d2 🔧 Thermistor (66) sanity-check (#24803) 2024-01-02 11:20:41 +01:00
Eduardo José Tagle
316d8e9181 🐛 Fix DUE compile and errors (#24809) 2024-01-02 11:20:41 +01:00
Scott Lahteine
adf3d4cd73 🩹 Fix some vector_3 cast operators 2024-01-02 11:20:41 +01:00
Keith Bennett
726c04b70e 🔧 Update Creality 4.2.2 Driver Warning (#24806) 2024-01-02 11:20:41 +01:00
ellensp
6e7ce5e3aa 🩹 Disable DEBUG_DGUSLCD (#24798) 2024-01-02 11:20:40 +01:00
Yuri D'Elia
eeb286d2a9 🎨 Remove non-const compare operators (#24810) 2024-01-02 11:20:40 +01:00
Plynix / Ben Hartiwch
ec9338474f Creality v5.2.1 board (#24760) 2024-01-02 11:20:40 +01:00
discip
d2594ff9c8 Pt1000 with 2k2 pullup (SKR 3 / EZ) (#24790) 2024-01-02 11:20:40 +01:00
ellensp
abe9431029 ✏️ Followup for M524 (#24775)
Followup to #24761
2024-01-02 11:20:40 +01:00
Stuart Pittaway
3f8a8666f6 🚸 UUID fallback to STM32 device SN (#24759)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2024-01-02 11:20:40 +01:00
Keith Bennett
bc4a252819 📌 Specify MarlinFirmware/U8glib (#24792) 2024-01-02 11:20:40 +01:00
Renaud11232
4eadd76d47 🔨 Fix LPC1768 autodetect path on Linux (#24773) 2024-01-02 11:20:31 +01:00
Stefan Kalscheuer
623f70fd3b Anycubic i3 Mega LCD file menu fix (#24752) 2024-01-02 11:20:30 +01:00
studiodyne
02694dcd58 M217 G wipe retract length 2024-01-02 11:20:30 +01:00
studiodyne
1bd3f4e7cd XY_COUNTERPART_BACKOFF_MM 2024-01-02 11:20:30 +01:00
studiodyne
d7ecc271a4 RGB_STARTUP_TEST 2024-01-02 11:20:30 +01:00
tombrazier
9bf7f28d15 Permit Linear Advance with I2S Streaming (#24684) 2024-01-02 11:20:30 +01:00
Scott Lahteine
3d90aac76a Robin Nano v1 CDC (USB mod)
Followup to #24619
2024-01-02 11:20:30 +01:00
Scott Lahteine
c71bc95700 🐛 Fix recalculate_max_e_jerk 2024-01-02 11:20:30 +01:00
ellensp
0453fdfb94 🐛 Fix VW axis fields in types.h (#24780) 2024-01-02 11:20:30 +01:00
Giuliano Zaro
9194c9f2dc 🚸 Strict index 2 for M913 / M914 XY (#24680) 2024-01-02 11:20:30 +01:00
Arkadiusz Miśkiewicz
8ce2cd7617 🚸 Emergency Parse M524 (#24761) 2024-01-02 11:20:29 +01:00
Giuliano Zaro
59b99da36f 🐛 Fix / refactor shared PID (#24673)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2024-01-02 11:20:29 +01:00
Chris Bagwell
a43175aada 🧑‍💻 STM32G0B1RE Pins Debugging (#24748) 2024-01-02 11:20:29 +01:00
Eduard Sukharev
3b98fece67 🩹 Fix MKS TinyBee + MKS MINI 12864 SD blank on write (#24670) 2024-01-02 11:20:29 +01:00
Eduard Sukharev
e6c9776c21 🚸 Sanity check Integrated Babystepping + I2S stream + ESP32 (#24691) 2024-01-02 11:20:29 +01:00
George Fu
7c31b6e518 FYSETC SPIDER KING407 (#24696) 2024-01-02 11:20:29 +01:00
ellensp
08aeec931c BTT SKR Mini E3 V3.0.1 (#24722) 2024-01-02 11:20:29 +01:00
XDA-Bam
17e9faa4b8 ️ Minor planner optimization (#24737) 2024-01-02 11:20:28 +01:00
Arkadiusz Miśkiewicz
c467ab751d 🚸 On pause report "SD printing byte X/Y" (#24709) 2024-01-02 11:20:28 +01:00
Arkadiusz Miśkiewicz
1159cbe0d9 🩹 Report M22 / M23 success / fail (#24706) 2024-01-02 11:20:28 +01:00
Gurmeet Athwal
2a6cc9f343 🚸 M115 spindle/laser (#24681, #24747) 2024-01-02 11:20:28 +01:00
ellensp
b8c3e9df4f 📺 FYSETC Mini 12864 2.1 pins for Creality V4 (#24624) 2024-01-02 11:20:28 +01:00
FBN
2a938002eb 🚸 More automatic MMU2 load (#24750, #24770) 2024-01-02 11:20:28 +01:00
Yuri D'Elia
cc17fbcae4 👷 Array macros to …26 elements (#24789) 2024-01-02 11:20:28 +01:00
Scott Lahteine
a9dad3b2c0 🌐 Some short menu strings 2024-01-02 11:20:28 +01:00
Keith Bennett
b8300aed8a ️ Only Sync Emulated EEPROM Print Counter (#24731) 2024-01-02 11:20:28 +01:00
Giuliano Zaro
668b725cca 🐛 Fix heater timeout PID output (#24682) 2024-01-02 11:20:28 +01:00
Scott Lahteine
33ea1647b1 🧑‍💻 Microsteps to stepper.cpp 2024-01-02 11:20:28 +01:00
hartmannathan
582a5c6dfe 📝 Fix example comment (#24744) 2024-01-02 11:20:28 +01:00
Scott Lahteine
e51a0b4fd0 📝 Fix comment 2024-01-02 11:20:27 +01:00
JoaquinBerrios
24874d7f89 ️ BTT SKR V3.0 / EZ = 480MHz (#24721) 2024-01-02 11:20:27 +01:00
Scott Lahteine
2be53bbc15 🔨 Fix config-labels.py 2024-01-02 11:20:27 +01:00
Scott Lahteine
b36f688851 🔨 Outdent py string 2024-01-02 11:20:27 +01:00
dmitrygribenchuk
e015483d93 🔨 Clean up Python imports (#24736) 2024-01-02 11:20:27 +01:00
ButchMonkey
4732105dd9 🔨 Fix config.ini custom items, and 'all' (#24720) 2024-01-02 11:20:27 +01:00
ButchMonkey
cbc48f165f 🔨 Fix configuration.py with encoding UTF-8 (#24719)
- Opening files with Windows-1252 encoding.
2024-01-02 11:20:27 +01:00
Stephen Hawes
dcf6c735ae Opulo LumenPnP REV04 (#24718) 2024-01-02 11:20:26 +01:00
Keith Bennett
f51ed2fb12 🔨 Update SKR 3 env (#24711) 2024-01-02 11:20:12 +01:00
Scott Lahteine
37aaae242b 📝 Format some comments 2024-01-02 11:20:01 +01:00
EvilGremlin
17eae12bad 🔨 Native USB modified env followup (#24669)
Followup to #24619
2024-01-02 11:20:00 +01:00
Bob Kuhn
2e81c8079a 🐛 Fix UBL regression (#24622)
Fix regression from #24188
2024-01-02 11:20:00 +01:00
Ruedi Steinmann
7f22e95477 🩹 Fix a BUZZ (#24740) 2024-01-02 11:20:00 +01:00
Scott Lahteine
bd175092b6 🔖 Config version 02010200 2024-01-02 11:20:00 +01:00
EvilGremlin
7dfb0046da 🐛 Fix back button (#24694) 2024-01-02 11:20:00 +01:00
Scott Lahteine
d33d47a6ce ✏️ Fix http:// links 2024-01-02 11:20:00 +01:00
Lefteris Garyfalakis
8dabaf86ff ✏️ Fix LCD sleep conditional (#24685) 2024-01-02 11:20:00 +01:00
Miguel Risco-Castillo
c352db3f1e 🩹 Constrain UBL within mesh bounds (#24631)
Fixes #24630
2024-01-02 11:20:00 +01:00
Keith Bennett
1f2b80591c 🚸 Up to 10 Preheat Constants (#24636) 2024-01-02 11:20:00 +01:00
ellensp
f86b79fc9d 🔧 Fix Auto-Fan / Controller-Fan pin conflict check (#24648) 2024-01-02 11:19:59 +01:00
ellensp
afc38a7c6f 🩹 Fix PID debug output (#24647) 2024-01-02 11:19:59 +01:00
Mark
3f17d3cdd5 🐛 Fix Bed Distance Sensor reading (#24649) 2024-01-02 11:19:59 +01:00
Arkadiusz Miśkiewicz
df1eb30d29 M20_TIMESTAMP_SUPPORT (#24679)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2024-01-02 11:19:59 +01:00
EvilGremlin
1aea7d4a2c ♻️ Display sleep minutes, encoder disable option (#24618)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2024-01-02 11:19:59 +01:00
DejitaruJin
372916c8cd 🩹 Fix SainSmart LCD (#24672) 2024-01-02 11:19:59 +01:00
Keith Bennett
90bc3d65f3 🩹 Fix Freeze Feature (#24664) 2024-01-02 11:19:59 +01:00
Lefteris Garyfalakis
e49e3880ee 🔨 Suppressible Creality 4.2.2 warning (#24683) 2024-01-02 11:19:59 +01:00
EvilGremlin
3f40d0a59f Robin Nano v1 CDC (USB mod) (#24619) 2024-01-02 11:19:59 +01:00
Alexey Galakhov
5381f53214 🐛 Fix JyersUI (#24652) 2024-01-02 11:19:58 +01:00
Keith Bennett
878b629f91 🔧 Fix Skew Correction defaults (#24601) 2024-01-02 11:19:58 +01:00
Scott Lahteine
8ac992327c 🎨 Some automated cleanup 2024-01-02 11:19:58 +01:00
Keith Bennett
92bc63822f 📺 Add to MKS UI About Screen (#24610) 2024-01-02 11:19:58 +01:00
Keith Bennett
0f7d7fccd7 🔧 Remove STM32F4 Print Counter Sanity Check (#24605) 2024-01-02 11:19:58 +01:00
Protomosh
e0b1bc8403 🐛 Fix DGUS Reloaded + STM32 (#24600) 2024-01-02 11:19:58 +01:00
Scott Lahteine
f54cafdc76 🧑‍💻 Use spaces indent for Python 2024-01-02 11:19:57 +01:00
Scott Lahteine
37918e1c77 🔨 Misc. schema updates 2024-01-02 11:19:42 +01:00
Graham Reed
c607c12e3a 🔨 Fix LPC1768 automatic upload port (#24599) 2024-01-02 11:19:42 +01:00
Scott Lahteine
003dfec67d 🩹 Fix strtof interpreting a hex value
Bug introduced in #21532
2024-01-02 11:19:42 +01:00
Scott Lahteine
2042df1df4 🔨 Add args to schema.py 2024-01-02 11:19:42 +01:00
Scott Lahteine
8d1f734819 🎨 Fix '…if_chain' Uncrustify option 2024-01-02 11:19:42 +01:00
Scott Lahteine
7a3d3d1a14 🔨 Misc. config py updates 2024-01-02 11:19:42 +01:00
Scott Lahteine
61c63d5b4c 🧑‍💻 Add operator== for C++20 2024-01-02 11:19:41 +01:00
Keith Bennett
4dc731f434 🧑‍💻 Fix UBL Build Mesh preheat items (#24598)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2024-01-02 11:19:41 +01:00
Ivan Kravets
8fec539881 🔨 Fix a PlatformIO debug issue (#24569) 2024-01-02 11:19:41 +01:00
Scott Lahteine
860e466a13 🔨 Update schema export 2024-01-02 11:19:41 +01:00
Sven Soost
6fcdefe31f help 2024-01-02 11:19:11 +01:00
Sven Soost
075d91e518 upped fw version
corrected board type
2024-01-02 10:33:45 +01:00
Sven Soost
7da3d3f4b2 Merge remote-tracking branch 'default/lts-2.1.0' into 2.1---sv 2024-01-02 10:29:39 +01:00
efflicto
31411b121a tweaks 2024-01-02 10:04:54 +01:00
efflicto
a22d2f7bb1 tweaks 2023-12-28 18:48:43 +01:00
Scott Lahteine
591b856796 👔 Update .gitignore 2023-12-27 15:31:33 -06:00
Scott Lahteine
ed46f6c675 👔 Update .gitignore 2023-12-27 15:30:31 -06:00
efflicto
c197c1c9a0 tweaks 2023-12-26 22:59:12 +01:00
efflicto
6bcbcb17da Tweaks 2023-12-26 17:11:15 +01:00
Scott Lahteine
815c9163ce 🩹 Fix LONG_FILENAME_WRITE_SUPPORT typo 2023-12-11 15:42:30 -06:00
Scott Lahteine
68dbe13f85 🔨 Specify versions in INI 2023-12-11 15:42:30 -06:00
Scott Lahteine
4caa32b6dd 🔖 Version 2.1.1.1 2023-12-11 15:42:26 -06:00
Scott Lahteine
e829fbad70 🔨 Specify versions in INI 2023-12-08 21:42:44 -06:00
efflicto
b062149058 fix 2023-12-01 02:36:26 +01:00
efflicto
33fbcc9d1b fixes 2023-12-01 01:46:56 +01:00
efflicto
7c8411beb9 pid tunning 2023-12-01 01:28:34 +01:00
efflicto
6708be8912 tweaks 2023-11-30 20:24:50 +01:00
efflicto
64a3a22b29 Fixes and changes for BL and other stuff 2023-11-30 14:01:59 +01:00
efflicto
db80c683fa Merge remote-tracking branch 'main/2.1---sv' into 2.1---sv 2023-11-30 13:35:08 +01:00
efflicto
e730f6ba46 chagnes and tweaks, enabled BL 2023-11-30 13:00:41 +01:00
3a70ee72e5 fixed extruder 2023-11-23 14:01:51 +01:00
sv
38c89b749a Added homing parameters 2023-11-17 10:16:28 +01:00
c5db863a4e Remeasured extruder steps after extruder metal replacement 2023-11-16 19:53:06 +00:00
efflicto
f42fe57a86 revert MULTI_VOLUME 2023-11-12 14:02:40 +01:00
efflicto
4498338a2e tweaks 2023-11-12 13:55:15 +01:00
efflicto
64d7ebc11d tweaks 2023-11-12 13:44:38 +01:00
efflicto
d0cf0f2d75 fixes for fans 2023-11-11 02:51:41 +01:00
efflicto
7ea91c9f65 fix 2023-11-11 01:35:33 +01:00
efflicto
2768abf7da Merge branch '2.1---sv' of https://git.soost.dev/me/Marlin into 2.1---sv 2023-11-11 01:35:01 +01:00
efflicto
d9184ee9f5 Bootscreen added
Adjusted bed PID
2023-11-11 01:34:17 +01:00
efflicto
fa28fff246 Changed PID after tuning 2023-11-11 00:27:03 +01:00
efflicto
a8fa1b807b disabled HYBRID_THRESHOLD 2023-11-10 23:56:28 +01:00
efflicto
ca845e11a5 Added host communication
Corrected feeding rate
2023-11-10 23:34:57 +01:00
efflicto
0abe6975e7 Fixed fan related stuff 2023-11-10 22:38:05 +01:00
efflicto
d2173a58a5 enabled lcd_bed_leveling 2023-11-10 21:13:59 +01:00
efflicto
549ed9e5e5 switched back to en 2023-11-10 20:51:54 +01:00
efflicto
6ba8846429 fixes for lin_advance & version 2023-11-10 20:38:24 +01:00
efflicto
1c96d85991 Initial Setup 2023-11-10 20:26:08 +01:00
sv
200f20b5e7 Initial commit 2023-11-09 01:59:30 +01:00
Scott Lahteine
60cd1ecb69 🩹 Fix G33 output
See #26299
2023-10-07 01:08:40 -05:00
Scott Lahteine
dfa748cb96 🔨 PlatformIO 6 compatibility 2023-07-20 13:44:06 -05:00
Scott Lahteine
b412a1a03e 🔖 Marlin 2.1.0.1 2023-07-20 13:43:19 -05:00
Scott Lahteine
8fd6f9a2b0 🔨 PlatformIO 6 compatibility 2023-07-20 13:43:19 -05:00
Scott Lahteine
09d0b4d152 🔖 Version 2.1.2.1 2023-07-01 19:19:17 -05:00
Giuliano Zaro
862d0e9d5d 🐛 Fix G2/G3 limiting_speed (#25988) 2023-07-01 19:19:17 -05:00
Scott Lahteine
cbdc01ef1a 🩹 Prevent Z drop with G28 X/Y 2023-05-29 19:23:24 -05:00
Scott Lahteine
2dffa3994d 🩹 Fix TFT LVGL compile error (#25865)
Fixes regression from #24302
2023-05-21 08:43:15 -05:00
Scott Lahteine
09247e7ea9 🚸 Improve EEPROM validation (#25860) 2023-05-19 23:31:15 -05:00
Scott Lahteine
62a7bba225 🩹 Fix null pwm_details 2023-05-18 19:53:15 -05:00
Scott Lahteine
ce38260dfb 🩹 Improve edit menu rounding 2023-05-17 00:33:18 -05:00
Scott Lahteine
3ad9c0b98c 🧑‍💻 ftdi_language 2023-05-17 00:33:18 -05:00
Scott Lahteine
a0fd588797 📌 TH3D EZBoard SD_DETECT_PIN 27 2023-05-17 00:33:18 -05:00
Chris Bagwell
876f996691 🔧 Fix SHAPING_MIN_FREQ check (#25358) 2023-05-17 00:33:18 -05:00
Scott Lahteine
dba521a9fb 🧑‍💻 M43 updates 2023-05-17 00:33:18 -05:00
Giuliano Zaro
50ad323567 🔧 Move SOFT_PWM_SCALE fallback to cpp (#25800)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2023-05-17 00:33:18 -05:00
Scott Lahteine
03149b973e 🚸 Faster default Marlin feedrate 2023-05-17 00:33:18 -05:00
ellensp
6e91f3608b 🔨 MKS Robin2 PIO Env (#25792) 2023-05-17 00:33:18 -05:00
Scott Lahteine
0708275c6a 🎨 Move G28O inside ProUI 2023-05-17 00:33:18 -05:00
Scott Mikutsky
a2040bae21 🐛 Fix STM32 USB disconnect behavior (#25762) 2023-05-17 00:33:18 -05:00
Scott Lahteine
b6c27fbbdb 🔧 Fix X2/Y2 axis pins check 2023-05-17 00:33:18 -05:00
Scott Lahteine
b2acd51bc2 🔧 Move MMU section 2023-05-17 00:33:18 -05:00
Scott Lahteine
6d46a4924c 🩹 Fix TFT sanity error 2023-05-17 00:33:18 -05:00
Scott Lahteine
d959e3b0c4 🧑‍💻 Use NUM_AXIS_ARRAY 2023-05-17 00:33:18 -05:00
Scott Lahteine
f48467b2e3 🔨 Servo Timer 1 with STM32F103RC_fysetc (#25741) 2023-05-17 00:33:18 -05:00
Scott Lahteine
a9c476c55e 🔧 Update config.ini script 2023-05-17 00:33:18 -05:00
Scott Lahteine
61d1ce7d2e 🧑‍💻 Change HAL_PATH macro for easier HAL relocation (#25743) 2023-05-17 00:33:18 -05:00
Scott Lahteine
3c9e8e1e60 🔧 Extra axis endstop defaults 2023-05-17 00:33:18 -05:00
Anson Liu
d5548556d3 🔨 Prevent SlowSoftWire + Wire name conflict (#25707) 2023-05-17 00:33:18 -05:00
Scott Lahteine
44b06d7561 📝 Developer note in boards.h 2023-05-17 00:33:18 -05:00
Scott Lahteine
ffe47a0197 🚸 Improve PAUSE_PROBE_DEPLOY_WHEN_TRIGGERED (#25681) 2023-05-17 00:33:18 -05:00
Scott Lahteine
6a12937dec 🩹 Fix UBL safe measure move with extra axes
Followup to 7e79fc5b
2023-05-17 00:33:18 -05:00
Alexey D. Filimonov
00c96dc3cd 🎨 Clean up TFT Color UI display items (#25712)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2023-05-17 00:33:18 -05:00
Keith Bennett
7fb92f4e64 🚸 Permit G38 with Core (#25713) 2023-05-17 00:33:18 -05:00
Jay Robson
a93b3c1222 🐛 Fix G38 with Z, support 9 axes (#25691)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2023-05-17 00:33:18 -05:00
Keith Bennett
d75e016f3a 🔧 Check renamed LIN_ADVANCE_K (#25710) 2023-05-17 00:33:18 -05:00
ellensp
5426759a37 🩹 Correctly add JSON to mc.zip (#25706) 2023-05-17 00:33:18 -05:00
Scott Lahteine
a5b5db4819 🧑‍💻 Minor SpindleLaser::set_enabled tweak 2023-05-17 00:33:18 -05:00
Alexey D. Filimonov
15671a46d2 🩹 Fix Spindle/Laser ENA pin test (#25622) 2023-05-17 00:33:18 -05:00
Bob Kuhn
f62d47a165 🩹 Fix laser with no PWM compile (#25290) 2023-05-17 00:33:18 -05:00
Dennis Lawler
5b8be446a0 🚸 Echo G30 out-of-bounds (#25671) 2023-05-17 00:33:18 -05:00
Giuliano Zaro
df7d13a4d0 🩹 Bail on 'mc.zip' write error (#25695)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2023-05-17 00:33:18 -05:00
ellensp
8592035474 🔨 Fix, clean up STM32F1 envs (#25697)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2023-05-17 00:33:18 -05:00
Giuliano Zaro
5a3806633a 🐛 Fix Configuration Embedding (#25688) 2023-05-17 00:33:18 -05:00
ellensp
0ece7ca66d 🩹 Status / Host Prompt followup (#25720)
Followup to #25679

Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2023-05-17 00:33:17 -05:00
Scott Lahteine
2fb47afa4a 🧑‍💻 HostUI::continue_prompt method 2023-05-17 00:33:17 -05:00
Scott Lahteine
d2e84e8446 🧑‍💻 Status Message cleanup 2023-05-17 00:33:17 -05:00
Scott Lahteine
3340491f90 🧑‍💻 JyersUI code cleanup 2023-05-17 00:33:17 -05:00
Scott Lahteine
d3991011e4 🧑‍💻 Apply simplified ?: 2023-05-17 00:33:17 -05:00
Scott Lahteine
02178bdcaf 🔧 Trigorilla / Chiron updates
Followup to c3f34e4e
2023-05-17 00:33:17 -05:00
Scott Lahteine
8bc6f7707d 🔨 Improve runout script check 2023-05-17 00:33:17 -05:00
Scott Lahteine
141cfdde2c 🩹 Fix AUTOFAN_CASE
Followup to #25554
2023-05-17 00:33:17 -05:00
Scott Lahteine
4781d57912 🔧 Move FIL_RUNOUT_PIN for Chiron + GLCD 2023-05-17 00:33:17 -05:00
Scott Lahteine
6ebbfa832c 🧑‍💻 Clarify G28 R / R0 2023-05-17 00:33:17 -05:00
Scott Lahteine
cbbcc01b47 🚸 Minor M43 improvements 2023-05-17 00:33:17 -05:00
David Fries
b5ccd65fb5 ️ Skip a redundant BLTouch::command (#25656) 2023-05-17 00:33:17 -05:00
Scott Lahteine
cf1f56f132 🔧 Move TFT sanity checks 2023-05-17 00:33:17 -05:00
Scott Lahteine
1e2de0e036 🎨 Detab some build files 2023-05-17 00:33:17 -05:00
Scott Lahteine
cf28f48481 🎨 Apply const (#25643) 2023-05-17 00:33:17 -05:00
ellensp
69e8f2ee99 🚸 Support CoreXY without Z (#25630) 2023-05-17 00:33:17 -05:00
Scott Lahteine
2be9f98b9f 📝 Update Ender # labels 2023-05-17 00:33:17 -05:00
Scott Lahteine
c2c1ff8da9 🧑‍💻 Update pinsformat.js 2023-05-17 00:33:17 -05:00
Scott Lahteine
e24087478d 🐛 Ensure root for 'M503 C' 2023-05-17 00:33:17 -05:00
Giuliano Zaro
641295032f 🌐 Update Italian language (#25587) 2023-05-17 00:33:17 -05:00
Scott Lahteine
466ce0b8d2 🩹 Fix displayed mix percentages 2023-05-17 00:33:17 -05:00
Scott Lahteine
59a2cb032f 🩹 Fix Ender-3 V2 with no fan 2023-05-17 00:33:17 -05:00
Chris Pepper
85e28f3123 🔨 MarlinSimUI updates (#25589) 2023-05-17 00:33:17 -05:00
John Unland
bbb75ab9b3 🔨 Improve Docker local tests support (#25583) 2023-05-17 00:33:17 -05:00
Andrew
637cd952ca 🎨 Remove unused ProUI : UBLValidMesh (#25591) 2023-05-16 19:54:19 -05:00
Scott Lahteine
d04b3ff802 🔧 Fix up WiFi options (#25586) 2023-05-16 19:54:19 -05:00
Scott Lahteine
51b33ccf90 🔨 INI Updates
Co-Authored-By: Martin Turski <turningtides@outlook.de>
2023-05-16 19:54:19 -05:00
Eduard Sukharev
f452df047d 🐛 Fix M23 long filename support (#25540) 2023-05-16 19:53:15 -05:00
Scott Lahteine
cd0bfcd3f2 🧑‍💻 Auto Fan / Cooler Fan updates (#25554) 2023-05-16 19:53:15 -05:00
Keith Bennett
bcf30988cb 🩹 Fix Touch Calibration first point (#25298) 2023-05-16 19:53:15 -05:00
Scott Lahteine
a40e17d94b 🎨 Timer tweaks 2023-05-16 19:53:15 -05:00
ellensp
d66f4baba6 🩹 Fix Chitu3D V6 default probe pin (#25552) 2023-05-16 19:53:15 -05:00
Scott Lahteine
26cb2d5b08 🩹 Update TRONXY_V10 SPI_FLASH pins 2023-05-16 19:53:15 -05:00
Scott Lahteine
376e940ae9 🎨 LPC_SOFTWARE_SPI => SOFTWARE_SPI
Co-Authored-By: Martin Turski <turningtides@outlook.de>
2023-05-16 19:53:15 -05:00
Scott Lahteine
ebe3fe0818 🎨 Pins header comments
Co-Authored-By: Martin Turski <turningtides@outlook.de>
2023-05-16 19:53:15 -05:00
Martin Turski
0d7e30bcd8 🩹 Reset touch screen calibration on failure (#25334)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2023-05-16 19:53:15 -05:00
Scott Lahteine
accfab85a2 🎨 calibration_stage => stage 2023-05-16 19:53:15 -05:00
Scott Lahteine
d68ad9e0b1 🩹 Fix a serial_ternary 2023-05-16 19:53:15 -05:00
ellensp
70c8859e7f 🩹 Fix Ender 2 stock LCD (#25538) 2023-05-16 19:53:15 -05:00
George Fu
980fba810d 🐛 Fix FYSETC Cheetah v2.0 Servo/Probe pins (#24635)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2023-05-16 19:53:15 -05:00
Scott Lahteine
d0bdb9c281 ️ Misc. optimizations 2023-05-16 19:53:15 -05:00
Davide Rombolà
821d7969f4 🎨 Suppress warning (#25529) 2023-05-16 19:53:15 -05:00
Scott Lahteine
dcbba65962 🧑‍💻 More IntelliSense-friendly declares 2023-05-16 19:53:15 -05:00
Michael Hill
5c3dd467c7 Sovol v1.3.1 (Sovol SV06) (#25267) 2023-05-16 19:53:15 -05:00
dwzg
e50980e32b 🩹 Fix DWIN MarlinUI Fan/E/XY (#25502) 2023-05-16 19:53:15 -05:00
Scott Lahteine
c3b037e0f3 🩹 Fan Menu / Status fixes
Followup to #21888
2023-05-16 19:53:15 -05:00
Abdullah YILMAZ
71e6f701f3 🌐 Update Turkish language (#25447) 2023-05-16 19:53:15 -05:00
Giuliano Zaro
7f9f922d84 🌐 Update Italian language (#25454) 2023-05-16 19:53:14 -05:00
Scott Lahteine
197b3198b5 📝 Fix a comment 2023-05-16 19:53:14 -05:00
jamespearson04
e03dfb8ca1 🐛 Fix UBL 'G29 J' mesh tilt (#25453)
Fix regression from #24214
2023-05-16 19:53:14 -05:00
Marcio T
cba3b2c527 🚸 Improve CocoaPress Touch UI (#25446) 2023-05-16 19:53:14 -05:00
ellensp
a9a6d1f716 📝 Link to archived RA Control Panel page (#25424) 2023-05-16 19:53:14 -05:00
Giuliano Zaro
61ccd4599e 🌐 Update Italian language (#25309) 2023-05-16 19:53:14 -05:00
Roman Moravčík
bab847809c 🌐 Update Slovak language (#25305) 2023-05-16 19:53:14 -05:00
ellensp
011087731a 🧑‍💻 Add IA_CREALITY CI test (#25434) 2023-05-16 19:53:14 -05:00
Scott Lahteine
b7ee06bb29 🔨 Use 'build_src_filter' 2023-05-16 19:52:39 -05:00
Scott Lahteine
5f8df0aa21 🔨 Fix thread-unsafe deque iteration 2023-05-16 15:50:05 -05:00
ellensp
b338159f9d 🐛 Fix MKS Robin Nano 1.3 F4 pin collision (#25838) 2023-05-16 13:56:13 -05:00
ellensp
2399a24466 🔧 Update thermocouple 2 pin sanity check (#25627) 2023-04-10 05:18:36 -05:00
ellensp
d05acb7626 🩹 Fix MARLIN_F446Zx_TRONXY variant (#25659)
Followup to 9be1554f
2023-04-10 04:20:48 -05:00
Chris Pepper
81d4f8f26a 🩹 Fix SD partitionTable packing (#25648) 2023-04-10 04:20:48 -05:00
Jason Smith
b0c3db67f0 🎨 Suppress M122 sign warning (#25613) 2023-04-10 04:18:49 -05:00
Eduard Sukharev
ea6430ddf6 🐛 Fix long filename read/report (#25509) 2023-04-07 18:14:07 -05:00
John Robertson
ccb4d11696 🔧 Sanity-check PRINTCOUNTER_SAVE_INTERVAL + ESP32 I2S Exp (#25527)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2023-04-07 18:12:07 -05:00
Keith Bennett
176ecf4f82 🐛 Fix Anet ET4 SD_SS_PIN (#25492) 2023-04-07 18:10:46 -05:00
Scott Lahteine
3ec5d6da6e ️ Exit from ISR on AVR already does sei
Co-Authored-By: tombrazier <68918209+tombrazier@users.noreply.github.com>
2023-04-07 18:10:45 -05:00
Keith Bennett
75aa880b63 BTT Octopus Max EZ 1.0, SKR 3.0 / 3.0 EZ (#25387, #25495, #25535) 2023-04-07 18:10:45 -05:00
Sion Williams
a50ff5d7c7 🔨 VSCode + Devcontainer support (#22420) 2023-04-07 17:56:54 -05:00
alextrical
504f09f944 🐛 Fix Flash EEPROM for STM32G0B1CB (#25469) 2023-04-07 17:55:46 -05:00
Hans-Christian Ebke
aae1102c54 🐛 Fix apply_power for SPINDLE_SERVO (#25465) 2023-04-07 17:55:46 -05:00
tombrazier
a40ff1357e 🐛 Fix LA retract/feedrate edge case (#25445)
Followup to #25442
2023-04-07 17:53:06 -05:00
Scott Lahteine
dfd1fb736d 🔨 Improve config.ini example fetch 2023-04-07 17:50:00 -05:00
Scott Lahteine
6d8c9f6ed1 🌐 Regenerate language data 2023-04-07 17:50:00 -05:00
Scott Lahteine
db0c8b31f7 🧑‍💻 Script to make non-accented languages 2023-04-07 17:50:00 -05:00
Scott Lahteine
0e3d951872 🔨 Update font scripts 2023-04-07 17:46:21 -05:00
ellensp
22e6365b2f 🔧 Fix Sensorless Probe sanity-check err (#25417) 2023-04-07 17:45:43 -05:00
tombrazier
abd710b5d6 🐛 Fix Linear Advance E position tracking (#25442)
Fix regression from #24951
2023-04-07 17:44:39 -05:00
tombrazier
d5c312cff0 🐛 Fix ISR_SHAPING_LOOP_CYCLES (#25335) 2023-04-07 17:41:52 -05:00
ellensp
64f9c17f3b 🔨 Fix 'step' type in createTemperatureLookupMarlin.py (#25455) 2023-04-07 17:41:52 -05:00
Keith Bennett
bac334c74e 🔨 Fix env STM32G0B1RE_btt, add …_manta_btt (#25431) 2023-04-07 17:36:33 -05:00
Scott Lahteine
071d54ec70 🎨 Use LIMIT macro 2023-04-07 17:35:39 -05:00
Guðni Már Gilbert
c4ac8a2573 ️ Reduce edit_screen code size (#25420) 2023-04-07 17:35:39 -05:00
Scott Lahteine
53698b8f62 🔧 Fix Einsy Rambo TMC driver check 2023-04-07 17:35:39 -05:00
Scott Lahteine
d5d497f2c5 🔨 Fix marlin_custom.* without lib_deps 2023-04-07 17:34:13 -05:00
tombrazier
e65e38afaf 🐛 Fix AVR maths used by Stepper (#25338) 2023-04-07 17:32:30 -05:00
ellensp
9d56b7f073 🔨 Encrypt some MKS Robin (#25349) 2023-04-07 17:29:53 -05:00
Scott Lahteine
1748abde0a 🧑‍💻 Fix preheat tests (nested macro limit ~256)
Followup to #25407
2023-04-07 17:28:37 -05:00
ellensp
7afd823aa5 🔧 Sanity-check hotend max / preheat temps (#25407)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2023-04-07 17:28:37 -05:00
ellensp
4a1cbffbe5 📺 Update Re-ARM VIKI2 SPI pins (#25411) 2023-04-07 17:28:37 -05:00
Scott Lahteine
94780bbb54 🚸 Interruptible PLR (#25395) 2023-04-07 17:28:37 -05:00
ellensp
838df37efd 🐛 Fix FastPWM calculations (#25343)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2023-04-07 17:28:37 -05:00
Trevin Small
7a8c9847e6 ✏️ Fix README typo (#25388) 2023-04-07 17:28:37 -05:00
Scott Lahteine
50f4e6b270 🎨 Tweak VALIDATE_MESH_TILT 2023-04-07 17:22:46 -05:00
Frederik Kemner
db8f501dfe 🚸 SPI endstops for X/Y Dual and Core (#25371) 2023-04-07 17:22:46 -05:00
Radek
255bc3c90c 📝 Fix BTT_MINI_12864_V1 comment (#25366) 2023-04-07 17:19:49 -05:00
Scott Lahteine
38c4c7f4b1 🔨 Suppress native build warnings 2023-04-07 17:18:17 -05:00
EvilGremlin
fecb66779a 🔨 Adjust INI comments (#25183) 2023-04-07 17:18:17 -05:00
Scott Lahteine
f7485cea60 🩹 Extra axis min home with Delta Sensorless Probe 2023-04-07 17:18:17 -05:00
Scott Lahteine
a49d286118 🩹 Extra axes for Tool Change 2023-04-07 17:18:17 -05:00
Scott Lahteine
59c8857564 🩹 Various simple fixes 2023-04-07 17:18:17 -05:00
Scott Lahteine
6e38ec3a3e 🩹 Safe Bed Leveling updates 2023-04-07 17:18:17 -05:00
Scott Lahteine
93c61b1ba8 🩹 Misc. extra axis updates 2023-04-07 17:17:25 -05:00
Scott Lahteine
87d7449952 🩹 Use 'M205 D' when 'B' is an axis 2023-04-07 17:15:17 -05:00
Scott Lahteine
98c9ecd5c5 🔧 Add a test for extra axes 2023-04-07 17:01:32 -05:00
Keith Bennett
8976bc5605 BigTreeTech Manta M4P, M5P, M8P V1.0 / 1.1, E3 EZ (#25001) 2023-04-07 17:01:32 -05:00
Victor Oliveira
e3cff7a28a 🧑‍💻 General 'MediaFile' type alias (#24424) 2023-04-07 17:01:32 -05:00
vyacheslav-shubin
4000db2be3 🧑‍💻 Add SD Card 'hide' method for dev usage (#22425) 2023-04-07 17:01:32 -05:00
Keith Bennett
f9621e2e8e 📝 Fix Z*_ENDSTOP_ADJUSTMENT comments (#25295) 2023-04-07 17:01:32 -05:00
kg333
1a184e5a82 📺 Melzi v4 with BTT SKR Mini E3 (#25321) 2023-04-07 17:01:32 -05:00
Martin Turski
6e427350db 🔨 Fix test build path with spaces (#25329) 2023-04-07 17:01:32 -05:00
Bob Kuhn
79e23752ae 🔧 Fix SD sorting sanity checks (#25318) 2023-04-07 17:01:32 -05:00
Scott Lahteine
858de4ff3f 🔧 Fix build with no Y axis (#25311) 2023-04-07 16:49:35 -05:00
Bob Kuhn
bac0b35b85 🩹 Fix G61 axis parameters with no offset (#25312) 2023-04-07 16:48:57 -05:00
Darren Garnier
60f3857662 🔨 Fix config.ini URL fetch (#25313) 2023-04-07 16:46:17 -05:00
avionix-g
b3c004eed9 🐛 Fix MKS board Ultipanel support (#25278) 2023-04-07 16:44:22 -05:00
xBiohazardx
9e755a25c7 ✏️ Fix probe invert flag (#25282) 2023-04-07 16:43:19 -05:00
Scott Lahteine
0d831183ba 🔧 Refine Input Shaping check (#25280) 2023-04-07 16:39:22 -05:00
Scott Lahteine
0ed083aba8 SDIO retry, hsd clock, etc. 2023-04-07 16:33:39 -05:00
Scott Lahteine
2c39f84888 🔧 Overridable Stepper EN init 2023-04-07 16:33:15 -05:00
Bob Kuhn
b7e421610f 🐛 Fix Ender-2 Stock Display with Melzi (#25258) 2023-04-07 16:30:56 -05:00
MarkMan0
536e8a7d1e 🐛 Fix, Refactor PID scaling (#25096) 2023-04-07 16:28:42 -05:00
John Robertson
8c3425811a 🐛 Fix potential I2S buffer overwrite (#25113) 2023-04-07 16:26:13 -05:00
Scott Lahteine
dd892c6e75 🎨 Heading cleanup 2023-04-07 16:25:33 -05:00
Scott Lahteine
947a9cb000 🎨 Language / menu cleanup 2023-04-07 16:25:33 -05:00
Scott Lahteine
62487c67b6 ✏️ ProUI followup 2023-04-07 16:25:33 -05:00
Scott Lahteine
6cf085d724 🔧 Added MOTHERBOARD error text 2023-04-07 16:20:37 -05:00
Scott Lahteine
c3c6432be4 🎨 Misc. formatting 2023-04-07 16:16:28 -05:00
Scott Lahteine
e7c4a86830 🧑‍💻 Fix D5 warning 2023-01-23 01:36:10 -06:00
Scott Lahteine
dd518f0ce1 🐛 Fix homing_needed_error 2023-01-23 01:36:10 -06:00
Scott Lahteine
d62119ea5b 🔧 Input Shaping sanity checks 2023-01-12 05:24:27 -06:00
Scott Lahteine
71cb723746 🩹 Fix Sim with USE_WATCHDOG disabled 2023-01-12 05:24:27 -06:00
Scott Lahteine
58d94f407b 🔨 Improve config.ini parser 2023-01-12 05:24:17 -06:00
Alex Z
82f7c373c5 🐛 Fix Chitu V6 Z_STOP_PIN (#25227) 2023-01-12 05:24:06 -06:00
Miguel Risco-Castillo
1e9e92368f 🚸 ProUI updates (#25176) 2023-01-12 05:22:17 -06:00
Sebastien BLAISOT
9a22c21b5b 🐛 Fix Neopixel 1 startup (#25203) 2023-01-12 05:20:53 -06:00
Vlad Popescu
885b553416 🩹 Fix E3V2 MarlinUI XYZ frame (#25206) 2023-01-12 05:20:27 -06:00
Richard Layton
9ff2818ce4 📝 Linux Sim apt-get line (#25208) 2023-01-12 05:20:22 -06:00
Richard Layton
5ff467c8c0 📝 More native.ini docs (#25201) 2023-01-12 05:20:02 -06:00
ellensp
f16fdd7814 🩹 Update MKS_GEN_13 MOSFET pins (#25126) 2023-01-12 05:20:02 -06:00
ellensp
e872b575f8 🩹 Replace pow() with _BV() (#25186) 2023-01-12 05:20:02 -06:00
Mike Bignell
8b5014f264 🩹 Fix missing IS_MELZI (#25190) 2023-01-12 05:20:02 -06:00
Ashley 'DrToxic' Devine
9ff1c30745 🎨 Misc. cleanup (#25194)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2023-01-12 05:20:02 -06:00
Vovodroid
a286daf697 🚸 Attach USB media (#25120) 2023-01-12 05:20:02 -06:00
Scott Lahteine
9383c2aa76 🧑‍💻 Add Temperature::is_above_target 2023-01-12 05:20:02 -06:00
Scott Lahteine
58e9dc0cbf 🎨 Rename *_temp_error to *temp_error 2023-01-12 05:20:02 -06:00
Timothy Hoogland
5e69a3dbf4 🩹 Remove extraneous EZBoard V1 autofans (#25182) 2023-01-03 18:53:19 -06:00
Scott Lahteine
c990a35bb0 🎨 Misc. IS cleanup 2023-01-03 04:20:20 -06:00
Giuliano Zaro
f2017d4111 🚸 MarlinUI edit steps/mm to 2 decimal places (#25144) 2023-01-03 04:20:20 -06:00
ellensp
c5f95bfe97 🧑‍💻 Fix type warning (#25149) 2023-01-03 04:20:20 -06:00
ellensp
f13d7f27d1 🔨 FILAMENT_RUNOUT_SCRIPT sanity check (#25150) 2023-01-03 04:20:20 -06:00
Lukas Erlacher
b1099b1c65 🔧 Add H8 to Creality 4.2.2 stepper warning (#25154) 2023-01-03 04:20:20 -06:00
Lukas Erlacher
44e20d2d6a 🚸 Z Servo Probe is HAS_STOWABLE_PROBE (#25158) 2023-01-03 04:20:20 -06:00
Timothy Hoogland
c54c8c2254 🩹 Remove extraneous EZBoard V2 autofans (#25166) 2023-01-03 04:20:20 -06:00
Scott Lahteine
bcb0a370a5 🚸 Hide IS menu while busy 2023-01-03 04:20:20 -06:00
Vlad Popescu
da43218d76 🐛 Avoid lambda for menu items (#25169) 2023-01-03 04:20:20 -06:00
Stefan Kalscheuer
d71a60a14b 🐛 Fix Mesh Bed Leveling Z correction (#25122) 2023-01-03 04:20:15 -06:00
Keith Bennett
246f001521 📝 Fix Configs URL (#25167) 2022-12-30 21:06:35 -06:00
Scott Lahteine
a039081728 🧑‍💻 Fix ONBOARD_FLASH_SIZE 2022-12-20 21:15:14 -06:00
607 changed files with 51583 additions and 29422 deletions

29
.devcontainer/Dockerfile Normal file
View File

@@ -0,0 +1,29 @@
# See here for image contents: https://github.com/microsoft/vscode-dev-containers/tree/v0.187.0/containers/python-3/.devcontainer/base.Dockerfile
# [Choice] Python version: 3, 3.9, 3.8, 3.7, 3.6
ARG VARIANT="3.9.0-buster"
FROM python:${VARIANT}
# [Option] Install Node.js
ARG INSTALL_NODE="true"
ARG NODE_VERSION="lts/*"
RUN if [ "${INSTALL_NODE}" = "true" ]; then su vscode -c "umask 0002 && . /usr/local/share/nvm/nvm.sh && nvm install ${NODE_VERSION} 2>&1"; fi
# [Optional] If your pip requirements rarely change, uncomment this section to add them to the image.
# COPY requirements.txt /tmp/pip-tmp/
# RUN pip3 --disable-pip-version-check --no-cache-dir install -r /tmp/pip-tmp/requirements.txt \
# && rm -rf /tmp/pip-tmp
# [Optional] Uncomment this section to install additional OS packages.
# RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \
# && apt-get -y install --no-install-recommends <your-package-list-here>
# [Optional] Uncomment this line to install global node packages.
# RUN su vscode -c "source /usr/local/share/nvm/nvm.sh && npm install -g <your-package-here>" 2>&1
RUN pip install -U https://github.com/platformio/platformio-core/archive/develop.zip
RUN platformio update
# To get the test platforms
RUN pip install PyYaml
#ENV PATH /code/buildroot/bin/:/code/buildroot/tests/:${PATH}

View File

@@ -0,0 +1,51 @@
// For format details, see https://aka.ms/devcontainer.json. For config options, see the README at:
// https://github.com/microsoft/vscode-dev-containers/tree/v0.187.0/containers/python-3
{
"name": "Python 3",
"build": {
"dockerfile": "Dockerfile",
"context": "..",
"args": {
// Update 'VARIANT' to pick a Python version: 3, 3.6, 3.7, 3.8, 3.9
"VARIANT": "3.9.0-buster",
// Options
"INSTALL_NODE": "false",
"NODE_VERSION": "lts/*"
}
},
// Set *default* container specific settings.json values on container create.
"settings": {
"python.pythonPath": "/usr/local/bin/python",
"python.languageServer": "Pylance",
"python.linting.enabled": true,
"python.linting.pylintEnabled": true,
"python.formatting.autopep8Path": "/usr/local/py-utils/bin/autopep8",
"python.formatting.blackPath": "/usr/local/py-utils/bin/black",
"python.formatting.yapfPath": "/usr/local/py-utils/bin/yapf",
"python.linting.banditPath": "/usr/local/py-utils/bin/bandit",
"python.linting.flake8Path": "/usr/local/py-utils/bin/flake8",
"python.linting.mypyPath": "/usr/local/py-utils/bin/mypy",
"python.linting.pycodestylePath": "/usr/local/py-utils/bin/pycodestyle",
"python.linting.pydocstylePath": "/usr/local/py-utils/bin/pydocstyle",
"python.linting.pylintPath": "/usr/local/py-utils/bin/pylint"
},
// Add the IDs of extensions you want installed when the container is created.
"extensions": [
"ms-python.python",
"ms-python.vscode-pylance",
"platformio.platformio-ide",
"marlinfirmware.auto-build",
"editorconfig.editorconfig"
],
// Use 'forwardPorts' to make a list of ports inside the container available locally.
// "forwardPorts": [],
// Use 'postCreateCommand' to run commands after the container is created.
// "postCreateCommand": "pip3 install --user -r requirements.txt",
// Comment out connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root.
// "remoteUser": "vscode"
}

70
.gitignore vendored
View File

@@ -1,6 +1,6 @@
#
# Marlin 3D Printer Firmware
# Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
# Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
#
# Based on Sprinter and grbl.
# Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
@@ -21,35 +21,24 @@
# Generated files
_Version.h
bdf2u8g
bdf2u8g.exe
genpages.exe
bdf2u8g.exe
genpages.exe
marlin_config.json
mczip.h
language*.csv
out-csv/
out-language/
*.gen
*.sublime-workspace
#
# OS
#
applet/
.DS_Store
#
# Misc
#
*~
*.orig
*.rej
*.bak
*.idea
*.i
*.ii
*.swp
tags
#
# C++
#
# Compiled Object files
# Compiled C++ Object files
# Compiled C++ Object files
*.slo
*.lo
*.o
@@ -80,10 +69,8 @@ tags
*.out
*.app
#
# C
#
# Object files
# Compiled C Object files
# Compiled C Object files
*.o
*.ko
*.obj
@@ -143,14 +130,17 @@ vc-fileutils.settings
.vscode/*
!.vscode/extensions.json
#Simulation
# Simulation files
# Simulation files
imgui.ini
eeprom.dat
spi_flash.bin
fs.img
fs.img
#cmake
# CMake
CMakeLists.txt
!buildroot/share/cmake/CMakeLists.txt
src/CMakeLists.txt
CMakeListsPrivate.txt
build/
@@ -170,3 +160,29 @@ __pycache__
# IOLogger logs
*_log.csv
# Misc.
*~
*.orig
*.rej
*.bak
*.idea
*.i
*.ii
*.swp
tags
*.logs
*.bak
# Misc.
*~
*.orig
*.rej
*.bak
*.idea
*.i
*.ii
*.swp
tags
*.logs
*.bak

View File

@@ -1,11 +1,16 @@
SCRIPTS_DIR := buildroot/share/scripts
CONTAINER_RT_BIN := docker
CONTAINER_RT_OPTS := --rm -v $(PWD):/code -v platformio-cache:/root/.platformio
CONTAINER_IMAGE := marlin-dev
help:
@echo "Tasks for local development:"
@echo "* tests-single-ci: Run a single test from inside the CI"
@echo "* tests-single-local: Run a single test locally"
@echo "* tests-single-local-docker: Run a single test locally, using docker-compose"
@echo "* tests-single-local-docker: Run a single test locally, using docker"
@echo "* tests-all-local: Run all tests locally"
@echo "* tests-all-local-docker: Run all tests locally, using docker-compose"
@echo "* setup-local-docker: Setup local docker-compose"
@echo "* tests-all-local-docker: Run all tests locally, using docker"
@echo "* setup-local-docker: Build the local docker image"
@echo ""
@echo "Options for testing:"
@echo " TEST_TARGET Set when running tests-single-*, to select the"
@@ -34,19 +39,21 @@ tests-single-local:
tests-single-local-docker:
@if ! test -n "$(TEST_TARGET)" ; then echo "***ERROR*** Set TEST_TARGET=<your-module> or use make tests-all-local-docker" ; return 1; fi
docker-compose run --rm marlin $(MAKE) tests-single-local TEST_TARGET=$(TEST_TARGET) VERBOSE_PLATFORMIO=$(VERBOSE_PLATFORMIO) GIT_RESET_HARD=$(GIT_RESET_HARD) ONLY_TEST="$(ONLY_TEST)"
@if ! $(CONTAINER_RT_BIN) images -q $(CONTAINER_IMAGE) > /dev/null ; then $(MAKE) setup-local-docker ; fi
$(CONTAINER_RT_BIN) run $(CONTAINER_RT_OPTS) $(CONTAINER_IMAGE) $(MAKE) tests-single-local TEST_TARGET=$(TEST_TARGET) VERBOSE_PLATFORMIO=$(VERBOSE_PLATFORMIO) GIT_RESET_HARD=$(GIT_RESET_HARD) ONLY_TEST="$(ONLY_TEST)"
.PHONY: tests-single-local-docker
tests-all-local:
export PATH="./buildroot/bin/:./buildroot/tests/:${PATH}" \
&& export VERBOSE_PLATFORMIO=$(VERBOSE_PLATFORMIO) \
&& for TEST_TARGET in $$(./get_test_targets.py) ; do echo "Running tests for $$TEST_TARGET" ; run_tests . $$TEST_TARGET ; done
&& for TEST_TARGET in $$($(SCRIPTS_DIR)/get_test_targets.py) ; do echo "Running tests for $$TEST_TARGET" ; run_tests . $$TEST_TARGET ; done
.PHONY: tests-all-local
tests-all-local-docker:
docker-compose run --rm marlin $(MAKE) tests-all-local VERBOSE_PLATFORMIO=$(VERBOSE_PLATFORMIO) GIT_RESET_HARD=$(GIT_RESET_HARD)
@if ! $(CONTAINER_RT_BIN) images -q $(CONTAINER_IMAGE) > /dev/null ; then $(MAKE) setup-local-docker ; fi
$(CONTAINER_RT_BIN) run $(CONTAINER_RT_OPTS) $(CONTAINER_IMAGE) $(MAKE) tests-all-local VERBOSE_PLATFORMIO=$(VERBOSE_PLATFORMIO) GIT_RESET_HARD=$(GIT_RESET_HARD)
.PHONY: tests-all-local-docker
setup-local-docker:
docker-compose build
$(CONTAINER_RT_BIN) build -t $(CONTAINER_IMAGE) -f docker/Dockerfile .
.PHONY: setup-local-docker

View File

@@ -35,7 +35,7 @@
*
* Advanced settings can be found in Configuration_adv.h
*/
#define CONFIGURATION_H_VERSION 02010200
#define CONFIGURATION_H_VERSION 02010100
//===========================================================================
//============================= Getting Started =============================
@@ -60,8 +60,8 @@
// @section info
// Author info of this build printed to the host during boot and M115
#define STRING_CONFIG_H_AUTHOR "(none, default config)" // Who made the changes.
//#define CUSTOM_VERSION_FILE Version.h // Path from the root directory (no quotes)
#define STRING_CONFIG_H_AUTHOR "(Sven Soost, 0.0.1)" // Who made the changes.
#define CUSTOM_VERSION_FILE Version.h // Path from the root directory (no quotes)
/**
* *** VENDORS PLEASE READ ***
@@ -78,7 +78,7 @@
#define SHOW_BOOTSCREEN
// Show the bitmap in Marlin/_Bootscreen.h on startup.
//#define SHOW_CUSTOM_BOOTSCREEN
#define SHOW_CUSTOM_BOOTSCREEN
// Show the bitmap in Marlin/_Statusscreen.h on the status screen.
//#define CUSTOM_STATUS_SCREEN_IMAGE
@@ -87,7 +87,7 @@
// Choose the name from boards.h that matches your setup
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_RAMPS_14_EFB
#define MOTHERBOARD BOARD_BTT_SKR_MINI_E3_V3_0
#endif
/**
@@ -98,7 +98,7 @@
*
* :[-1, 0, 1, 2, 3, 4, 5, 6, 7]
*/
#define SERIAL_PORT 0
#define SERIAL_PORT 2
/**
* Serial Port Baud Rate
@@ -111,7 +111,7 @@
*
* :[2400, 9600, 19200, 38400, 57600, 115200, 250000, 500000, 1000000]
*/
#define BAUDRATE 250000
#define BAUDRATE 115200
//#define BAUD_RATE_GCODE // Enable G-code M575 to set the baud rate
@@ -120,8 +120,8 @@
* 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 // :[2400, 9600, 19200, 38400, 57600, 115200, 250000, 500000, 1000000] Enable to override BAUDRATE
#define SERIAL_PORT_2 -1
//#define BAUDRATE_2 115200 // :[2400, 9600, 19200, 38400, 57600, 115200, 250000, 500000, 1000000] Enable to override BAUDRATE
/**
* Select a third serial port on the board to use for communication with the host.
@@ -135,11 +135,11 @@
//#define BLUETOOTH
// Name displayed in the LCD "Ready" message and Info menu
//#define CUSTOM_MACHINE_NAME "3D Printer"
#define CUSTOM_MACHINE_NAME "sv3dprt01"
// Printer's unique ID, used by some programs to differentiate between machines.
// Choose your own or use a service like https://www.uuidgenerator.net/version4
//#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
#define MACHINE_UUID "29546829-8cef-4c73-bfb3-7ff034a6861a"
// @section stepper drivers
@@ -158,9 +158,9 @@
* TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
* :['A4988', 'A5984', 'DRV8825', 'LV8729', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
*/
#define X_DRIVER_TYPE A4988
#define Y_DRIVER_TYPE A4988
#define Z_DRIVER_TYPE A4988
#define X_DRIVER_TYPE TMC2209
#define Y_DRIVER_TYPE TMC2209
#define Z_DRIVER_TYPE TMC2209
//#define X2_DRIVER_TYPE A4988
//#define Y2_DRIVER_TYPE A4988
//#define Z2_DRIVER_TYPE A4988
@@ -172,7 +172,7 @@
//#define U_DRIVER_TYPE A4988
//#define V_DRIVER_TYPE A4988
//#define W_DRIVER_TYPE A4988
#define E0_DRIVER_TYPE A4988
#define E0_DRIVER_TYPE TMC2209
//#define E1_DRIVER_TYPE A4988
//#define E2_DRIVER_TYPE A4988
//#define E3_DRIVER_TYPE A4988
@@ -242,24 +242,6 @@
//#define SINGLENOZZLE_STANDBY_FAN
#endif
// @section multi-material
/**
* Multi-Material Unit
* Set to one of these predefined models:
*
* PRUSA_MMU1 : Průša MMU1 (The "multiplexer" version)
* PRUSA_MMU2 : Průša MMU2
* PRUSA_MMU2S : Průša MMU2S (Requires MK3S extruder with motion sensor, EXTRUDERS = 5)
* EXTENDABLE_EMU_MMU2 : MMU with configurable number of filaments (ERCF, SMuFF or similar with Průša MMU2 compatible firmware)
* EXTENDABLE_EMU_MMU2S : MMUS with configurable number of filaments (ERCF, SMuFF or similar with Průša MMU2 compatible firmware)
*
* Requires NOZZLE_PARK_FEATURE to park print head in case MMU unit fails.
* See additional options in Configuration_adv.h.
* :["PRUSA_MMU1", "PRUSA_MMU2", "PRUSA_MMU2S", "EXTENDABLE_EMU_MMU2", "EXTENDABLE_EMU_MMU2S"]
*/
//#define MMU_MODEL PRUSA_MMU2
// A dual extruder that uses a single stepper motor
//#define SWITCHING_EXTRUDER
#if ENABLED(SWITCHING_EXTRUDER)
@@ -393,6 +375,24 @@
//#define HOTEND_OFFSET_Y { 0.0, 5.00 } // (mm) relative Y-offset for each nozzle
//#define HOTEND_OFFSET_Z { 0.0, 0.00 } // (mm) relative Z-offset for each nozzle
// @section multi-material
/**
* Multi-Material Unit
* Set to one of these predefined models:
*
* PRUSA_MMU1 : Průša MMU1 (The "multiplexer" version)
* PRUSA_MMU2 : Průša MMU2
* PRUSA_MMU2S : Průša MMU2S (Requires MK3S extruder with motion sensor, EXTRUDERS = 5)
* EXTENDABLE_EMU_MMU2 : MMU with configurable number of filaments (ERCF, SMuFF or similar with Průša MMU2 compatible firmware)
* EXTENDABLE_EMU_MMU2S : MMUS with configurable number of filaments (ERCF, SMuFF or similar with Průša MMU2 compatible firmware)
*
* Requires NOZZLE_PARK_FEATURE to park print head in case MMU unit fails.
* See additional options in Configuration_adv.h.
* :["PRUSA_MMU1", "PRUSA_MMU2", "PRUSA_MMU2S", "EXTENDABLE_EMU_MMU2", "EXTENDABLE_EMU_MMU2S"]
*/
//#define MMU_MODEL PRUSA_MMU2
// @section psu control
/**
@@ -408,7 +408,7 @@
//#define MKS_PWC // Using the MKS PWC add-on
//#define PS_OFF_CONFIRM // Confirm dialog when power off
//#define PS_OFF_SOUND // Beep 1s when power off
#define PSU_ACTIVE_STATE LOW // Set 'LOW' for ATX, 'HIGH' for X-Box
#define PSU_ACTIVE_STATE HIGH // Set 'LOW' for ATX, 'HIGH' for X-Box
//#define PSU_DEFAULT_OFF // Keep power off until enabled directly with M80
//#define PSU_POWERUP_DELAY 250 // (ms) Delay for the PSU to warm up to full power
@@ -536,7 +536,7 @@
* 999 : Dummy Table that ALWAYS reads 100°C or the temperature defined below.
*
*/
#define TEMP_SENSOR_0 1
#define TEMP_SENSOR_0 5
#define TEMP_SENSOR_1 0
#define TEMP_SENSOR_2 0
#define TEMP_SENSOR_3 0
@@ -544,7 +544,7 @@
#define TEMP_SENSOR_5 0
#define TEMP_SENSOR_6 0
#define TEMP_SENSOR_7 0
#define TEMP_SENSOR_BED 0
#define TEMP_SENSOR_BED 1
#define TEMP_SENSOR_PROBE 0
#define TEMP_SENSOR_CHAMBER 0
#define TEMP_SENSOR_COOLER 0
@@ -619,7 +619,7 @@
// Above this temperature the heater will be switched off.
// This can protect components from overheating, but NOT from shorts and failures.
// (Use MINTEMP for thermistor short/failure protection.)
#define HEATER_0_MAXTEMP 275
#define HEATER_0_MAXTEMP 300
#define HEATER_1_MAXTEMP 275
#define HEATER_2_MAXTEMP 275
#define HEATER_3_MAXTEMP 275
@@ -627,7 +627,7 @@
#define HEATER_5_MAXTEMP 275
#define HEATER_6_MAXTEMP 275
#define HEATER_7_MAXTEMP 275
#define BED_MAXTEMP 150
#define BED_MAXTEMP 100
#define CHAMBER_MAXTEMP 60
/**
@@ -667,9 +667,9 @@
#define DEFAULT_Ki_LIST { 1.08, 1.08 }
#define DEFAULT_Kd_LIST { 114.00, 114.00 }
#else
#define DEFAULT_Kp 22.20
#define DEFAULT_Ki 1.08
#define DEFAULT_Kd 114.00
#define DEFAULT_Kp 21.98
#define DEFAULT_Ki 2.59
#define DEFAULT_Kd 46.62
#endif
#endif
@@ -734,7 +734,7 @@
* the issues involved, don't use bed PID until someone else verifies that your hardware works.
* @section bed temp
*/
//#define PIDTEMPBED
#define PIDTEMPBED
//#define BED_LIMIT_SWITCHING
@@ -752,9 +752,9 @@
// 120V 250W silicone heater into 4mm borosilicate (MendelMax 1.5+)
// from FOPDT model - kp=.39 Tp=405 Tdead=66, Tc set to 79.2, aggressive factor of .15 (vs .1, 1, 10)
#define DEFAULT_bedKp 10.00
#define DEFAULT_bedKi .023
#define DEFAULT_bedKd 305.4
#define DEFAULT_bedKp 68.68
#define DEFAULT_bedKi 13.40
#define DEFAULT_bedKd 234.69
// FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles.
#endif // PIDTEMPBED
@@ -831,7 +831,7 @@
* Note: For Bowden Extruders make this large enough to allow load/unload.
*/
#define PREVENT_LENGTHY_EXTRUDE
#define EXTRUDE_MAXLENGTH 200
#define EXTRUDE_MAXLENGTH 450
//===========================================================================
//======================== Thermal Runaway Protection =======================
@@ -1168,14 +1168,14 @@
* Override with M92
* X, Y, Z [, I [, J [, K...]]], E0 [, E1[, E2...]]
*/
#define DEFAULT_AXIS_STEPS_PER_UNIT { 80, 80, 400, 500 }
#define DEFAULT_AXIS_STEPS_PER_UNIT { 80, 80, 400, 100.671 }
/**
* Default Max Feed Rate (linear=mm/s, rotational=°/s)
* Override with M203
* X, Y, Z [, I [, J [, K...]]], E0 [, E1[, E2...]]
*/
#define DEFAULT_MAX_FEEDRATE { 300, 300, 5, 25 }
#define DEFAULT_MAX_FEEDRATE { 500, 500, 20, 25 }
//#define LIMITED_MAX_FR_EDITING // Limit edit via M203 or LCD to DEFAULT_MAX_FEEDRATE * 2
#if ENABLED(LIMITED_MAX_FR_EDITING)
@@ -1188,7 +1188,7 @@
* Override with M201
* X, Y, Z [, I [, J [, K...]]], E0 [, E1[, E2...]]
*/
#define DEFAULT_MAX_ACCELERATION { 3000, 3000, 100, 10000 }
#define DEFAULT_MAX_ACCELERATION { 5000, 5000, 150, 10000 }
//#define LIMITED_MAX_ACCEL_EDITING // Limit edit via M201 or LCD to DEFAULT_MAX_ACCELERATION * 2
#if ENABLED(LIMITED_MAX_ACCEL_EDITING)
@@ -1203,9 +1203,9 @@
* M204 R Retract Acceleration
* M204 T Travel Acceleration
*/
#define DEFAULT_ACCELERATION 3000 // X, Y, Z and E acceleration for printing moves
#define DEFAULT_RETRACT_ACCELERATION 3000 // E acceleration for retracts
#define DEFAULT_TRAVEL_ACCELERATION 3000 // X, Y, Z acceleration for travel (non printing) moves
#define DEFAULT_ACCELERATION 1500 // X, Y, Z and E acceleration for printing moves
#define DEFAULT_RETRACT_ACCELERATION 500 // E acceleration for retracts
#define DEFAULT_TRAVEL_ACCELERATION 2000 // X, Y, Z acceleration for travel (non printing) moves
/**
* Default Jerk limits (mm/s)
@@ -1245,7 +1245,7 @@
* https://blog.kyneticcnc.com/2018/10/computing-junction-deviation-for-marlin.html
*/
#if DISABLED(CLASSIC_JERK)
#define JUNCTION_DEVIATION_MM 0.013 // (mm) Distance from real junction edge
#define JUNCTION_DEVIATION_MM 0.054 // (mm) Distance from real junction edge
#define JD_HANDLE_SMALL_SEGMENTS // Use curvature estimation instead of just the junction angle
// for small segments (< 1mm) with large junction angles (> 135°).
#endif
@@ -1258,7 +1258,7 @@
*
* See https://github.com/synthetos/TinyG/wiki/Jerk-Controlled-Motion-Explained
*/
//#define S_CURVE_ACCELERATION
#define S_CURVE_ACCELERATION
//===========================================================================
//============================= Z Probe Options =============================
@@ -1274,10 +1274,10 @@
* The probe replaces the Z-MIN endstop and is used for Z homing.
* (Automatically enables USE_PROBE_FOR_Z_HOMING.)
*/
#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN
//#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN
// Force the use of the probe for Z-axis homing
//#define USE_PROBE_FOR_Z_HOMING
#define USE_PROBE_FOR_Z_HOMING
/**
* Z_MIN_PROBE_PIN
@@ -1294,7 +1294,7 @@
* - normally-closed switches to GND and D32.
* - normally-open switches to 5V and D32.
*/
//#define Z_MIN_PROBE_PIN 32 // Pin 32 is the RAMPS default
#define Z_MIN_PROBE_PIN PC14 // Pin 32 is the RAMPS default
/**
* Probe Type
@@ -1331,7 +1331,7 @@
/**
* The BLTouch probe uses a Hall effect sensor and emulates a servo.
*/
//#define BLTOUCH
#define BLTOUCH
/**
* MagLev V4 probe by MDD
@@ -1381,8 +1381,8 @@
*/
//#define MAG_MOUNTED_PROBE
#if ENABLED(MAG_MOUNTED_PROBE)
#define PROBE_DEPLOY_FEEDRATE (133*60) // (mm/min) Probe deploy speed
#define PROBE_STOW_FEEDRATE (133*60) // (mm/min) Probe stow speed
#define PROBE_DEPLOY_FEEDRATE (100*60) // (mm/min) Probe deploy speed
#define PROBE_STOW_FEEDRATE (100*60) // (mm/min) Probe stow speed
#define MAG_MOUNTED_DEPLOY_1 { PROBE_DEPLOY_FEEDRATE, { 245, 114, 30 } } // Move to side Dock & Attach probe
#define MAG_MOUNTED_DEPLOY_2 { PROBE_DEPLOY_FEEDRATE, { 210, 114, 30 } } // Move probe off dock
@@ -1483,17 +1483,17 @@
* | [-] |
* O-- FRONT --+
*/
#define NOZZLE_TO_PROBE_OFFSET { 10, 10, 0 }
#define NOZZLE_TO_PROBE_OFFSET { -40.40, -9.00, -2.45 }
// Most probes should stay away from the edges of the bed, but
// with NOZZLE_AS_PROBE this can be negative for a wider probing area.
#define PROBING_MARGIN 10
#define PROBING_MARGIN 15
// X and Y axis travel speed (mm/min) between probes
#define XY_PROBE_FEEDRATE (133*60)
#define XY_PROBE_FEEDRATE (150*60)
// Feedrate (mm/min) for the first approach when double-probing (MULTIPLE_PROBING == 2)
#define Z_PROBE_FEEDRATE_FAST (4*60)
#define Z_PROBE_FEEDRATE_FAST (10*60)
// Feedrate (mm/min) for the "accurate" probe of each point
#define Z_PROBE_FEEDRATE_SLOW (Z_PROBE_FEEDRATE_FAST / 2)
@@ -1561,7 +1561,7 @@
* But: `M851 Z+1` with a CLEARANCE of 2 => 2mm from bed to nozzle.
*/
#define Z_CLEARANCE_DEPLOY_PROBE 10 // Z Clearance for Deploy/Stow
#define Z_CLEARANCE_BETWEEN_PROBES 5 // Z Clearance between probe points
#define Z_CLEARANCE_BETWEEN_PROBES 3 // Z Clearance between probe points
#define Z_CLEARANCE_MULTI_PROBE 5 // Z Clearance between multiple probes
//#define Z_AFTER_PROBING 5 // Z position after probing is done
@@ -1595,12 +1595,12 @@
//#define PROBING_FANS_OFF // Turn fans off 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
#define DELAY_BEFORE_PROBING 350 // (ms) To prevent vibrations from triggering piezo sensors
// Require minimum nozzle and/or bed temperature for probing
//#define PREHEAT_BEFORE_PROBING
#if ENABLED(PREHEAT_BEFORE_PROBING)
#define PROBING_NOZZLE_TEMP 120 // (°C) Only applies to E0 at this time
#define PROBING_NOZZLE_TEMP 180 // (°C) Only applies to E0 at this time
#define PROBING_BED_TEMP 50
#endif
@@ -1640,7 +1640,7 @@
// @section motion
// Invert the stepper direction. Change (or reverse the motor connector) if an axis goes the wrong way.
#define INVERT_X_DIR false
#define INVERT_X_DIR true
#define INVERT_Y_DIR true
#define INVERT_Z_DIR false
//#define INVERT_I_DIR false
@@ -1653,7 +1653,7 @@
// @section extruder
// For direct drive extruder v9 set to true, for geared extruder set to false.
#define INVERT_E0_DIR false
#define INVERT_E0_DIR true
#define INVERT_E1_DIR false
#define INVERT_E2_DIR false
#define INVERT_E3_DIR false
@@ -1694,8 +1694,8 @@
// @section geometry
// The size of the printable area
#define X_BED_SIZE 200
#define Y_BED_SIZE 200
#define X_BED_SIZE 230
#define Y_BED_SIZE 230
// Travel limits (linear=mm, rotational=°) after homing, corresponding to endstop positions.
#define X_MIN_POS 0
@@ -1703,7 +1703,7 @@
#define Z_MIN_POS 0
#define X_MAX_POS X_BED_SIZE
#define Y_MAX_POS Y_BED_SIZE
#define Z_MAX_POS 200
#define Z_MAX_POS 250
//#define I_MIN_POS 0
//#define I_MAX_POS 50
//#define J_MIN_POS 0
@@ -1771,9 +1771,9 @@
* RAMPS-based boards use SERVO3_PIN for the first runout sensor.
* For other boards you may need to define FIL_RUNOUT_PIN, FIL_RUNOUT2_PIN, etc.
*/
//#define FILAMENT_RUNOUT_SENSOR
#define FILAMENT_RUNOUT_SENSOR
#if ENABLED(FILAMENT_RUNOUT_SENSOR)
#define FIL_RUNOUT_ENABLED_DEFAULT true // Enable the sensor on startup. Override with M412 followed by M500.
#define FIL_RUNOUT_ENABLED_DEFAULT false // Enable the sensor on startup. Override with M412 followed by M500.
#define NUM_RUNOUT_SENSORS 1 // Number of sensors, up to one per extruder. Define a FIL_RUNOUT#_PIN for each.
#define FIL_RUNOUT_STATE LOW // Pin state indicating that filament is NOT present.
@@ -1873,7 +1873,7 @@
*/
//#define AUTO_BED_LEVELING_3POINT
//#define AUTO_BED_LEVELING_LINEAR
//#define AUTO_BED_LEVELING_BILINEAR
#define AUTO_BED_LEVELING_BILINEAR
//#define AUTO_BED_LEVELING_UBL
//#define MESH_BED_LEVELING
@@ -1882,13 +1882,13 @@
* these options to restore the prior leveling state or to always enable
* leveling immediately after G28.
*/
//#define RESTORE_LEVELING_AFTER_G28
#define RESTORE_LEVELING_AFTER_G28
//#define ENABLE_LEVELING_AFTER_G28
/**
* Auto-leveling needs preheating
*/
//#define PREHEAT_BEFORE_LEVELING
#define PREHEAT_BEFORE_LEVELING
#if ENABLED(PREHEAT_BEFORE_LEVELING)
#define LEVELING_NOZZLE_TEMP 120 // (°C) Only applies to E0 at this time
#define LEVELING_BED_TEMP 50
@@ -1923,7 +1923,7 @@
*/
#define ENABLE_LEVELING_FADE_HEIGHT
#if ENABLED(ENABLE_LEVELING_FADE_HEIGHT)
#define DEFAULT_LEVELING_FADE_HEIGHT 10.0 // (mm) Default fade height.
#define DEFAULT_LEVELING_FADE_HEIGHT 0.0 // (mm) Default fade height.
#endif
/**
@@ -1937,7 +1937,7 @@
/**
* Enable the G26 Mesh Validation Pattern tool.
*/
//#define G26_MESH_VALIDATION
#define G26_MESH_VALIDATION
#if ENABLED(G26_MESH_VALIDATION)
#define MESH_TEST_NOZZLE_SIZE 0.4 // (mm) Diameter of primary nozzle.
#define MESH_TEST_LAYER_HEIGHT 0.2 // (mm) Default layer height for G26.
@@ -1963,7 +1963,7 @@
// Beyond the probed grid, continue the implied tilt?
// Default is to maintain the height of the nearest edge.
//#define EXTRAPOLATE_BEYOND_GRID
#define EXTRAPOLATE_BEYOND_GRID
//
// Experimental Subdivision of the grid by Catmull-Rom method.
@@ -1983,10 +1983,10 @@
//========================= Unified Bed Leveling ============================
//===========================================================================
//#define MESH_EDIT_GFX_OVERLAY // Display a graphics overlay while editing the mesh
#define MESH_EDIT_GFX_OVERLAY // Display a graphics overlay while editing the mesh
#define MESH_INSET 1 // Set Mesh bounds as an inset region of the bed
#define GRID_MAX_POINTS_X 10 // Don't use more than 15 points per axis, implementation limited.
#define MESH_INSET 35 // Set Mesh bounds as an inset region of the bed
#define GRID_MAX_POINTS_X 3 // Don't use more than 15 points per axis, implementation limited.
#define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X
//#define UBL_HILBERT_CURVE // Use Hilbert distribution for less travel when probing multiple points
@@ -1997,7 +1997,7 @@
//#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
#define UBL_MESH_WIZARD // Run several commands in a row to get a complete mesh
#elif ENABLED(MESH_BED_LEVELING)
@@ -2017,7 +2017,7 @@
* Add a bed leveling sub-menu for ABL or MBL.
* Include a guided procedure if manual probing is enabled.
*/
//#define LCD_BED_LEVELING
#define LCD_BED_LEVELING
#if ENABLED(LCD_BED_LEVELING)
#define MESH_EDIT_Z_STEP 0.025 // (mm) Step size while manually probing Z axis.
@@ -2090,7 +2090,7 @@
* - Allows Z homing only when XY positions are known and trusted.
* - If stepper drivers sleep, XY homing may be required again before Z homing.
*/
//#define Z_SAFE_HOMING
#define Z_SAFE_HOMING
#if ENABLED(Z_SAFE_HOMING)
#define Z_SAFE_HOMING_X_POINT X_CENTER // X point for Z homing
@@ -2098,7 +2098,7 @@
#endif
// Homing speeds (linear=mm/min, rotational=°/min)
#define HOMING_FEEDRATE_MM_M { (50*60), (50*60), (4*60) }
#define HOMING_FEEDRATE_MM_M { (100*60), (100*60), (10*60) }
// Validate that endstops are triggered on homing moves
#define VALIDATE_HOMING_ENDSTOPS
@@ -2142,7 +2142,7 @@
#define XY_SIDE_AD 200
// Or, set the XY skew factor directly:
//#define XY_SKEW_FACTOR 0.0
#define XY_SKEW_FACTOR 0.0
//#define SKEW_CORRECTION_FOR_Z
#if ENABLED(SKEW_CORRECTION_FOR_Z)
@@ -2153,8 +2153,8 @@
#define YZ_SIDE_AD 200
// Or, set the Z skew factors directly:
//#define XZ_SKEW_FACTOR 0.0
//#define YZ_SKEW_FACTOR 0.0
#define XZ_SKEW_FACTOR 0.0
#define YZ_SKEW_FACTOR 0.0
#endif
// Enable this option for M852 to set skew at runtime
@@ -2176,12 +2176,12 @@
* M501 - Read settings from EEPROM. (i.e., Throw away unsaved changes)
* M502 - Revert settings to "factory" defaults. (Follow with M500 to init the EEPROM.)
*/
//#define EEPROM_SETTINGS // Persistent storage with M500 and M501
#define EEPROM_SETTINGS // Persistent storage with M500 and M501
//#define DISABLE_M503 // Saves ~2700 bytes of flash. Disable for release!
#define EEPROM_CHITCHAT // Give feedback on EEPROM commands. Disable to save PROGMEM.
#define EEPROM_BOOT_SILENT // Keep M503 quiet and only give errors during first load
#if ENABLED(EEPROM_SETTINGS)
//#define EEPROM_AUTO_INIT // Init EEPROM automatically on any errors.
#define EEPROM_AUTO_INIT // Init EEPROM automatically on any errors.
//#define EEPROM_INIT_NOW // Init EEPROM on first boot after a new build.
#endif
@@ -2214,17 +2214,17 @@
//
// Preheat Constants - Up to 10 are supported without changes
//
#define PREHEAT_1_LABEL "PLA"
#define PREHEAT_1_TEMP_HOTEND 180
#define PREHEAT_1_TEMP_BED 70
#define PREHEAT_1_TEMP_CHAMBER 35
#define PREHEAT_1_FAN_SPEED 0 // Value from 0 to 255
#define PREHEAT_1_LABEL "PLA"
#define PREHEAT_1_TEMP_HOTEND 185
#define PREHEAT_1_TEMP_BED 45
#define PREHEAT_1_TEMP_CHAMBER 35
#define PREHEAT_1_FAN_SPEED 255 // Value from 0 to 255
#define PREHEAT_2_LABEL "ABS"
#define PREHEAT_2_TEMP_HOTEND 240
#define PREHEAT_2_TEMP_BED 110
#define PREHEAT_2_TEMP_CHAMBER 35
#define PREHEAT_2_FAN_SPEED 0 // Value from 0 to 255
#define PREHEAT_2_LABEL "ABS"
#define PREHEAT_2_TEMP_HOTEND 240
#define PREHEAT_2_TEMP_BED 70
#define PREHEAT_2_TEMP_CHAMBER 35
#define PREHEAT_2_FAN_SPEED 255 // Value from 0 to 255
// @section motion
@@ -2239,7 +2239,7 @@
* P1 Raise the nozzle always to Z-park height.
* P2 Raise the nozzle by Z-park amount, limited to Z_MAX_POS.
*/
//#define NOZZLE_PARK_FEATURE
#define NOZZLE_PARK_FEATURE
#if ENABLED(NOZZLE_PARK_FEATURE)
// Specify a park position as { X, Y, Z_raise }
@@ -2461,7 +2461,7 @@
* SD Card support is disabled by default. If your controller has an SD slot,
* you must uncomment the following option or it won't work.
*/
//#define SDSUPPORT
#define SDSUPPORT
/**
* SD CARD: ENABLE CRC
@@ -2550,7 +2550,7 @@
// If you have a speaker that can produce tones, enable it here.
// By default Marlin assumes you have a buzzer with a fixed frequency.
//
//#define SPEAKER
#define SPEAKER
//
// The duration and frequency for the UI feedback sound.
@@ -2559,8 +2559,8 @@
// Note: Test audio output with the G-Code:
// M300 S<frequency Hz> P<duration ms>
//
//#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 2
//#define LCD_FEEDBACK_FREQUENCY_HZ 5000
#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 0
#define LCD_FEEDBACK_FREQUENCY_HZ 5000
//=============================================================================
//======================== LCD / Controller Selection =========================
@@ -2653,7 +2653,7 @@
//
// Elefu RA Board Control Panel
// http://www.elefu.com/index.php?route=product/product&product_id=53
// https://web.archive.org/web/20140823033947/http://www.elefu.com/index.php?route=product/product&product_id=53
//
//#define RA_CONTROL_PANEL
@@ -2839,7 +2839,7 @@
// This is RAMPS-compatible using a single 10-pin connector.
// (For CR-10 owners who want to replace the Melzi Creality board but retain the display)
//
//#define CR10_STOCKDISPLAY
#define CR10_STOCKDISPLAY
//
// Ender-2 OEM display, a variant of the MKS_MINI_12864
@@ -3216,7 +3216,7 @@
// Use software PWM to drive the fan, as for the heaters. This uses a very low frequency
// which is not as annoying as with the hardware PWM. On the other hand, if this frequency
// is too low, you should also increment SOFT_PWM_SCALE.
//#define FAN_SOFT_PWM
#define FAN_SOFT_PWM
// Incrementing this by 1 will double the software PWM frequency,
// affecting heaters, and the fan if FAN_SOFT_PWM is enabled.

View File

@@ -30,7 +30,7 @@
*
* Basic settings can be found in Configuration.h
*/
#define CONFIGURATION_ADV_H_VERSION 02010200
#define CONFIGURATION_ADV_H_VERSION 02010100
// @section develop
@@ -469,10 +469,10 @@
* Thermistors able to support high temperature tend to have a hard time getting
* good readings at room and lower temperatures. This means TEMP_SENSOR_X_RAW_LO_TEMP
* will probably be caught when the heating element first turns on during the
* preheating process, which will trigger a min_temp_error as a safety measure
* preheating process, which will trigger a MINTEMP error as a safety measure
* and force stop everything.
* To circumvent this limitation, we allow for a preheat time (during which,
* min_temp_error won't be triggered) and add a min_temp buffer to handle
* MINTEMP error won't be triggered) and add a min_temp buffer to handle
* aberrant readings.
*
* If you want to enable this feature for your hotend thermistor(s)
@@ -480,7 +480,7 @@
*/
// The number of consecutive low temperature errors that can occur
// before a min_temp_error is triggered. (Shouldn't be more than 10.)
// before a MINTEMP error is triggered. (Shouldn't be more than 10.)
//#define MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED 0
/**
@@ -535,9 +535,9 @@
* The fan turns on automatically whenever any driver is enabled and turns
* off (or reduces to idle speed) shortly after drivers are turned off.
*/
//#define USE_CONTROLLER_FAN
#define USE_CONTROLLER_FAN
#if ENABLED(USE_CONTROLLER_FAN)
//#define CONTROLLER_FAN_PIN -1 // Set a custom pin for the controller fan
#define CONTROLLER_FAN_PIN PB15 // Set a custom pin for the controller fan
//#define CONTROLLER_FAN2_PIN -1 // Set a custom pin for second controller fan
//#define CONTROLLER_FAN_USE_Z_ONLY // With this option only the Z axis is considered
//#define CONTROLLER_FAN_IGNORE_Z // Ignore Z stepper. Useful when stepper timeout is disabled.
@@ -549,7 +549,7 @@
// Use TEMP_SENSOR_BOARD as a trigger for enabling the controller fan
//#define CONTROLLER_FAN_MIN_BOARD_TEMP 40 // (°C) Turn on the fan if the board reaches this temperature
//#define CONTROLLER_FAN_EDITABLE // Enable M710 configurable settings
#define CONTROLLER_FAN_EDITABLE // Enable M710 configurable settings
#if ENABLED(CONTROLLER_FAN_EDITABLE)
#define CONTROLLER_FAN_MENU // Enable the Controller Fan submenu
#endif
@@ -561,8 +561,8 @@
* gets it spinning reliably for a short time before setting the requested speed.
* (Does not work on Sanguinololu with FAN_SOFT_PWM.)
*/
//#define FAN_KICKSTART_TIME 100 // (ms)
//#define FAN_KICKSTART_POWER 180 // 64-255
#define FAN_KICKSTART_TIME 3000 // (ms)
#define FAN_KICKSTART_POWER 255 // 64-255
// Some coolers may require a non-zero "off" state.
//#define FAN_OFF_PWM 1
@@ -579,8 +579,8 @@
*
* Define one or both of these to override the default 0-255 range.
*/
//#define FAN_MIN_PWM 50
//#define FAN_MAX_PWM 128
#define FAN_MIN_PWM 64
#define FAN_MAX_PWM 255
/**
* Fan Fast PWM
@@ -639,7 +639,7 @@
* Multiple extruders can be assigned to the same pin in which case
* the fan will turn on when any selected extruder is above the threshold.
*/
#define E0_AUTO_FAN_PIN -1
#define E0_AUTO_FAN_PIN PC7
#define E1_AUTO_FAN_PIN -1
#define E2_AUTO_FAN_PIN -1
#define E3_AUTO_FAN_PIN -1
@@ -839,20 +839,20 @@
//#define Z_MULTI_ENDSTOPS // Other Z axes have their own endstops
#if ENABLED(Z_MULTI_ENDSTOPS)
#define Z2_USE_ENDSTOP _XMAX_ // Z2 endstop board plug. Don't forget to enable USE_*_PLUG.
#define Z2_ENDSTOP_ADJUSTMENT 0 // Z2 offset relative to Y endstop
#define Z2_ENDSTOP_ADJUSTMENT 0 // Z2 offset relative to Z endstop
#endif
#ifdef Z3_DRIVER_TYPE
//#define INVERT_Z3_VS_Z_DIR // Z3 direction signal is the opposite of Z
#if ENABLED(Z_MULTI_ENDSTOPS)
#define Z3_USE_ENDSTOP _YMAX_ // Z3 endstop board plug. Don't forget to enable USE_*_PLUG.
#define Z3_ENDSTOP_ADJUSTMENT 0 // Z3 offset relative to Y endstop
#define Z3_ENDSTOP_ADJUSTMENT 0 // Z3 offset relative to Z endstop
#endif
#endif
#ifdef Z4_DRIVER_TYPE
//#define INVERT_Z4_VS_Z_DIR // Z4 direction signal is the opposite of Z
#if ENABLED(Z_MULTI_ENDSTOPS)
#define Z4_USE_ENDSTOP _ZMAX_ // Z4 endstop board plug. Don't forget to enable USE_*_PLUG.
#define Z4_ENDSTOP_ADJUSTMENT 0 // Z4 offset relative to Y endstop
#define Z4_ENDSTOP_ADJUSTMENT 0 // Z4 offset relative to Z endstop
#endif
#endif
#endif
@@ -908,7 +908,7 @@
// Safety: The probe needs time to recognize the command.
// Minimum command delay (ms). Enable and increase if needed.
//#define BLTOUCH_DELAY 500
#define BLTOUCH_DELAY 300
/**
* Settings for BLTOUCH Classic 1.2, 1.3 or BLTouch Smart 1.0, 2.0, 2.2, 3.0, 3.1, and most clones:
@@ -1373,17 +1373,17 @@
//#define LCD_BACKLIGHT_TIMEOUT_MINS 1 // (minutes) Timeout before turning off the backlight
#if HAS_BED_PROBE && EITHER(HAS_MARLINUI_MENU, HAS_TFT_LVGL_UI)
//#define PROBE_OFFSET_WIZARD // Add a Probe Z Offset calibration option to the LCD menu
#define PROBE_OFFSET_WIZARD // Add a Probe Z Offset calibration option to the LCD menu
#if ENABLED(PROBE_OFFSET_WIZARD)
/**
* Enable to init the Probe Z-Offset when starting the Wizard.
* Use a height slightly above the estimated nozzle-to-probe Z offset.
* For example, with an offset of -5, consider a starting height of -4.
*/
//#define PROBE_OFFSET_WIZARD_START_Z -4.0
#define PROBE_OFFSET_WIZARD_START_Z -4.0
// Set a convenient position to do the calibration (probing point and nozzle/bed-distance)
//#define PROBE_OFFSET_WIZARD_XY_POS { X_CENTER, Y_CENTER }
#define PROBE_OFFSET_WIZARD_XY_POS { X_CENTER, Y_CENTER }
#endif
#endif
@@ -1409,7 +1409,7 @@
#endif
// Include a page of printer information in the LCD Main Menu
//#define LCD_INFO_MENU
#define LCD_INFO_MENU
#if ENABLED(LCD_INFO_MENU)
//#define LCD_PRINTER_INFO_IS_BOOTSCREEN // Show bootscreen(s) instead of Printer Info pages
#endif
@@ -1439,7 +1439,7 @@
#endif
// Scroll a longer status message into view
//#define STATUS_MESSAGE_SCROLLING
#define STATUS_MESSAGE_SCROLLING
// Apply a timeout to low-priority status messages
//#define STATUS_MESSAGE_TIMEOUT_SEC 30 // (seconds)
@@ -1565,9 +1565,9 @@
* an option on the LCD screen to continue the print from the last-known
* point in the file.
*/
//#define POWER_LOSS_RECOVERY
#define POWER_LOSS_RECOVERY
#if ENABLED(POWER_LOSS_RECOVERY)
#define PLR_ENABLED_DEFAULT false // Power Loss Recovery enabled by default. (Set with 'M413 Sn' & M500)
#define PLR_ENABLED_DEFAULT true // Power Loss Recovery enabled by default. (Set with 'M413 Sn' & M500)
//#define BACKUP_POWER_SUPPLY // Backup power / UPS to move the steppers on power loss
//#define POWER_LOSS_ZRAISE 2 // (mm) Z axis raise on resume (on power loss with UPS)
//#define POWER_LOSS_PIN 44 // Pin to detect power loss. Set to -1 to disable default pin on boards without module.
@@ -1630,11 +1630,11 @@
// LCD's font must contain the characters. Check your selected LCD language.
//#define UTF_FILENAME_SUPPORT
//#define LONG_FILENAME_HOST_SUPPORT // Get the long filename of a file/folder with 'M33 <dosname>' and list long filenames with 'M20 L'
#define LONG_FILENAME_HOST_SUPPORT // Get the long filename of a file/folder with 'M33 <dosname>' and list long filenames with 'M20 L'
//#define LONG_FILENAME_WRITE_SUPPORT // Create / delete files with long filenames via M28, M30, and Binary Transfer Protocol
//#define M20_TIMESTAMP_SUPPORT // Include timestamps by adding the 'T' flag to M20 commands
//#define SCROLL_LONG_FILENAMES // Scroll long filenames in the SD card menu
#define SCROLL_LONG_FILENAMES // Scroll long filenames in the SD card menu
//#define SD_ABORT_NO_COOLDOWN // Leave the heaters on after Stop Print (not recommended!)
@@ -1650,7 +1650,7 @@
//#define SD_REPRINT_LAST_SELECTED_FILE // On print completion open the LCD Menu and select the same file
//#define AUTO_REPORT_SD_STATUS // Auto-report media status with 'M27 S<seconds>'
#define AUTO_REPORT_SD_STATUS // Auto-report media status with 'M27 S<seconds>'
/**
* Support for USB thumb drives using an Arduino USB Host Shield or
@@ -1719,11 +1719,11 @@
//#define CONFIGURATION_EMBEDDING
// Add an optimized binary file transfer mode, initiated with 'M28 B1'
//#define BINARY_FILE_TRANSFER
#define BINARY_FILE_TRANSFER
#if ENABLED(BINARY_FILE_TRANSFER)
// Include extra facilities (e.g., 'M20 F') supporting firmware upload via BINARY_FILE_TRANSFER
//#define CUSTOM_FIRMWARE_UPLOAD
#define CUSTOM_FIRMWARE_UPLOAD
#endif
/**
@@ -1735,7 +1735,7 @@
*
* :[ 'LCD', 'ONBOARD', 'CUSTOM_CABLE' ]
*/
//#define SDCARD_CONNECTION LCD
#define SDCARD_CONNECTION ONBOARD
// Enable if SD detect is rendered useless (e.g., by using an SD extender)
//#define NO_SD_DETECT
@@ -1744,7 +1744,7 @@
* Multiple volume support - EXPERIMENTAL.
* Adds 'M21 Pm' / 'M21 S' / 'M21 U' to mount SD Card / USB Drive.
*/
//#define MULTI_VOLUME
//define MULTI_VOLUME
#if ENABLED(MULTI_VOLUME)
#define VOLUME_SD_ONBOARD
#define VOLUME_USB_FLASH_DRIVE
@@ -2058,18 +2058,18 @@
*
* Warning: Does not respect endstops!
*/
//#define BABYSTEPPING
#define BABYSTEPPING
#if ENABLED(BABYSTEPPING)
//#define INTEGRATED_BABYSTEPPING // EXPERIMENTAL integration of babystepping into the Stepper ISR
//#define BABYSTEP_WITHOUT_HOMING
//#define BABYSTEP_ALWAYS_AVAILABLE // Allow babystepping at all times (not just during movement).
#define BABYSTEP_WITHOUT_HOMING
#define BABYSTEP_ALWAYS_AVAILABLE // Allow babystepping at all times (not just during movement).
//#define BABYSTEP_XY // Also enable X/Y Babystepping. Not supported on DELTA!
#define BABYSTEP_INVERT_Z false // Change if Z babysteps should go the other way
//#define BABYSTEP_MILLIMETER_UNITS // Specify BABYSTEP_MULTIPLICATOR_(XY|Z) in mm instead of micro-steps
#define BABYSTEP_MULTIPLICATOR_Z 1 // (steps or mm) Steps or millimeter distance for each Z babystep
#define BABYSTEP_MILLIMETER_UNITS // Specify BABYSTEP_MULTIPLICATOR_(XY|Z) in mm instead of micro-steps
#define BABYSTEP_MULTIPLICATOR_Z 0.01 // (steps or mm) Steps or millimeter distance for each Z babystep
#define BABYSTEP_MULTIPLICATOR_XY 1 // (steps or mm) Steps or millimeter distance for each XY babystep
//#define DOUBLECLICK_FOR_Z_BABYSTEPPING // Double-click on the Status Screen for Z Babystepping.
#define DOUBLECLICK_FOR_Z_BABYSTEPPING // Double-click on the Status Screen for Z Babystepping.
#if ENABLED(DOUBLECLICK_FOR_Z_BABYSTEPPING)
#define DOUBLECLICK_MAX_INTERVAL 1250 // Maximum interval between clicks, in milliseconds.
// Note: Extra time may be added to mitigate controller latency.
@@ -2079,12 +2079,12 @@
#endif
#endif
//#define BABYSTEP_DISPLAY_TOTAL // Display total babysteps since last G28
#define BABYSTEP_DISPLAY_TOTAL // Display total babysteps since last G28
//#define BABYSTEP_ZPROBE_OFFSET // Combine M851 Z and Babystepping
#define BABYSTEP_ZPROBE_OFFSET // Combine M851 Z and Babystepping
#if ENABLED(BABYSTEP_ZPROBE_OFFSET)
//#define BABYSTEP_HOTEND_Z_OFFSET // For multiple hotends, babystep relative Z offsets
//#define BABYSTEP_ZPROBE_GFX_OVERLAY // Enable graphical overlay on Z-offset editor
#define BABYSTEP_ZPROBE_GFX_OVERLAY // Enable graphical overlay on Z-offset editor
#endif
#endif
@@ -2108,9 +2108,9 @@
//#define LIN_ADVANCE
#if ENABLED(LIN_ADVANCE)
#if ENABLED(DISTINCT_E_FACTORS)
#define ADVANCE_K { 0.22 } // (mm) Compression length per 1mm/s extruder speed, per extruder
#define ADVANCE_K { 0.00 } // (mm) Compression length per 1mm/s extruder speed, per extruder
#else
#define ADVANCE_K 0.22 // (mm) Compression length applying to all extruders
#define ADVANCE_K 0.00 // (mm) Compression length applying to all extruders
#endif
//#define ADVANCE_K_EXTRA // Add a second linear advance constant, configurable with M900 L.
//#define LA_DEBUG // Print debug information to serial during operation. Disable for production use.
@@ -2191,9 +2191,9 @@
* Repeatedly attempt G29 leveling until it succeeds.
* Stop after G29_MAX_RETRIES attempts.
*/
//#define G29_RETRY_AND_RECOVER
#define G29_RETRY_AND_RECOVER
#if ENABLED(G29_RETRY_AND_RECOVER)
#define G29_MAX_RETRIES 3
#define G29_MAX_RETRIES 1
#define G29_HALT_ON_FAILURE
/**
* Specify the GCODE commands that will be executed when leveling succeeds,
@@ -2382,11 +2382,11 @@
// 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)
#if BOTH(SDSUPPORT, DIRECT_STEPPING)
#define BLOCK_BUFFER_SIZE 8
#define BLOCK_BUFFER_SIZE 32
#elif ENABLED(SDSUPPORT)
#define BLOCK_BUFFER_SIZE 16
#define BLOCK_BUFFER_SIZE 64
#else
#define BLOCK_BUFFER_SIZE 16
#define BLOCK_BUFFER_SIZE 64
#endif
// @section serial
@@ -2402,7 +2402,7 @@
// For debug-echo: 128 bytes for the optimal speed.
// Other output doesn't need to be that speedy.
// :[0, 2, 4, 8, 16, 32, 64, 128, 256]
#define TX_BUFFER_SIZE 0
#define TX_BUFFER_SIZE 128
// Host Receive Buffer Size
// Without XON/XOFF flow control (see SERIAL_XON_XOFF below) 32 bytes should be enough.
@@ -2440,7 +2440,7 @@
* Currently handles M108, M112, M410, M876
* NOTE: Not yet implemented for all platforms.
*/
//#define EMERGENCY_PARSER
#define EMERGENCY_PARSER
/**
* Realtime Reporting (requires EMERGENCY_PARSER)
@@ -2633,7 +2633,7 @@
*
* Enable PARK_HEAD_ON_PAUSE to add the G-code M125 Pause and Park.
*/
//#define ADVANCED_PAUSE_FEATURE
#define ADVANCED_PAUSE_FEATURE
#if ENABLED(ADVANCED_PAUSE_FEATURE)
#define PAUSE_PARK_RETRACT_FEEDRATE 60 // (mm/s) Initial retract feedrate.
#define PAUSE_PARK_RETRACT_LENGTH 2 // (mm) Initial retract.
@@ -2673,10 +2673,10 @@
//#define FILAMENT_CHANGE_RESUME_ON_INSERT // Automatically continue / load filament when runout sensor is triggered again.
//#define PAUSE_REHEAT_FAST_RESUME // Reduce number of waits by not prompting again post-timeout before continuing.
//#define PARK_HEAD_ON_PAUSE // Park the nozzle during pause and filament change.
//#define HOME_BEFORE_FILAMENT_CHANGE // If needed, home before parking for filament change
#define PARK_HEAD_ON_PAUSE // Park the nozzle during pause and filament change.
#define HOME_BEFORE_FILAMENT_CHANGE // If needed, home before parking for filament change
//#define FILAMENT_LOAD_UNLOAD_GCODES // Add M701/M702 Load/Unload G-codes, plus Load/Unload in the LCD Prepare menu.
#define FILAMENT_LOAD_UNLOAD_GCODES // Add M701/M702 Load/Unload G-codes, plus Load/Unload in the LCD Prepare menu.
//#define FILAMENT_UNLOAD_ALL_EXTRUDERS // Allow M702 to unload all extruders above a minimum target temp (as set by M302)
#endif
@@ -2717,7 +2717,7 @@
#define INTERPOLATE true
#if AXIS_IS_TMC_CONFIG(X)
#define X_CURRENT 800 // (mA) RMS current. Multiply by 1.414 for peak current.
#define X_CURRENT 650 // (mA) RMS current. Multiply by 1.414 for peak current.
#define X_CURRENT_HOME X_CURRENT // (mA) RMS current for sensorless homing
#define X_MICROSTEPS 16 // 0..256
#define X_RSENSE 0.11 // Multiplied x1000 for TMC26X
@@ -2727,7 +2727,7 @@
#endif
#if AXIS_IS_TMC_CONFIG(X2)
#define X2_CURRENT 800
#define X2_CURRENT 650
#define X2_CURRENT_HOME X2_CURRENT
#define X2_MICROSTEPS X_MICROSTEPS
#define X2_RSENSE 0.11
@@ -2737,7 +2737,7 @@
#endif
#if AXIS_IS_TMC_CONFIG(Y)
#define Y_CURRENT 800
#define Y_CURRENT 650
#define Y_CURRENT_HOME Y_CURRENT
#define Y_MICROSTEPS 16
#define Y_RSENSE 0.11
@@ -2747,7 +2747,7 @@
#endif
#if AXIS_IS_TMC_CONFIG(Y2)
#define Y2_CURRENT 800
#define Y2_CURRENT 650
#define Y2_CURRENT_HOME Y2_CURRENT
#define Y2_MICROSTEPS Y_MICROSTEPS
#define Y2_RSENSE 0.11
@@ -2757,7 +2757,7 @@
#endif
#if AXIS_IS_TMC_CONFIG(Z)
#define Z_CURRENT 800
#define Z_CURRENT 650
#define Z_CURRENT_HOME Z_CURRENT
#define Z_MICROSTEPS 16
#define Z_RSENSE 0.11
@@ -2767,7 +2767,7 @@
#endif
#if AXIS_IS_TMC_CONFIG(Z2)
#define Z2_CURRENT 800
#define Z2_CURRENT 650
#define Z2_CURRENT_HOME Z2_CURRENT
#define Z2_MICROSTEPS Z_MICROSTEPS
#define Z2_RSENSE 0.11
@@ -2777,7 +2777,7 @@
#endif
#if AXIS_IS_TMC_CONFIG(Z3)
#define Z3_CURRENT 800
#define Z3_CURRENT 650
#define Z3_CURRENT_HOME Z3_CURRENT
#define Z3_MICROSTEPS Z_MICROSTEPS
#define Z3_RSENSE 0.11
@@ -2787,7 +2787,7 @@
#endif
#if AXIS_IS_TMC_CONFIG(Z4)
#define Z4_CURRENT 800
#define Z4_CURRENT 650
#define Z4_CURRENT_HOME Z4_CURRENT
#define Z4_MICROSTEPS Z_MICROSTEPS
#define Z4_RSENSE 0.11
@@ -3030,7 +3030,7 @@
#define STEALTHCHOP_U
#define STEALTHCHOP_V
#define STEALTHCHOP_W
#define STEALTHCHOP_E
//#define STEALTHCHOP_E
#endif
/**
@@ -3048,7 +3048,7 @@
* Define your own with:
* { <off_time[1..15]>, <hysteresis_end[-3..12]>, hysteresis_start[1..8] }
*/
#define CHOPPER_TIMING CHOPPER_DEFAULT_12V // All axes (override below)
#define CHOPPER_TIMING CHOPPER_DEFAULT_24V // All axes (override below)
//#define CHOPPER_TIMING_X CHOPPER_TIMING // For X Axes (override below)
//#define CHOPPER_TIMING_X2 CHOPPER_TIMING_X
//#define CHOPPER_TIMING_Y CHOPPER_TIMING // For Y Axes (override below)
@@ -3085,7 +3085,7 @@
* M912 - Clear stepper driver overtemperature pre-warn condition flag.
* M122 - Report driver parameters (Requires TMC_DEBUG)
*/
//#define MONITOR_DRIVER_STATUS
#define MONITOR_DRIVER_STATUS
#if ENABLED(MONITOR_DRIVER_STATUS)
#define CURRENT_STEP_DOWN 50 // [mA]
@@ -3108,7 +3108,7 @@
#define X2_HYBRID_THRESHOLD 100
#define Y_HYBRID_THRESHOLD 100
#define Y2_HYBRID_THRESHOLD 100
#define Z_HYBRID_THRESHOLD 3
#define Z_HYBRID_THRESHOLD 20
#define Z2_HYBRID_THRESHOLD 3
#define Z3_HYBRID_THRESHOLD 3
#define Z4_HYBRID_THRESHOLD 3
@@ -3157,11 +3157,11 @@
#if EITHER(SENSORLESS_HOMING, SENSORLESS_PROBING)
// TMC2209: 0...255. TMC2130: -64...63
#define X_STALL_SENSITIVITY 8
#define X_STALL_SENSITIVITY 72
#define X2_STALL_SENSITIVITY X_STALL_SENSITIVITY
#define Y_STALL_SENSITIVITY 8
#define Y_STALL_SENSITIVITY 70
#define Y2_STALL_SENSITIVITY Y_STALL_SENSITIVITY
//#define Z_STALL_SENSITIVITY 8
#define Z_STALL_SENSITIVITY 10
//#define Z2_STALL_SENSITIVITY Z_STALL_SENSITIVITY
//#define Z3_STALL_SENSITIVITY Z_STALL_SENSITIVITY
//#define Z4_STALL_SENSITIVITY Z_STALL_SENSITIVITY
@@ -3172,7 +3172,7 @@
//#define V_STALL_SENSITIVITY 8
//#define W_STALL_SENSITIVITY 8
//#define SPI_ENDSTOPS // TMC2130 only
//#define IMPROVE_HOMING_RELIABILITY
#define IMPROVE_HOMING_RELIABILITY
#endif
// @section tmc/config
@@ -3199,7 +3199,7 @@
* Enable M122 debugging command for TMC stepper drivers.
* M122 S0/1 will enable continuous reporting.
*/
//#define TMC_DEBUG
#define TMC_DEBUG
/**
* You can set your own advanced settings by filling in predefined functions.
@@ -3605,7 +3605,7 @@
/**
* Auto-report position with M154 S<seconds>
*/
//#define AUTO_REPORT_POSITION
#define AUTO_REPORT_POSITION
/**
* Include capabilities in M115 output
@@ -3657,11 +3657,11 @@
// @section reporting
// Extra options for the M114 "Current Position" report
//#define M114_DETAIL // Use 'M114` for details to check planner calculations
#define M114_DETAIL // Use 'M114` for details to check planner calculations
//#define M114_REALTIME // Real current position based on forward kinematics
//#define M114_LEGACY // M114 used to synchronize on every call. Enable if needed.
//#define REPORT_FAN_CHANGE // Report the new fan speed when changed by M106 (and others)
#define REPORT_FAN_CHANGE // Report the new fan speed when changed by M106 (and others)
// @section gcode
@@ -3735,9 +3735,9 @@
// @section custom main menu
// Custom Menu: Main Menu
//#define CUSTOM_MENU_MAIN
#define CUSTOM_MENU_MAIN
#if ENABLED(CUSTOM_MENU_MAIN)
//#define CUSTOM_MENU_MAIN_TITLE "Custom Commands"
#define CUSTOM_MENU_MAIN_TITLE "Custom Commands"
#define CUSTOM_MENU_MAIN_SCRIPT_DONE "M117 User Script Done"
#define CUSTOM_MENU_MAIN_SCRIPT_AUDIBLE_FEEDBACK
//#define CUSTOM_MENU_MAIN_SCRIPT_RETURN // Return to status screen after a script
@@ -3745,11 +3745,11 @@
#define MAIN_MENU_ITEM_1_DESC "Home & UBL Info"
#define MAIN_MENU_ITEM_1_GCODE "G28\nG29 W"
//#define MAIN_MENU_ITEM_1_CONFIRM // Show a confirmation dialog before this action
#define MAIN_MENU_ITEM_1_CONFIRM // Show a confirmation dialog before this action
#define MAIN_MENU_ITEM_2_DESC "Preheat for " PREHEAT_1_LABEL
#define MAIN_MENU_ITEM_2_GCODE "M140 S" STRINGIFY(PREHEAT_1_TEMP_BED) "\nM104 S" STRINGIFY(PREHEAT_1_TEMP_HOTEND)
//#define MAIN_MENU_ITEM_2_CONFIRM
#define MAIN_MENU_ITEM_2_DESC "Extruder 200°C"
#define MAIN_MENU_ITEM_2_GCODE "M104 S200"
#define MAIN_MENU_ITEM_2_CONFIRM
//#define MAIN_MENU_ITEM_3_DESC "Preheat for " PREHEAT_2_LABEL
//#define MAIN_MENU_ITEM_3_GCODE "M140 S" STRINGIFY(PREHEAT_2_TEMP_BED) "\nM104 S" STRINGIFY(PREHEAT_2_TEMP_HOTEND)
@@ -3845,10 +3845,10 @@
* Host Prompt Support enables Marlin to use the host for user prompts so
* filament runout and other processes can be managed from the host side.
*/
//#define HOST_ACTION_COMMANDS
#define HOST_ACTION_COMMANDS
#if ENABLED(HOST_ACTION_COMMANDS)
//#define HOST_PAUSE_M76 // Tell the host to pause in response to M76
//#define HOST_PROMPT_SUPPORT // Initiate host prompts to get user feedback
#define HOST_PAUSE_M76 // Tell the host to pause in response to M76
#define HOST_PROMPT_SUPPORT // Initiate host prompts to get user feedback
#if ENABLED(HOST_PROMPT_SUPPORT)
//#define HOST_STATUS_NOTIFICATIONS // Send some status messages to the host as notifications
#endif
@@ -4218,7 +4218,7 @@
//
// M43 - display pin status, toggle pins, watch pins, watch endstops & toggle LED, test servo probe
//
//#define PINS_DEBUGGING
#define PINS_DEBUGGING
// Enable Tests that will run at startup and produce a report
//#define MARLIN_TEST_BUILD

View File

@@ -28,7 +28,7 @@
/**
* Marlin release version identifier
*/
//#define SHORT_BUILD_VERSION "2.1.2"
//#define SHORT_BUILD_VERSION "2.1.0.2"
/**
* Verbose version identifier which should contain a reference to the location
@@ -41,12 +41,13 @@
* here we define this default string as the date where the latest release
* version was tagged.
*/
//#define STRING_DISTRIBUTION_DATE "2022-12-17"
//#define STRING_DISTRIBUTION_DATE "2023-12-08"
/**
* Defines a generic printer name to be output to the LCD after booting Marlin.
*/
//#define MACHINE_NAME "3D Printer"
#define MACHINE_NAME "sv3dprt01.sv.loc"
#define MACHINE_NAME "sv3dprt01.sv.loc"
/**
* The SOURCE_CODE_URL is the location where users will find the Marlin Source
@@ -54,7 +55,8 @@
* has a distinct Github fork— the Source Code URL should just be the main
* Marlin repository.
*/
//#define SOURCE_CODE_URL "github.com/MarlinFirmware/Marlin"
#define SOURCE_CODE_URL "https://git.soost.dev/me/Marlin"
#define SOURCE_CODE_URL "https://git.soost.dev/me/Marlin"
/**
* Default generic printer UUID.
@@ -65,7 +67,8 @@
* The WEBSITE_URL is the location where users can get more information such as
* documentation about a specific Marlin release.
*/
//#define WEBSITE_URL "marlinfw.org"
//define WEBSITE_URL "https://soo.st"
//define WEBSITE_URL "https://soo.st"
/**
* Set the vendor info the serial USB interface, if changable

50
Marlin/_Bootscreen.h Normal file
View File

@@ -0,0 +1,50 @@
/**
* Made with Marlin Bitmap Converter
* https://marlinfw.org/tools/u8glib/converter.html
*
* This bitmap from the file 'd2.png'
*/
#pragma once
#define CUSTOM_BOOTSCREEN_BMPWIDTH 128
const unsigned char custom_start_bmp[] PROGMEM = {
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x01,0xFF,0xFF,0xFF,0xFF,0xF3,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0x00,0x00,0x7F,0xFF,0xFF,0xFF,0x00,0x7C,0x00,0x00,
0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x3F,0xFF,0xFF,0xFC,0x00,0x1C,0x00,0x00,
0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x1F,0xFF,0xFF,0xF8,0x00,0x0C,0x00,0x00,
0xFF,0xFF,0xFF,0xFF,0xFF,0xE0,0x00,0x00,0x07,0xFF,0xFF,0xF8,0x00,0x1C,0x00,0x00,
0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0x0F,0xC0,0x07,0xFF,0xFF,0xF0,0x00,0x3C,0x00,0x00,
0xFF,0xFF,0xFF,0xFF,0xFF,0x80,0x3F,0xF8,0x03,0xFF,0xFF,0xF0,0x3E,0x7F,0xF0,0x3F,
0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFC,0x01,0xFF,0xFF,0xF0,0x1F,0xFF,0xF0,0x3F,
0xFF,0xFF,0xFF,0xFF,0xFE,0x01,0xFF,0xFF,0x00,0xFF,0xFF,0xF0,0x07,0xFF,0xF0,0x3F,
0xFF,0xFF,0xFF,0xFF,0xFE,0x03,0xFF,0xFF,0x80,0xFF,0xFF,0xF8,0x01,0xFF,0xF0,0x3F,
0xFF,0xFF,0x01,0xFF,0xFC,0x03,0xE0,0x3F,0x80,0x7F,0xFF,0xF8,0x00,0x7F,0xF0,0x3F,
0xFF,0xFC,0x00,0xFF,0xF8,0x07,0xC0,0x0F,0xC0,0x7F,0xFF,0xFC,0x00,0x1F,0xF0,0x3F,
0xFF,0xF8,0x00,0x7F,0xF8,0x0F,0x80,0x07,0xE0,0x7F,0xFF,0xFE,0x00,0x0F,0xF0,0x3F,
0xFF,0xF0,0x00,0x3F,0xF0,0x1F,0x00,0x03,0xE0,0x3F,0xFF,0xFF,0x80,0x0F,0xF0,0x3F,
0xFF,0xF0,0x00,0x1F,0xE0,0x1E,0x00,0x03,0xE0,0x3F,0xC1,0xFF,0xF0,0x0F,0xF0,0x3F,
0x03,0xE0,0x00,0x1F,0xE0,0x3E,0x00,0x01,0xF0,0x3F,0x80,0xFF,0xFC,0x0F,0xF0,0x3F,
0x03,0xE0,0x00,0x1F,0xC0,0x3C,0x00,0x01,0xF0,0x3F,0x00,0xFC,0x7C,0x0F,0xF0,0x3F,
0x03,0xE0,0x00,0x1F,0x80,0x7C,0x00,0x01,0xF0,0x3F,0x00,0x78,0x00,0x0F,0xF0,0x3F,
0x03,0xE0,0x00,0x1F,0x80,0xFC,0x00,0x01,0xF0,0x3F,0x00,0x70,0x00,0x0F,0xF0,0x3F,
0x03,0xE0,0x00,0x1F,0x00,0xFC,0x00,0x01,0xF0,0x3F,0x00,0xE0,0x00,0x1F,0xF0,0x3F,
0x03,0xE0,0x00,0x1F,0x01,0xFE,0x00,0x01,0xF0,0x3F,0x80,0xF8,0x00,0x3F,0xF0,0x3F,
0x03,0xE0,0x00,0x1E,0x03,0xFE,0x00,0x03,0xFF,0xFF,0xC1,0xFC,0x00,0x7F,0xF0,0x3F,
0x01,0xF0,0x00,0x3C,0x03,0xFF,0x00,0x03,0xFF,0xFF,0xFF,0xFF,0xE7,0xFF,0xFF,0xFF,
0x81,0xF8,0x00,0x7C,0x07,0xFF,0x00,0x07,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x80,0xFC,0x00,0xF8,0x07,0xFF,0x80,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x80,0xFE,0x01,0xF0,0x0F,0xFF,0xE0,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xC0,0x7F,0xFF,0xE0,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xC0,0x3F,0xFF,0xC0,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xE0,0x1F,0xFF,0x80,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xF0,0x07,0xFF,0x00,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xF0,0x01,0xFC,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xF8,0x00,0x00,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFC,0x00,0x00,0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0x00,0x00,0x07,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0x80,0x00,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xE0,0x00,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFC,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
};

View File

@@ -23,6 +23,10 @@
#include "../../inc/MarlinConfig.h"
//#define DEBUG_AVR_FAST_PWM
#define DEBUG_OUT ENABLED(DEBUG_AVR_FAST_PWM)
#include "../../core/debug_out.h"
struct Timer {
volatile uint8_t* TCCRnQ[3]; // max 3 TCCR registers per timer
volatile uint16_t* OCRnQ[3]; // max 3 OCR registers per timer
@@ -108,12 +112,15 @@ const Timer get_pwm_timer(const pin_t pin) {
}
void MarlinHAL::set_pwm_frequency(const pin_t pin, const uint16_t f_desired) {
DEBUG_ECHOLNPGM("set_pwm_frequency(pin=", pin, ", freq=", f_desired, ")");
const Timer timer = get_pwm_timer(pin);
if (timer.isProtected || !timer.isPWM) return; // Don't proceed if protected timer or not recognized
const bool is_timer2 = timer.n == 2;
const uint16_t maxtop = is_timer2 ? 0xFF : 0xFFFF;
DEBUG_ECHOLNPGM("maxtop=", maxtop);
uint16_t res = 0xFF; // resolution (TOP value)
uint8_t j = CS_NONE; // prescaler index
uint8_t wgm = WGM_PWM_PC_8; // waveform generation mode
@@ -121,23 +128,29 @@ void MarlinHAL::set_pwm_frequency(const pin_t pin, const uint16_t f_desired) {
// Calculating the prescaler and resolution to use to achieve closest frequency
if (f_desired != 0) {
constexpr uint16_t prescaler[] = { 1, 8, (32), 64, (128), 256, 1024 }; // (*) are Timer 2 only
uint16_t f = (F_CPU) / (2 * 1024 * maxtop) + 1; // Start with the lowest non-zero frequency achievable (1 or 31)
uint16_t f = (F_CPU) / (uint32_t(maxtop) << 11) + 1; // Start with the lowest non-zero frequency achievable (for 16MHz, 1 or 31)
DEBUG_ECHOLNPGM("f=", f);
DEBUG_ECHOLNPGM("(prescaler loop)");
LOOP_L_N(i, COUNT(prescaler)) { // Loop through all prescaler values
const uint16_t p = prescaler[i];
const uint32_t p = prescaler[i]; // Extend to 32 bits for calculations
DEBUG_ECHOLNPGM("prescaler[", i, "]=", p);
uint16_t res_fast_temp, res_pc_temp;
if (is_timer2) {
#if ENABLED(USE_OCR2A_AS_TOP) // No resolution calculation for TIMER2 unless enabled USE_OCR2A_AS_TOP
const uint16_t rft = (F_CPU) / (p * f_desired);
res_fast_temp = rft - 1;
res_pc_temp = rft / 2;
DEBUG_ECHOLNPGM("(Timer2) res_fast_temp=", res_fast_temp, " res_pc_temp=", res_pc_temp);
#else
res_fast_temp = res_pc_temp = maxtop;
DEBUG_ECHOLNPGM("(Timer2) res_fast_temp=", maxtop, " res_pc_temp=", maxtop);
#endif
}
else {
if (p == 32 || p == 128) continue; // Skip TIMER2 specific prescalers when not TIMER2
const uint16_t rft = (F_CPU) / (p * f_desired);
DEBUG_ECHOLNPGM("(Not Timer 2) F_CPU=" STRINGIFY(F_CPU), " prescaler=", p, " f_desired=", f_desired);
res_fast_temp = rft - 1;
res_pc_temp = rft / 2;
}
@@ -147,23 +160,27 @@ void MarlinHAL::set_pwm_frequency(const pin_t pin, const uint16_t f_desired) {
// Calculate frequencies of test prescaler and resolution values
const uint16_t f_fast_temp = (F_CPU) / (p * (1 + res_fast_temp)),
f_pc_temp = (F_CPU) / (2 * p * res_pc_temp);
const int f_diff = _MAX(f, f_desired) - _MIN(f, f_desired),
f_pc_temp = (F_CPU) / ((p * res_pc_temp) << 1),
f_diff = _MAX(f, f_desired) - _MIN(f, f_desired),
f_fast_diff = _MAX(f_fast_temp, f_desired) - _MIN(f_fast_temp, f_desired),
f_pc_diff = _MAX(f_pc_temp, f_desired) - _MIN(f_pc_temp, f_desired);
DEBUG_ECHOLNPGM("f_fast_temp=", f_fast_temp, " f_pc_temp=", f_pc_temp, " f_diff=", f_diff, " f_fast_diff=", f_fast_diff, " f_pc_diff=", f_pc_diff);
if (f_fast_diff < f_diff && f_fast_diff <= f_pc_diff) { // FAST values are closest to desired f
// Set the Wave Generation Mode to FAST PWM
wgm = is_timer2 ? uint8_t(TERN(USE_OCR2A_AS_TOP, WGM2_FAST_PWM_OCR2A, WGM2_FAST_PWM)) : uint8_t(WGM_FAST_PWM_ICRn);
// Remember this combination
f = f_fast_temp; res = res_fast_temp; j = i + 1;
DEBUG_ECHOLNPGM("(FAST) updated f=", f);
}
else if (f_pc_diff < f_diff) { // PHASE CORRECT values are closes to desired f
// Set the Wave Generation Mode to PWM PHASE CORRECT
wgm = is_timer2 ? uint8_t(TERN(USE_OCR2A_AS_TOP, WGM2_PWM_PC_OCR2A, WGM2_PWM_PC)) : uint8_t(WGM_PWM_PC_ICRn);
f = f_pc_temp; res = res_pc_temp; j = i + 1;
DEBUG_ECHOLNPGM("(PHASE) updated f=", f);
}
}
} // prescaler loop
}
_SET_WGMnQ(timer, wgm);

View File

@@ -293,11 +293,11 @@ enum ClockSource2 : uint8_t {
#if HAS_MOTOR_CURRENT_PWM
#if PIN_EXISTS(MOTOR_CURRENT_PWM_XY)
#define PWM_CHK_MOTOR_CURRENT(P) (P == MOTOR_CURRENT_PWM_E || P == MOTOR_CURRENT_PWM_E0 || P == MOTOR_CURRENT_PWM_E1 || P == MOTOR_CURRENT_PWM_Z || P == MOTOR_CURRENT_PWM_XY)
#define PWM_CHK_MOTOR_CURRENT(P) (P == MOTOR_CURRENT_PWM_E_PIN || P == MOTOR_CURRENT_PWM_E0_PIN || P == MOTOR_CURRENT_PWM_E1_PIN || P == MOTOR_CURRENT_PWM_Z_PIN || P == MOTOR_CURRENT_PWM_XY_PIN)
#elif PIN_EXISTS(MOTOR_CURRENT_PWM_Z)
#define PWM_CHK_MOTOR_CURRENT(P) (P == MOTOR_CURRENT_PWM_E || P == MOTOR_CURRENT_PWM_E0 || P == MOTOR_CURRENT_PWM_E1 || P == MOTOR_CURRENT_PWM_Z)
#define PWM_CHK_MOTOR_CURRENT(P) (P == MOTOR_CURRENT_PWM_E_PIN || P == MOTOR_CURRENT_PWM_E0_PIN || P == MOTOR_CURRENT_PWM_E1_PIN || P == MOTOR_CURRENT_PWM_Z_PIN)
#else
#define PWM_CHK_MOTOR_CURRENT(P) (P == MOTOR_CURRENT_PWM_E || P == MOTOR_CURRENT_PWM_E0 || P == MOTOR_CURRENT_PWM_E1)
#define PWM_CHK_MOTOR_CURRENT(P) (P == MOTOR_CURRENT_PWM_E_PIN || P == MOTOR_CURRENT_PWM_E0_PIN || P == MOTOR_CURRENT_PWM_E1_PIN)
#endif
#else
#define PWM_CHK_MOTOR_CURRENT(P) false

View File

@@ -27,6 +27,9 @@
* Hardware Pin : 02 03 06 07 01 05 15 16 17 18 23 24 25 26 64 63 13 12 46 45 44 43 78 77 76 75 74 73 72 71 60 59 58 57 56 55 54 53 50 70 52 51 42 41 40 39 38 37 36 35 22 21 20 19 97 96 95 94 93 92 91 90 89 88 87 86 85 84 83 82 | 04 08 09 10 11 14 27 28 29 30 31 32 33 34 47 48 49 61 62 65 66 67 68 69 79 80 81 98 99 100
* Port : E0 E1 E4 E5 G5 E3 H3 H4 H5 H6 B4 B5 B6 B7 J1 J0 H1 H0 D3 D2 D1 D0 A0 A1 A2 A3 A4 A5 A6 A7 C7 C6 C5 C4 C3 C2 C1 C0 D7 G2 G1 G0 L7 L6 L5 L4 L3 L2 L1 L0 B3 B2 B1 B0 F0 F1 F2 F3 F4 F5 F6 F7 K0 K1 K2 K3 K4 K5 K6 K7 | E2 E6 E7 xx xx H2 H7 G3 G4 xx xx xx xx xx D4 D5 D6 xx xx J2 J3 J4 J5 J6 J7 xx xx xx xx xx
* Logical Pin : 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | 78 79 80 xx xx 84 85 71 70 xx xx xx xx xx 81 82 83 xx xx 72 73 75 76 77 74 xx xx xx xx xx
*
* Arduino Pin Layout video: https://youtu.be/rIqeVCX09FA
* AVR alternate pin function overview video: https://youtu.be/1yd8wuI5Plg
*/
#include "../fastio.h"

View File

@@ -26,6 +26,9 @@
*
* Logical Pin: 38 39 40 41 42 43 44 45 16 10 11 12 06 07 08 09 30 31 32 33 34 35 36 37 17 18 19 20 21 22 23 24 00 01 13 05 02 03 14 15 46 47 48 49 50 51 52 53 25 26 27 28 29 04
* Port: A0 A1 A2 A3 A4 A5 A6 A7 B0 B1 B2 B3 B4 B5 B6 B7 C0 C1 C2 C3 C4 C5 C6 C7 D0 D1 D2 D3 D4 D5 D6 D7 E0 E1 E2 E3 E4 E5 E6 E7 F0 F1 F2 F3 F4 F5 F6 F7 G0 G1 G2 G3 G4 G5
*
* Arduino Pin Layout video: https://youtu.be/rIqeVCX09FA
* AVR alternate pin function overview video: https://youtu.be/1yd8wuI5Plg
*/
#include "../fastio.h"

View File

@@ -26,6 +26,9 @@
*
* Logical Pin: 08 09 10 11 12 13 14 15 16 17 18 19 20 21 00 01 02 03 04 05 06 07
* Port: B0 B1 B2 B3 B4 B5 C0 C1 C2 C3 C4 C5 C6 C7 D0 D1 D2 D3 D4 D5 D6 D7
*
* Arduino Pin Layout video: https://youtu.be/rIqeVCX09FA
* AVR alternate pin function overview video: https://youtu.be/1yd8wuI5Plg
*/
#include "../fastio.h"

View File

@@ -26,6 +26,9 @@
*
* Logical Pin: 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
* Port: B0 B1 B2 B3 B4 B5 B6 B7 D0 D1 D2 D3 D4 D5 D6 D7 C0 C1 C2 C3 C4 C5 C6 C7 A7 A6 A5 A4 A3 A2 A1 A0
*
* Arduino Pin Layout video: https://youtu.be/rIqeVCX09FA
* AVR alternate pin function overview video: https://youtu.be/1yd8wuI5Plg
*/
/** ATMega644

View File

@@ -27,6 +27,9 @@
* Logical Pin: 28 29 30 31 32 33 34 35 20 21 22 23 24 25 26 27 10 11 12 13 14 15 16 17 00 01 02 03 04 05 06 07 08 09(46*47)36 37 18 19 38 39 40 41 42 43 44 45
* Port: A0 A1 A2 A3 A4 A5 A6 A7 B0 B1 B2 B3 B4 B5 B6 B7 C0 C1 C2 C3 C4 C5 C6 C7 D0 D1 D2 D3 D4 D5 D6 D7 E0 E1 E2 E3 E4 E5 E6 E7 F0 F1 F2 F3 F4 F5 F6 F7
* The logical pins 46 and 47 are not supported by Teensyduino, but are supported below as E2 and E3
*
* Arduino Pin Layout video: https://youtu.be/rIqeVCX09FA
* AVR alternate pin function overview video: https://youtu.be/1yd8wuI5Plg
*/
#include "../fastio.h"

View File

@@ -20,7 +20,3 @@
*
*/
#pragma once
#if HAS_SPI_TFT || HAS_FSMC_TFT
#error "Sorry! TFT displays are not available for HAL/AVR."
#endif

View File

@@ -25,6 +25,10 @@
* Test AVR-specific configuration values for errors at compile-time.
*/
#if HAS_SPI_TFT || HAS_FSMC_TFT
#error "Sorry! TFT displays are not available for HAL/AVR."
#endif
/**
* Check for common serial pin conflicts
*/

View File

@@ -27,13 +27,14 @@
// intRes = longIn1 * longIn2 >> 24
// uses:
// A[tmp] to store 0
// B[tmp] to store bits 16-23 of the 48bit result. The top bit is used to round the two byte result.
// note that the lower two bytes and the upper byte of the 48bit result are not calculated.
// this can cause the result to be out by one as the lower bytes may cause carries into the upper ones.
// B A are bits 24-39 and are the returned value
// C B A is longIn1
// D C B A is longIn2
// r1, r0 for the result of mul.
// [tmp1] to store 0.
// [tmp2] to store bits 16-23 of the 56 bit result. The top bit of [tmp2] is used for rounding.
// Note that the lower two bytes and the upper two bytes of the 56 bit result are not calculated.
// This can cause the result to be out by one as the lower bytes may cause carries into the upper ones.
// [intRes] (A B) is bits 24-39 and is the returned value.
// [longIn1] (C B A) is a 24 bit parameter.
// [longIn2] (D C B A) is a 32 bit parameter.
//
FORCE_INLINE static uint16_t MultiU24X32toH16(uint32_t longIn1, uint32_t longIn2) {
uint8_t tmp1;
@@ -66,11 +67,9 @@ FORCE_INLINE static uint16_t MultiU24X32toH16(uint32_t longIn1, uint32_t longIn2
A("add %[tmp2], r1")
A("adc %A[intRes], %[tmp1]")
A("adc %B[intRes], %[tmp1]")
A("lsr %[tmp2]")
A("adc %A[intRes], %[tmp1]")
A("adc %B[intRes], %[tmp1]")
A("mul %D[longIn2], %A[longIn1]")
A("add %A[intRes], r0")
A("lsl %[tmp2]")
A("adc %A[intRes], r0")
A("adc %B[intRes], r1")
A("mul %D[longIn2], %B[longIn1]")
A("add %B[intRes], r0")
@@ -85,11 +84,16 @@ FORCE_INLINE static uint16_t MultiU24X32toH16(uint32_t longIn1, uint32_t longIn2
return intRes;
}
// intRes = intIn1 * intIn2 >> 16
// intRes = intIn1 * intIn2 >> 8
// uses:
// r26 to store 0
// r27 to store the byte 1 of the 24 bit result
FORCE_INLINE static uint16_t MultiU16X8toH16(uint8_t charIn1, uint16_t intIn2) {
// r1, r0 for the result of mul. After the second mul, r0 holds bits 0-7 of the 24 bit result and
// the top bit of r0 is used for rounding.
// [tmp] to store 0.
// [intRes] (A B) is bits 8-15 and is the returned value.
// [charIn1] is an 8 bit parameter.
// [intIn2] (B A) is a 16 bit parameter.
//
FORCE_INLINE static uint16_t MultiU8X16toH16(uint8_t charIn1, uint16_t intIn2) {
uint8_t tmp;
uint16_t intRes;
__asm__ __volatile__ (
@@ -97,10 +101,8 @@ FORCE_INLINE static uint16_t MultiU16X8toH16(uint8_t charIn1, uint16_t intIn2) {
A("mul %[charIn1], %B[intIn2]")
A("movw %A[intRes], r0")
A("mul %[charIn1], %A[intIn2]")
A("add %A[intRes], r1")
A("adc %B[intRes], %[tmp]")
A("lsr r0")
A("adc %A[intRes], %[tmp]")
A("lsl r0")
A("adc %A[intRes], r1")
A("adc %B[intRes], %[tmp]")
A("clr r1")
: [intRes] "=&r" (intRes),

View File

@@ -64,11 +64,13 @@
#define VALID_PIN(pin) (pin >= 0 && pin < NUM_DIGITAL_PINS ? 1 : 0)
#if AVR_ATmega1284_FAMILY
#define DIGITAL_PIN_TO_ANALOG_PIN(P) int(analogInputToDigitalPin(0) - (P))
#define IS_ANALOG(P) ((P) >= analogInputToDigitalPin(7) && (P) <= analogInputToDigitalPin(0))
#define IS_ANALOG(P) WITHIN(P, analogInputToDigitalPin(7), analogInputToDigitalPin(0))
#define DIGITAL_PIN_TO_ANALOG_PIN(P) int(IS_ANALOG(P) ? (P) - analogInputToDigitalPin(7) : -1)
#else
#define DIGITAL_PIN_TO_ANALOG_PIN(P) int((P) - analogInputToDigitalPin(0))
#define IS_ANALOG(P) ((P) >= analogInputToDigitalPin(0) && ((P) <= analogInputToDigitalPin(15) || (P) <= analogInputToDigitalPin(7)))
#define _ANALOG1(P) WITHIN(P, analogInputToDigitalPin(0), analogInputToDigitalPin(7))
#define _ANALOG2(P) WITHIN(P, analogInputToDigitalPin(8), analogInputToDigitalPin(15))
#define IS_ANALOG(P) (_ANALOG1(P) || _ANALOG2(P))
#define DIGITAL_PIN_TO_ANALOG_PIN(P) int(_ANALOG1(P) ? (P) - analogInputToDigitalPin(0) : _ANALOG2(P) ? (P) - analogInputToDigitalPin(8) + 8 : -1)
#endif
#define GET_ARRAY_PIN(p) pgm_read_byte(&pin_array[p].pin)
#define MULTI_NAME_PAD 26 // space needed to be pretty if not first name assigned to a pin

View File

@@ -44,14 +44,14 @@ typedef uint16_t hal_timer_t;
#define MF_TIMER_TEMP 0
#endif
#define TEMP_TIMER_FREQUENCY ((F_CPU) / 64.0 / 256.0)
#define TEMP_TIMER_FREQUENCY (((F_CPU) + 0x2000) / 0x4000)
#define STEPPER_TIMER_RATE HAL_TIMER_RATE
#define STEPPER_TIMER_PRESCALE 8
#define STEPPER_TIMER_TICKS_PER_US ((STEPPER_TIMER_RATE) / 1000000) // Cannot be of type double
#define STEPPER_TIMER_TICKS_PER_US ((STEPPER_TIMER_RATE) / 1000000)
#define PULSE_TIMER_RATE STEPPER_TIMER_RATE // frequency of pulse timer
#define PULSE_TIMER_PRESCALE STEPPER_TIMER_PRESCALE
#define PULSE_TIMER_RATE STEPPER_TIMER_RATE
#define PULSE_TIMER_PRESCALE STEPPER_TIMER_PRESCALE
#define PULSE_TIMER_TICKS_PER_US STEPPER_TIMER_TICKS_PER_US
#define ENABLE_STEPPER_DRIVER_INTERRUPT() SBI(TIMSK1, OCIE1A)

View File

@@ -20,7 +20,3 @@
*
*/
#pragma once
#if HAS_SPI_TFT || HAS_FSMC_TFT
#error "Sorry! TFT displays are not available for HAL/DUE."
#endif

View File

@@ -25,6 +25,10 @@
* Test Arduino Due specific configuration values for errors at compile-time.
*/
#if HAS_SPI_TFT || HAS_FSMC_TFT
#error "Sorry! TFT displays are not available for HAL/DUE."
#endif
/**
* Check for common serial pin conflicts
*/
@@ -77,7 +81,7 @@
#endif
#if ENABLED(FAST_PWM_FAN) || SPINDLE_LASER_FREQUENCY
#error "Features requiring Hardware PWM (FAST_PWM_FAN, SPINDLE_LASER_FREQUENCY) are not yet supported on DUE."
#error "Features requiring Hardware PWM (FAST_PWM_FAN, SPINDLE_LASER_FREQUENCY) are not yet supported for HAL/DUE."
#endif
#if HAS_TMC_SW_SERIAL

View File

@@ -342,16 +342,16 @@ void MarlinHAL::set_pwm_duty(const pin_t pin, const uint16_t v, const uint16_t v
}
else
pindata.pwm_duty_ticks = duty; // PWM duty count = # of 4µs ticks per full PWM cycle
return;
}
else
#endif
{
const int8_t cid = get_pwm_channel(pin, PWM_FREQUENCY, PWM_RESOLUTION);
if (cid >= 0) {
const uint32_t duty = map(invert ? v_size - v : v, 0, v_size, 0, _BV(PWM_RESOLUTION)-1);
ledcWrite(cid, duty);
}
}
const int8_t cid = get_pwm_channel(pin, PWM_FREQUENCY, PWM_RESOLUTION);
if (cid >= 0) {
const uint32_t duty = map(invert ? v_size - v : v, 0, v_size, 0, _BV(PWM_RESOLUTION)-1);
ledcWrite(cid, duty);
}
}
int8_t MarlinHAL::set_pwm_frequency(const pin_t pin, const uint32_t f_desired) {
@@ -360,17 +360,15 @@ int8_t MarlinHAL::set_pwm_frequency(const pin_t pin, const uint32_t f_desired) {
pwm_pin_data[pin & 0x7F].pwm_cycle_ticks = 1000000UL / f_desired / 4; // # of 4µs ticks per full PWM cycle
return 0;
}
else
#endif
{
const int8_t cid = channel_for_pin(pin);
if (cid >= 0) {
if (f_desired == ledcReadFreq(cid)) return cid; // no freq change
ledcDetachPin(chan_pin[cid]);
chan_pin[cid] = 0; // remove old freq channel
}
return get_pwm_channel(pin, f_desired, PWM_RESOLUTION); // try for new one
}
const int8_t cid = channel_for_pin(pin);
if (cid >= 0) {
if (f_desired == ledcReadFreq(cid)) return cid; // no freq change
ledcDetachPin(chan_pin[cid]);
chan_pin[cid] = 0; // remove old freq channel
}
return get_pwm_channel(pin, f_desired, PWM_RESOLUTION); // try for new one
}
// use hardware PWM if avail, if not then ISR

View File

@@ -50,14 +50,12 @@
#define MYSERIAL1 flushableSerial
#if EITHER(WIFISUPPORT, ESP3D_WIFISUPPORT)
#if ENABLED(ESP3D_WIFISUPPORT)
typedef ForwardSerial1Class< decltype(Serial2Socket) > DefaultSerial1;
extern DefaultSerial1 MSerial0;
#define MYSERIAL2 MSerial0
#else
#define MYSERIAL2 webSocketSerial
#endif
#if ENABLED(ESP3D_WIFISUPPORT)
typedef ForwardSerial1Class< decltype(Serial2Socket) > DefaultSerial1;
extern DefaultSerial1 MSerial0;
#define MYSERIAL2 MSerial0
#elif ENABLED(WIFISUPPORT)
#define MYSERIAL2 webSocketSerial
#endif
#define CRITICAL_SECTION_START() portENTER_CRITICAL(&hal.spinlock)

View File

@@ -149,30 +149,28 @@ void stepperTask(void *parameter) {
dma.rw_pos = 0;
while (dma.rw_pos < DMA_SAMPLE_COUNT) {
// Fill with the port data post pulse_phase until the next step
if (nextMainISR && TERN1(LIN_ADVANCE, nextAdvanceISR))
i2s_push_sample();
// i2s_push_sample() is also called from Stepper::pulse_phase_isr() and Stepper::advance_isr()
// in a rare case where both are called, we need to double decrement the counters
const uint8_t push_count = 1 + (!nextMainISR && TERN0(LIN_ADVANCE, !nextAdvanceISR));
#if ENABLED(LIN_ADVANCE)
if (!nextAdvanceISR) {
Stepper::advance_isr();
nextAdvanceISR = Stepper::la_interval;
}
else if (nextAdvanceISR == Stepper::LA_ADV_NEVER)
nextAdvanceISR = Stepper::la_interval;
#endif
if (!nextMainISR) {
Stepper::pulse_phase_isr();
nextMainISR = Stepper::block_phase_isr();
}
#if ENABLED(LIN_ADVANCE)
else if (!nextAdvanceISR) {
Stepper::advance_isr();
nextAdvanceISR = Stepper::la_interval;
}
#endif
else
i2s_push_sample();
nextMainISR -= push_count;
TERN_(LIN_ADVANCE, nextAdvanceISR -= push_count);
nextMainISR--;
#if ENABLED(LIN_ADVANCE)
if (nextAdvanceISR == Stepper::LA_ADV_NEVER)
nextAdvanceISR = Stepper::la_interval;
if (nextAdvanceISR && nextAdvanceISR != Stepper::LA_ADV_NEVER)
nextAdvanceISR--;
#endif
}
}
}

View File

@@ -20,7 +20,3 @@
*
*/
#pragma once
#if HAS_SPI_TFT || HAS_FSMC_TFT
#error "Sorry! TFT displays are not available for HAL/ESP32."
#endif

View File

@@ -21,12 +21,19 @@
*/
#pragma once
#if HAS_SPI_TFT || HAS_FSMC_TFT
#error "Sorry! TFT displays are not available for HAL/ESP32."
#endif
#if ENABLED(EMERGENCY_PARSER)
#error "EMERGENCY_PARSER is not yet implemented for ESP32. Disable EMERGENCY_PARSER to continue."
#endif
#if (ENABLED(SPINDLE_LASER_USE_PWM) && SPINDLE_LASER_FREQUENCY > 78125) || (ENABLED(FAST_PWM_FAN_FREQUENCY) && FAST_PWM_FAN_FREQUENCY > 78125)
#error "SPINDLE_LASER_FREQUENCY and FAST_PWM_FREQUENCY maximum value is 78125Hz for ESP32."
#if ENABLED(SPINDLE_LASER_USE_PWM) && SPINDLE_LASER_FREQUENCY > 78125
#error "SPINDLE_LASER_FREQUENCY maximum value is 78125Hz for ESP32."
#endif
#if ENABLED(FAST_PWM_FAN) && FAST_PWM_FAN_FREQUENCY > 78125
#error "FAST_PWM_FREQUENCY maximum value is 78125Hz for ESP32."
#endif
#if HAS_TMC_SW_SERIAL
@@ -56,3 +63,7 @@
#if BOTH(I2S_STEPPER_STREAM, LIN_ADVANCE) && DISABLED(EXPERIMENTAL_I2S_LA)
#error "I2S stream is currently incompatible with LIN_ADVANCE."
#endif
#if BOTH(I2S_STEPPER_STREAM, PRINTCOUNTER) && PRINTCOUNTER_SAVE_INTERVAL > 0 && DISABLED(PRINTCOUNTER_SYNC)
#error "PRINTCOUNTER_SAVE_INTERVAL may cause issues on ESP32 with an I2S expander. Define PRINTCOUNTER_SYNC in Configuration.h for an imperfect solution."
#endif

View File

@@ -111,12 +111,12 @@ void HAL_timer_start(const uint8_t timer_num, const uint32_t frequency) {
/**
* Set the upper value of the timer, when the timer reaches this upper value the
* interrupt should be triggered and the counter reset
* @param timer_num timer number to set the count to
* @param count threshold at which the interrupt is triggered
* @param timer_num timer number to set the compare value to
* @param compare threshold at which the interrupt is triggered
*/
void HAL_timer_set_compare(const uint8_t timer_num, hal_timer_t count) {
void HAL_timer_set_compare(const uint8_t timer_num, const hal_timer_t compare) {
const tTimerConfig timer = timer_config[timer_num];
timer_set_alarm_value(timer.group, timer.idx, count);
timer_set_alarm_value(timer.group, timer.idx, compare);
}
/**

View File

@@ -27,7 +27,7 @@
#define GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
#endif
#include HAL_PATH(.,HAL.h)
#include HAL_PATH(..,HAL.h)
extern MarlinHAL hal;
#define HAL_ADC_RANGE _BV(HAL_ADC_RESOLUTION)

View File

@@ -20,7 +20,3 @@
*
*/
#pragma once
#if HAS_SPI_TFT || HAS_FSMC_TFT
#error "Sorry! TFT displays are not available for HAL/LINUX."
#endif

View File

@@ -31,13 +31,17 @@
#endif
#if ENABLED(FAST_PWM_FAN) || SPINDLE_LASER_FREQUENCY
#error "Features requiring Hardware PWM (FAST_PWM_FAN, SPINDLE_LASER_FREQUENCY) are not yet supported on LINUX."
#error "Features requiring Hardware PWM (FAST_PWM_FAN, SPINDLE_LASER_FREQUENCY) are not yet supported for HAL/LINUX."
#endif
#if HAS_SPI_TFT || HAS_FSMC_TFT
#error "Sorry! TFT displays are not available for HAL/LINUX."
#endif
#if HAS_TMC_SW_SERIAL
#error "TMC220x Software Serial is not supported on LINUX."
#error "TMC220x Software Serial is not supported for HAL/LINUX."
#endif
#if ENABLED(POSTMORTEM_DEBUGGING)
#error "POSTMORTEM_DEBUGGING is not yet supported on LINUX."
#error "POSTMORTEM_DEBUGGING is not yet supported for HAL/LINUX."
#endif

View File

@@ -25,10 +25,10 @@
#include "../../inc/MarlinConfigPre.h"
#if BOTH(HAS_MARLINUI_U8GLIB, SDSUPPORT) && (LCD_PINS_D4 == SD_SCK_PIN || LCD_PINS_ENABLE == SD_MOSI_PIN || DOGLCD_SCK == SD_SCK_PIN || DOGLCD_MOSI == SD_MOSI_PIN)
#define LPC_SOFTWARE_SPI // If the SD card and LCD adapter share the same SPI pins, then software SPI is currently
// needed due to the speed and mode required for communicating with each device being different.
// This requirement can be removed if the SPI access to these devices is updated to use
// spiBeginTransaction.
#define SOFTWARE_SPI // If the SD card and LCD adapter share the same SPI pins, then software SPI is currently
// needed due to the speed and mode required for communicating with each device being different.
// This requirement can be removed if the SPI access to these devices is updated to use
// spiBeginTransaction.
#endif
// Onboard SD

View File

@@ -60,7 +60,7 @@
// ------------------------
// Public functions
// ------------------------
#if ENABLED(LPC_SOFTWARE_SPI)
#if ENABLED(SOFTWARE_SPI)
// Software SPI
@@ -161,7 +161,7 @@
// TODO: Implement this method
}
#endif // LPC_SOFTWARE_SPI
#endif // SOFTWARE_SPI
/**
* @brief Wait until TXE (tx empty) flag is set and BSY (busy) flag unset.

View File

@@ -20,7 +20,3 @@
*
*/
#pragma once
#if HAS_FSMC_TFT
#error "Sorry! FSMC TFT displays are not current available for HAL/LPC1768."
#endif

View File

@@ -30,5 +30,5 @@
// LPC1768 boards seem to lose steps when saving to EEPROM during print (issue #20785)
// TODO: Which other boards are incompatible?
#if defined(MCU_LPC1768) && ENABLED(FLASH_EEPROM_EMULATION) && PRINTCOUNTER_SAVE_INTERVAL > 0
#define PRINTCOUNTER_SYNC 1
#define PRINTCOUNTER_SYNC
#endif

View File

@@ -77,6 +77,10 @@ static_assert(!(NUM_SERVOS && ENABLED(FAST_PWM_FAN)), "BLTOUCH and Servos are in
#endif
#endif
#if HAS_FSMC_TFT
#error "Sorry! FSMC TFT displays are not current available for HAL/LPC1768."
#endif
static_assert(DISABLED(BAUD_RATE_GCODE), "BAUD_RATE_GCODE is not yet supported on LPC176x.");
/**

View File

@@ -29,8 +29,8 @@
*/
#define NUMBER_PINS_TOTAL NUM_DIGITAL_PINS
#define pwm_details(pin) pin = pin // do nothing // print PWM details
#define pwm_status(pin) false //Print a pin's PWM status. Return true if it's currently a PWM pin.
#define pwm_details(pin) NOOP // do nothing
#define pwm_status(pin) false // Print a pin's PWM status. Return true if it's currently a PWM pin.
#define IS_ANALOG(P) (DIGITAL_PIN_TO_ANALOG_PIN(P) >= 0 ? 1 : 0)
#define digitalRead_mod(p) extDigitalRead(p)
#define PRINT_PORT(p)

View File

@@ -24,10 +24,10 @@
#include "../../core/macros.h"
#if BOTH(SDSUPPORT, HAS_MARLINUI_U8GLIB) && (LCD_PINS_D4 == SD_SCK_PIN || LCD_PINS_ENABLE == SD_MOSI_PIN || DOGLCD_SCK == SD_SCK_PIN || DOGLCD_MOSI == SD_MOSI_PIN)
#define LPC_SOFTWARE_SPI // If the SD card and LCD adapter share the same SPI pins, then software SPI is currently
// needed due to the speed and mode required for communicating with each device being different.
// This requirement can be removed if the SPI access to these devices is updated to use
// spiBeginTransaction.
#define SOFTWARE_SPI // If the SD card and LCD adapter share the same SPI pins, then software SPI is currently
// needed due to the speed and mode required for communicating with each device being different.
// This requirement can be removed if the SPI access to these devices is updated to use
// spiBeginTransaction.
#endif
/** onboard SD card */

View File

@@ -208,8 +208,8 @@ public:
MarlinHAL() {}
// Watchdog
static void watchdog_init() IF_DISABLED(USE_WATCHDOG, {});
static void watchdog_refresh() IF_DISABLED(USE_WATCHDOG, {});
static void watchdog_init();
static void watchdog_refresh();
static void init() {} // Called early in setup()
static void init_board() {} // Called less early in setup()

View File

@@ -31,7 +31,7 @@
#endif
#if ENABLED(FAST_PWM_FAN) || SPINDLE_LASER_FREQUENCY
#error "Features requiring Hardware PWM (FAST_PWM_FAN, SPINDLE_LASER_FREQUENCY) are not yet supported on LINUX."
#error "Features requiring Hardware PWM (FAST_PWM_FAN, SPINDLE_LASER_FREQUENCY) are not yet supported for HAL/LINUX."
#endif
#if HAS_TMC_SW_SERIAL

View File

@@ -27,8 +27,8 @@
*/
#define NUMBER_PINS_TOTAL NUM_DIGITAL_PINS
#define pwm_details(pin) pin = pin // do nothing // print PWM details
#define pwm_status(pin) false //Print a pin's PWM status. Return true if it's currently a PWM pin.
#define pwm_details(pin) NOOP // do nothing
#define pwm_status(pin) false // Print a pin's PWM status. Return true if it's currently a PWM pin.
#define IS_ANALOG(P) (DIGITAL_PIN_TO_ANALOG_PIN(P) >= 0 ? 1 : 0)
#define digitalRead_mod(p) digitalRead(p)
#define PRINT_PORT(p)

View File

@@ -25,7 +25,7 @@
#include "../../inc/MarlinConfigPre.h"
#if BOTH(HAS_MARLINUI_U8GLIB, SDSUPPORT) && (LCD_PINS_D4 == SD_SCK_PIN || LCD_PINS_ENABLE == SD_MOSI_PIN || DOGLCD_SCK == SD_SCK_PIN || DOGLCD_MOSI == SD_MOSI_PIN)
#define LPC_SOFTWARE_SPI // If the SD card and LCD adapter share the same SPI pins, then software SPI is currently
#define SOFTWARE_SPI // If the SD card and LCD adapter share the same SPI pins, then software SPI is currently
// needed due to the speed and mode required for communicating with each device being different.
// This requirement can be removed if the SPI access to these devices is updated to use
// spiBeginTransaction.

View File

@@ -34,4 +34,3 @@ void u8g_i2c_stop();
#ifdef __cplusplus
}
#endif

View File

@@ -40,5 +40,3 @@ uint8_t u8g_com_ST7920_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void
#define U8G_COM_T6963 u8g_com_null_fn
#define U8G_COM_FAST_PARALLEL u8g_com_null_fn
#define U8G_COM_UC_I2C u8g_com_null_fn

View File

@@ -64,7 +64,7 @@
}
void spiInit(uint8_t spiRate) {
// Use datarates Marlin uses
// Use Marlin datarates
uint32_t clock;
switch (spiRate) {
case SPI_FULL_SPEED: clock = 8000000; break;

View File

@@ -213,4 +213,3 @@
#define DIO53_PIN PIN_PA21
#define DIO54_PIN PIN_PA06
#define DIO55_PIN PIN_PA07

View File

@@ -20,12 +20,4 @@
*
*/
/**
* SAMD21 HAL developed by Bart Meijer (brupje)
* Based on SAMD51 HAL by Giuliano Zaro (AKA GMagician)
*/
#pragma once
#if HAS_SPI_TFT || HAS_FSMC_TFT
#error "Sorry! TFT displays are not available for HAL/SAMD21."
#endif

View File

@@ -29,6 +29,10 @@
* Test SAMD21 specific configuration values for errors at compile-time.
*/
#if HAS_SPI_TFT || HAS_FSMC_TFT
#error "Sorry! TFT displays are not available for HAL/SAMD21."
#endif
#if SERVO_TC == MF_TIMER_RTC
#error "Servos can't use RTC timer"
#endif
@@ -42,7 +46,7 @@
#endif
#if ENABLED(FAST_PWM_FAN)
#error "Features requiring Hardware PWM (FAST_PWM_FAN) are not yet supported on SAMD21."
#error "Features requiring Hardware PWM (FAST_PWM_FAN) are not yet supported for HAL/SAMD21."
#endif
#if ENABLED(POSTMORTEM_DEBUGGING)

View File

@@ -47,11 +47,11 @@ const tTimerConfig timer_config[NUM_HARDWARE_TIMERS] = {
{ {.pTcc=TCC0}, TimerType::tcc, TCC0_IRQn, TC_PRIORITY(0) }, // 0 - stepper (assigned priority 2)
{ {.pTcc=TCC1}, TimerType::tcc, TCC1_IRQn, TC_PRIORITY(1) }, // 1 - stepper (needed by 32 bit timers)
{ {.pTcc=TCC2}, TimerType::tcc, TCC2_IRQn, 5 }, // 2 - tone (reserved by framework and fixed assigned priority 5)
{ {.pTc=TC3}, TimerType::tc, TC3_IRQn, TC_PRIORITY(3) }, // 3 - servo (assigned priority 1)
{ {.pTc=TC4}, TimerType::tc, TC4_IRQn, TC_PRIORITY(4) }, // 4 - software serial (no interrupts used)
{ {.pTc=TC5}, TimerType::tc, TC5_IRQn, TC_PRIORITY(5) },
{ {.pTc=TC6}, TimerType::tc, TC6_IRQn, TC_PRIORITY(6) },
{ {.pTc=TC7}, TimerType::tc, TC7_IRQn, TC_PRIORITY(7) },
{ {.pTc=TC3}, TimerType::tc, TC3_IRQn, TC_PRIORITY(3) }, // 3 - servo (assigned priority 1)
{ {.pTc=TC4}, TimerType::tc, TC4_IRQn, TC_PRIORITY(4) }, // 4 - software serial (no interrupts used)
{ {.pTc=TC5}, TimerType::tc, TC5_IRQn, TC_PRIORITY(5) },
{ {.pTc=TC6}, TimerType::tc, TC6_IRQn, TC_PRIORITY(6) },
{ {.pTc=TC7}, TimerType::tc, TC7_IRQn, TC_PRIORITY(7) },
{ {.pRtc=RTC}, TimerType::rtc, RTC_IRQn, TC_PRIORITY(8) } // 8 - temperature (assigned priority 6)
};

View File

@@ -20,7 +20,3 @@
*
*/
#pragma once
#if HAS_SPI_TFT || HAS_FSMC_TFT
#error "Sorry! TFT displays are not available for HAL/SAMD51."
#endif

View File

@@ -29,6 +29,10 @@
* Test SAMD51 specific configuration values for errors at compile-time.
*/
#if HAS_SPI_TFT || HAS_FSMC_TFT
#error "Sorry! TFT displays are not available for HAL/SAMD51."
#endif
#if ENABLED(FLASH_EEPROM_EMULATION)
#warning "Did you activate the SmartEEPROM? See https://github.com/GMagician/SAMD51-SmartEEprom-Manager/releases"
#endif
@@ -55,7 +59,7 @@
#endif
#if ENABLED(FAST_PWM_FAN) || SPINDLE_LASER_FREQUENCY
#error "Features requiring Hardware PWM (FAST_PWM_FAN, SPINDLE_LASER_FREQUENCY) are not yet supported on SAMD51."
#error "Features requiring Hardware PWM (FAST_PWM_FAN, SPINDLE_LASER_FREQUENCY) are not yet supported for HAL/SAMD51."
#endif
#if ENABLED(POSTMORTEM_DEBUGGING)

View File

@@ -138,7 +138,7 @@
typedef double isr_float_t; // FPU ops are used for single-precision, so use double for ISRs.
#ifdef STM32G0B1xx
#if defined(STM32G0B1xx) || defined(STM32H7xx)
typedef int32_t pin_t;
#else
typedef int16_t pin_t;

View File

@@ -78,7 +78,6 @@ static SPISettings spiConfig;
case SPI_SPEED_6: delaySPIFunc = &delaySPI_2000; break; // desired: 250,000 actual: ~210K
default: delaySPIFunc = &delaySPI_4000; break; // desired: 125,000 actual: ~123K
}
SPI.begin();
}
// Begin SPI transaction, set clock, bit order, data mode

View File

@@ -48,7 +48,7 @@ static char _ALIGN(4) HAL_eeprom_data[MARLIN_EEPROM_SIZE];
bool PersistentStore::access_start() {
if (!card.isMounted()) return false;
SdFile file, root = card.getroot();
MediaFile file, root = card.getroot();
if (!file.open(&root, EEPROM_FILENAME, O_RDONLY))
return true;
@@ -63,7 +63,7 @@ bool PersistentStore::access_start() {
bool PersistentStore::access_finish() {
if (!card.isMounted()) return false;
SdFile file, root = card.getroot();
MediaFile file, root = card.getroot();
int bytes_written = 0;
if (file.open(&root, EEPROM_FILENAME, O_CREAT | O_WRITE | O_TRUNC)) {
bytes_written = file.write(HAL_eeprom_data, MARLIN_EEPROM_SIZE);

View File

@@ -30,5 +30,5 @@
// Some STM32F4 boards may lose steps when saving to EEPROM during print (PR #17946)
#if defined(STM32F4xx) && ENABLED(FLASH_EEPROM_EMULATION) && PRINTCOUNTER_SAVE_INTERVAL > 0
#define PRINTCOUNTER_SYNC 1
#define PRINTCOUNTER_SYNC
#endif

View File

@@ -286,6 +286,9 @@ void HAL_SD_MspInit(SD_HandleTypeDef *hsd) {
go_to_transfer_speed();
hsd.Init.ClockPowerSave = SDIO_CLOCK_POWER_SAVE_ENABLE;
hsd.Init.ClockDiv = 8;
#if PINS_EXIST(SDIO_D1, SDIO_D2, SDIO_D3) // go to 4 bit wide mode if pins are defined
retry_Cnt = retryCnt;
for (;;) {
@@ -433,7 +436,10 @@ bool SDIO_WriteBlock(uint32_t block, const uint8_t *src) {
#else
uint8_t retries = SDIO_READ_RETRIES;
while (retries--) if (SDIO_ReadWriteBlock_DMA(block, src, nullptr)) return true;
while (retries--) {
if (SDIO_ReadWriteBlock_DMA(block, src, nullptr)) return true;
delay(10);
}
return false;
#endif

View File

@@ -44,7 +44,7 @@ static void USBH_UserProcess(USBH_HandleTypeDef *phost, uint8_t id) {
break;
case HOST_USER_DISCONNECTION:
//SERIAL_ECHOLNPGM("APPLICATION_DISCONNECT");
//usb.setUsbTaskState(USB_STATE_RUNNING);
usb.setUsbTaskState(USB_STATE_INIT);
break;
case HOST_USER_CLASS_ACTIVE:
//SERIAL_ECHOLNPGM("APPLICATION_READY");

View File

@@ -47,7 +47,7 @@ static char _ALIGN(4) HAL_eeprom_data[MARLIN_EEPROM_SIZE];
bool PersistentStore::access_start() {
if (!card.isMounted()) return false;
SdFile file, root = card.getroot();
MediaFile file, root = card.getroot();
if (!file.open(&root, EEPROM_FILENAME, O_RDONLY))
return true; // false aborts the save
@@ -62,7 +62,7 @@ bool PersistentStore::access_start() {
bool PersistentStore::access_finish() {
if (!card.isMounted()) return false;
SdFile file, root = card.getroot();
MediaFile file, root = card.getroot();
int bytes_written = 0;
if (file.open(&root, EEPROM_FILENAME, O_CREAT | O_WRITE | O_TRUNC)) {
bytes_written = file.write(HAL_eeprom_data, MARLIN_EEPROM_SIZE);

View File

@@ -39,7 +39,7 @@ inline uint8_t timer_and_index_for_pin(const pin_t pin, timer_dev **timer_ptr) {
void MarlinHAL::set_pwm_duty(const pin_t pin, const uint16_t v, const uint16_t v_size/*=255*/, const bool invert/*=false*/) {
const uint16_t duty = invert ? v_size - v : v;
if (PWM_PIN(pin)) {
timer_dev *timer; UNUSED(timer);
timer_dev *timer;
if (timer_freq[timer_and_index_for_pin(pin, &timer)] == 0)
set_pwm_frequency(pin, PWM_FREQUENCY);
const uint8_t channel = PIN_MAP[pin].timer_channel;
@@ -55,7 +55,7 @@ void MarlinHAL::set_pwm_duty(const pin_t pin, const uint16_t v, const uint16_t v
void MarlinHAL::set_pwm_frequency(const pin_t pin, const uint16_t f_desired) {
if (!PWM_PIN(pin)) return; // Don't proceed if no hardware timer
timer_dev *timer; UNUSED(timer);
timer_dev *timer;
timer_freq[timer_and_index_for_pin(pin, &timer)] = f_desired;
// Protect used timers

View File

@@ -1,11 +1,31 @@
/*-----------------------------------------------------------------------
/ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
/ * Copyright (c) 2019 BigTreeTech [https://github.com/bigtreetech]
/ * Low level disk interface module include file (C)ChaN, 2015
/-----------------------------------------------------------------------*/
/**
* 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/>.
*
*/
#pragma once
/*-----------------------------------------------------------------------
/ * Copyright (c) 2019 BigTreeTech [https://github.com/bigtreetech]
/ * Low level disk interface module include file (c) ChaN, 2015
/-----------------------------------------------------------------------*/
#define _DISKIO_WRITE 1 /* 1: Enable disk_write function */
#define _DISKIO_IOCTL 1 /* 1: Enable disk_ioctl function */
#define _DISKIO_ISDIO 0 /* 1: Enable iSDIO control function */

View File

@@ -20,7 +20,3 @@
*
*/
#pragma once
#if HAS_SPI_TFT || HAS_FSMC_TFT
#error "Sorry! TFT displays are not available for HAL/TEENSY31_32."
#endif

View File

@@ -25,22 +25,26 @@
* Test TEENSY35_36 specific configuration values for errors at compile-time.
*/
#if HAS_SPI_TFT || HAS_FSMC_TFT
#error "Sorry! TFT displays are not available for Teensy 3.1/3.2."
#endif
#if ENABLED(EMERGENCY_PARSER)
#error "EMERGENCY_PARSER is not yet implemented for Teensy 3.1/3.2. Disable EMERGENCY_PARSER to continue."
#endif
#if ENABLED(FAST_PWM_FAN) || SPINDLE_LASER_FREQUENCY
#error "Features requiring Hardware PWM (FAST_PWM_FAN, SPINDLE_LASER_FREQUENCY) are not yet supported on Teensy 3.1/3.2."
#error "Features requiring Hardware PWM (FAST_PWM_FAN, SPINDLE_LASER_FREQUENCY) are not yet supported for Teensy 3.1/3.2."
#endif
#if HAS_TMC_SW_SERIAL
#error "TMC220x Software Serial is not supported on Teensy 3.1/3.2."
#error "TMC220x Software Serial is not supported for Teensy 3.1/3.2."
#endif
#if ENABLED(POSTMORTEM_DEBUGGING)
#error "POSTMORTEM_DEBUGGING is not yet supported on Teensy 3.1/3.2."
#error "POSTMORTEM_DEBUGGING is not yet supported for Teensy 3.1/3.2."
#endif
#if USING_PULLDOWNS
#error "PULLDOWN pin mode is not available on Teensy 3.1/3.2 boards."
#error "PULLDOWN pin mode is not available for Teensy 3.1/3.2."
#endif

View File

@@ -20,7 +20,3 @@
*
*/
#pragma once
#if HAS_SPI_TFT || HAS_FSMC_TFT
#error "Sorry! TFT displays are not available for HAL/TEENSY35_36."
#endif

View File

@@ -25,22 +25,26 @@
* Test TEENSY35_36 specific configuration values for errors at compile-time.
*/
#if HAS_SPI_TFT || HAS_FSMC_TFT
#error "Sorry! TFT displays are not available for Teensy 3.5/3.6."
#endif
#if ENABLED(EMERGENCY_PARSER)
#error "EMERGENCY_PARSER is not yet implemented for Teensy 3.5/3.6. Disable EMERGENCY_PARSER to continue."
#endif
#if ENABLED(FAST_PWM_FAN) || SPINDLE_LASER_FREQUENCY
#error "Features requiring Hardware PWM (FAST_PWM_FAN, SPINDLE_LASER_FREQUENCY) are not yet supported on Teensy 3.5/3.6."
#error "Features requiring Hardware PWM (FAST_PWM_FAN, SPINDLE_LASER_FREQUENCY) are not yet supported for Teensy 3.5/3.6."
#endif
#if HAS_TMC_SW_SERIAL
#error "TMC220x Software Serial is not supported on Teensy 3.5/3.6."
#error "TMC220x Software Serial is not supported for Teensy 3.5/3.6."
#endif
#if ENABLED(POSTMORTEM_DEBUGGING)
#error "POSTMORTEM_DEBUGGING is not yet supported on Teensy 3.5/3.6."
#error "POSTMORTEM_DEBUGGING is not yet supported for Teensy 3.5/3.6."
#endif
#if USING_PULLDOWNS
#error "PULLDOWN pin mode is not available on Teensy 3.5/3.6 boards."
#error "PULLDOWN pin mode is not available for Teensy 3.5/3.6."
#endif

View File

@@ -20,7 +20,3 @@
*
*/
#pragma once
#if HAS_SPI_TFT || HAS_FSMC_TFT
#error "Sorry! TFT displays are not available for HAL/TEENSY40_41."
#endif

View File

@@ -25,18 +25,22 @@
* Test TEENSY41 specific configuration values for errors at compile-time.
*/
#if HAS_SPI_TFT || HAS_FSMC_TFT
#error "Sorry! TFT displays are not available for Teensy 4.0/4.1."
#endif
#if ENABLED(EMERGENCY_PARSER)
#error "EMERGENCY_PARSER is not yet implemented for Teensy 4.0/4.1. Disable EMERGENCY_PARSER to continue."
#endif
#if ENABLED(FAST_PWM_FAN) || SPINDLE_LASER_FREQUENCY
#error "Features requiring Hardware PWM (FAST_PWM_FAN, SPINDLE_LASER_FREQUENCY) are not yet supported on Teensy 4.0/4.1."
#error "Features requiring Hardware PWM (FAST_PWM_FAN, SPINDLE_LASER_FREQUENCY) are not yet supported for Teensy 4.0/4.1."
#endif
#if HAS_TMC_SW_SERIAL
#error "TMC220x Software Serial is not supported on Teensy 4.0/4.1."
#error "TMC220x Software Serial is not supported for Teensy 4.0/4.1."
#endif
#if ENABLED(POSTMORTEM_DEBUGGING)
#error "POSTMORTEM_DEBUGGING is not yet supported on Teensy 4.0/4.1."
#error "POSTMORTEM_DEBUGGING is not yet supported for Teensy 4.0/4.1."
#endif

View File

@@ -24,34 +24,34 @@
#define XSTR(V...) #V
#ifdef __AVR__
#define HAL_PATH(PATH, NAME) XSTR(PATH/AVR/NAME)
#define HAL_PATH(PATH, NAME) XSTR(PATH/HAL/AVR/NAME)
#elif defined(ARDUINO_ARCH_SAM)
#define HAL_PATH(PATH, NAME) XSTR(PATH/DUE/NAME)
#define HAL_PATH(PATH, NAME) XSTR(PATH/HAL/DUE/NAME)
#elif defined(__MK20DX256__)
#define HAL_PATH(PATH, NAME) XSTR(PATH/TEENSY31_32/NAME)
#define HAL_PATH(PATH, NAME) XSTR(PATH/HAL/TEENSY31_32/NAME)
#elif defined(__MK64FX512__) || defined(__MK66FX1M0__)
#define HAL_PATH(PATH, NAME) XSTR(PATH/TEENSY35_36/NAME)
#define HAL_PATH(PATH, NAME) XSTR(PATH/HAL/TEENSY35_36/NAME)
#elif defined(__IMXRT1062__)
#define HAL_PATH(PATH, NAME) XSTR(PATH/TEENSY40_41/NAME)
#define HAL_PATH(PATH, NAME) XSTR(PATH/HAL/TEENSY40_41/NAME)
#elif defined(TARGET_LPC1768)
#define HAL_PATH(PATH, NAME) XSTR(PATH/LPC1768/NAME)
#define HAL_PATH(PATH, NAME) XSTR(PATH/HAL/LPC1768/NAME)
#elif defined(__STM32F1__) || defined(TARGET_STM32F1)
#define HAL_PATH(PATH, NAME) XSTR(PATH/STM32F1/NAME)
#define HAL_PATH(PATH, NAME) XSTR(PATH/HAL/STM32F1/NAME)
#elif defined(ARDUINO_ARCH_STM32)
#ifndef HAL_STM32
#define HAL_STM32
#endif
#define HAL_PATH(PATH, NAME) XSTR(PATH/STM32/NAME)
#define HAL_PATH(PATH, NAME) XSTR(PATH/HAL/STM32/NAME)
#elif defined(ARDUINO_ARCH_ESP32)
#define HAL_PATH(PATH, NAME) XSTR(PATH/ESP32/NAME)
#define HAL_PATH(PATH, NAME) XSTR(PATH/HAL/ESP32/NAME)
#elif defined(__PLAT_LINUX__)
#define HAL_PATH(PATH, NAME) XSTR(PATH/LINUX/NAME)
#define HAL_PATH(PATH, NAME) XSTR(PATH/HAL/LINUX/NAME)
#elif defined(__PLAT_NATIVE_SIM__)
#define HAL_PATH(PATH, NAME) XSTR(PATH/NATIVE_SIM/NAME)
#define HAL_PATH(PATH, NAME) XSTR(PATH/HAL/NATIVE_SIM/NAME)
#elif defined(__SAMD51__)
#define HAL_PATH(PATH, NAME) XSTR(PATH/SAMD51/NAME)
#define HAL_PATH(PATH, NAME) XSTR(PATH/HAL/SAMD51/NAME)
#elif defined(__SAMD21__)
#define HAL_PATH(PATH, NAME) XSTR(PATH/SAMD21/NAME)
#define HAL_PATH(PATH, NAME) XSTR(PATH/HAL/SAMD21/NAME)
#else
#error "Unsupported Platform!"
#endif

View File

@@ -33,13 +33,14 @@
#if ENABLED(SOFT_I2C_EEPROM)
#include <SlowSoftWire.h>
SlowSoftWire Wire = SlowSoftWire(I2C_SDA_PIN, I2C_SCL_PIN, true);
SlowSoftWire eWire = SlowSoftWire(I2C_SDA_PIN, I2C_SCL_PIN, true);
#else
#include <Wire.h>
#define eWire Wire
#endif
void eeprom_init() {
Wire.begin(
eWire.begin(
#if PINS_EXIST(I2C_SCL, I2C_SDA) && DISABLED(SOFT_I2C_EEPROM)
uint8_t(I2C_SDA_PIN), uint8_t(I2C_SCL_PIN)
#endif
@@ -75,16 +76,16 @@ static uint8_t _eeprom_calc_device_address(uint8_t * const pos) {
static void _eeprom_begin(uint8_t * const pos) {
const unsigned eeprom_address = (unsigned)pos;
Wire.beginTransmission(_eeprom_calc_device_address(pos));
eWire.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
eWire.write(uint8_t((eeprom_address >> 8) & 0xFF)); // Address High, if needed
eWire.write(uint8_t(eeprom_address & 0xFF)); // Address Low
}
void eeprom_write_byte(uint8_t *pos, uint8_t value) {
_eeprom_begin(pos);
Wire.write(value);
Wire.endTransmission();
eWire.write(value);
eWire.endTransmission();
// wait for write cycle to complete
// this could be done more efficiently with "acknowledge polling"
@@ -93,9 +94,9 @@ 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_calc_device_address(pos), (byte)1);
return Wire.available() ? Wire.read() : 0xFF;
eWire.endTransmission();
eWire.requestFrom(_eeprom_calc_device_address(pos), (byte)1);
return eWire.available() ? eWire.read() : 0xFF;
}
#endif // USE_SHARED_EEPROM

View File

@@ -21,6 +21,9 @@
*/
#include "../../inc/MarlinConfig.h"
#if ENABLED(WIFISUPPORT)
#include "Delay.h"
void esp_wifi_init(void) { // init ESP01 WIFI module pins
@@ -41,3 +44,5 @@ void esp_wifi_init(void) { // init ESP01 WIFI module pi
OUT_WRITE(ESP_WIFI_MODULE_ENABLE_PIN, HIGH);
#endif
}
#endif // WIFISUPPORT

View File

@@ -34,6 +34,10 @@
#include "HAL/shared/esp_wifi.h"
#include "HAL/shared/cpu_exception/exception_hook.h"
#if ENABLED(WIFISUPPORT)
#include "HAL/shared/esp_wifi.h"
#endif
#ifdef ARDUINO
#include <pins_arduino.h>
#endif
@@ -518,8 +522,8 @@ inline void manage_inactivity(const bool no_stepper_sleep=false) {
if (ELAPSED(ms, next_cub_ms_##N)) { \
next_cub_ms_##N = ms + CUB_DEBOUNCE_DELAY_##N; \
CODE; \
queue.inject(F(BUTTON##N##_GCODE)); \
TERN_(HAS_MARLINUI_MENU, ui.quick_feedback()); \
queue.inject(F(BUTTON##N##_GCODE)); \
TERN_(HAS_MARLINUI_MENU, ui.quick_feedback()); \
} \
} \
}while(0)
@@ -773,7 +777,7 @@ inline void manage_inactivity(const bool no_stepper_sleep=false) {
* - Update the Průša MMU2
* - Handle Joystick jogging
*/
void idle(bool no_stepper_sleep/*=false*/) {
void idle(const bool no_stepper_sleep/*=false*/) {
#ifdef MAX7219_DEBUG_PROFILE
CodeProfiler idle_profiler;
#endif
@@ -1268,7 +1272,9 @@ void setup() {
SETUP_RUN(hal.init_board());
SETUP_RUN(esp_wifi_init());
#if ENABLED(WIFISUPPORT)
SETUP_RUN(esp_wifi_init());
#endif
// Report Reset Reason
if (mcu & RST_POWER_ON) SERIAL_ECHOLNPGM(STR_POWERUP);

View File

@@ -30,7 +30,7 @@
void stop();
// Pass true to keep steppers from timing out
void idle(bool no_stepper_sleep=false);
void idle(const bool no_stepper_sleep=false);
inline void idle_no_sleep() { idle(true); }
#if ENABLED(G38_PROBE_TARGET)

View File

@@ -21,6 +21,11 @@
*/
#pragma once
/**
* Whenever changes are made to this file, please update Marlin/Makefile
* and _data/boards.yml in the MarlinDocumentation repo.
*/
#include "macros.h"
#define BOARD_UNKNOWN -1
@@ -221,7 +226,7 @@
#define BOARD_5DPRINT 1707 // 5DPrint D8 Driver Board
//
// LPC1768 ARM Cortex M3
// LPC1768 ARM Cortex-M3
//
#define BOARD_RAMPS_14_RE_ARM_EFB 2000 // Re-ARM with RAMPS 1.4 (Power outputs: Hotend, Fan, Bed)
@@ -242,7 +247,7 @@
#define BOARD_EMOTRONIC 2015 // eMotion-Tech eMotronic
//
// LPC1769 ARM Cortex M3
// LPC1769 ARM Cortex-M3
//
#define BOARD_MKS_SGEN 2500 // MKS-SGen
@@ -259,7 +264,7 @@
#define BOARD_FLY_CDY 2511 // FLYmaker FLY CDY
//
// SAM3X8E ARM Cortex M3
// SAM3X8E ARM Cortex-M3
//
#define BOARD_DUE3DOM 3000 // DUE3DOM for Arduino DUE
@@ -292,185 +297,197 @@
#define BOARD_KRATOS32 3027 // K.3D Kratos32 (Arduino Due Shield)
//
// SAM3X8C ARM Cortex M3
// SAM3X8C ARM Cortex-M3
//
#define BOARD_PRINTRBOARD_G2 3100 // Printrboard G2
#define BOARD_ADSK 3101 // Arduino DUE Shield Kit (ADSK)
//
// STM32 ARM Cortex-M0+
//
#define BOARD_BTT_EBB42_V1_1 4000 // BigTreeTech EBB42 V1.1 (STM32G0B1CB)
#define BOARD_BTT_SKR_MINI_E3_V3_0 4001 // BigTreeTech SKR Mini E3 V3.0 (STM32G0B1RE)
#define BOARD_BTT_MANTA_E3_EZ_V1_0 4002 // BigTreeTech Manta E3 EZ V1.0 (STM32G0B1RE)
#define BOARD_BTT_MANTA_M4P_V1_0 4003 // BigTreeTech Manta M4P V1.0 (STM32G0B1RE)
#define BOARD_BTT_MANTA_M5P_V1_0 4004 // BigTreeTech Manta M5P V1.0 (STM32G0B1RE)
#define BOARD_BTT_MANTA_M8P_V1_0 4005 // BigTreeTech Manta M8P V1.0 (STM32G0B1VE)
#define BOARD_BTT_MANTA_M8P_V1_1 4006 // BigTreeTech Manta M8P V1.1 (STM32G0B1VE)
//
// STM32 ARM Cortex-M3
//
#define BOARD_MALYAN_M200_V2 4000 // STM32F070CB controller
#define BOARD_MALYAN_M300 4001 // STM32F070-based delta
#define BOARD_STM32F103RE 4002 // STM32F103RE Libmaple-based STM32F1 controller
#define BOARD_MALYAN_M200 4003 // STM32C8 Libmaple-based STM32F1 controller
#define BOARD_STM3R_MINI 4004 // STM32F103RE Libmaple-based STM32F1 controller
#define BOARD_GTM32_PRO_VB 4005 // STM32F103VE controller
#define BOARD_GTM32_MINI 4006 // STM32F103VE controller
#define BOARD_GTM32_MINI_A30 4007 // STM32F103VE controller
#define BOARD_GTM32_REV_B 4008 // STM32F103VE controller
#define BOARD_MORPHEUS 4009 // STM32F103C8 / STM32F103CB Libmaple-based STM32F1 controller
#define BOARD_CHITU3D 4010 // Chitu3D (STM32F103RE)
#define BOARD_MKS_ROBIN 4011 // MKS Robin (STM32F103ZE)
#define BOARD_MKS_ROBIN_MINI 4012 // MKS Robin Mini (STM32F103VE)
#define BOARD_MKS_ROBIN_NANO 4013 // MKS Robin Nano (STM32F103VE)
#define BOARD_MKS_ROBIN_NANO_V2 4014 // MKS Robin Nano V2 (STM32F103VE)
#define BOARD_MKS_ROBIN_LITE 4015 // MKS Robin Lite/Lite2 (STM32F103RC)
#define BOARD_MKS_ROBIN_LITE3 4016 // MKS Robin Lite3 (STM32F103RC)
#define BOARD_MKS_ROBIN_PRO 4017 // MKS Robin Pro (STM32F103ZE)
#define BOARD_MKS_ROBIN_E3 4018 // MKS Robin E3 (STM32F103RC)
#define BOARD_MKS_ROBIN_E3_V1_1 4019 // MKS Robin E3 V1.1 (STM32F103RC)
#define BOARD_MKS_ROBIN_E3D 4020 // MKS Robin E3D (STM32F103RC)
#define BOARD_MKS_ROBIN_E3D_V1_1 4021 // MKS Robin E3D V1.1 (STM32F103RC)
#define BOARD_MKS_ROBIN_E3P 4022 // MKS Robin E3p (STM32F103VE)
#define BOARD_BTT_EBB42_V1_1 4023 // BigTreeTech EBB42 V1.1 (STM32G0B1CB)
#define BOARD_BTT_SKR_MINI_V1_1 4024 // BigTreeTech SKR Mini v1.1 (STM32F103RC)
#define BOARD_BTT_SKR_MINI_E3_V1_0 4025 // BigTreeTech SKR Mini E3 (STM32F103RC)
#define BOARD_BTT_SKR_MINI_E3_V1_2 4026 // BigTreeTech SKR Mini E3 V1.2 (STM32F103RC)
#define BOARD_BTT_SKR_MINI_E3_V2_0 4027 // BigTreeTech SKR Mini E3 V2.0 (STM32F103RC / STM32F103RE)
#define BOARD_BTT_SKR_MINI_E3_V3_0 4028 // BigTreeTech SKR Mini E3 V3.0 (STM32G0B1RE)
#define BOARD_BTT_SKR_MINI_E3_V3_0_1 4029 // BigTreeTech SKR Mini E3 V3.0.1 (STM32F401RC)
#define BOARD_BTT_SKR_MINI_MZ_V1_0 4030 // BigTreeTech SKR Mini MZ V1.0 (STM32F103RC)
#define BOARD_BTT_SKR_E3_DIP 4031 // BigTreeTech SKR E3 DIP V1.0 (STM32F103RC / STM32F103RE)
#define BOARD_BTT_SKR_CR6 4032 // BigTreeTech SKR CR6 v1.0 (STM32F103RE)
#define BOARD_JGAURORA_A5S_A1 4033 // JGAurora A5S A1 (STM32F103ZE)
#define BOARD_FYSETC_AIO_II 4034 // FYSETC AIO_II (STM32F103RC)
#define BOARD_FYSETC_CHEETAH 4035 // FYSETC Cheetah (STM32F103RC)
#define BOARD_FYSETC_CHEETAH_V12 4036 // FYSETC Cheetah V1.2 (STM32F103RC)
#define BOARD_LONGER3D_LK 4037 // Longer3D LK1/2 - Alfawise U20/U20+/U30 (STM32F103VE)
#define BOARD_CCROBOT_MEEB_3DP 4038 // ccrobot-online.com MEEB_3DP (STM32F103RC)
#define BOARD_CHITU3D_V5 4039 // Chitu3D TronXY X5SA V5 Board (STM32F103ZE)
#define BOARD_CHITU3D_V6 4040 // Chitu3D TronXY X5SA V6 Board (STM32F103ZE)
#define BOARD_CHITU3D_V9 4041 // Chitu3D TronXY X5SA V9 Board (STM32F103ZE)
#define BOARD_CREALITY_V4 4042 // Creality v4.x (STM32F103RC / STM32F103RE)
#define BOARD_CREALITY_V422 4043 // Creality v4.2.2 (STM32F103RC / STM32F103RE)
#define BOARD_CREALITY_V423 4044 // Creality v4.2.3 (STM32F103RC / STM32F103RE)
#define BOARD_CREALITY_V425 4045 // Creality v4.2.5 (STM32F103RC / STM32F103RE)
#define BOARD_CREALITY_V427 4046 // Creality v4.2.7 (STM32F103RC / STM32F103RE)
#define BOARD_CREALITY_V4210 4047 // Creality v4.2.10 (STM32F103RC / STM32F103RE) as found in the CR-30
#define BOARD_CREALITY_V431 4048 // Creality v4.3.1 (STM32F103RC / STM32F103RE)
#define BOARD_CREALITY_V431_A 4049 // Creality v4.3.1a (STM32F103RC / STM32F103RE)
#define BOARD_CREALITY_V431_B 4050 // Creality v4.3.1b (STM32F103RC / STM32F103RE)
#define BOARD_CREALITY_V431_C 4051 // Creality v4.3.1c (STM32F103RC / STM32F103RE)
#define BOARD_CREALITY_V431_D 4052 // Creality v4.3.1d (STM32F103RC / STM32F103RE)
#define BOARD_CREALITY_V452 4053 // Creality v4.5.2 (STM32F103RC / STM32F103RE)
#define BOARD_CREALITY_V453 4054 // Creality v4.5.3 (STM32F103RC / STM32F103RE)
#define BOARD_CREALITY_V521 4055 // Creality v5.2.1 (STM32F103VE) as found in the SV04
#define BOARD_CREALITY_V24S1 4056 // Creality v2.4.S1 (STM32F103RC / STM32F103RE) v101 as found in the Ender-7
#define BOARD_CREALITY_V24S1_301 4057 // Creality v2.4.S1_301 (STM32F103RC / STM32F103RE) v301 as found in the Ender-3 S1
#define BOARD_CREALITY_V25S1 4058 // Creality v2.5.S1 (STM32F103RE) as found in the CR-10 Smart Pro
#define BOARD_TRIGORILLA_PRO 4059 // Trigorilla Pro (STM32F103ZE)
#define BOARD_FLY_MINI 4060 // FLYmaker FLY MINI (STM32F103RC)
#define BOARD_FLSUN_HISPEED 4061 // FLSUN HiSpeedV1 (STM32F103VE)
#define BOARD_BEAST 4062 // STM32F103RE Libmaple-based controller
#define BOARD_MINGDA_MPX_ARM_MINI 4063 // STM32F103ZE Mingda MD-16
#define BOARD_GTM32_PRO_VD 4064 // STM32F103VE controller
#define BOARD_ZONESTAR_ZM3E2 4065 // Zonestar ZM3E2 (STM32F103RC)
#define BOARD_ZONESTAR_ZM3E4 4066 // Zonestar ZM3E4 V1 (STM32F103VC)
#define BOARD_ZONESTAR_ZM3E4V2 4067 // Zonestar ZM3E4 V2 (STM32F103VC)
#define BOARD_ERYONE_ERY32_MINI 4068 // Eryone Ery32 mini (STM32F103VE)
#define BOARD_PANDA_PI_V29 4069 // Panda Pi V2.9 - Standalone (STM32F103RC)
#define BOARD_MALYAN_M200_V2 5000 // STM32F070CB controller
#define BOARD_MALYAN_M300 5001 // STM32F070-based delta
#define BOARD_STM32F103RE 5002 // STM32F103RE Libmaple-based STM32F1 controller
#define BOARD_MALYAN_M200 5003 // STM32C8 Libmaple-based STM32F1 controller
#define BOARD_STM3R_MINI 5004 // STM32F103RE Libmaple-based STM32F1 controller
#define BOARD_GTM32_PRO_VB 5005 // STM32F103VE controller
#define BOARD_GTM32_MINI 5006 // STM32F103VE controller
#define BOARD_GTM32_MINI_A30 5007 // STM32F103VE controller
#define BOARD_GTM32_REV_B 5008 // STM32F103VE controller
#define BOARD_MORPHEUS 5009 // STM32F103C8 / STM32F103CB Libmaple-based STM32F1 controller
#define BOARD_CHITU3D 5010 // Chitu3D (STM32F103RE)
#define BOARD_MKS_ROBIN 5011 // MKS Robin (STM32F103ZE)
#define BOARD_MKS_ROBIN_MINI 5012 // MKS Robin Mini (STM32F103VE)
#define BOARD_MKS_ROBIN_NANO 5013 // MKS Robin Nano (STM32F103VE)
#define BOARD_MKS_ROBIN_NANO_V2 5014 // MKS Robin Nano V2 (STM32F103VE)
#define BOARD_MKS_ROBIN_LITE 5015 // MKS Robin Lite/Lite2 (STM32F103RC)
#define BOARD_MKS_ROBIN_LITE3 5016 // MKS Robin Lite3 (STM32F103RC)
#define BOARD_MKS_ROBIN_PRO 5017 // MKS Robin Pro (STM32F103ZE)
#define BOARD_MKS_ROBIN_E3 5018 // MKS Robin E3 (STM32F103RC)
#define BOARD_MKS_ROBIN_E3_V1_1 5019 // MKS Robin E3 V1.1 (STM32F103RC)
#define BOARD_MKS_ROBIN_E3D 5020 // MKS Robin E3D (STM32F103RC)
#define BOARD_MKS_ROBIN_E3D_V1_1 5021 // MKS Robin E3D V1.1 (STM32F103RC)
#define BOARD_MKS_ROBIN_E3P 5022 // MKS Robin E3P (STM32F103VE)
#define BOARD_BTT_SKR_MINI_V1_1 5023 // BigTreeTech SKR Mini v1.1 (STM32F103RC)
#define BOARD_BTT_SKR_MINI_E3_V1_0 5024 // BigTreeTech SKR Mini E3 (STM32F103RC)
#define BOARD_BTT_SKR_MINI_E3_V1_2 5025 // BigTreeTech SKR Mini E3 V1.2 (STM32F103RC)
#define BOARD_BTT_SKR_MINI_E3_V2_0 5026 // BigTreeTech SKR Mini E3 V2.0 (STM32F103RC / STM32F103RE)
#define BOARD_BTT_SKR_MINI_MZ_V1_0 5027 // BigTreeTech SKR Mini MZ V1.0 (STM32F103RC)
#define BOARD_BTT_SKR_E3_DIP 5028 // BigTreeTech SKR E3 DIP V1.0 (STM32F103RC / STM32F103RE)
#define BOARD_BTT_SKR_CR6 5029 // BigTreeTech SKR CR6 v1.0 (STM32F103RE)
#define BOARD_JGAURORA_A5S_A1 5030 // JGAurora A5S A1 (STM32F103ZE)
#define BOARD_FYSETC_AIO_II 5031 // FYSETC AIO_II (STM32F103RC)
#define BOARD_FYSETC_CHEETAH 5032 // FYSETC Cheetah (STM32F103RC)
#define BOARD_FYSETC_CHEETAH_V12 5033 // FYSETC Cheetah V1.2 (STM32F103RC)
#define BOARD_LONGER3D_LK 5034 // Longer3D LK1/2 - Alfawise U20/U20+/U30 (STM32F103VE)
#define BOARD_CCROBOT_MEEB_3DP 5035 // ccrobot-online.com MEEB_3DP (STM32F103RC)
#define BOARD_CHITU3D_V5 5036 // Chitu3D TronXY X5SA V5 Board (STM32F103ZE)
#define BOARD_CHITU3D_V6 5037 // Chitu3D TronXY X5SA V6 Board (STM32F103ZE)
#define BOARD_CHITU3D_V9 5038 // Chitu3D TronXY X5SA V9 Board (STM32F103ZE)
#define BOARD_CREALITY_V4 5039 // Creality v4.x (STM32F103RC / STM32F103RE)
#define BOARD_CREALITY_V422 5040 // Creality v4.2.2 (STM32F103RC / STM32F103RE)
#define BOARD_CREALITY_V423 5041 // Creality v4.2.3 (STM32F103RC / STM32F103RE)
#define BOARD_CREALITY_V425 5042 // Creality v4.2.5 (STM32F103RC / STM32F103RE)
#define BOARD_CREALITY_V427 5043 // Creality v4.2.7 (STM32F103RC / STM32F103RE)
#define BOARD_CREALITY_V4210 5044 // Creality v4.2.10 (STM32F103RC / STM32F103RE) as found in the CR-30
#define BOARD_CREALITY_V431 5045 // Creality v4.3.1 (STM32F103RC / STM32F103RE)
#define BOARD_CREALITY_V431_A 5046 // Creality v4.3.1a (STM32F103RC / STM32F103RE)
#define BOARD_CREALITY_V431_B 5047 // Creality v4.3.1b (STM32F103RC / STM32F103RE)
#define BOARD_CREALITY_V431_C 5048 // Creality v4.3.1c (STM32F103RC / STM32F103RE)
#define BOARD_CREALITY_V431_D 5049 // Creality v4.3.1d (STM32F103RC / STM32F103RE)
#define BOARD_CREALITY_V452 5050 // Creality v4.5.2 (STM32F103RC / STM32F103RE)
#define BOARD_CREALITY_V453 5051 // Creality v4.5.3 (STM32F103RC / STM32F103RE)
#define BOARD_CREALITY_V521 5052 // Creality v5.2.1 (STM32F103VE) as found in the SV04
#define BOARD_CREALITY_V24S1 5053 // Creality v2.4.S1 (STM32F103RC / STM32F103RE) v101 as found in the Ender-7
#define BOARD_CREALITY_V24S1_301 5054 // Creality v2.4.S1_301 (STM32F103RC / STM32F103RE) v301 as found in the Ender-3 S1
#define BOARD_CREALITY_V25S1 5055 // Creality v2.5.S1 (STM32F103RE) as found in the CR-10 Smart Pro
#define BOARD_TRIGORILLA_PRO 5056 // Trigorilla Pro (STM32F103ZE)
#define BOARD_FLY_MINI 5057 // FLYmaker FLY MINI (STM32F103RC)
#define BOARD_FLSUN_HISPEED 5058 // FLSUN HiSpeedV1 (STM32F103VE)
#define BOARD_BEAST 5059 // STM32F103RE Libmaple-based controller
#define BOARD_MINGDA_MPX_ARM_MINI 5060 // STM32F103ZE Mingda MD-16
#define BOARD_GTM32_PRO_VD 5061 // STM32F103VE controller
#define BOARD_ZONESTAR_ZM3E2 5062 // Zonestar ZM3E2 (STM32F103RC)
#define BOARD_ZONESTAR_ZM3E4 5063 // Zonestar ZM3E4 V1 (STM32F103VC)
#define BOARD_ZONESTAR_ZM3E4V2 5064 // Zonestar ZM3E4 V2 (STM32F103VC)
#define BOARD_ERYONE_ERY32_MINI 5065 // Eryone Ery32 mini (STM32F103VE)
#define BOARD_PANDA_PI_V29 5066 // Panda Pi V2.9 - Standalone (STM32F103RC)
#define BOARD_SOVOL_V131 5067 // Sovol V1.3.1 (GD32F103RET6)
//
// ARM Cortex-M4F
//
#define BOARD_TEENSY31_32 4100 // Teensy3.1 and Teensy3.2
#define BOARD_TEENSY35_36 4101 // Teensy3.5 and Teensy3.6
#define BOARD_TEENSY31_32 5100 // Teensy3.1 and Teensy3.2
#define BOARD_TEENSY35_36 5101 // Teensy3.5 and Teensy3.6
//
// STM32 ARM Cortex-M4F
//
#define BOARD_ARMED 4200 // Arm'ed STM32F4-based controller
#define BOARD_RUMBA32_V1_0 4201 // RUMBA32 STM32F446VE based controller from Aus3D
#define BOARD_RUMBA32_V1_1 4202 // RUMBA32 STM32F446VE based controller from Aus3D
#define BOARD_RUMBA32_MKS 4203 // RUMBA32 STM32F446VE based controller from Makerbase
#define BOARD_RUMBA32_BTT 4204 // RUMBA32 STM32F446VE based controller from BIGTREETECH
#define BOARD_BLACK_STM32F407VE 4205 // BLACK_STM32F407VE
#define BOARD_BLACK_STM32F407ZE 4206 // BLACK_STM32F407ZE
#define BOARD_BTT_SKR_PRO_V1_1 4207 // BigTreeTech SKR Pro v1.1 (STM32F407ZG)
#define BOARD_BTT_SKR_PRO_V1_2 4208 // BigTreeTech SKR Pro v1.2 (STM32F407ZG)
#define BOARD_BTT_BTT002_V1_0 4209 // BigTreeTech BTT002 v1.0 (STM32F407VG)
#define BOARD_BTT_E3_RRF 4210 // BigTreeTech E3 RRF (STM32F407VG)
#define BOARD_BTT_SKR_V2_0_REV_A 4211 // BigTreeTech SKR v2.0 Rev A (STM32F407VG)
#define BOARD_BTT_SKR_V2_0_REV_B 4212 // BigTreeTech SKR v2.0 Rev B (STM32F407VG/STM32F429VG)
#define BOARD_BTT_GTR_V1_0 4213 // BigTreeTech GTR v1.0 (STM32F407IGT)
#define BOARD_BTT_OCTOPUS_V1_0 4214 // BigTreeTech Octopus v1.0 (STM32F446ZE)
#define BOARD_BTT_OCTOPUS_V1_1 4215 // BigTreeTech Octopus v1.1 (STM32F446ZE)
#define BOARD_BTT_OCTOPUS_PRO_V1_0 4216 // BigTreeTech Octopus Pro v1.0 (STM32F446ZE / STM32F429ZG)
#define BOARD_LERDGE_K 4217 // Lerdge K (STM32F407ZG)
#define BOARD_LERDGE_S 4218 // Lerdge S (STM32F407VE)
#define BOARD_LERDGE_X 4219 // Lerdge X (STM32F407VE)
#define BOARD_VAKE403D 4220 // VAkE 403D (STM32F446VE)
#define BOARD_FYSETC_S6 4221 // FYSETC S6 (STM32F446VE)
#define BOARD_FYSETC_S6_V2_0 4222 // FYSETC S6 v2.0 (STM32F446VE)
#define BOARD_FYSETC_SPIDER 4223 // FYSETC Spider (STM32F446VE)
#define BOARD_FLYF407ZG 4224 // FLYmaker FLYF407ZG (STM32F407ZG)
#define BOARD_MKS_ROBIN2 4225 // MKS_ROBIN2 (STM32F407ZE)
#define BOARD_MKS_ROBIN_PRO_V2 4226 // MKS Robin Pro V2 (STM32F407VE)
#define BOARD_MKS_ROBIN_NANO_V3 4227 // MKS Robin Nano V3 (STM32F407VG)
#define BOARD_MKS_ROBIN_NANO_V3_1 4228 // MKS Robin Nano V3.1 (STM32F407VE)
#define BOARD_MKS_MONSTER8_V1 4229 // MKS Monster8 V1 (STM32F407VE)
#define BOARD_MKS_MONSTER8_V2 4230 // MKS Monster8 V2 (STM32F407VE)
#define BOARD_ANET_ET4 4231 // ANET ET4 V1.x (STM32F407VG)
#define BOARD_ANET_ET4P 4232 // ANET ET4P V1.x (STM32F407VG)
#define BOARD_FYSETC_CHEETAH_V20 4233 // FYSETC Cheetah V2.0 (STM32F401RC)
#define BOARD_TH3D_EZBOARD_V2 4234 // TH3D EZBoard v2.0 (STM32F405RG)
#define BOARD_OPULO_LUMEN_REV3 4235 // Opulo Lumen PnP Controller REV3 (STM32F407VE / STM32F407VG)
#define BOARD_MKS_ROBIN_NANO_V1_3_F4 4236 // MKS Robin Nano V1.3 and MKS Robin Nano-S V1.3 (STM32F407VE)
#define BOARD_MKS_EAGLE 4237 // MKS Eagle (STM32F407VE)
#define BOARD_ARTILLERY_RUBY 4238 // Artillery Ruby (STM32F401RC)
#define BOARD_FYSETC_SPIDER_V2_2 4239 // FYSETC Spider V2.2 (STM32F446VE)
#define BOARD_CREALITY_V24S1_301F4 4240 // Creality v2.4.S1_301F4 (STM32F401RC) as found in the Ender-3 S1 F4
#define BOARD_OPULO_LUMEN_REV4 4241 // Opulo Lumen PnP Controller REV4 (STM32F407VE / STM32F407VG)
#define BOARD_FYSETC_SPIDER_KING407 4242 // FYSETC Spider King407 (STM32F407ZG)
#define BOARD_MKS_SKIPR_V1 4243 // MKS SKIPR v1.0 all-in-one board (STM32F407VE)
#define BOARD_TRONXY_V10 4244 // TRONXY V10 (STM32F446ZE)
#define BOARD_ARMED 5200 // Arm'ed STM32F4-based controller
#define BOARD_RUMBA32_V1_0 5201 // RUMBA32 STM32F446VE based controller from Aus3D
#define BOARD_RUMBA32_V1_1 5202 // RUMBA32 STM32F446VE based controller from Aus3D
#define BOARD_RUMBA32_MKS 5203 // RUMBA32 STM32F446VE based controller from Makerbase
#define BOARD_RUMBA32_BTT 5204 // RUMBA32 STM32F446VE based controller from BIGTREETECH
#define BOARD_BLACK_STM32F407VE 5205 // BLACK_STM32F407VE
#define BOARD_BLACK_STM32F407ZE 5206 // BLACK_STM32F407ZE
#define BOARD_BTT_SKR_MINI_E3_V3_0_1 5207 // BigTreeTech SKR Mini E3 V3.0.1 (STM32F401RC)
#define BOARD_BTT_SKR_PRO_V1_1 5208 // BigTreeTech SKR Pro v1.1 (STM32F407ZG)
#define BOARD_BTT_SKR_PRO_V1_2 5209 // BigTreeTech SKR Pro v1.2 (STM32F407ZG)
#define BOARD_BTT_BTT002_V1_0 5210 // BigTreeTech BTT002 v1.0 (STM32F407VG)
#define BOARD_BTT_E3_RRF 5211 // BigTreeTech E3 RRF (STM32F407VG)
#define BOARD_BTT_SKR_V2_0_REV_A 5212 // BigTreeTech SKR v2.0 Rev A (STM32F407VG)
#define BOARD_BTT_SKR_V2_0_REV_B 5213 // BigTreeTech SKR v2.0 Rev B (STM32F407VG/STM32F429VG)
#define BOARD_BTT_GTR_V1_0 5214 // BigTreeTech GTR v1.0 (STM32F407IGT)
#define BOARD_BTT_OCTOPUS_V1_0 5215 // BigTreeTech Octopus v1.0 (STM32F446ZE)
#define BOARD_BTT_OCTOPUS_V1_1 5216 // BigTreeTech Octopus v1.1 (STM32F446ZE)
#define BOARD_BTT_OCTOPUS_PRO_V1_0 5217 // BigTreeTech Octopus Pro v1.0 (STM32F446ZE / STM32F429ZG)
#define BOARD_LERDGE_K 5218 // Lerdge K (STM32F407ZG)
#define BOARD_LERDGE_S 5219 // Lerdge S (STM32F407VE)
#define BOARD_LERDGE_X 5220 // Lerdge X (STM32F407VE)
#define BOARD_VAKE403D 5221 // VAkE 403D (STM32F446VE)
#define BOARD_FYSETC_S6 5222 // FYSETC S6 (STM32F446VE)
#define BOARD_FYSETC_S6_V2_0 5223 // FYSETC S6 v2.0 (STM32F446VE)
#define BOARD_FYSETC_SPIDER 5224 // FYSETC Spider (STM32F446VE)
#define BOARD_FLYF407ZG 5225 // FLYmaker FLYF407ZG (STM32F407ZG)
#define BOARD_MKS_ROBIN2 5226 // MKS Robin2 V1.0 (STM32F407ZE)
#define BOARD_MKS_ROBIN_PRO_V2 5227 // MKS Robin Pro V2 (STM32F407VE)
#define BOARD_MKS_ROBIN_NANO_V3 5228 // MKS Robin Nano V3 (STM32F407VG)
#define BOARD_MKS_ROBIN_NANO_V3_1 5229 // MKS Robin Nano V3.1 (STM32F407VE)
#define BOARD_MKS_MONSTER8_V1 5230 // MKS Monster8 V1 (STM32F407VE)
#define BOARD_MKS_MONSTER8_V2 5231 // MKS Monster8 V2 (STM32F407VE)
#define BOARD_ANET_ET4 5232 // ANET ET4 V1.x (STM32F407VG)
#define BOARD_ANET_ET4P 5233 // ANET ET4P V1.x (STM32F407VG)
#define BOARD_FYSETC_CHEETAH_V20 5234 // FYSETC Cheetah V2.0 (STM32F401RC)
#define BOARD_TH3D_EZBOARD_V2 5235 // TH3D EZBoard v2.0 (STM32F405RG)
#define BOARD_OPULO_LUMEN_REV3 5236 // Opulo Lumen PnP Controller REV3 (STM32F407VE / STM32F407VG)
#define BOARD_MKS_ROBIN_NANO_V1_3_F4 5237 // MKS Robin Nano V1.3 and MKS Robin Nano-S V1.3 (STM32F407VE)
#define BOARD_MKS_EAGLE 5238 // MKS Eagle (STM32F407VE)
#define BOARD_ARTILLERY_RUBY 5239 // Artillery Ruby (STM32F401RC)
#define BOARD_FYSETC_SPIDER_V2_2 5240 // FYSETC Spider V2.2 (STM32F446VE)
#define BOARD_CREALITY_V24S1_301F4 5241 // Creality v2.4.S1_301F4 (STM32F401RC) as found in the Ender-3 S1 F4
#define BOARD_OPULO_LUMEN_REV4 5242 // Opulo Lumen PnP Controller REV4 (STM32F407VE / STM32F407VG)
#define BOARD_FYSETC_SPIDER_KING407 5243 // FYSETC Spider King407 (STM32F407ZG)
#define BOARD_MKS_SKIPR_V1 5244 // MKS SKIPR v1.0 all-in-one board (STM32F407VE)
#define BOARD_TRONXY_V10 5245 // TRONXY V10 (STM32F446ZE)
//
// ARM Cortex M7
// ARM Cortex-M7
//
#define BOARD_REMRAM_V1 5000 // RemRam v1
#define BOARD_TEENSY41 5001 // Teensy 4.1
#define BOARD_T41U5XBB 5002 // T41U5XBB Teensy 4.1 breakout board
#define BOARD_NUCLEO_F767ZI 5003 // ST NUCLEO-F767ZI Dev Board
#define BOARD_BTT_SKR_SE_BX_V2 5004 // BigTreeTech SKR SE BX V2.0 (STM32H743II)
#define BOARD_BTT_SKR_SE_BX_V3 5005 // BigTreeTech SKR SE BX V3.0 (STM32H743II)
#define BOARD_BTT_SKR_V3_0 5006 // BigTreeTech SKR V3.0 (STM32H743VG)
#define BOARD_BTT_SKR_V3_0_EZ 5007 // BigTreeTech SKR V3.0 EZ (STM32H743VG)
#define BOARD_REMRAM_V1 6000 // RemRam v1
#define BOARD_TEENSY41 6001 // Teensy 4.1
#define BOARD_T41U5XBB 6002 // T41U5XBB Teensy 4.1 breakout board
#define BOARD_NUCLEO_F767ZI 6003 // ST NUCLEO-F767ZI Dev Board
#define BOARD_BTT_SKR_SE_BX_V2 6004 // BigTreeTech SKR SE BX V2.0 (STM32H743II)
#define BOARD_BTT_SKR_SE_BX_V3 6005 // BigTreeTech SKR SE BX V3.0 (STM32H743II)
#define BOARD_BTT_SKR_V3_0 6006 // BigTreeTech SKR V3.0 (STM32H743VG)
#define BOARD_BTT_SKR_V3_0_EZ 6007 // BigTreeTech SKR V3.0 EZ (STM32H743VG)
#define BOARD_BTT_OCTOPUS_MAX_EZ_V1_0 6008 // BigTreeTech Octopus Max EZ V1.0 (STM32H723VE / STM32H723ZE)
//
// Espressif ESP32 WiFi
//
#define BOARD_ESPRESSIF_ESP32 6000 // Generic ESP32
#define BOARD_MRR_ESPA 6001 // MRR ESPA based on ESP32 (native pins only)
#define BOARD_MRR_ESPE 6002 // MRR ESPE based on ESP32 (with I2S stepper stream)
#define BOARD_E4D_BOX 6003 // E4d@BOX
#define BOARD_RESP32_CUSTOM 6004 // Rutilea ESP32 custom board
#define BOARD_FYSETC_E4 6005 // FYSETC E4
#define BOARD_PANDA_ZHU 6006 // Panda_ZHU
#define BOARD_PANDA_M4 6007 // Panda_M4
#define BOARD_MKS_TINYBEE 6008 // MKS TinyBee based on ESP32 (with I2S stepper stream)
#define BOARD_ENWI_ESPNP 6009 // enwi ESPNP based on ESP32 (with I2S stepper stream)
#define BOARD_ESPRESSIF_ESP32 7000 // Generic ESP32
#define BOARD_MRR_ESPA 7001 // MRR ESPA based on ESP32 (native pins only)
#define BOARD_MRR_ESPE 7002 // MRR ESPE based on ESP32 (with I2S stepper stream)
#define BOARD_E4D_BOX 7003 // E4d@BOX
#define BOARD_RESP32_CUSTOM 7004 // Rutilea ESP32 custom board
#define BOARD_FYSETC_E4 7005 // FYSETC E4
#define BOARD_PANDA_ZHU 7006 // Panda_ZHU
#define BOARD_PANDA_M4 7007 // Panda_M4
#define BOARD_MKS_TINYBEE 7008 // MKS TinyBee based on ESP32 (with I2S stepper stream)
#define BOARD_ENWI_ESPNP 7009 // enwi ESPNP based on ESP32 (with I2S stepper stream)
//
// SAMD51 ARM Cortex M4
// SAMD51 ARM Cortex-M4
//
#define BOARD_AGCM4_RAMPS_144 6100 // RAMPS 1.4.4
#define BOARD_BRICOLEMON_V1_0 6101 // Bricolemon
#define BOARD_BRICOLEMON_LITE_V1_0 6102 // Bricolemon Lite
#define BOARD_AGCM4_RAMPS_144 7100 // RAMPS 1.4.4
#define BOARD_BRICOLEMON_V1_0 7101 // Bricolemon
#define BOARD_BRICOLEMON_LITE_V1_0 7102 // Bricolemon Lite
//
// SAMD21 ARM Cortex M4
// SAMD21 ARM Cortex-M4
//
#define BOARD_MINITRONICS20 6103 // Minitronics v2.0
#define BOARD_MINITRONICS20 7103 // Minitronics v2.0
//
// Custom board
@@ -482,7 +499,7 @@
// Simulations
//
#define BOARD_LINUX_RAMPS 9999
#define BOARD_SIMULATED 9999
#define _MB_1(B) (defined(BOARD_##B) && MOTHERBOARD==BOARD_##B)
#define MB(V...) DO(MB,||,V)

View File

@@ -192,6 +192,7 @@
#define STR_ERR_LONG_EXTRUDE_STOP " too long extrusion prevented"
#define STR_ERR_HOTEND_TOO_COLD "Hotend too cold"
#define STR_ERR_EEPROM_WRITE "Error writing to EEPROM!"
#define STR_ERR_EEPROM_CORRUPT "EEPROM Corrupt"
#define STR_FILAMENT_CHANGE_HEAT_LCD "Press button to heat nozzle"
#define STR_FILAMENT_CHANGE_INSERT_LCD "Insert filament and press button"

View File

@@ -634,7 +634,9 @@
#define DEFER4(M) M EMPTY EMPTY EMPTY EMPTY()()()()
// Force define expansion
#define EVAL(V...) EVAL16(V)
#define EVAL EVAL16
#define EVAL4096(V...) EVAL2048(EVAL2048(V))
#define EVAL2048(V...) EVAL1024(EVAL1024(V))
#define EVAL1024(V...) EVAL512(EVAL512(V))
#define EVAL512(V...) EVAL256(EVAL256(V))
#define EVAL256(V...) EVAL128(EVAL128(V))
@@ -712,10 +714,11 @@
( DEFER2(__RREPEAT2)()(ADD1(_RPT_I),SUB1(_RPT_N),_RPT_OP,V) ) \
( /* Do nothing */ )
#define __RREPEAT2() _RREPEAT2
#define RREPEAT_S(S,N,OP) EVAL1024(_RREPEAT(S,SUB##S(N),OP))
#define RREPEAT(N,OP) RREPEAT_S(0,N,OP)
#define RREPEAT2_S(S,N,OP,V...) EVAL1024(_RREPEAT2(S,SUB##S(N),OP,V))
#define RREPEAT2(N,OP,V...) RREPEAT2_S(0,N,OP,V)
#define RREPEAT_S(S,N,OP) EVAL1024(_RREPEAT(S,SUB##S(N),OP))
#define RREPEAT(N,OP) RREPEAT_S(0,N,OP)
#define RREPEAT_1(N,OP) RREPEAT_S(1,INCREMENT(N),OP)
#define RREPEAT2_S(S,N,OP,V...) EVAL1024(_RREPEAT2(S,SUB##S(N),OP,V))
#define RREPEAT2(N,OP,V...) RREPEAT2_S(0,N,OP,V)
// Call OP(A) with each item as an argument
#define _MAP(_MAP_OP,A,V...) \

View File

@@ -85,11 +85,6 @@ void serial_offset(const_float_t v, const uint8_t sp/*=0*/) {
SERIAL_DECIMAL(v);
}
void serial_ternary(const bool onoff, FSTR_P const pre, FSTR_P const on, FSTR_P const off, FSTR_P const post/*=nullptr*/) {
if (pre) serial_print(pre);
serial_print(onoff ? on : off);
if (post) serial_print(post);
}
void serialprint_onoff(const bool onoff) { serial_print(onoff ? F(STR_ON) : F(STR_OFF)); }
void serialprintln_onoff(const bool onoff) { serialprint_onoff(onoff); SERIAL_EOL(); }
void serialprint_truefalse(const bool tf) { serial_print(tf ? F("true") : F("false")); }

View File

@@ -327,7 +327,12 @@ inline void serial_echolnpair(FSTR_P const fstr, T v) { serial_echolnpair_P(FTOP
void serial_echo_start();
void serial_error_start();
void serial_ternary(const bool onoff, FSTR_P const pre, FSTR_P const on, FSTR_P const off, FSTR_P const post=nullptr);
inline void serial_ternary(const bool onoff, FSTR_P const pre, FSTR_P const on, FSTR_P const off, FSTR_P const post=nullptr) {
if (pre) serial_print(pre);
if (onoff && on) serial_print(on);
if (!onoff && off) serial_print(off);
if (post) serial_print(post);
}
void serialprint_onoff(const bool onoff);
void serialprintln_onoff(const bool onoff);
void serialprint_truefalse(const bool tf);
@@ -337,8 +342,8 @@ void serial_offset(const_float_t v, const uint8_t sp=0); // For v==0 draw space
void print_bin(const uint16_t val);
void print_pos(NUM_AXIS_ARGS(const_float_t), FSTR_P const prefix=nullptr, FSTR_P const suffix=nullptr);
inline void print_pos(const xyz_pos_t &xyz, FSTR_P const prefix=nullptr, FSTR_P const suffix=nullptr) {
print_pos(NUM_AXIS_ELEM(xyz), prefix, suffix);
inline void print_pos(const xyze_pos_t &xyze, FSTR_P const prefix=nullptr, FSTR_P const suffix=nullptr) {
print_pos(NUM_AXIS_ELEM(xyze), prefix, suffix);
}
#define SERIAL_POS(SUFFIX,VAR) do { print_pos(VAR, F(" " STRINGIFY(VAR) "="), F(" : " SUFFIX "\n")); }while(0)

View File

@@ -430,21 +430,24 @@ struct XYval {
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; }
FI XYval<T>& operator+=(const XYZval<T> &rs) { x += rs.x; y += rs.y; return *this; }
FI XYval<T>& operator-=(const XYZval<T> &rs) { x -= rs.x; y -= rs.y; return *this; }
FI XYval<T>& operator*=(const XYZval<T> &rs) { x *= rs.x; y *= rs.y; return *this; }
FI XYval<T>& operator+=(const XYZEval<T> &rs) { x += rs.x; y += rs.y; return *this; }
FI XYval<T>& operator-=(const XYZEval<T> &rs) { x -= rs.x; y -= rs.y; return *this; }
FI XYval<T>& operator*=(const XYZEval<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 XYZval<T> &rs) { NUM_AXIS_CODE(x += rs.x, y += rs.y,,,,,,, ); return *this; }
FI XYval<T>& operator-=(const XYZval<T> &rs) { NUM_AXIS_CODE(x -= rs.x, y -= rs.y,,,,,,, ); return *this; }
FI XYval<T>& operator*=(const XYZval<T> &rs) { NUM_AXIS_CODE(x *= rs.x, y *= rs.y,,,,,,, ); return *this; }
FI XYval<T>& operator/=(const XYZval<T> &rs) { NUM_AXIS_CODE(x /= rs.x, y /= rs.y,,,,,,, ); return *this; }
FI XYval<T>& operator+=(const XYZEval<T> &rs) { NUM_AXIS_CODE(x += rs.x, y += rs.y,,,,,,, ); return *this; }
FI XYval<T>& operator-=(const XYZEval<T> &rs) { NUM_AXIS_CODE(x -= rs.x, y -= rs.y,,,,,,, ); return *this; }
FI XYval<T>& operator*=(const XYZEval<T> &rs) { NUM_AXIS_CODE(x *= rs.x, y *= rs.y,,,,,,, ); return *this; }
FI XYval<T>& operator/=(const XYZEval<T> &rs) { NUM_AXIS_CODE(x /= rs.x, y /= rs.y,,,,,,, ); return *this; }
FI XYval<T>& operator*=(const float &p) { x *= p; y *= p; return *this; }
FI XYval<T>& operator*=(const int &p) { x *= p; y *= p; return *this; }
FI XYval<T>& operator>>=(const int &p) { _RS(x); _RS(y); return *this; }
FI XYval<T>& operator<<=(const int &p) { _LS(x); _LS(y); return *this; }
// Exact comparisons. For floats a "NEAR" operation may be better.
FI bool operator==(const XYval<T> &rs) const { return x == rs.x && y == rs.y; }
FI bool operator==(const XYZval<T> &rs) const { return x == rs.x && y == rs.y; }
FI bool operator==(const XYZEval<T> &rs) const { return x == rs.x && y == rs.y; }
FI bool operator==(const XYval<T> &rs) const { return NUM_AXIS_GANG(x == rs.x, && y == rs.y,,,,,,, ); }
FI bool operator==(const XYZval<T> &rs) const { return NUM_AXIS_GANG(x == rs.x, && y == rs.y,,,,,,, ); }
FI bool operator==(const XYZEval<T> &rs) const { return NUM_AXIS_GANG(x == rs.x, && y == rs.y,,,,,,, ); }
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); }
@@ -465,15 +468,9 @@ struct XYZval {
FI void reset() { NUM_AXIS_GANG(x =, y =, z =, i =, j =, k =, u =, v =, w =) 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 XYval<T> pxy, const T pz) { NUM_AXIS_CODE(x = pxy.x, y = pxy.y, z = pz, NOOP, NOOP, NOOP, NOOP, NOOP, NOOP); }
FI void set(const T (&arr)[XY]) { x = arr[0]; y = arr[1]; }
#if HAS_Z_AXIS
FI void set(const T (&arr)[NUM_AXES]) { NUM_AXIS_CODE(x = arr[0], y = arr[1], z = arr[2], i = arr[3], j = arr[4], k = arr[5], u = arr[6], v = arr[7], w = arr[8]); }
FI void set(NUM_AXIS_ARGS(const T)) { NUM_AXIS_CODE(a = x, b = y, c = z, _i = i, _j = j, _k = k, _u = u, _v = v, _w = w ); }
#endif
FI void set(const XYval<T> pxy) { NUM_AXIS_CODE(x = pxy.x, y = pxy.y,,,,,,,); }
FI void set(const XYval<T> pxy, const T pz) { NUM_AXIS_CODE(x = pxy.x, y = pxy.y, z = pz,,,,,,); }
FI void set(const T (&arr)[NUM_AXES]) { NUM_AXIS_CODE(x = arr[0], y = arr[1], z = arr[2], i = arr[3], j = arr[4], k = arr[5], u = arr[6], v = arr[7], w = arr[8]); }
#if LOGICAL_AXES > NUM_AXES
FI void set(const T (&arr)[LOGICAL_AXES]) { NUM_AXIS_CODE(x = arr[0], y = arr[1], z = arr[2], i = arr[3], j = arr[4], k = arr[5], u = arr[6], v = arr[7], w = arr[8]); }
FI void set(LOGICAL_AXIS_ARGS(const T)) { NUM_AXIS_CODE(a = x, b = y, c = z, _i = i, _j = j, _k = k, _u = u, _v = v, _w = w ); }
@@ -481,6 +478,17 @@ struct XYZval {
FI void set(const T (&arr)[DISTINCT_AXES]) { NUM_AXIS_CODE(x = arr[0], y = arr[1], z = arr[2], i = arr[3], j = arr[4], k = arr[5], u = arr[6], v = arr[7], w = arr[8]); }
#endif
#endif
// Setter for all individual args
FI void set(NUM_AXIS_ARGS(const T)) { NUM_AXIS_CODE(a = x, b = y, c = z, _i = i, _j = j, _k = k, _u = u, _v = v, _w = w); }
// Setters with fewer elements leave the rest untouched
#if HAS_Y_AXIS
FI void set(const T px) { x = px; }
#endif
#if HAS_Z_AXIS
FI void set(const T px, const T py) { x = px; y = py; }
#endif
#if HAS_I_AXIS
FI void set(const T px, const T py, const T pz) { x = px; y = py; z = pz; }
#endif
@@ -545,14 +553,14 @@ struct XYZval {
FI XYZval<T>& operator= (const XYZEval<T> &rs) { set(NUM_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; NUM_AXIS_CODE(ls.x += rs.x, ls.y += rs.y, NOOP , NOOP , NOOP , NOOP , NOOP , NOOP , NOOP ); return ls; }
FI XYZval<T> operator+ (const XYval<T> &rs) { XYZval<T> ls = *this; NUM_AXIS_CODE(ls.x += rs.x, ls.y += rs.y, NOOP , NOOP , NOOP , NOOP , NOOP , NOOP , NOOP ); return ls; }
FI XYZval<T> operator- (const XYval<T> &rs) const { XYZval<T> ls = *this; NUM_AXIS_CODE(ls.x -= rs.x, ls.y -= rs.y, NOOP , NOOP , NOOP , NOOP , NOOP , NOOP , NOOP ); return ls; }
FI XYZval<T> operator- (const XYval<T> &rs) { XYZval<T> ls = *this; NUM_AXIS_CODE(ls.x -= rs.x, ls.y -= rs.y, NOOP , NOOP , NOOP , NOOP , NOOP , NOOP , NOOP ); return ls; }
FI XYZval<T> operator* (const XYval<T> &rs) const { XYZval<T> ls = *this; NUM_AXIS_CODE(ls.x *= rs.x, ls.y *= rs.y, NOOP , NOOP , NOOP , NOOP , NOOP , NOOP , NOOP ); return ls; }
FI XYZval<T> operator* (const XYval<T> &rs) { XYZval<T> ls = *this; NUM_AXIS_CODE(ls.x *= rs.x, ls.y *= rs.y, NOOP , NOOP , NOOP , NOOP , NOOP , NOOP , NOOP ); return ls; }
FI XYZval<T> operator/ (const XYval<T> &rs) const { XYZval<T> ls = *this; NUM_AXIS_CODE(ls.x /= rs.x, ls.y /= rs.y, NOOP , NOOP , NOOP , NOOP , NOOP , NOOP , NOOP ); return ls; }
FI XYZval<T> operator/ (const XYval<T> &rs) { XYZval<T> ls = *this; NUM_AXIS_CODE(ls.x /= rs.x, ls.y /= rs.y, NOOP , NOOP , NOOP , NOOP , NOOP , NOOP , NOOP ); return ls; }
FI XYZval<T> operator+ (const XYval<T> &rs) const { XYZval<T> ls = *this; NUM_AXIS_CODE(ls.x += rs.x, ls.y += rs.y,,,,,,, ); return ls; }
FI XYZval<T> operator+ (const XYval<T> &rs) { XYZval<T> ls = *this; NUM_AXIS_CODE(ls.x += rs.x, ls.y += rs.y,,,,,,, ); return ls; }
FI XYZval<T> operator- (const XYval<T> &rs) const { XYZval<T> ls = *this; NUM_AXIS_CODE(ls.x -= rs.x, ls.y -= rs.y,,,,,,, ); return ls; }
FI XYZval<T> operator- (const XYval<T> &rs) { XYZval<T> ls = *this; NUM_AXIS_CODE(ls.x -= rs.x, ls.y -= rs.y,,,,,,, ); return ls; }
FI XYZval<T> operator* (const XYval<T> &rs) const { XYZval<T> ls = *this; NUM_AXIS_CODE(ls.x *= rs.x, ls.y *= rs.y,,,,,,, ); return ls; }
FI XYZval<T> operator* (const XYval<T> &rs) { XYZval<T> ls = *this; NUM_AXIS_CODE(ls.x *= rs.x, ls.y *= rs.y,,,,,,, ); return ls; }
FI XYZval<T> operator/ (const XYval<T> &rs) const { XYZval<T> ls = *this; NUM_AXIS_CODE(ls.x /= rs.x, ls.y /= rs.y,,,,,,, ); return ls; }
FI XYZval<T> operator/ (const XYval<T> &rs) { XYZval<T> ls = *this; NUM_AXIS_CODE(ls.x /= rs.x, ls.y /= rs.y,,,,,,, ); return ls; }
FI XYZval<T> operator+ (const XYZval<T> &rs) const { XYZval<T> ls = *this; NUM_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, ls.u += rs.u, ls.v += rs.v, ls.w += rs.w); return ls; }
FI XYZval<T> operator+ (const XYZval<T> &rs) { XYZval<T> ls = *this; NUM_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, ls.u += rs.u, ls.v += rs.v, ls.w += rs.w); return ls; }
FI XYZval<T> operator- (const XYZval<T> &rs) const { XYZval<T> ls = *this; NUM_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, ls.u -= rs.u, ls.v -= rs.v, ls.w -= rs.w); return ls; }
@@ -585,10 +593,10 @@ struct XYZval {
FI XYZval<T> operator-() { XYZval<T> o = *this; NUM_AXIS_CODE(o.x = -x, o.y = -y, o.z = -z, o.i = -i, o.j = -j, o.k = -k, o.u = -u, o.v = -v, o.w = -w); return o; }
// Modifier operators
FI XYZval<T>& operator+=(const XYval<T> &rs) { NUM_AXIS_CODE(x += rs.x, y += rs.y, NOOP, NOOP, NOOP, NOOP, NOOP, NOOP, NOOP ); return *this; }
FI XYZval<T>& operator-=(const XYval<T> &rs) { NUM_AXIS_CODE(x -= rs.x, y -= rs.y, NOOP, NOOP, NOOP, NOOP, NOOP, NOOP, NOOP ); return *this; }
FI XYZval<T>& operator*=(const XYval<T> &rs) { NUM_AXIS_CODE(x *= rs.x, y *= rs.y, NOOP, NOOP, NOOP, NOOP, NOOP, NOOP, NOOP ); return *this; }
FI XYZval<T>& operator/=(const XYval<T> &rs) { NUM_AXIS_CODE(x /= rs.x, y /= rs.y, NOOP, NOOP, NOOP, NOOP, NOOP, NOOP, NOOP ); return *this; }
FI XYZval<T>& operator+=(const XYval<T> &rs) { NUM_AXIS_CODE(x += rs.x, y += rs.y,,,,,,, ); return *this; }
FI XYZval<T>& operator-=(const XYval<T> &rs) { NUM_AXIS_CODE(x -= rs.x, y -= rs.y,,,,,,, ); return *this; }
FI XYZval<T>& operator*=(const XYval<T> &rs) { NUM_AXIS_CODE(x *= rs.x, y *= rs.y,,,,,,, ); return *this; }
FI XYZval<T>& operator/=(const XYval<T> &rs) { NUM_AXIS_CODE(x /= rs.x, y /= rs.y,,,,,,, ); return *this; }
FI XYZval<T>& operator+=(const XYZval<T> &rs) { NUM_AXIS_CODE(x += rs.x, y += rs.y, z += rs.z, i += rs.i, j += rs.j, k += rs.k, u += rs.u, v += rs.v, w += rs.w); return *this; }
FI XYZval<T>& operator-=(const XYZval<T> &rs) { NUM_AXIS_CODE(x -= rs.x, y -= rs.y, z -= rs.z, i -= rs.i, j -= rs.j, k -= rs.k, u -= rs.u, v -= rs.v, w -= rs.w); return *this; }
FI XYZval<T>& operator*=(const XYZval<T> &rs) { NUM_AXIS_CODE(x *= rs.x, y *= rs.y, z *= rs.z, i *= rs.i, j *= rs.j, k *= rs.k, u *= rs.u, v *= rs.v, w *= rs.w); return *this; }
@@ -620,9 +628,31 @@ struct XYZEval {
// Reset all to 0
FI void reset() { LOGICAL_AXIS_GANG(e =, x =, y =, z =, i =, j =, k =, u =, v =, w =) 0; }
// Setters for some number of linear axes, not all
FI void set(const T px) { x = px; }
FI void set(const T px, const T py) { x = px; y = py; }
// Setters taking struct types and arrays
FI void set(const XYval<T> pxy) { x = pxy.x; OPTCODE(HAS_Y_AXIS, y = pxy.y) }
FI void set(const XYZval<T> pxyz) { set(NUM_AXIS_ELEM(pxyz)); }
FI void set(const XYval<T> pxy, const T pz) { set(pxy); TERN_(HAS_Z_AXIS, z = pz); }
FI void set(const T (&arr)[NUM_AXES]) { NUM_AXIS_CODE(x = arr[0], y = arr[1], z = arr[2], i = arr[3], j = arr[4], k = arr[5], u = arr[6], v = arr[7], w = arr[8]); }
#if LOGICAL_AXES > NUM_AXES
FI void set(const T (&arr)[LOGICAL_AXES]) { LOGICAL_AXIS_CODE(e = arr[LOGICAL_AXES-1], x = arr[0], y = arr[1], z = arr[2], i = arr[3], j = arr[4], k = arr[5], u = arr[6], v = arr[7], w = arr[8]); }
FI void set(const XYval<T> pxy, const T pz, const T pe) { set(pxy, pz); 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, _i = i, _j = j, _k = k, _u = u, _v = v, _w = w); }
#if DISTINCT_AXES > LOGICAL_AXES
FI void set(const T (&arr)[DISTINCT_AXES]) { LOGICAL_AXIS_CODE(e = arr[LOGICAL_AXES-1], x = arr[0], y = arr[1], z = arr[2], i = arr[3], j = arr[4], k = arr[5], u = arr[6], v = arr[7], w = arr[8]); }
#endif
#endif
// Setter for all individual args
FI void set(NUM_AXIS_ARGS(const T)) { NUM_AXIS_CODE(a = x, b = y, c = z, _i = i, _j = j, _k = k, _u = u, _v = v, _w = w); }
// Setters with fewer elements leave the rest untouched
#if HAS_Y_AXIS
FI void set(const T px) { x = px; }
#endif
#if HAS_Z_AXIS
FI void set(const T px, const T py) { x = px; y = py; }
#endif
#if HAS_I_AXIS
FI void set(const T px, const T py, const T pz) { x = px; y = py; z = pz; }
#endif
@@ -642,19 +672,6 @@ struct XYZEval {
FI void set(const T px, const T py, const T pz, const T pi, const T pj, const T pk, const T pu, const T pv) { x = px; y = py; z = pz; i = pi; j = pj; k = pk; u = pu; v = pv; }
#endif
// Setters taking struct types and arrays
FI void set(const XYval<T> pxy) { x = pxy.x; y = pxy.y; }
FI void set(const XYZval<T> pxyz) { set(NUM_AXIS_ELEM(pxyz)); }
#if HAS_Z_AXIS
FI void set(NUM_AXIS_ARGS(const T)) { NUM_AXIS_CODE(a = x, b = y, c = z, _i = i, _j = j, _k = k, _u = u, _v = v, _w = w); }
#endif
FI void set(const XYval<T> pxy, const T pz) { set(pxy); TERN_(HAS_Z_AXIS, z = pz); }
#if LOGICAL_AXES > NUM_AXES
FI void set(const XYval<T> pxy, const T pz, const T pe) { set(pxy, pz); 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, _i = i, _j = j, _k = k, _u = u, _v = v, _w = w); }
#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, + u*u, + v*v, + w*w)); }
// Pointer to the data as a simple array
@@ -739,10 +756,10 @@ struct XYZEval {
FI XYZEval<T> operator-() { return LOGICAL_AXIS_ARRAY(-e, -x, -y, -z, -i, -j, -k, -u, -v, -w); }
// 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 XYval<T> &rs) { NUM_AXIS_CODE(x += rs.x, y += rs.y,,,,,,, ); return *this; }
FI XYZEval<T>& operator-=(const XYval<T> &rs) { NUM_AXIS_CODE(x -= rs.x, y -= rs.y,,,,,,, ); return *this; }
FI XYZEval<T>& operator*=(const XYval<T> &rs) { NUM_AXIS_CODE(x *= rs.x, y *= rs.y,,,,,,, ); return *this; }
FI XYZEval<T>& operator/=(const XYval<T> &rs) { NUM_AXIS_CODE(x /= rs.x, y /= rs.y,,,,,,, ); return *this; }
FI XYZEval<T>& operator+=(const XYZval<T> &rs) { NUM_AXIS_CODE(x += rs.x, y += rs.y, z += rs.z, i += rs.i, j += rs.j, k += rs.k, u += rs.u, v += rs.v, w += rs.w); return *this; }
FI XYZEval<T>& operator-=(const XYZval<T> &rs) { NUM_AXIS_CODE(x -= rs.x, y -= rs.y, z -= rs.z, i -= rs.i, j -= rs.j, k -= rs.k, u -= rs.u, v -= rs.v, w -= rs.w); return *this; }
FI XYZEval<T>& operator*=(const XYZval<T> &rs) { NUM_AXIS_CODE(x *= rs.x, y *= rs.y, z *= rs.z, i *= rs.i, j *= rs.j, k *= rs.k, u *= rs.u, v *= rs.v, w *= rs.w); return *this; }

View File

@@ -32,8 +32,8 @@ enum MeshLevelingState : char {
MeshReset // G29 S5
};
#define MESH_X_DIST (float(MESH_MAX_X - (MESH_MIN_X)) / (GRID_MAX_CELLS_X))
#define MESH_Y_DIST (float(MESH_MAX_Y - (MESH_MIN_Y)) / (GRID_MAX_CELLS_Y))
#define MESH_X_DIST (float((MESH_MAX_X) - (MESH_MIN_X)) / (GRID_MAX_CELLS_X))
#define MESH_Y_DIST (float((MESH_MAX_Y) - (MESH_MIN_Y)) / (GRID_MAX_CELLS_Y))
class mesh_bed_leveling {
public:
@@ -109,7 +109,7 @@ public:
static float get_z_correction(const xy_pos_t &pos) {
const xy_int8_t ind = cell_indexes(pos);
const float x1 = index_to_xpos[ind.x], x2 = index_to_xpos[ind.x+1],
y1 = index_to_xpos[ind.y], y2 = index_to_xpos[ind.y+1],
y1 = index_to_ypos[ind.y], y2 = index_to_ypos[ind.y+1],
z1 = calc_z0(pos.x, x1, z_values[ind.x][ind.y ], x2, z_values[ind.x+1][ind.y ]),
z2 = calc_z0(pos.x, x1, z_values[ind.x][ind.y+1], x2, z_values[ind.x+1][ind.y+1]),
zf = calc_z0(pos.y, y1, z1, y2, z2);

View File

@@ -59,7 +59,7 @@ void unified_bed_leveling::report_current_mesh() {
void unified_bed_leveling::report_state() {
echo_name();
SERIAL_ECHO_TERNARY(planner.leveling_active, " System v" UBL_VERSION " ", "", "in", "active\n");
serial_ternary(planner.leveling_active, F(" System v" UBL_VERSION " "), nullptr, F("in"), F("active\n"));
serial_delay(50);
}

View File

@@ -38,8 +38,8 @@ enum MeshPointType : char { INVALID, REAL, SET_IN_BITMAP, CLOSEST };
struct mesh_index_pair;
#define MESH_X_DIST (float(MESH_MAX_X - (MESH_MIN_X)) / (GRID_MAX_CELLS_X))
#define MESH_Y_DIST (float(MESH_MAX_Y - (MESH_MIN_Y)) / (GRID_MAX_CELLS_Y))
#define MESH_X_DIST (float((MESH_MAX_X) - (MESH_MIN_X)) / (GRID_MAX_CELLS_X))
#define MESH_Y_DIST (float((MESH_MAX_Y) - (MESH_MIN_Y)) / (GRID_MAX_CELLS_Y))
#if ENABLED(OPTIMIZED_MESH_STORAGE)
typedef int16_t mesh_store_t[GRID_MAX_POINTS_X][GRID_MAX_POINTS_Y];
@@ -264,9 +264,9 @@ public:
return UBL_Z_RAISE_WHEN_OFF_MESH;
#endif
const uint8_t mx = _MIN(cx, (GRID_MAX_POINTS_X) - 2) + 1, my = _MIN(cy, (GRID_MAX_POINTS_Y) - 2) + 1,
x0 = get_mesh_x(cx), x1 = get_mesh_x(cx + 1);
const float z1 = calc_z0(rx0, x0, z_values[cx][cy], x1, z_values[mx][cy]),
const uint8_t mx = _MIN(cx, (GRID_MAX_POINTS_X) - 2) + 1, my = _MIN(cy, (GRID_MAX_POINTS_Y) - 2) + 1;
const float x0 = get_mesh_x(cx), x1 = get_mesh_x(cx + 1),
z1 = calc_z0(rx0, x0, z_values[cx][cy], x1, z_values[mx][cy]),
z2 = calc_z0(rx0, x0, z_values[cx][my], x1, z_values[mx][my]);
float z0 = calc_z0(ry0, get_mesh_y(cy), z1, get_mesh_y(cy + 1), z2);

View File

@@ -318,9 +318,7 @@ void unified_bed_leveling::G29() {
TERN_(HAS_MULTI_HOTEND, if (active_extruder != 0) tool_change(0, true));
// Position bed horizontally and Z probe vertically.
#if defined(SAFE_BED_LEVELING_START_X) || defined(SAFE_BED_LEVELING_START_Y) || defined(SAFE_BED_LEVELING_START_Z) \
|| defined(SAFE_BED_LEVELING_START_I) || defined(SAFE_BED_LEVELING_START_J) || defined(SAFE_BED_LEVELING_START_K) \
|| defined(SAFE_BED_LEVELING_START_U) || defined(SAFE_BED_LEVELING_START_V) || defined(SAFE_BED_LEVELING_START_W)
#if HAS_SAFE_BED_LEVELING
xyze_pos_t safe_position = current_position;
#ifdef SAFE_BED_LEVELING_START_X
safe_position.x = SAFE_BED_LEVELING_START_X;
@@ -351,7 +349,7 @@ void unified_bed_leveling::G29() {
#endif
do_blocking_move_to(safe_position);
#endif
#endif // HAS_SAFE_BED_LEVELING
}
// Invalidate one or more nearby mesh points, possibly all.
@@ -887,8 +885,32 @@ void set_message_with_feedback(FSTR_P const fstr) {
ui.capture();
save_ubl_active_state_and_disable(); // Disable bed level correction for probing
do_blocking_move_to(0.5f * (MESH_MAX_X - (MESH_MIN_X)), 0.5f * (MESH_MAX_Y - (MESH_MIN_Y)), MANUAL_PROBE_START_Z);
//, _MIN(planner.settings.max_feedrate_mm_s[X_AXIS], planner.settings.max_feedrate_mm_s[Y_AXIS]) * 0.5f);
do_blocking_move_to(
xyz_pos_t({
0.5f * ((MESH_MAX_X) - (MESH_MIN_X)),
0.5f * ((MESH_MAX_Y) - (MESH_MIN_Y)),
MANUAL_PROBE_START_Z
#ifdef SAFE_BED_LEVELING_START_I
, SAFE_BED_LEVELING_START_I
#endif
#ifdef SAFE_BED_LEVELING_START_J
, SAFE_BED_LEVELING_START_J
#endif
#ifdef SAFE_BED_LEVELING_START_K
, SAFE_BED_LEVELING_START_K
#endif
#ifdef SAFE_BED_LEVELING_START_U
, SAFE_BED_LEVELING_START_U
#endif
#ifdef SAFE_BED_LEVELING_START_V
, SAFE_BED_LEVELING_START_V
#endif
#ifdef SAFE_BED_LEVELING_START_W
, SAFE_BED_LEVELING_START_W
#endif
})
//, _MIN(planner.settings.max_feedrate_mm_s[X_AXIS], planner.settings.max_feedrate_mm_s[Y_AXIS]) * 0.5f
);
planner.synchronize();
SERIAL_ECHOPGM("Place shim under nozzle");
@@ -1467,7 +1489,7 @@ void unified_bed_leveling::smart_fill_mesh() {
float measured_z;
bool abort_flag = false;
#ifdef VALIDATE_MESH_TILT
#if ENABLED(VALIDATE_MESH_TILT)
float z1, z2, z3; // Needed for algorithm validation below
#endif
@@ -1483,9 +1505,7 @@ void unified_bed_leveling::smart_fill_mesh() {
abort_flag = true;
else {
measured_z -= get_z_correction(points[0]);
#ifdef VALIDATE_MESH_TILT
z1 = measured_z;
#endif
TERN_(VALIDATE_MESH_TILT, z1 = measured_z);
if (param.V_verbosity > 3) {
serial_spaces(16);
SERIAL_ECHOLNPGM("Corrected_Z=", measured_z);
@@ -1498,9 +1518,7 @@ void unified_bed_leveling::smart_fill_mesh() {
TERN_(HAS_STATUS_MESSAGE, ui.status_printf(0, F(S_FMT " 2/3"), GET_TEXT(MSG_LCD_TILTING_MESH)));
measured_z = probe.probe_at_point(points[1], PROBE_PT_RAISE, param.V_verbosity);
#ifdef VALIDATE_MESH_TILT
z2 = measured_z;
#endif
TERN_(VALIDATE_MESH_TILT, z2 = measured_z);
if (isnan(measured_z))
abort_flag = true;
else {
@@ -1518,9 +1536,7 @@ void unified_bed_leveling::smart_fill_mesh() {
TERN_(HAS_STATUS_MESSAGE, ui.status_printf(0, F(S_FMT " 3/3"), GET_TEXT(MSG_LCD_TILTING_MESH)));
measured_z = probe.probe_at_point(points[2], PROBE_PT_LAST_STOW, param.V_verbosity);
#ifdef VALIDATE_MESH_TILT
z3 = measured_z;
#endif
TERN_(VALIDATE_MESH_TILT, z3 = measured_z);
if (isnan(measured_z))
abort_flag = true;
else {
@@ -1667,7 +1683,7 @@ void unified_bed_leveling::smart_fill_mesh() {
* The Z error between the probed point locations and the get_z_correction()
* numbers for those locations should be 0.
*/
#ifdef VALIDATE_MESH_TILT
#if ENABLED(VALIDATE_MESH_TILT)
auto d_from = []{ DEBUG_ECHOPGM("D from "); };
auto normed = [&](const xy_pos_t &pos, const_float_t zadd) {
return normal.x * pos.x + normal.y * pos.y + zadd;

View File

@@ -42,9 +42,14 @@ bool BLTouch::od_5v_mode; // Initialized by settings.load, 0 = Open Drai
#include "../core/debug_out.h"
bool BLTouch::command(const BLTCommand cmd, const millis_t &ms) {
if (DEBUGGING(LEVELING)) SERIAL_ECHOLNPGM("BLTouch Command :", cmd);
servo[Z_PROBE_SERVO_NR].move(cmd);
safe_delay(_MAX(ms, (uint32_t)BLTOUCH_DELAY)); // BLTOUCH_DELAY is also the *minimum* delay
const BLTCommand current = servo[Z_PROBE_SERVO_NR].read();
if (DEBUGGING(LEVELING)) SERIAL_ECHOLNPGM("BLTouch from ", current, " to ", cmd);
// If the new command is the same, skip it (and the delay).
// The previous write should've already delayed to detect the alarm.
if (cmd != current) {
servo[Z_PROBE_SERVO_NR].move(cmd);
safe_delay(_MAX(ms, (uint32_t)BLTOUCH_DELAY)); // BLTOUCH_DELAY is also the *minimum* delay
}
return triggered();
}

View File

@@ -35,6 +35,8 @@
PROMPT_INFO
};
extern const char CONTINUE_STR[], DISMISS_STR[];
#endif
class HostUI {
@@ -111,6 +113,9 @@ class HostUI {
static void prompt_do(const PromptReason reason, FSTR_P const pstr, const char extra_char, FSTR_P const btn1=nullptr, FSTR_P const btn2=nullptr);
static void prompt_do(const PromptReason reason, const char * const cstr, const char extra_char, FSTR_P const btn1=nullptr, FSTR_P const btn2=nullptr);
static void continue_prompt(FSTR_P const fstr) { prompt_do(PROMPT_USER_CONTINUE, fstr, FPSTR(CONTINUE_STR)); }
static void continue_prompt(const char * const cstr) { prompt_do(PROMPT_USER_CONTINUE, cstr, FPSTR(CONTINUE_STR)); }
static void prompt_open(const PromptReason reason, FSTR_P const pstr, FSTR_P const btn1=nullptr, FSTR_P const btn2=nullptr) {
if (host_prompt_reason == PROMPT_NOT_DEFINED) prompt_do(reason, pstr, btn1, btn2);
}
@@ -124,5 +129,3 @@ class HostUI {
};
extern HostUI hostui;
extern const char CONTINUE_STR[], DISMISS_STR[];

View File

@@ -108,7 +108,7 @@ void Marlin_NeoPixel::init() {
set_color(adaneo1.Color
TERN(LED_USER_PRESET_STARTUP,
(LED_USER_PRESET_RED, LED_USER_PRESET_GREEN, LED_USER_PRESET_BLUE, LED_USER_PRESET_WHITE),
(255, 255, 255, 255))
(0, 0, 0, 0))
);
}

View File

@@ -148,7 +148,7 @@ void PCA9632_set_led_color(const LEDColor &color) {
#if ENABLED(PCA9632_BUZZER)
void PCA9632_buzz(const long, const uint16_t) {
void PCA9632_buzz(const long, const uint16_t=0) {
uint8_t data[] = PCA9632_BUZZER_DATA;
Wire.beginTransmission(I2C_ADDRESS(PCA9632_ADDRESS));
Wire.write(data, sizeof(data));

View File

@@ -33,5 +33,5 @@ void PCA9632_set_led_color(const LEDColor &color);
#if ENABLED(PCA9632_BUZZER)
#include <stdint.h>
void PCA9632_buzz(const long, const uint16_t);
void PCA9632_buzz(const long, const uint16_t=0);
#endif

View File

@@ -24,8 +24,6 @@
#if ENABLED(MIXING_EXTRUDER)
//#define MIXER_NORMALIZER_DEBUG
#include "mixing.h"
Mixer mixer;

View File

@@ -148,8 +148,7 @@ class Mixer {
static void update_mix_from_vtool(const uint8_t j=selected_vtool) {
float ctot = 0;
MIXER_STEPPER_LOOP(i) ctot += color[j][i];
//MIXER_STEPPER_LOOP(i) mix[i] = 100.0f * color[j][i] / ctot;
MIXER_STEPPER_LOOP(i) mix[i] = mixer_perc_t(100.0f * color[j][i] / ctot);
MIXER_STEPPER_LOOP(i) mix[i] = mixer_perc_t(100.0f * color[j][i] / ctot + 0.5f);
#ifdef MIXER_NORMALIZER_DEBUG
SERIAL_ECHOPGM("V-tool ", j, " [ ");

View File

@@ -979,10 +979,10 @@ bool MMU2::eject_filament(const uint8_t index, const bool recover) {
manage_response(false, false);
if (recover) {
LCD_MESSAGE(MSG_MMU2_EJECT_RECOVER);
LCD_MESSAGE(MSG_MMU2_REMOVE_AND_CLICK);
mmu2_attn_buzz();
TERN_(HOST_PROMPT_SUPPORT, hostui.prompt_do(PROMPT_USER_CONTINUE, F("MMU2 Eject Recover"), FPSTR(CONTINUE_STR)));
TERN_(EXTENSIBLE_UI, ExtUI::onUserConfirmRequired(F("MMU2 Eject Recover")));
TERN_(HOST_PROMPT_SUPPORT, hostui.continue_prompt(GET_TEXT_F(MSG_MMU2_EJECT_RECOVER)));
TERN_(EXTENSIBLE_UI, ExtUI::onUserConfirmRequired(GET_TEXT_F(MSG_MMU2_EJECT_RECOVER)));
TERN_(HAS_RESUME_CONTINUE, wait_for_user_response());
mmu2_attn_buzz(true);

View File

@@ -201,7 +201,7 @@ bool load_filament(const_float_t slow_load_length/*=0*/, const_float_t fast_load
KEEPALIVE_STATE(PAUSED_FOR_USER);
wait_for_user = true; // LCD click or M108 will clear this
TERN_(EXTENSIBLE_UI, ExtUI::onUserConfirmRequired(F("Load Filament")));
TERN_(EXTENSIBLE_UI, ExtUI::onUserConfirmRequired(GET_TEXT_F(MSG_FILAMENTLOAD)));
#if ENABLED(HOST_PROMPT_SUPPORT)
const char tool = '0' + TERN0(MULTI_FILAMENT_SENSOR, active_extruder);
@@ -211,7 +211,7 @@ bool load_filament(const_float_t slow_load_length/*=0*/, const_float_t fast_load
while (wait_for_user) {
impatient_beep(max_beep_count);
#if BOTH(FILAMENT_CHANGE_RESUME_ON_INSERT, FILAMENT_RUNOUT_SENSOR)
#if ENABLED(MULTI_FILAMENT_SENSOR)
#if MULTI_FILAMENT_SENSOR
#define _CASE_INSERTED(N) case N-1: if (READ(FIL_RUNOUT##N##_PIN) != FIL_RUNOUT##N##_STATE) wait_for_user = false; break;
switch (active_extruder) {
REPEAT_1(NUM_RUNOUT_SENSORS, _CASE_INSERTED)
@@ -260,7 +260,7 @@ bool load_filament(const_float_t slow_load_length/*=0*/, const_float_t fast_load
if (show_lcd) ui.pause_show_message(PAUSE_MESSAGE_PURGE);
TERN_(EXTENSIBLE_UI, ExtUI::onUserConfirmRequired(GET_TEXT_F(MSG_FILAMENT_CHANGE_PURGE)));
TERN_(HOST_PROMPT_SUPPORT, hostui.prompt_do(PROMPT_USER_CONTINUE, GET_TEXT_F(MSG_FILAMENT_CHANGE_PURGE), FPSTR(CONTINUE_STR)));
TERN_(HOST_PROMPT_SUPPORT, hostui.continue_prompt(GET_TEXT_F(MSG_FILAMENT_CHANGE_PURGE)));
wait_for_user = true; // A click or M108 breaks the purge_length loop
for (float purge_count = purge_length; purge_count > 0 && wait_for_user; --purge_count)
unscaled_e_move(1, ADVANCED_PAUSE_PURGE_FEEDRATE);
@@ -410,7 +410,6 @@ bool pause_print(const_float_t retract, const xyz_pos_t &park_point, const bool
#endif
TERN_(HOST_PROMPT_SUPPORT, hostui.prompt_open(PROMPT_INFO, F("Pause"), FPSTR(DISMISS_STR)));
TERN_(DWIN_LCD_PROUI, DWIN_Print_Pause());
// Indicate that the printer is paused
++did_pause_print;
@@ -461,6 +460,7 @@ bool pause_print(const_float_t retract, const xyz_pos_t &park_point, const bool
// If axes don't need to home then the nozzle can park
if (do_park) nozzle.park(0, park_point); // Park the nozzle by doing a Minimum Z Raise followed by an XY Move
if (!do_park) LCD_MESSAGE(MSG_PARK_FAILED);
#if ENABLED(DUAL_X_CARRIAGE)
const int8_t saved_ext = active_extruder;
@@ -525,7 +525,7 @@ void wait_for_confirmation(const bool is_reload/*=false*/, const int8_t max_beep
// Wait for filament insert by user and press button
KEEPALIVE_STATE(PAUSED_FOR_USER);
TERN_(HOST_PROMPT_SUPPORT, hostui.prompt_do(PROMPT_USER_CONTINUE, GET_TEXT_F(MSG_NOZZLE_PARKED), FPSTR(CONTINUE_STR)));
TERN_(HOST_PROMPT_SUPPORT, hostui.continue_prompt(GET_TEXT_F(MSG_NOZZLE_PARKED)));
TERN_(EXTENSIBLE_UI, ExtUI::onUserConfirmRequired(GET_TEXT_F(MSG_NOZZLE_PARKED)));
wait_for_user = true; // LCD click or M108 will clear this
while (wait_for_user) {
@@ -549,9 +549,7 @@ void wait_for_confirmation(const bool is_reload/*=false*/, const int8_t max_beep
TERN_(HOST_PROMPT_SUPPORT, hostui.prompt_do(PROMPT_INFO, GET_TEXT_F(MSG_REHEATING)));
TERN_(EXTENSIBLE_UI, ExtUI::onStatusChanged(GET_TEXT_F(MSG_REHEATING)));
TERN_(DWIN_LCD_PROUI, LCD_MESSAGE(MSG_REHEATING));
LCD_MESSAGE(MSG_REHEATING);
// Re-enable the heaters if they timed out
HOTEND_LOOP() thermalManager.reset_hotend_idle_timer(e);
@@ -567,9 +565,12 @@ void wait_for_confirmation(const bool is_reload/*=false*/, const int8_t max_beep
HOTEND_LOOP() thermalManager.heater_idle[e].start(nozzle_timeout);
TERN_(HOST_PROMPT_SUPPORT, hostui.prompt_do(PROMPT_USER_CONTINUE, GET_TEXT_F(MSG_REHEATDONE), FPSTR(CONTINUE_STR)));
TERN_(EXTENSIBLE_UI, ExtUI::onUserConfirmRequired(GET_TEXT_F(MSG_REHEATDONE)));
TERN_(DWIN_LCD_PROUI, LCD_MESSAGE(MSG_REHEATDONE));
TERN_(HOST_PROMPT_SUPPORT, hostui.continue_prompt(GET_TEXT_F(MSG_REHEATDONE)));
#if ENABLED(EXTENSIBLE_UI)
ExtUI::onUserConfirmRequired(GET_TEXT_F(MSG_REHEATDONE));
#else
LCD_MESSAGE(MSG_REHEATDONE);
#endif
IF_DISABLED(PAUSE_REHEAT_FAST_RESUME, wait_for_user = true);
@@ -710,13 +711,8 @@ void resume_print(const_float_t slow_load_length/*=0*/, const_float_t fast_load_
TERN_(HAS_FILAMENT_SENSOR, runout.reset());
#if ENABLED(DWIN_LCD_PROUI)
DWIN_Print_Resume();
HMI_ReturnScreen();
#else
ui.reset_status();
ui.return_to_status();
#endif
ui.reset_status();
ui.return_to_status();
}
#endif // ADVANCED_PAUSE_FEATURE

View File

@@ -33,7 +33,7 @@
bool PrintJobRecovery::enabled; // Initialized by settings.load()
SdFile PrintJobRecovery::file;
MediaFile PrintJobRecovery::file;
job_recovery_info_t PrintJobRecovery::info;
const char PrintJobRecovery::filename[5] = "/PLR";
uint8_t PrintJobRecovery::queue_index_r;
@@ -78,6 +78,14 @@ PrintJobRecovery recovery;
#define POWER_LOSS_RETRACT_LEN 0
#endif
// Allow power-loss recovery to be aborted
#define PLR_CAN_ABORT
#if ENABLED(PLR_CAN_ABORT)
#define PROCESS_SUBCOMMANDS_NOW(cmd) do { if (card.flag.abort_sd_printing) return; gcode.process_subcommands_now(cmd); }while(0)
#else
#define PROCESS_SUBCOMMANDS_NOW(cmd) gcode.process_subcommands_now(cmd)
#endif
/**
* Clear the recovery info
*/
@@ -352,12 +360,23 @@ void PrintJobRecovery::resume() {
// Apply the dry-run flag if enabled
if (info.flag.dryrun) marlin_debug_flags |= MARLIN_DEBUG_DRYRUN;
#if ENABLED(DEBUG_POWER_LOSS_RECOVERY)
struct OnExit {
uint8_t old_flags;
OnExit() {
old_flags = marlin_debug_flags;
marlin_debug_flags |= MARLIN_DEBUG_ECHO;
}
~OnExit() { marlin_debug_flags = old_flags; }
} on_exit;
#endif
// Restore cold extrusion permission
TERN_(PREVENT_COLD_EXTRUSION, thermalManager.allow_cold_extrude = info.flag.allow_cold_extrusion);
#if HAS_LEVELING
// Make sure leveling is off before any G92 and G28
gcode.process_subcommands_now(F("M420 S0 Z0"));
PROCESS_SUBCOMMANDS_NOW(F("M420S0"));
#endif
#if HAS_HEATED_BED
@@ -365,7 +384,7 @@ void PrintJobRecovery::resume() {
if (bt) {
// Restore the bed temperature
sprintf_P(cmd, PSTR("M190S%i"), bt);
gcode.process_subcommands_now(cmd);
PROCESS_SUBCOMMANDS_NOW(cmd);
}
#endif
@@ -376,10 +395,10 @@ void PrintJobRecovery::resume() {
if (et) {
#if HAS_MULTI_HOTEND
sprintf_P(cmd, PSTR("T%iS"), e);
gcode.process_subcommands_now(cmd);
PROCESS_SUBCOMMANDS_NOW(cmd);
#endif
sprintf_P(cmd, PSTR("M109S%i"), et);
gcode.process_subcommands_now(cmd);
PROCESS_SUBCOMMANDS_NOW(cmd);
}
}
#endif
@@ -393,7 +412,7 @@ void PrintJobRecovery::resume() {
// establish the current position as best we can.
//
gcode.process_subcommands_now(F("G92.9E0")); // Reset E to 0
PROCESS_SUBCOMMANDS_NOW(F("G92.9E0")); // Reset E to 0
#if Z_HOME_TO_MAX
@@ -404,7 +423,7 @@ void PrintJobRecovery::resume() {
"G28R0\n" // Home all axes (no raise)
"G1Z%sF1200" // Move Z down to (raised) height
), dtostrf(z_now, 1, 3, str_1));
gcode.process_subcommands_now(cmd);
PROCESS_SUBCOMMANDS_NOW(cmd);
#elif DISABLED(BELTPRINTER)
@@ -417,18 +436,18 @@ void PrintJobRecovery::resume() {
#if !HOMING_Z_DOWN
// Set Z to the real position
sprintf_P(cmd, PSTR("G92.9Z%s"), dtostrf(z_now, 1, 3, str_1));
gcode.process_subcommands_now(cmd);
PROCESS_SUBCOMMANDS_NOW(cmd);
#endif
// Does Z need to be raised now? It should be raised before homing XY.
if (z_raised > z_now) {
z_now = z_raised;
sprintf_P(cmd, PSTR("G1Z%sF600"), dtostrf(z_now, 1, 3, str_1));
gcode.process_subcommands_now(cmd);
PROCESS_SUBCOMMANDS_NOW(cmd);
}
// Home XY with no Z raise
gcode.process_subcommands_now(F("G28R0XY")); // No raise during G28
PROCESS_SUBCOMMANDS_NOW(F("G28R0XY")); // No raise during G28
#endif
@@ -436,7 +455,7 @@ void PrintJobRecovery::resume() {
// Move to a safe XY position and home Z while avoiding the print.
const xy_pos_t p = xy_pos_t(POWER_LOSS_ZHOME_POS) TERN_(HOMING_Z_WITH_PROBE, - probe.offset_xy);
sprintf_P(cmd, PSTR("G1X%sY%sF1000\nG28HZ"), dtostrf(p.x, 1, 3, str_1), dtostrf(p.y, 1, 3, str_2));
gcode.process_subcommands_now(cmd);
PROCESS_SUBCOMMANDS_NOW(cmd);
#endif
// Mark all axes as having been homed (no effect on current_position)
@@ -447,12 +466,12 @@ void PrintJobRecovery::resume() {
// Leveling may already be enabled due to the ENABLE_LEVELING_AFTER_G28 option.
// TODO: Add a G28 parameter to leave leveling disabled.
sprintf_P(cmd, PSTR("M420S%cZ%s"), '0' + (char)info.flag.leveling, dtostrf(info.fade, 1, 1, str_1));
gcode.process_subcommands_now(cmd);
PROCESS_SUBCOMMANDS_NOW(cmd);
#if !HOMING_Z_DOWN
// The physical Z was adjusted at power-off so undo the M420S1 correction to Z with G92.9.
sprintf_P(cmd, PSTR("G92.9Z%s"), dtostrf(z_now, 1, 1, str_1));
gcode.process_subcommands_now(cmd);
PROCESS_SUBCOMMANDS_NOW(cmd);
#endif
#endif
@@ -460,7 +479,7 @@ void PrintJobRecovery::resume() {
// Z was homed down to the bed, so move up to the raised height.
z_now = z_raised;
sprintf_P(cmd, PSTR("G1Z%sF600"), dtostrf(z_now, 1, 3, str_1));
gcode.process_subcommands_now(cmd);
PROCESS_SUBCOMMANDS_NOW(cmd);
#endif
// Recover volumetric extrusion state
@@ -468,16 +487,16 @@ void PrintJobRecovery::resume() {
#if HAS_MULTI_EXTRUDER
EXTRUDER_LOOP() {
sprintf_P(cmd, PSTR("M200T%iD%s"), e, dtostrf(info.filament_size[e], 1, 3, str_1));
gcode.process_subcommands_now(cmd);
PROCESS_SUBCOMMANDS_NOW(cmd);
}
if (!info.flag.volumetric_enabled) {
sprintf_P(cmd, PSTR("M200T%iD0"), info.active_extruder);
gcode.process_subcommands_now(cmd);
PROCESS_SUBCOMMANDS_NOW(cmd);
}
#else
if (info.flag.volumetric_enabled) {
sprintf_P(cmd, PSTR("M200D%s"), dtostrf(info.filament_size[0], 1, 3, str_1));
gcode.process_subcommands_now(cmd);
PROCESS_SUBCOMMANDS_NOW(cmd);
}
#endif
#endif
@@ -489,10 +508,10 @@ void PrintJobRecovery::resume() {
if (et) {
#if HAS_MULTI_HOTEND
sprintf_P(cmd, PSTR("T%iS"), e);
gcode.process_subcommands_now(cmd);
PROCESS_SUBCOMMANDS_NOW(cmd);
#endif
sprintf_P(cmd, PSTR("M109S%i"), et);
gcode.process_subcommands_now(cmd);
PROCESS_SUBCOMMANDS_NOW(cmd);
}
}
#endif
@@ -500,7 +519,7 @@ void PrintJobRecovery::resume() {
// Restore the previously active tool (with no_move)
#if HAS_MULTI_EXTRUDER || HAS_MULTI_HOTEND
sprintf_P(cmd, PSTR("T%i S"), info.active_extruder);
gcode.process_subcommands_now(cmd);
PROCESS_SUBCOMMANDS_NOW(cmd);
#endif
// Restore print cooling fan speeds
@@ -509,7 +528,7 @@ void PrintJobRecovery::resume() {
const int f = info.fan_speed[i];
if (f) {
sprintf_P(cmd, PSTR("M106P%iS%i"), i, f);
gcode.process_subcommands_now(cmd);
PROCESS_SUBCOMMANDS_NOW(cmd);
}
}
#endif
@@ -531,17 +550,17 @@ void PrintJobRecovery::resume() {
// Un-retract if there was a retract at outage
#if ENABLED(BACKUP_POWER_SUPPLY) && POWER_LOSS_RETRACT_LEN > 0
gcode.process_subcommands_now(F("G1F3000E" STRINGIFY(POWER_LOSS_RETRACT_LEN)));
PROCESS_SUBCOMMANDS_NOW(F("G1F3000E" STRINGIFY(POWER_LOSS_RETRACT_LEN)));
#endif
// Additional purge on resume if configured
#if POWER_LOSS_PURGE_LEN
sprintf_P(cmd, PSTR("G1F3000E%d"), (POWER_LOSS_PURGE_LEN) + (POWER_LOSS_RETRACT_LEN));
gcode.process_subcommands_now(cmd);
PROCESS_SUBCOMMANDS_NOW(cmd);
#endif
#if ENABLED(NOZZLE_CLEAN_FEATURE)
gcode.process_subcommands_now(F("G12"));
PROCESS_SUBCOMMANDS_NOW(F("G12"));
#endif
// Move back over to the saved XY
@@ -549,19 +568,19 @@ void PrintJobRecovery::resume() {
dtostrf(info.current_position.x, 1, 3, str_1),
dtostrf(info.current_position.y, 1, 3, str_2)
);
gcode.process_subcommands_now(cmd);
PROCESS_SUBCOMMANDS_NOW(cmd);
// Move back down to the saved Z for printing
sprintf_P(cmd, PSTR("G1Z%sF600"), dtostrf(z_print, 1, 3, str_1));
gcode.process_subcommands_now(cmd);
PROCESS_SUBCOMMANDS_NOW(cmd);
// Restore the feedrate
sprintf_P(cmd, PSTR("G1F%d"), info.feedrate);
gcode.process_subcommands_now(cmd);
PROCESS_SUBCOMMANDS_NOW(cmd);
// Restore E position with G92.9
sprintf_P(cmd, PSTR("G92.9E%s"), dtostrf(info.current_position.e, 1, 3, str_1));
gcode.process_subcommands_now(cmd);
PROCESS_SUBCOMMANDS_NOW(cmd);
TERN_(GCODE_REPEAT_MARKERS, repeat = info.stored_repeat);
TERN_(HAS_HOME_OFFSET, home_offset = info.home_offset);
@@ -573,22 +592,14 @@ void PrintJobRecovery::resume() {
// Relative axis modes
gcode.axis_relative = info.axis_relative;
#if ENABLED(DEBUG_POWER_LOSS_RECOVERY)
const uint8_t old_flags = marlin_debug_flags;
marlin_debug_flags |= MARLIN_DEBUG_ECHO;
#endif
// Continue to apply PLR when a file is resumed!
enable(true);
// Resume the SD file from the last position
char *fn = info.sd_filename;
sprintf_P(cmd, M23_STR, fn);
gcode.process_subcommands_now(cmd);
sprintf_P(cmd, M23_STR, &info.sd_filename[0]);
PROCESS_SUBCOMMANDS_NOW(cmd);
sprintf_P(cmd, PSTR("M24S%ldT%ld"), resume_sdpos, info.print_job_elapsed);
gcode.process_subcommands_now(cmd);
TERN_(DEBUG_POWER_LOSS_RECOVERY, marlin_debug_flags = old_flags);
PROCESS_SUBCOMMANDS_NOW(cmd);
}
#if ENABLED(DEBUG_POWER_LOSS_RECOVERY)

View File

@@ -138,7 +138,7 @@ class PrintJobRecovery {
public:
static const char filename[5];
static SdFile file;
static MediaFile file;
static job_recovery_info_t info;
static uint8_t queue_index_r; //!< Queue index of the active command

View File

@@ -141,7 +141,7 @@ void SpindleLaser::apply_power(const uint8_t opwr) {
else
ocr_off();
#elif ENABLED(SPINDLE_SERVO)
MOVE_SERVO(SPINDLE_SERVO_NR, power);
servo[SPINDLE_SERVO_NR].move(opwr);
#else
WRITE(SPINDLE_LASER_ENA_PIN, enabled() ? SPINDLE_LASER_ACTIVE_STATE : !SPINDLE_LASER_ACTIVE_STATE);
isReadyForUI = true;

View File

@@ -201,8 +201,6 @@ public:
apply_power(enable ? TERN(SPINDLE_LASER_USE_PWM, (power ?: (unitPower ? upower_to_ocr(cpwr_to_upwr(SPEED_POWER_STARTUP)) : 0)), 255) : 0);
break;
case CUTTER_MODE_CONTINUOUS:
TERN_(LASER_FEATURE, set_inline_enabled(enable));
break;
case CUTTER_MODE_DYNAMIC:
TERN_(LASER_FEATURE, set_inline_enabled(enable));
break;
@@ -210,7 +208,7 @@ public:
enable = false;
apply_power(0);
}
#if SPINDLE_LASER_ENA_PIN
#if PIN_EXISTS(SPINDLE_LASER_ENA)
WRITE(SPINDLE_LASER_ENA_PIN, enable ? SPINDLE_LASER_ACTIVE_STATE : !SPINDLE_LASER_ACTIVE_STATE);
#endif
enable_state = enable;
@@ -281,7 +279,7 @@ public:
set_enabled(state);
if (state) {
if (!menuPower) menuPower = cpwr_to_upwr(SPEED_POWER_STARTUP);
power = upower_to_ocr(menuPower);
power = TERN(SPINDLE_LASER_USE_PWM, upower_to_ocr(menuPower), 255);
apply_power(power);
} else
apply_power(0);

View File

@@ -43,7 +43,7 @@ void stepper_driver_backward_check() {
SET_INPUT(AXIS##_ENABLE_PIN); \
OUT_WRITE(AXIS##_STEP_PIN, false); \
delay(20); \
if (READ(AXIS##_ENABLE_PIN) == false) { \
if (READ(AXIS##_ENABLE_PIN) == LOW) { \
SBI(axis_plug_backward, BIT); \
stepper_driver_backward_error(F(STRINGIFY(AXIS))); \
} \

View File

@@ -601,8 +601,8 @@
case TMC_STEALTHCHOP: serialprint_truefalse(st.en_pwm_mode()); break;
case TMC_GLOBAL_SCALER:
{
uint16_t value = st.GLOBAL_SCALER();
SERIAL_ECHO(value ? value : 256);
const uint16_t value = st.GLOBAL_SCALER();
SERIAL_ECHO(value ?: 256);
SERIAL_ECHOPGM("/256");
}
break;

View File

@@ -162,8 +162,8 @@ float g26_random_deviation = 0.0;
*/
bool user_canceled() {
if (!ui.button_pressed()) return false; // Return if the button isn't pressed
ui.set_status(GET_TEXT_F(MSG_G26_CANCELED), 99);
TERN_(HAS_MARLINUI_MENU, ui.quick_feedback());
LCD_MESSAGE_MAX(MSG_G26_CANCELED);
ui.quick_feedback();
ui.wait_for_release();
return true;
}
@@ -321,11 +321,9 @@ typedef struct {
#if HAS_HEATED_BED
if (bed_temp > 25) {
#if HAS_WIRED_LCD
ui.set_status(GET_TEXT_F(MSG_G26_HEATING_BED), 99);
ui.quick_feedback();
TERN_(HAS_MARLINUI_MENU, ui.capture());
#endif
LCD_MESSAGE_MAX(MSG_G26_HEATING_BED);
ui.quick_feedback();
TERN_(HAS_MARLINUI_MENU, ui.capture());
thermalManager.setTargetBed(bed_temp);
// Wait for the temperature to stabilize
@@ -340,20 +338,16 @@ typedef struct {
#endif // HAS_HEATED_BED
// Start heating the active nozzle
#if HAS_WIRED_LCD
ui.set_status(GET_TEXT_F(MSG_G26_HEATING_NOZZLE), 99);
ui.quick_feedback();
#endif
LCD_MESSAGE_MAX(MSG_G26_HEATING_NOZZLE);
ui.quick_feedback();
thermalManager.setTargetHotend(hotend_temp, active_extruder);
// Wait for the temperature to stabilize
if (!thermalManager.wait_for_hotend(active_extruder, true OPTARG(G26_CLICK_CAN_CANCEL, true)))
return G26_ERR;
#if HAS_WIRED_LCD
ui.reset_status();
ui.quick_feedback();
#endif
ui.reset_status();
ui.completion_feedback();
return G26_OK;
}
@@ -371,7 +365,7 @@ typedef struct {
if (prime_flag == -1) { // The user wants to control how much filament gets purged
ui.capture();
ui.set_status(GET_TEXT_F(MSG_G26_MANUAL_PRIME), 99);
LCD_MESSAGE_MAX(MSG_G26_MANUAL_PRIME);
ui.chirp();
destination = current_position;
@@ -398,17 +392,15 @@ typedef struct {
ui.wait_for_release();
ui.set_status(GET_TEXT_F(MSG_G26_PRIME_DONE), 99);
LCD_MESSAGE_MAX(MSG_G26_PRIME_DONE);
ui.quick_feedback();
ui.release();
}
else
#endif
{
#if HAS_WIRED_LCD
ui.set_status(GET_TEXT_F(MSG_G26_FIXED_LENGTH), 99);
ui.quick_feedback();
#endif
LCD_MESSAGE_MAX(MSG_G26_FIXED_LENGTH);
ui.quick_feedback();
destination = current_position;
destination.e += prime_length;
prepare_internal_move_to_destination(fr_slow_e);
@@ -853,7 +845,7 @@ void GcodeSuite::G26() {
} while (--g26_repeats && location.valid());
LEAVE:
ui.set_status(GET_TEXT_F(MSG_G26_LEAVING), -1);
LCD_MESSAGE_MIN(MSG_G26_LEAVING);
TERN_(EXTENSIBLE_UI, ExtUI::onMeshUpdate(location, ExtUI::G26_FINISH));
g26.retract_filament(destination);

View File

@@ -409,7 +409,7 @@ G29_TYPE GcodeSuite::G29() {
if (!probe.good_bounds(abl.probe_position_lf, abl.probe_position_rb)) {
if (DEBUGGING(LEVELING)) {
DEBUG_ECHOLNPGM("G29 L", abl.probe_position_lf.x, " R", abl.probe_position_rb.x,
" F", abl.probe_position_lf.y, " B", abl.probe_position_rb.y);
" F", abl.probe_position_lf.y, " B", abl.probe_position_rb.y);
}
SERIAL_ECHOLNPGM("? (L,R,F,B) out of bounds.");
G29_RETURN(false, false);
@@ -417,7 +417,7 @@ G29_TYPE GcodeSuite::G29() {
// Probe at the points of a lattice grid
abl.gridSpacing.set((abl.probe_position_rb.x - abl.probe_position_lf.x) / (abl.grid_points.x - 1),
(abl.probe_position_rb.y - abl.probe_position_lf.y) / (abl.grid_points.y - 1));
(abl.probe_position_rb.y - abl.probe_position_lf.y) / (abl.grid_points.y - 1));
#endif // ABL_USES_GRID
@@ -453,9 +453,7 @@ G29_TYPE GcodeSuite::G29() {
}
// Position bed horizontally and Z probe vertically.
#if defined(SAFE_BED_LEVELING_START_X) || defined(SAFE_BED_LEVELING_START_Y) || defined(SAFE_BED_LEVELING_START_Z) \
|| defined(SAFE_BED_LEVELING_START_I) || defined(SAFE_BED_LEVELING_START_J) || defined(SAFE_BED_LEVELING_START_K) \
|| defined(SAFE_BED_LEVELING_START_U) || defined(SAFE_BED_LEVELING_START_V) || defined(SAFE_BED_LEVELING_START_W)
#if HAS_SAFE_BED_LEVELING
xyze_pos_t safe_position = current_position;
#ifdef SAFE_BED_LEVELING_START_X
safe_position.x = SAFE_BED_LEVELING_START_X;
@@ -486,7 +484,7 @@ G29_TYPE GcodeSuite::G29() {
#endif
do_blocking_move_to(safe_position);
#endif
#endif // HAS_SAFE_BED_LEVELING
// Disable auto bed leveling during G29.
// Be formal so G29 can be done successively without G28.

View File

@@ -108,9 +108,7 @@ void GcodeSuite::G29() {
TERN_(DWIN_LCD_PROUI, DWIN_LevelingStart());
// Position bed horizontally and Z probe vertically.
#if defined(SAFE_BED_LEVELING_START_X) || defined(SAFE_BED_LEVELING_START_Y) || defined(SAFE_BED_LEVELING_START_Z) \
|| defined(SAFE_BED_LEVELING_START_I) || defined(SAFE_BED_LEVELING_START_J) || defined(SAFE_BED_LEVELING_START_K) \
|| defined(SAFE_BED_LEVELING_START_U) || defined(SAFE_BED_LEVELING_START_V) || defined(SAFE_BED_LEVELING_START_W)
#if HAS_SAFE_BED_LEVELING
xyze_pos_t safe_position = current_position;
#ifdef SAFE_BED_LEVELING_START_X
safe_position.x = SAFE_BED_LEVELING_START_X;
@@ -141,7 +139,7 @@ void GcodeSuite::G29() {
#endif
do_blocking_move_to(safe_position);
#endif
#endif // HAS_SAFE_BED_LEVELING
return;
}

View File

@@ -403,26 +403,44 @@ void GcodeSuite::G28() {
UNUSED(needZ); UNUSED(homeZZ);
#else
constexpr bool doZ = false;
#if !HAS_Y_AXIS
constexpr bool doY = false;
#endif
#endif
// Z may home first, e.g., when homing away from the bed
TERN_(HOME_Z_FIRST, if (doZ) homeaxis(Z_AXIS));
// 'R' to specify a specific raise. 'R0' indicates no raise, e.g., for recovery.resume
// When 'R0' is used, there should already be adequate clearance, e.g., from homing Z to max.
const bool seenR = parser.seenval('R');
const float z_homing_height = seenR ? parser.value_linear_units() : Z_HOMING_HEIGHT;
if (z_homing_height && (seenR || NUM_AXIS_GANG(doX, || doY, || TERN0(Z_SAFE_HOMING, doZ), || doI, || doJ, || doK, || doU, || doV, || doW))) {
// Raise Z before homing any other axes and z is not already high enough (never lower z)
if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("Raise Z (before homing) by ", z_homing_height);
do_z_clearance(z_homing_height);
TERN_(BLTOUCH, bltouch.init());
// Use raise given by 'R' or Z_HOMING_HEIGHT (above the probe trigger point)
float z_homing_height = seenR ? parser.value_linear_units() : Z_HOMING_HEIGHT;
// Check for any lateral motion that might require clearance
const bool may_skate = seenR || NUM_AXIS_GANG(doX, || doY, || TERN0(Z_SAFE_HOMING, doZ), || doI, || doJ, || doK, || doU, || doV, || doW);
if (seenR && z_homing_height == 0) {
if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("R0 = No Z raise");
}
else if (z_homing_height && may_skate) {
// Raise Z before homing any other axes and z is not already high enough (never lower z)
if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("Raise Z before homing:");
do_z_clearance(z_homing_height);
}
// Init BLTouch ahead of any lateral motion, even if not homing with the probe
TERN_(BLTOUCH, if (may_skate) bltouch.init());
// Diagonal move first if both are homing
TERN_(QUICK_HOME, if (doX && doY) quick_home_xy());
// Home Y (before X)
if (ENABLED(HOME_Y_BEFORE_X) && (doY || TERN0(CODEPENDENT_XY_HOMING, doX)))
homeaxis(Y_AXIS);
#if HAS_Y_AXIS
// Home Y (before X)
if (ENABLED(HOME_Y_BEFORE_X) && (doY || TERN0(CODEPENDENT_XY_HOMING, doX)))
homeaxis(Y_AXIS);
#endif
// Home X
if (doX || (doY && ENABLED(CODEPENDENT_XY_HOMING) && DISABLED(HOME_Y_BEFORE_X))) {
@@ -455,9 +473,11 @@ void GcodeSuite::G28() {
if (doI) homeaxis(I_AXIS);
#endif
// Home Y (after X)
if (DISABLED(HOME_Y_BEFORE_X) && doY)
homeaxis(Y_AXIS);
#if HAS_Y_AXIS
// Home Y (after X)
if (DISABLED(HOME_Y_BEFORE_X) && doY)
homeaxis(Y_AXIS);
#endif
#if BOTH(FOAMCUTTER_XYUV, HAS_J_AXIS)
// Home J (after Y)

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