Compare commits

..

1354 Commits

Author SHA1 Message Date
thinkyhead
70c5bca8c2 [cron] Bump distribution date (2023-04-16) 2023-04-16 06:07:32 +00:00
Scott Lahteine
bb4a01c4f9 🔨 Newer PlatformIO support 2023-04-15 22:27:40 -05:00
Scott Lahteine
06a6708220 🧑‍💻 Update Python indentation 2023-04-15 22:27:40 -05:00
ellensp
e3d1bd6d97 🩹 Add missing FORCE_SOFT_SPI (#24940) 2023-04-15 22:27:40 -05:00
thinkyhead
031bc6adb9 [cron] Bump distribution date (2023-04-08) 2023-04-08 00:18:54 +00:00
ellensp
a6cc7a4f35 🩹 Add missing FORCE_SOFT_SPI (#24940) 2022-11-13 22:42:36 -06:00
Scott Lahteine
4f9fbcee2b 🐛 Fix recalculate_max_e_jerk 2022-11-09 20:55:20 -06:00
Moonglow
d1211b9f90 🩹 Fix M907 "extra axis" limit (#24559) 2022-07-29 19:37:42 -05:00
Scott Lahteine
d5699dd5c0 🚑️ Fix XYZEval = N not setting E 2022-07-29 18:41:23 -05:00
Scott Lahteine
79bd1a68c7 🧑‍💻 Further script updates 2022-07-29 08:33:08 -05:00
Scott Lahteine
0922702504 🧑‍💻 Axis macros parity with 2.1.x 2022-07-29 08:33:08 -05:00
Miguel Risco-Castillo
2bf631c6cc 🚸 Fix, update ProUI (#24251, #24473, #24500) 2022-07-29 08:16:20 -05:00
Scott Lahteine
9a0d0e7ef1 ♻️ Small sound / buzz refactor (#24520) 2022-07-29 07:10:59 -05:00
Keith Bennett
3fab4898e4 👷 CI for bugfix-2.0.x, updates (#24560) 2022-07-29 06:12:38 -05:00
tombrazier
eee8f11849 ️ Optimize Planner calculations (#24484, #24509) 2022-07-29 05:54:17 -05:00
tombrazier
096bea208e ️ Optimize G2-G3 Arcs (#24366) 2022-07-29 05:40:40 -05:00
Scott Lahteine
daa7ee6c6a 🩹 Revert extra axis changes 2022-07-29 05:40:40 -05:00
Scott Lahteine
09cc5473b5 🧑‍💻 Fix and improve build_all_examples 2022-07-29 05:06:58 -05:00
Scott Lahteine
5ccaf1d233 🧑‍💻 Add Sim debug with lldb 2022-07-29 04:56:28 -05:00
ellensp
78789ee11d 📺 SKR_MINI_SCREEN_ADAPTER for BTT SKR Mini E3 V3 (#24521) 2022-07-29 04:52:14 -05:00
Keith Bennett
39f6ae0e3c 📝 Update board MCU comments (#24486) 2022-07-29 04:24:11 -05:00
InsanityAutomation
3441e917bc 🚸 Machine-relative Z_STEPPER_ALIGN_XY (#24261)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-07-29 04:24:11 -05:00
Scott Lahteine
9ba4c58595 🧑‍💻 Fix MAP macro use
Followup to #24191
2022-07-29 04:24:11 -05:00
ellensp
a720b1a335 🩹 Fix G60/G61 debug code (#24231) 2022-07-29 04:24:11 -05:00
lujios
799b8fccaf 🩹 Fix G33 Delta Sensorless Probing compile (#24291) 2022-07-29 04:24:11 -05:00
Scott Lahteine
69a1c539fb 🩹 Apply linearval in M600 2022-07-29 04:24:11 -05:00
Keith Bennett
6904e31e54 🔧 Assert Probe Temp Comp requirements (#24468) 2022-07-29 04:24:11 -05:00
ellensp
407c32563b 🐛 Fix BACKLASH_COMPENSATION compile (#24072)
Followup to #23826
2022-07-29 04:24:11 -05:00
Scott Lahteine
0281459093 🎨 Misc. 6-axis cleanup 2022-07-29 04:24:11 -05:00
Scott Lahteine
0ef496df2b 📝 Note about UBL bad splits 2022-07-29 04:24:11 -05:00
Pauli Jokela
9c2d0f47fb 🩹 Fix safe homing sanity-check (#24462) 2022-07-29 04:24:11 -05:00
Scott Lahteine
cd9a23c4d0 🎨 Fix comments, formatting 2022-07-29 04:24:11 -05:00
Christophe Huriaux
ab346f24ca 🩹 Fix ST7565 LCD contrast init (#24457) 2022-07-29 04:24:11 -05:00
Mike La Spina
5ee7e3ffa4 🐛 Fix laser/fan sync (#24460)
Followup to #22690, 307dfb15
2022-07-29 04:24:11 -05:00
Scott Lahteine
32765c600a 🩹 Fix TFT image packing 2022-07-29 04:24:11 -05:00
DerAndere
602e14704b 🚸 Better M350, M114 with more axes (#23986)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-07-29 04:24:11 -05:00
toomuchwonder
0ad83e0af5 🩹 Fix MKS UI extruder speed (#24476) 2022-07-29 04:24:10 -05:00
Miguel Risco-Castillo
9bd39749d7 🚸 Fix and update ProUI (#24477) 2022-07-29 04:24:10 -05:00
InsanityAutomation
ce5497218a 🐛 Fix Archim2 USB Hang (#24314) 2022-07-29 04:24:10 -05:00
Scott Lahteine
ca06ec9abb 🎨 Misc. 'else' cleanup 2022-07-29 04:24:10 -05:00
Scott Lahteine
cf1e4df51b 🩹 Fix MAX31865 approximations
Followup to #24407
2022-07-29 04:24:10 -05:00
Scott Lahteine
38391eb116 🩹 Fix manual move titles (#24518) 2022-07-29 04:24:10 -05:00
Scott Lahteine
03b50354cb 🏗️ Extend AXIS_CHAR to include E
Co-Authored-By: DerAndere <26200979+DerAndere1@users.noreply.github.com>
2022-07-29 04:24:10 -05:00
kisslorand
ceeb6c646b Fix axis string 'N' (#24259)
Followup to 167672d
2022-07-29 02:40:12 -05:00
Ludy
20f79e290f 🌐 Update German language (#24555) 2022-07-27 22:11:49 -05:00
Scott Lahteine
5ecf3f876c 🧑‍💻 Update planner/stepper includes 2022-07-27 22:10:00 -05:00
Scott Lahteine
dee41990cc 🩹 Fix lcd_preheat compile 2022-07-27 22:09:41 -05:00
Scott Lahteine
94a8b70ce3 🔨 Update build/CI scripts 2022-07-27 22:08:38 -05:00
Scott Lahteine
b2101b9928 🎨 PIO scripts cleanup 2022-07-27 22:05:52 -05:00
Keith Bennett
976ac28be5 📺 Fix TFT Classic UI non-Touchscreen 1024x600 (#24541) 2022-07-27 22:04:58 -05:00
Keith Bennett
b0b340aab9 📝 Update MPCTEMP G-Code M306 T (#24535)
M306 simply reports current values. M306 T starts autotune process.
2022-07-27 21:49:09 -05:00
Scott Lahteine
1ceac4a9fe 📝 Update Driver Type comments 2022-07-23 19:43:50 -05:00
Scott Lahteine
a8046d2a95 🎨 Clean up extra axes
Followup to #24120
2022-07-23 19:14:57 -05:00
Scott Lahteine
c6f2be637c EXP header pin numbers redux (#24525)
Followup to 504fec98
2022-07-23 18:53:47 -05:00
tombrazier
30da489f1c 🐛 Fix 2d mesh print (#24536) 2022-07-22 23:34:16 -05:00
Scott Lahteine
a540c58a2d 🔧 Config parity with 2.1.x 2022-07-17 22:25:51 -05:00
Scott Lahteine
e52298db35 🔨 Add mftest --default flag 2022-07-16 23:55:25 -05:00
Arthur Masson
31c350d55e Polargraph M665 settings (#24401) 2022-07-16 23:55:25 -05:00
Scott Lahteine
d50a3129e2 🚸 Renumber EXP pins to match schematics/RRF/Klipper 2022-07-16 23:55:25 -05:00
Scott Lahteine
614f54622a 🔖 Configuration version 02000905 2022-07-16 23:55:25 -05:00
Christophe Huriaux
f89bb65220 eMotion-Tech eMotronic (Micro-Delta rework) (#24488) 2022-07-16 23:30:52 -05:00
Scott Lahteine
284b35d120 🔨 Fix and update Makefile
Followup to 89fe5f6d
2022-07-16 23:30:52 -05:00
Victor Oliveira
fe5e941d92 Creality3D v4.2.5 / CR200B (#24491) 2022-07-16 23:30:52 -05:00
Keith Bennett
80cc5f0413 MKS Monster8 V2 (#24483) 2022-07-16 23:30:52 -05:00
Scott Lahteine
0595a55700 🐛 Fix SDIO for STM32 (#24470)
Followup to #24271
2022-07-16 23:30:52 -05:00
Jason Smith
2535ce2a26 🩹 Fix LCD_BACKLIGHT_TIMEOUT compile (#24463) 2022-07-16 23:30:52 -05:00
Mike La Spina
777af4b6c4 ️ Fix and improve Inline Laser Power (#22690) 2022-07-16 23:30:52 -05:00
Keith Bennett
b1162d97eb BigTreeTech SKR SE BX V3.0 (#24449)
SKR SE BX V3.0 removes the Reverse Driver Protection feature.
2022-07-16 23:30:52 -05:00
tombrazier
e70c350b3d 💥 More M306 M => M306 H (#24258)
Followup to #24253
2022-07-16 23:30:52 -05:00
Keith Bennett
ff516e257b 🎨 Fix/adjust warnings (#24225, #24404) 2022-07-16 23:30:52 -05:00
Scott Lahteine
41269e9c2b 🧑‍💻 Forward-compatible axis strings 2022-07-16 23:30:52 -05:00
DerAndere
091b0f9664 💥 Update Motor Current G-codes for extra axes (#23975) 2022-07-16 23:30:52 -05:00
DerAndere
dc04f61adc 🩹 Fix some parameters w/out values (#24051) 2022-07-16 22:37:40 -05:00
Scott Lahteine
eb25530ba8 🏗️ Axis name arrays
Co-Authored-By: DerAndere <26200979+DerAndere1@users.noreply.github.com>
2022-07-16 22:37:40 -05:00
Scott Lahteine
6133ca2d68 ♻️ More updates for multi-axis 2022-07-16 22:37:40 -05:00
GHGiampy
5a46b900d8 🔨 Fix firmware upload (#24499) 2022-07-16 17:22:10 -05:00
Scott Lahteine
b09997d137 🔨 PlatformIO "--target upload" == "--target exec" 2022-07-16 17:22:10 -05:00
Scott Lahteine
7dc3cfa1a6 ♻️ Encapsulate PID in class (#24389) 2022-07-16 17:22:10 -05:00
Victor Oliveira
93144f1e7d 🔨 Disable stack protector on macOS simulator (#24443) 2022-07-16 17:22:10 -05:00
Eduard Sukharev
5e215fa3c4 🐛 Fix MKS TinyBee compile (#24454) 2022-07-16 17:22:10 -05:00
EvilGremlin
2bdc5a78ad 🔨 Fix OpenBLT encode; no-bootloader envs (#24446) 2022-07-16 17:22:10 -05:00
Scott Lahteine
cd06d5f34f 🔨 Fix Warnings.cpp force-recompile 2022-07-16 17:22:10 -05:00
Scott Lahteine
72f341b4bc 🎨 ANY => EITHER 2022-07-13 21:24:30 -05:00
Keith Bennett
9a4cfe4940 🚸 MPCTEMP: Home before cooling (#24434) 2022-07-04 00:30:02 -05:00
Keith Bennett
4a9ecdd70b 🩹 Fix MKS TinyBee ADC Vref (#24432) 2022-07-04 00:30:02 -05:00
Scott Lahteine
160762742a 🩹 Remove poison wchar_t macro 2022-07-04 00:30:02 -05:00
Scott Lahteine
95b0ee2fbf 🩹 Remove obsolete split_move 2022-07-01 21:17:21 -05:00
Moonglow
505ae61b8d 🐛 Fix M149 (#24430) 2022-06-30 22:00:52 -05:00
Scott Lahteine
5660c3b189 📝 Index Mobo Rev03 => Opulo Lumen Rev3 2022-06-30 22:00:52 -05:00
Scott Lahteine
470512dd50 🩹 Fix memset block warning 2022-06-30 22:00:52 -05:00
Keith Bennett
310a76444d 🐛 Fix Axis Homing (#24425)
Followup to 4520a51
2022-06-30 22:00:52 -05:00
John Lagonikas
ea630bbed7 🐛 Fix MAX31865 PT1000 normalization (#24407)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-06-30 22:00:52 -05:00
Scott Lahteine
15915ede53 ♻️ reset_acceleration_rates => refresh_… 2022-06-30 22:00:52 -05:00
Scott Lahteine
a68aa255bc ♻️ Planner flags refactor 2022-06-30 22:00:52 -05:00
lujios
b3fe059f6c ️ Improve Sensorless homing/probing accuracy for G28, G33, M48 (#24220)
Co-Authored-By: Robby Candra <robbycandra.mail@gmail.com>
Co-Authored-By: ellensp <530024+ellensp@users.noreply.github.com>
2022-06-30 22:00:52 -05:00
elimisback
b938d99b32 🔨 BTT STM32G0B1RE xfer build (#24245) 2022-06-30 22:00:52 -05:00
Scott Lahteine
b01caf0afe 🎨 Minimize block->steps.set 2022-06-30 22:00:52 -05:00
DerAndere
088fa84b7f ♻️ More updates for multi-axis
Based on #23112

Co-Authored-By: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-06-30 22:00:52 -05:00
Scott Lahteine
74339bfefc 🚨 Fix some compiler warnings 2022-06-30 22:00:52 -05:00
Scott Lahteine
40fa85b92e 🐛 Fix types.h macros and fields
Fixes #24419
2022-06-29 13:05:16 -05:00
Scott Lahteine
1c3d5827e6 🎨 Misc. shorthand operators 2022-06-26 10:02:15 -05:00
Scott Lahteine
0567d613ba 🐛 Fix Manual Move axis selection (#24404) 2022-06-26 06:45:47 -05:00
Shlee
3bf100301a 📝 Add STM32F4 example, Ruby (#24399) 2022-06-26 06:43:49 -05:00
Giuliano Zaro
f1483e76a1 🌐 Update Italian language (#24398) 2022-06-26 06:43:49 -05:00
Roman Moravčík
9efccbf23e 🌐 Update Slovak language (#24397) 2022-06-26 06:43:49 -05:00
sgparry
fe86ff2d53 🩹 Fix LCD contrast with K8800 board 2022-06-26 06:43:49 -05:00
Scott Lahteine
f6e248df6e 🌐 Drop unused delta strings 2022-06-24 22:09:42 -05:00
Scott Lahteine
6d1ce46dd1 🧑‍💻 Fix STATIC_ITEM_N arg order 2022-06-24 01:39:40 -05:00
Scott Lahteine
341bf27d1d ✏️ 9-axis followup fixing G2-G3 arcs 2022-06-24 01:39:40 -05:00
tombrazier
0698fcb005 🩹 Fix Mesh Leveling + Debug compile (#24297) 2022-06-24 01:39:40 -05:00
John Robertson
d725998340 ️ PWM for ESP32 I2S expander (#24193) 2022-06-24 01:25:17 -05:00
Bob Kuhn
2f814079d8 🐛 Fix Lerdge build / encrypt (#24391)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-06-24 00:07:38 -05:00
Victor Oliveira
a3876c5896 Classic UI BIQU BX (#24387) 2022-06-24 00:07:24 -05:00
ellensp
7497890f04 🩹 Fix DGUS (MKS) compile (#24378) 2022-06-24 00:07:04 -05:00
Victor Oliveira
b16a32e7ce 🚑️ Fix BIQU BX touch freeze (#24383) 2022-06-24 00:06:35 -05:00
ellensp
052a64052b 🐛 Fix M423 invocation (#24360)
Followup to #23745
2022-06-24 00:06:20 -05:00
tombrazier
4648ade0e6 🩹 LCD strings followup, fix warning (#24328) 2022-06-24 00:06:06 -05:00
InsanityAutomation
a67dd76db4 🐛 Resolve DUE Servo pulse issue (#24305)
Co-authored-by: sjasonsmith <20053467+sjasonsmith@users.noreply.github.com>
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-06-24 00:04:01 -05:00
ellensp
47b8671836 🚑️ Fix SD mount bug (#24319)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2022-06-24 00:01:36 -05:00
Scott Lahteine
f04efa85cd 🎨 Simplify move menus with substitution 2022-06-22 05:55:38 -05:00
Scott Lahteine
5b2b08d048 🎨 Use MAP for home axis items 2022-06-22 05:55:38 -05:00
Scott Lahteine
3f9869a6c1 🧑‍💻 Fix STATIC_ITEM_N arg order 2022-06-22 05:55:38 -05:00
Scott Lahteine
65490f27c4 🎨 Fix comments, formatting 2022-06-22 05:37:38 -05:00
luzpaz
1afb80d45d 🌐 Fix LCD string, typos (#24324) 2022-06-22 05:37:38 -05:00
tombrazier
6a20b1271d 🐛 Fix G2/G3 Arcs stutter / JD speed (#24362) 2022-06-22 05:37:38 -05:00
ellensp
733e5f3957 👷 CI test without src filter (emulate Arduino) (#24335) 2022-06-22 05:37:38 -05:00
Keith Bennett
031633cde6 👷 Use Biqu BX for CI test (#24331) 2022-06-22 05:37:38 -05:00
Scott Lahteine
5149eed13c 🧑‍💻 MAP macro for axis lists, etc. (#24191) 2022-06-22 05:37:38 -05:00
Scott Lahteine
2ecaebeab2 🧑‍💻 Apply F() to some LCD / TFT strings
Followup to #24228
2022-06-13 21:01:55 -05:00
ellensp
047ecc5995 🩹 Fix missing ProUI cpp wrapper (#24313) 2022-06-13 21:01:55 -05:00
ellensp
2268e1417b 🐛 Fix JGAurora A5S A1 build (#24326) 2022-06-13 04:30:00 -05:00
Steven Haigh
3fa767f533 🩹 Fix ProUI compile (#24310)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-06-13 04:29:40 -05:00
Scott Lahteine
9860580bed 🧑‍💻 Misc. servo code cleanup 2022-06-13 04:29:24 -05:00
Scott Lahteine
6df193a5d1 🧑‍💻 Remove servo macros 2022-06-13 04:29:04 -05:00
ellensp
e5fb6ace4c 🩹 Media Change followup (#24302)
Followup to #24015
2022-06-07 01:59:58 -05:00
Scott Lahteine
b659bb2a52 👔 Fix and comment use_example_configs 2022-06-06 19:13:26 -05:00
Miguel Risco-Castillo
7e27f06364 🚸 ProUI G-code preview, PID plot (#24282) 2022-06-06 00:01:26 -05:00
Scott Lahteine
72346e80fa 🔖 Repurpose as bugfix for 2.0.9.4 2022-06-05 23:56:18 -05:00
Scott Lahteine
369542db3b 🔖 Marlin 2.0.9.4 2022-06-05 21:33:29 -05:00
Scott Lahteine
40d96c3460 👔 Remove actions from misc. branch 2022-06-05 21:33:29 -05:00
Scott Lahteine
d7a71beaf4 🔧 LEVEL_BED_CORNERS => LCD_BED_TRAMMING 2022-06-05 21:33:29 -05:00
Scott Lahteine
f3b593ae73 🎨 Fix spelling, whitespace 2022-06-05 21:11:27 -05:00
Scott Lahteine
1d8d8dccf4 💥 Num Axes / Multi-Stepper based on Driver Types (#24106, #24120) 2022-06-05 20:58:39 -05:00
Scott Lahteine
1e127a93c4 🧑‍💻 Extend LCD string substitution (#24278) 2022-06-04 00:57:34 -05:00
lujios
fcef8d946c ️ Improve Sensorless homing/probing accuracy for G28, G33, M48 (#24220)
Co-Authored-By: Robby Candra <robbycandra.mail@gmail.com>
Co-Authored-By: ellensp <530024+ellensp@users.noreply.github.com>
2022-06-04 00:57:34 -05:00
Tanguy Pruvot
0253500ccd Use default null args in select_screen 2022-06-04 00:57:34 -05:00
ellensp
0d783a7690 🐛 Init Stepper SPI before PSU Control (#24269) 2022-06-04 00:57:34 -05:00
BIGTREETECH
e784e04132 BigTreeTech SKR3 - STM32H743 (#24271, #24272, #24275)
Co-Authored-By: Alan.Ma <alansayyeah@gmail.com>
2022-06-04 00:57:34 -05:00
bryan065
11d68e3127 🚸 Custom Menu Items for JyersUI (#24270) 2022-06-04 00:57:34 -05:00
ledzepman71
8b8b2a7ed3 📌 Tenlog PSU pin (#24266) 2022-06-04 00:57:34 -05:00
tombrazier
fc1a620b87 🚩 MPC update (#24253) 2022-06-04 00:57:34 -05:00
Keith Bennett
9799907dc9 👔 Configs required to submit a Bug Report (#24256) 2022-06-03 22:06:51 -05:00
Scott Lahteine
6fc4dbbbc4 🚸 Change M201 G to S 2022-06-03 22:06:51 -05:00
Robby Candra
74596ad4d7 🩹 Adjust manage_media for slow/late media init (USB FD) (#24015) 2022-06-03 22:06:51 -05:00
Scott Lahteine
28f8646aa6 ♻️ Apply F() to more LCD code (#24228) 2022-06-03 22:06:51 -05:00
John Robertson
9a74bcd4cf Laser Safety Timeout (#24189) 2022-06-03 22:06:50 -05:00
Scott Lahteine
07cd248b91 ♻️ Move watchdog to MarlinHAL 2022-06-03 22:06:50 -05:00
Scott Lahteine
209c792ef7 🔧 Remove LCD_SERIAL_PORT defaults, warn on auto-assign (#24170) 2022-06-03 22:06:50 -05:00
Scott Lahteine
dbd00d9927 DOGM Display Sleep (#23992)
Co-authored-by: borland1 <barryorlando@hotmail.com>
2022-06-03 22:06:50 -05:00
Ludy
4ae54a6229 🐛 Update German language, Fix FTDI (#24047, #24048, #24227) 2022-06-03 22:06:50 -05:00
tombrazier
ce0af56d0a 🚸 Improve MPC tuning, add menu items (#23984, #24018, #24049, #24059) 2022-06-03 22:06:50 -05:00
Giuliano Zaro
6c557a2480 🐛 Fix Bed/Chamber PID Autotune with MPCTEMP (#23983) 2022-06-03 22:06:50 -05:00
Scott Lahteine
a6ce9bf559 Autoreport Redundant Sensor option (#24014) 2022-06-03 22:06:50 -05:00
tombrazier
21c838cb1b ⚗️ Temperature Model Predictive Control (#23751) 2022-06-03 22:06:50 -05:00
Pauli Jokela
3443a9e18b SOUND_ON_DEFAULT option (#24102) 2022-06-03 22:06:50 -05:00
Robert Brenckman
b2b5b85045 🐛 Fix Tool Change priming (#21142) 2022-06-03 22:06:50 -05:00
Scott Lahteine
2086cc9f4e 📝 Refer to 'PROGMEM' as 'flash' 2022-06-03 22:06:50 -05:00
Scott Lahteine
8eccfd4a6f 🔧 Bed/Chamber PID Autotune menus
Derived from MarlinFirmware/Marlin#23983
2022-06-03 22:06:50 -05:00
Scott Lahteine
9ab654adcb 🐛 Fix min/max temp evaluation
Fixes #24257
2022-06-03 22:06:50 -05:00
Scott Lahteine
0ae982188c 🐛 Fix M203 report 2022-06-03 18:40:06 -05:00
ellensp
bed0788f72 🩹 Fix G60/G61 debug code (#24231) 2022-06-03 01:20:39 -05:00
Scott Lahteine
deb1ba73bb 🎨 Use pos.set method 2022-05-31 17:31:15 -05:00
Scott Lahteine
57f0ac88af 🎨 Misc. boards/pins cleanup 2022-05-31 17:31:14 -05:00
Simon Pilepich
915bce495c 📝 Fix Mightyboard MOSFET comments (#24183) 2022-05-31 17:31:13 -05:00
Scott Lahteine
800a936caa 🎨 Combine serial echos 2022-05-27 17:05:35 -05:00
ellensp
ccf39b1c42 🔨 Add src_filter for I2C_AMMETER (#24242) 2022-05-27 17:05:08 -05:00
Keith Bennett
d19179ce28 ✏️ Fix some motherboard checks (#24238) 2022-05-27 17:04:45 -05:00
ellensp
4a6ae1b64d 🎨 Remove MKS custom pins, TinyBee cleanup (#24186) 2022-05-27 17:04:22 -05:00
ellensp
0daaef589c 📌 Use MarlinSimUI/bugfix-2.0.x (#24232) 2022-05-27 17:04:06 -05:00
Scott Lahteine
4831cbebd8 🎨 Add EXP1/2 headers, adjust TFT pins (#24230) 2022-05-27 17:03:06 -05:00
tombrazier
e0deb75764 🐛 Fix Leveling apply/unapply (#24188)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2022-05-27 17:01:38 -05:00
Scott Lahteine
a0fe4f4895 🎨 Minor HAL cleanup 2022-05-27 17:01:20 -05:00
Keith Bennett
4d65d7f142 📝 Add logo, helpful links to README (#24226) 2022-05-23 02:40:38 -05:00
Scott Lahteine
1b879f0ee4 🔨 Fix mfprep string test 2022-05-22 19:52:38 -05:00
Scott Lahteine
b6abc760ce 🔨 Move, tweak maple envs 2022-05-22 19:52:38 -05:00
Keith Bennett
0ae061713c 👔 Move GitHub templates, update README (#24199) 2022-05-22 19:52:18 -05:00
Scott Lahteine
1d12e72bf6 🐛 Fix SEGMENT_LEVELED_MOVES with UBL 2022-05-22 17:06:22 -05:00
Scott Lahteine
c97cf10956 🩹 Fix const warning 2022-05-22 17:02:08 -05:00
Scott Lahteine
b72f9277e9 ♻️ Common Bed Leveling object name, accessors (#24214) 2022-05-21 18:13:30 -05:00
Keith Bennett
06c4a9acdb 🐛 Fix FLSUN Hispeed FIL_RUNOUT_PIN, MKS Robin Mini TFT pins (#24204) 2022-05-21 18:13:30 -05:00
Arthur Masson
8a301196e1 🐛 Fix Polargraph G92 command (#24223) 2022-05-21 14:46:49 -05:00
Marcio T
1e7219f4a6 🐛 Fix FTDI_EVE_TOUCH_UI reboot loop (#24195) 2022-05-19 12:11:03 -05:00
ellensp
02c267f542 🔨 Require PIO >= 6.0.1 (#24205) 2022-05-19 09:29:46 -05:00
Ivan Kravets
fe77fc66c0 🔨 Use PlatformIO Core 6.0 Dev for CI (#24194) 2022-05-17 16:47:34 -05:00
Scott Lahteine
268a16b1ef 🚸 ProUI APRIL2022 updates (#24084) 2022-05-17 15:54:34 -05:00
ellensp
8351b1431f 🩹 Fix MarlinUI allow-cold-extrude (#24176)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2022-05-17 03:04:30 -05:00
Oliver Jean Eifler
718806761f 🩹 Suppress ZERO() warning (#24178) 2022-05-17 03:04:30 -05:00
Marcio T
78c7fedcea 🐛 Fix Due cli/sei (#24182)
Followup to #23357
2022-05-16 21:49:30 -05:00
Scott Lahteine
c4b8339b84 🎨 HAL_MinSerial.* => MinSerial.* 2022-05-16 21:49:30 -05:00
Keith Bennett
94ed67e36e 🩹 Run TMC test last in setup (#24160) 2022-05-13 19:53:19 -05:00
Miguel Risco-Castillo
03b819bdb2 🚸 DWIN/DACAI for Creality 4.2.3 (#24132) 2022-05-13 19:53:19 -05:00
Scott Lahteine
2204f05dca 🧑‍💻 Clarify MSerialUSB, drop HardwareSerial workaround 2022-05-13 19:53:19 -05:00
Keith Bennett
a13cceaad1 🚸 Improve MKS SGEN_L V2, Robin Nano V3 pins (#24147) 2022-05-13 19:53:19 -05:00
Dominic
5c25ed60c8 🐛 Fix AIR_ASSIST (#24162) 2022-05-13 19:18:27 -05:00
Keith Bennett
1c516bdd5e 🔧 Allow board & probe dummy thermistors (#24165) 2022-05-13 19:18:27 -05:00
grauerfuchs
425684e2ff 🐛 Fix Mightyboard LED pin, fan override (#24168) 2022-05-13 19:09:55 -05:00
Roxy-3D
63aecad7ee 🔨 BTT Octopus ST-Link programming/debugging 2022-05-13 19:09:55 -05:00
Scott Lahteine
dcd769b4a1 🎨 Nextion cleanup 2022-05-13 01:19:45 -05:00
Scott Lahteine
f9b7f00d1e 🚚 Move speed_lookuptable.h 2022-05-13 01:19:45 -05:00
Keith Bennett
a6ff63d506 🎨 Clean up warnings / extra check (#24163) 2022-05-13 00:42:05 -05:00
ellensp
7d37ae2b2b 🔧 AVR/DUE Serial Port pin conflict checks (#24148)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2022-05-13 00:36:57 -05:00
Scott Lahteine
a7d40ec654 Add BOARD_CREALITY_V24S1_301F4
Co-Authored-By: Miguel Risco-Castillo <mriscoc@users.noreply.github.com>
2022-05-13 00:36:57 -05:00
InsanityAutomation
7ed339cfa0 Creality CR-10 SmartPro (#24151)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2022-05-13 00:36:57 -05:00
Scott Lahteine
cb4ad020af 🧑‍💻 Misc. LCD cleanup 2022-05-13 00:36:57 -05:00
Scott Lahteine
0805f9bf3f 🩹 Fix ProUI leveling start message 2022-05-12 21:28:52 -05:00
Scott Lahteine
d235bc9e1c 🧑‍💻 General and Axis-based bitfield flags (#23989) 2022-05-12 04:18:02 -05:00
Scott Lahteine
d5f472a6cf 🔨 Fix g++ locator for CI 2022-05-12 04:18:02 -05:00
Scott Lahteine
d67fa98cf6 🩹 Fix accel dividend 2022-05-12 04:17:16 -05:00
Scott Lahteine
d3fe0caa7f 🧑‍💻 Clarify acceleration factor 2022-05-09 18:55:42 -05:00
Scott Lahteine
bd09f8acff 📌 Define RAMPS_SMART EXP headers, AZSMZ_12864
See #23501
2022-05-09 17:46:23 -05:00
Scott Lahteine
a9aca5f5e8 ✏️ Fix spurious UTF 2022-05-09 17:46:23 -05:00
Scott Lahteine
13d1eb7241 🔨 OpenOCD Debug for VSCode 2022-05-09 17:46:23 -05:00
Mike La Spina
238ab1dd06 🩹 Fix Fan Tail Speed Init (#24076)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-05-09 17:46:23 -05:00
Keith Bennett
a7e4061d12 🔧 Fix Neo RGB sanity check (#24146) 2022-05-09 17:46:23 -05:00
ellensp
31c87adba8 📌 Use ESP3DLib master branch (#24140) 2022-05-09 17:46:23 -05:00
ellensp
727e7e7fd7 ✏️Fix Markforged endstops/G38 (#24141) 2022-05-09 17:46:23 -05:00
Scott Lahteine
975b90c0b7 🎨 Tweak NEOPIXEL_LED format (#24110) 2022-05-07 18:46:20 -05:00
Scott Lahteine
8f0180802a 🔧 Move LASER_COOLANT_FLOW_METER to LASER_FEATURE 2022-05-07 18:46:20 -05:00
Giuliano Zaro
aa4c991755 📝 Obsolete freeze comment (#23964)
Followup to #23944
2022-05-07 18:46:20 -05:00
Scott Lahteine
9ab1a57d72 ♻️ Consolidate DGUSScreenHandler class (#24067) 2022-05-07 18:46:20 -05:00
Robby Candra
044bf8ab7e ⚰️ Clean up dead option (#24006) 2022-05-07 18:46:12 -05:00
Scott Lahteine
4bdec5e993 🚸 More ExtUI events for ABL / UBL 2022-05-07 18:40:42 -05:00
Scott Lahteine
7444933d5d 🩹 Fix ESP32 servos, SD_IGNORE_AT_STARTUP
Fixes #24007
Followup to aaf5bf02
2022-05-07 18:40:42 -05:00
Scott Lahteine
f35404f853 🧑‍💻 Handle PLR in manage_media 2022-05-07 18:40:42 -05:00
Keith Bennett
7fa2dcedda 🐛 Fix ProUI / JyersUI leveling preheat (#24060, #24064)
Co-Authored-By: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-05-07 18:40:42 -05:00
Scott Lahteine
4c84769a81 🩹 Fix ADVANCED_PAUSE_RESUME_PRIME check
Fixes #23824
2022-05-07 18:40:42 -05:00
Robby Candra
8fb3074901 🩹 Fix DEBUG_CARDREADER (#24023) 2022-05-07 18:40:42 -05:00
ellensp
230db90b70 🩹 Fix DGUS_PREHEAT_UI enable with DGUS_LCD_CLASSIC (#24066) 2022-05-07 18:40:42 -05:00
Scott Lahteine
28d2bc353e 🎨 Use LEDColor default C-CTOR 2022-05-07 18:27:56 -05:00
Scott Lahteine
7b5e2cd786 🐛 Update M913, M914 report
Followup to #11248, #11249, #23400
2022-05-07 18:27:56 -05:00
Giuliano Zaro
4b456078dd 🌐 Update Italian language (#24019) 2022-05-07 18:27:56 -05:00
Keith Bennett
8d3c84a6d9 ✏️ Fix FYSETC Mini Panel neopixel type (#24011, #24111) 2022-05-07 18:13:09 -05:00
Giuliano Zaro
cbc6f23a8a 🔧 Sanity-check SWITCHING_TOOLHEAD_X_POS (#23985) 2022-05-07 18:13:09 -05:00
Giuliano Zaro
bed8abe5b6 🐛 Fix PID edit menu for Bed, Chamber (#23987) 2022-05-07 18:13:09 -05:00
tombrazier
74565890f3 ♻️ Refactor and fix ABL Bilinear (#23868, #24009, #24107) 2022-05-07 18:13:09 -05:00
Scott Lahteine
4ec9af42b8 💥 Rename ExtUI settings methods 2022-05-07 18:13:09 -05:00
John Robertson
b0d621d8b9 🧑‍💻 Define isr_float_t to assert a non-FPU float (#23969)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-05-07 18:13:09 -05:00
Stephen Hawes
995221e68e Add M3426 A<addr> parameter (#24130)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2022-05-07 18:13:09 -05:00
LPRtypeCN
54e543872b 🌐 Update Chinese language (#23865) 2022-05-07 18:12:18 -05:00
ellensp
7b39604d6f 🌐 Update Russian language (#23978) 2022-05-07 18:12:18 -05:00
Keith Bennett
01c9c26661 🧑‍💻 Preheat menu improvements (#24017)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-05-07 18:11:03 -05:00
ellensp
27b1484428 🐛 Fix Manual Move cold extrude override (#24045)
Followup to #19606

Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-05-07 18:11:03 -05:00
InsanityAutomation
7f1c5ad7aa 🩹 Fix and clean up E3V2 draw (#23979, #24013) 2022-05-07 18:11:03 -05:00
ellensp
4fd7d1b056 🐛 Fix STM32 Pins Debugging (#22896) 2022-05-07 18:11:03 -05:00
Scott Lahteine
7ffe4de021 🩹 Use LCD_CONTRAST_INIT in pins files 2022-05-07 18:11:03 -05:00
Scott Lahteine
eada17ed69 🩹 Apply 100% leveling correction below the bed
See #24002
2022-05-07 18:11:03 -05:00
Scott Lahteine
cd5c5ea60e 🔨 Fix LPC176x debug build
See #23635
2022-05-07 18:07:01 -05:00
stream2me
e9ea82e78d 🐛 Prefer os.replace, fix TFT_LVGL_UI build (#24001) 2022-05-07 18:07:01 -05:00
ellensp
18b17fc97d 🐛 Fix MKS_MINI_12864 build for ESP32 (#24071) 2022-05-07 18:07:01 -05:00
Scott Lahteine
89d5ed0c9e 🎨 Combine common LPC1768 I2C code 2022-05-07 18:07:01 -05:00
Scott Lahteine
a56bf9045d 🧑‍💻 Simplify BIGTREE_SKR_2_F429 env 2022-05-07 17:59:30 -05:00
Scott Lahteine
c23d035149 🧑‍💻 Strip #errors in Configurations deployment 2022-05-07 17:58:27 -05:00
Scott Lahteine
7ff4b70694 🚸 Prevent accidental button press 2022-05-07 17:56:18 -05:00
Scott Lahteine
421c38ff2e 🐛 Home Z to Max after Z_SAFE_HOMING 2022-05-07 17:56:18 -05:00
Scott Lahteine
ec447dba04 🚸 Home Y before X on belt printers 2022-05-07 17:56:18 -05:00
Christian Piper
be6535e5f7 🩹 Fix PRINTCOUNTER with EXTRUDERS 0 (#24063)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-05-07 17:56:04 -05:00
Scott Lahteine
99252cf0cd 🐛 Prevent BABYSTEP freeze
See #22830, #13300
2022-05-07 17:55:13 -05:00
Scott Lahteine
f6f31434b8 🧑‍💻 IS_ULTRA_LCD => HAS_WIRED_LCD 2022-05-07 17:55:13 -05:00
Scott Lahteine
2f3960904e 🎨 Misc. USB flash code cleanup 2022-05-07 17:55:13 -05:00
Scott Lahteine
2dc4c642e7 🎨 Misc. adjustments, spacing 2022-05-07 17:55:08 -05:00
Scott Lahteine
70ea0e7c34 ✏️ Remove extra G29 line
Followup to 85a62bbf
2022-05-07 17:55:02 -05:00
Scott Lahteine
a81fd009f0 🎨 misc. cleanup 2022-05-07 17:54:10 -05:00
Scott Lahteine
e667d4e6e4 🌐 Rename "LCD Timeout" string 2022-05-07 17:34:02 -05:00
Scott Lahteine
2d0af75d37 ✏️ No such pin 2022-05-07 17:34:02 -05:00
ellensp
5e68a86968 🔨 Preflight check old abl files (#24010) 2022-05-07 17:34:02 -05:00
Moritz Wirger
8bd1547c3b enwi ESPNP board support (#24029) 2022-05-07 17:34:02 -05:00
Scott Lahteine
a5e083603f 📝 Fix 'M150 S' comment 2022-05-07 17:34:02 -05:00
Giuliano Zaro
c5f7547e8c 🩹 Fix "elapsed" text on DOGLCD (#24087) 2022-05-07 17:34:02 -05:00
InsanityAutomation
5c5b380fda 🐛 Fix MarlinUI on Ender 3 S1 (#23949) 2022-05-07 17:34:02 -05:00
aegelsky
bb0e0cf7f3 🐛 Fix MKS Gen. L - EEB (#23965) 2022-05-07 16:53:59 -05:00
Jon
5ee99dfc49 🩹 SKR2 Pins DIAG flag (#23968)
Followup to #23050
2022-05-07 16:53:59 -05:00
Keith Bennett
a083b1280e 📌 SKR Mini V1.1 TMC UART Pins (#23970) 2022-05-07 16:53:59 -05:00
grauerfuchs
b7b5cee88b 🐛 Fix MightyBoard Rev. E EX2, extra MOSFETs (#23976) 2022-05-07 16:53:59 -05:00
Keith Bennett
7456fd68a4 ✏️ Fix NOZZLE_PARK_Y_ONLY sanity-check (#23990) 2022-05-07 16:53:59 -05:00
Scott Lahteine
20154718b5 🌐 Clean up languages 2022-05-07 16:49:47 -05:00
Manianac
a6794c1862 🐛 Use ADC_VREF for Filament Width ADC Vref (#23977) 2022-05-07 16:49:47 -05:00
John Lagonikas
bd5c6bf23c ✏️ Fix parking extruder compile (#23961)
Followup to d3e3e6a491
2022-05-07 16:49:21 -05:00
Scott Lahteine
68ee64283a 🎨 INI cleanup 2022-05-07 16:49:21 -05:00
Scott Lahteine
dd29394bbe 🔨 Improved mfprep script 2022-05-07 16:49:21 -05:00
Scott Lahteine
ceb99e89a0 🔨 Prevent build attribute define conflicts 2022-05-07 16:49:21 -05:00
Scott Lahteine
6112277f9b 🔨 Use first g++ in path for 'native' targets 2022-05-07 16:49:21 -05:00
Keith Bennett
81f403025c 🐛 Some EEPROM size fixes (#24113)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2022-05-07 16:49:21 -05:00
Scott Lahteine
eeda8b451a 📝 Replace KB with K in pins 2022-05-07 16:47:33 -05:00
Keith Bennett
c7e8ba7857 📝 Fix extraneous URL args (#24125) 2022-05-07 16:47:16 -05:00
Ludy
071e5c336a 🐛 Fix MMU2 buzz (#23950)
Followup to #23943
2022-05-07 16:17:47 -05:00
David Forrest
be08d4c4f0 🔨 Fix Makefile GCC warning (#23957) 2022-05-07 16:17:47 -05:00
ellensp
e99104a004 Configurable FREEZE pin state (#23944, #23948)
Co-Authored-By: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-05-07 16:17:47 -05:00
Scott Lahteine
edc4089121 🐛 Fix pulldown sanity check 2022-05-07 16:17:47 -05:00
ellensp
3bce266ef7 🐛 Fix MMU2 buzz (#23943)
Followup to 89a9c3a391
2022-05-07 16:17:47 -05:00
Robby Candra
c89d0114ac STATUS_MESSAGE_TIMEOUT_SEC (#23135)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-05-07 16:17:47 -05:00
Scott Lahteine
0e693854d0 🚸 Clear "heating/cooling" message on temp reached 2022-05-07 16:17:47 -05:00
Scott Lahteine
9324132a40 🎨 Format, use status macros 2022-05-07 16:17:47 -05:00
Scott Lahteine
5632ad65f5 🐛 Fix status_printf alert level 2022-05-07 16:17:47 -05:00
Scott Lahteine
eccbfbcede 🩹 Print English to serial out 2022-05-07 16:17:47 -05:00
Scott Lahteine
5ef4fb378e ✏️ Encoder noise followup
Followup to #23925
2022-05-07 16:17:47 -05:00
Oleg Belov
21f0945d2c 📌 Custom cable for Mini 12864 V1 + SKR Mini E3 V3.0 (#23936) 2022-05-07 16:17:47 -05:00
Serhiy-K
b2a318af9a 🌐 Update Ukrainian language (#23935) 2022-05-07 16:17:47 -05:00
ellensp
1c89c0470f 🩹 Wrap endstop_diag.cpp (#23931) 2022-05-07 16:17:47 -05:00
Scott Lahteine
2ee4a667e1 💡 Misc. cleanup, comments 2022-05-07 16:17:47 -05:00
Scott Lahteine
f8e177a43e 🧑‍💻 Improve STATUS_BED_X 2022-05-07 16:01:19 -05:00
Scott Lahteine
9ac1c73041 🎨 General cleanup, comments 2022-05-07 16:01:17 -05:00
Scott Lahteine
4a8b99d505 🧑‍💻 EXTRUDER_LOOP macro 2022-05-07 16:01:13 -05:00
Scott Lahteine
b094a3fc0d 🎨 Clean up tool change with tool sensor 2022-05-07 16:01:10 -05:00
Scott Lahteine
2d99a608fd 🔨 Fix 'mftest -s' 2022-05-07 16:01:08 -05:00
Scott Lahteine
fba8805c0c 🩹 Fix ADC math overflow 2022-05-07 16:01:06 -05:00
Scott Lahteine
039a22649f 🧑‍💻 PIO --silent in build_example 2022-05-07 16:01:03 -05:00
Scott Lahteine
ced0ad8e09 🎨 Apply _TERN where possible 2022-05-07 16:01:01 -05:00
Scott Lahteine
10a0c9a9b3 🔨 Suppress MMU2 resume_position warning 2022-05-07 16:00:59 -05:00
Scott Lahteine
abfb041180 🧑‍💻 Add neo.set_background_color(rgbw) 2022-05-07 16:00:56 -05:00
Scott Lahteine
72f207f489 🔧 Sanity-checks for PULLDOWN, SINGLENOZZLE 2022-05-07 16:00:54 -05:00
Scott Lahteine
7186037f20 🔧 No Switching Nozzle with MMU2 2022-05-07 16:00:51 -05:00
Scott Lahteine
b0a400da72 🩹 No PE_MAGNET_ON_STATE without PARKING_EXTRUDER 2022-05-07 16:00:49 -05:00
Scott Lahteine
cc4c2c2f98 🔨 Allow I2CPE_ENC_n_INVERT set to false 2022-05-07 16:00:46 -05:00
Scott Lahteine
5dae8a6734 🚸 Allow one servo with cutter on RAMPS 2022-05-07 16:00:44 -05:00
Fredrik Andersson
05dea4e30a Encoder button noise filter (#23925) 2022-05-07 16:00:41 -05:00
Mark
7e88ee8c5c 📌 PandaPi V2.9 – Standalone mode (#23908) 2022-05-07 16:00:38 -05:00
John Robertson
cc8e485e1c ESP32 - Hardware PWM for fan, cutter, servos (#23802) 2022-05-07 16:00:36 -05:00
ellensp
c7a2ecc31a 🩹 Fix xatc EEPROM debug (#23911) 2022-05-07 16:00:34 -05:00
tombrazier
260b40d145 ️ Fix noisy ADC - 16x oversampling with 12-bit ADC (#23867) 2022-05-07 16:00:31 -05:00
Ludy
c87eded8f6 🩹 Fix redundant var declaration (#23913) 2022-05-07 16:00:28 -05:00
John Robertson
2f2a999368 🐛 MKS TinyBee - 2.5V ADC Vref (#23903) 2022-05-07 16:00:25 -05:00
Jelmer van der Stel
2558b323e8 🩹 Fix DWIN E3V2 display issues by allowing re-init (#23879) 2022-05-07 15:59:57 -05:00
Mrnt
1db6855939 🧑‍💻 Allow DIGIPOT Rsx / Vrefmax override (#23885) 2022-05-07 15:58:31 -05:00
Julien Staub
62f298aca3 🩹 Fix ExtUI build with Host Keepalive disabled (#23898) 2022-05-07 15:58:31 -05:00
InsanityAutomation
8d20c5aadf 📝 Fix X2_MAX_POS comment (#23873) 2022-05-07 15:58:31 -05:00
Scott Lahteine
61b470249c 📝 Fix DEFAULT_DUAL_X_CARRIAGE_MODE comment 2022-05-07 15:58:31 -05:00
Scott Lahteine
4ffa88f814 🚸 Test LIN_ADVANCE in a pins file 2022-05-07 15:58:31 -05:00
Mathew Winters
8257040faf ️ G12 - Only require used axes to be homed (#23422)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-05-07 15:58:31 -05:00
Keith Bennett
5d9ab7e71e 🔨 Drop extraneous build flag (#23862) 2022-05-07 15:58:31 -05:00
Nick
1a76d4d467 🐛 Fix Chiron new TFT SD print after reset (#23855) 2022-05-07 15:58:31 -05:00
Scott Lahteine
4028c1cfc7 🩹 Fix FSTR / PSTR usage 2022-05-07 15:58:31 -05:00
Scott Lahteine
c49f26a7ae 🧑‍💻 Add standard BUZZ types 2022-05-07 15:58:31 -05:00
Ludy
f82b133595 🌐 Fix, add some menu labels (#23895) 2022-05-07 15:58:31 -05:00
Scott Lahteine
2c3f2a1471 🐛 Fix UBL 'G29 Q1' bug 2022-05-07 15:58:31 -05:00
Scott Lahteine
4817efcf81 🧑‍💻 Add ExtUI::onLevelingDone, match DWIN to ExtUI 2022-05-07 15:58:31 -05:00
BIGTREETECH
16271377e2 🧑‍💻 STM32G0Bx : Use PLLQ for USB clock (#23870) 2022-05-07 15:58:31 -05:00
kisslorand
61fb382868 🚸 M401 H - Report BLTouch HS State (#23724) 2022-05-07 15:58:31 -05:00
GatCode
7dae720de5 📌 Fix, extend Index Rev03 Mobo (#23851)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-05-07 15:58:31 -05:00
Giuseppe499
c6f4b38877 🚸 Fix, extend X Axis Twist Compensation (#23745)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-05-07 15:58:31 -05:00
Miguel Risco-Castillo
eabeac29fd 🚸 Update Ender3 V2/S1 Pro UI (#23878) 2022-05-07 15:58:31 -05:00
ellensp
b045c91f26 fix g29 (#23887) 2022-05-07 15:58:31 -05:00
Scott Lahteine
56955c179d 🐛 Fix UI include
Followup to ~2
2022-05-07 15:58:31 -05:00
ellensp
4eb1326355 📝 Update laser/spindle docs link (#23886) 2022-05-07 15:58:31 -05:00
Scott Lahteine
b669aa49cc 🔧 DWIN_CREALITY_LCD_ENHANCED => DWIN_LCD_PROUI
Followup to #23624
2022-05-07 15:58:31 -05:00
Scott Lahteine
152ec49b8b 🩹 Fix 'hdsl' warning 2022-05-07 15:58:31 -05:00
Scott Lahteine
e4ca822dcf 🚸 Improve M422 error messages 2022-05-07 15:58:30 -05:00
Scott Lahteine
0fafcd20cd 🔧 Mark Thermal Variance Monitor EXPERIMENTAL 2022-05-07 15:58:30 -05:00
Jack Wilsdon
bd72df3bb6 🐛 Emergency Parser with STM32 Mass Storage (#23827) 2022-05-07 15:58:30 -05:00
tombrazier
fd582dc863 🩹 Improve and apply XATC reset() (#23840) 2022-05-07 15:58:30 -05:00
Scott Lahteine
2986bc3b76 ️ Use seen_test in M422 2022-05-07 15:58:30 -05:00
Scott Lahteine
e082a141f6 🚸 Use Z_STEPPER_ALIGN_STEPPER_XY to enable 2022-05-07 15:58:30 -05:00
tombrazier
575c3150f9 🚸 Universal X_AXIS_TWIST_COMPENSATION (#23828) 2022-05-07 15:58:30 -05:00
Scott Lahteine
43d4e30668 🐛 Fix M_State_grbl when G29 calls G28 2022-05-07 15:58:30 -05:00
Julien Staub
9b17699b9b Weedo 62A Tina2 / Monoprice Cadet (#23817) 2022-05-07 15:58:30 -05:00
InsanityAutomation
0337602bbe ️ E3V2 blank bg for S1 compatibility (#23822) 2022-05-07 15:58:30 -05:00
ellensp
fbfe0642b6 🚨 Fix BLTouch 5V pin tolerance checks (#23823) 2022-05-07 15:58:30 -05:00
tombrazier
41a51e9527 🐛 Fix backlash applied steps when config changes (#23826)
Followup to #23814
2022-05-07 15:58:30 -05:00
ellensp
2d648e4dd9 🔨 Fix 'renamed' env (platform = ststm32) (#23831) 2022-05-07 15:58:30 -05:00
Ludy
35d11070b4 🌐 Update German language (#23832) 2022-05-07 15:58:30 -05:00
kisslorand
feafb7d49a M21 P / S / U - Select Volume (#23780)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-05-07 15:58:30 -05:00
M. FURIC Franck
39001bd8d2 LCD Backlight Timer (#23768)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-05-07 15:58:30 -05:00
ellensp
3db2fecaa4 🔧 SHOW_CUSTOM_BOOTSCREEN sanity-check (#23807) 2022-05-07 15:58:30 -05:00
sam
c0288590b3 📺 BTT SKR Mini E3 with Fysetc V2.1 / MKS V3 / BTT V1 Mini 12864 (#23793) 2022-05-07 15:58:30 -05:00
ellensp
d2cd3f2e68 MKS Robin Nano 3.1 (#23795) 2022-05-07 15:58:30 -05:00
ellensp
893c662438 🐛 ESP32 _delay_ms, fix u8g_esp32_spi.cpp (#23810) 2022-05-07 15:58:30 -05:00
tombrazier
b0fdbede9c 🐛 Fix steps-to-mm with backlash (#23814)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-05-07 15:58:30 -05:00
Scott Lahteine
8e11a2bb83 🎨 Move PROPORTIONAL_FONT_RATIO 2022-05-07 15:58:30 -05:00
ellensp
9588f21d2e 🔨 More renamed.ini envs (#23786) 2022-05-07 15:58:30 -05:00
ellensp
80e569015b 🐛 Fix TMC26X CS pins init (#23778) 2022-05-07 15:58:30 -05:00
Keith Bennett
be70352203 🔧 Warning for MK3_FAN_PINS (#23727) 2022-05-07 15:58:30 -05:00
Scott Lahteine
980c009fc7 Dyze Design PT100 Amplifier Board (#23760) 2022-05-07 15:58:30 -05:00
Scott Lahteine
8a02646f52 📝 Update Toolchange FS comments 2022-05-07 15:58:30 -05:00
tombrazier
7ec2167a73 ️ Apply PTC on all probing (#23764)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-05-07 15:58:30 -05:00
Scott Lahteine
56cec9690a ♻️ Refactor HAL as singleton (#23357, #23871, #23897) 2022-05-07 15:58:30 -05:00
John Robertson
428b67db31 More Nozzle Park move options (#23158)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-05-07 15:58:30 -05:00
Scott Lahteine
1b2715ccf2 🚸 Enhanced UI => Professional UI - with updates (#23624) 2022-05-07 15:58:30 -05:00
GHGiampy
ac76ed7ece 🚸 Case Light, LED menus for E3V2 DWIN Enhanced UI (#23590) 2022-05-07 15:58:30 -05:00
ellensp
4ba4ab1c75 📌 Creality RAMPS optional SD_DETECT_PIN (#23740)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-05-07 15:58:30 -05:00
GHGiampy
c0f6d2f78c ✏️ Fix getLFNName parameter (#23752) 2022-05-07 15:56:08 -05:00
jefflessard
0b4f5298f5 🚨 Fix TEMP_SENSOR_BOARD warnings (#23754) 2022-05-07 15:56:08 -05:00
Simon Pilepich
195383bc33 🧑‍💻 Update MightyBoard FET pins (#23728) 2022-05-07 15:56:08 -05:00
Scott Lahteine
4199191e99 ♻️ Rename XATC z_values => z_offset 2022-05-07 15:56:08 -05:00
InsanityAutomation
7da28768f7 ♻️ No ui.reinit_lcd on any ExtUI (#23722)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-05-07 15:56:08 -05:00
Scott Lahteine
172cd2eefb 📝 Update conditionals descriptions 2022-05-07 15:55:58 -05:00
Scott Lahteine
341113bcfb 🔧 HAS_LCDPRINT conditional 2022-05-07 15:55:58 -05:00
ellensp
5f0e1a15df ✏️ Fix E3V2 display with BTT SKR Mini E3 v3 (#23719) 2022-05-07 15:55:16 -05:00
ellensp
3abf4de4ae 🚸 Align MKS UI heated bed status with HAS_MULTI_HOTEND (#23718) 2022-05-07 15:55:16 -05:00
Scott Lahteine
cc1a48ad2d 💥 Change 'M42 M' to 'M42 T' 2022-05-07 15:55:16 -05:00
Scott Lahteine
2a584cea96 🎨 Misc. DGUS cleanup 2022-05-07 15:55:08 -05:00
Thomas White
9f57f6f36f Pxmalion Core i3 (#23711) 2022-05-07 15:55:08 -05:00
Scott Lahteine
59548410b8 🧑‍💻 Wrap MMU1 pins 2022-05-07 15:55:08 -05:00
espr14
65c4f14a9e 🩹 Simplify quick homing feedrate (#23714)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2022-05-07 15:55:08 -05:00
MOHAMMAD RASIM
3e18cf2b6a 🚸 Fix, Improve Power-Loss Recovery (#22828)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2022-05-07 15:55:07 -05:00
ellensp
11071c7472 🚸 Restore active tool after ABL G29 (#23692)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-05-07 15:55:07 -05:00
Scott Lahteine
38484c6eb6 🧑‍💻 Drop hostui.flag 2022-05-07 15:54:55 -05:00
Taylor Talkington
b964d2fff0 Optional HOST_STATUS_NOTIFICATIONS (#22833) 2022-05-07 15:54:55 -05:00
Scott Lahteine
973366e6aa 🔧 Update MIXING_EXTRUDER sanity checks
Fixing #23693
2022-05-07 15:54:55 -05:00
InsanityAutomation
e255e4a69f PLR accessors for Ext UI (#23687) 2022-05-07 15:54:46 -05:00
InsanityAutomation
942f088522 🩹 Fix Maple HAL compile errors (#23685) 2022-05-07 15:54:46 -05:00
ellensp
c4341a4e35 🚨 Cleaner errors for renamed envs (#23690) 2022-05-07 15:54:46 -05:00
InsanityAutomation
6e23ffd12c 🧑‍💻 Generic Maple STM32F103RC envs for devs (#23686) 2022-05-07 15:54:33 -05:00
Bob Kuhn
58239c65cb 🐛 Fix init of delta safe height (for G29, G33, etc.) (#23622) 2022-05-07 15:54:33 -05:00
ellensp
82ae3646cb 🐛 Fix missing u8g_esp32_spi (#23562) 2022-05-07 15:54:33 -05:00
GHGiampy
8799837d75 🔨 Clean up upload.py (#23679) 2022-05-07 15:53:47 -05:00
John Lagonikas
cdcf31453b 🐛 Fix dual MAX31865 initialization issues (#23496) 2022-05-07 15:53:47 -05:00
Bob Kuhn
a23ecf0d2f 🩹 Prevent Z error with UBL + Park unscaled E move (#23568) 2022-05-07 15:53:47 -05:00
ellensp
f5046a41cd 🚨 Deprecate Maple build (#23661)
Update Warnings.cpp
2022-05-07 15:53:06 -05:00
GHGiampy
0d07c49c1d 🩹 Init brightness/contrast later (#23645) 2022-05-07 15:48:34 -05:00
Stephen Hawes
f193729f54 🐛 Fix Index Mobo Rev03 upload (#23676) 2022-05-07 15:48:34 -05:00
Kelroy
22db62d95a SAMD51 Bricolemon / Bricolemon Lite boards (#23658) 2022-05-07 15:48:13 -05:00
Bruno Henrique de Paula
50ffacfb90 📌 Distinct BOARD_CREALITY_V422 (#23674) 2022-05-07 15:48:13 -05:00
Bones
21935b41f0 Add ZRIB v53, patch G35 Z drop, related issues (#23636) 2022-05-07 15:48:13 -05:00
Scott Lahteine
15eabba11d 🧑‍💻 Relocate a variant 2022-05-07 15:48:13 -05:00
Bob Kuhn
b2d0f2fd8c 🐛 Fix RUMBA + MKS Mini12864 Neopixel pin (#23646) 2022-05-07 15:48:13 -05:00
Mike La Spina
a07d7e4b8a 🍻 STM32 set_pwm_duty "on/off" for digital pins (#23665) 2022-05-07 15:48:13 -05:00
Scott Lahteine
d4801461f5 💡 Comment variant timers 2022-05-07 15:48:13 -05:00
Mike La Spina
f42c1b4cae 🔧 Sanity-check AVR D9 Fan PWM / SPEAKER Timer2 (#23672) 2022-05-07 15:48:13 -05:00
ellensp
f8571fc18f 🐛 Creality v4 cleanup, pin correction (#23666) 2022-05-07 15:47:49 -05:00
Scott Lahteine
fbbf556e08 🔨 Workspace file with recommendation 2022-05-07 15:47:08 -05:00
Scott Lahteine
1cdaddaaf2 🔧 Board temp sensor check 2022-05-07 15:38:56 -05:00
ellensp
4d8976bf6b 🐛 Fix FYSETC S6, S6 V2 Serial RX pins (#23642) 2022-05-07 15:38:56 -05:00
Mike La Spina
c02bc3887a 🐛 Fix AVR 644/1284 Timer / PWM conflicts (#23629) 2022-05-07 15:38:56 -05:00
Scott Lahteine
68dfc50564 🧑‍💻 Simplify Fast PWM timer macros 2022-05-07 15:38:56 -05:00
Mike La Spina
c7b0626b02 🐛 Fix SPI DMA and default mode (#23627)
Followup to #23464
2022-05-07 15:38:56 -05:00
Scott Lahteine
30d1f0ba81 📝 Update Creality 4.2.2 driver warning 2022-05-07 15:38:56 -05:00
Keith Bennett
758dc7af9d 🚸 Better "Bed Tramming Done" dialog (#23616)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2022-05-07 15:38:56 -05:00
Scott Lahteine
361dab93b3 BOARD_CREALITY_V24S1_301 (#23620)
Co-Authored-By: Miguel Risco-Castillo <mriscoc@users.noreply.github.com>
2022-05-07 15:38:55 -05:00
ellensp
f0f1d33980 FYSETC TFT81050 CI Test (#23604) 2022-05-07 15:38:55 -05:00
Scott Lahteine
38e0e92e9d ✏️ Fix MKS enum 2022-05-07 15:38:55 -05:00
Scott Lahteine
2dcc3ddeed 🧑‍💻 HAS_MARLINUI_MENU, HAS_MANUAL_MOVE_MENU 2022-05-07 15:38:55 -05:00
Timofey Titovets
33c89547f0 ️ Tuned Thermistor 66 (T-D500) (#23585) 2022-05-07 15:38:55 -05:00
Lars
a4ea8bc1e1 🐛 Fix DGUS_Reloaded G-code execution (#23592) 2022-05-07 15:38:55 -05:00
Keith Bennett
9f06079549 🐛 Fix Creality DWIN LCD with SKR Mini E3 V3 (#23593) 2022-05-07 15:38:55 -05:00
DejitaruJin
2f48c30445 🩹 Fix DWIN float debugging (#23601) 2022-05-07 15:38:55 -05:00
Keith Bennett
5090687682 🔨 Creality RCT6 (256K) variants (#23599)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-05-07 15:38:55 -05:00
Scott Lahteine
2d032b734c 🧑‍💻 Fix up some AUX / EXP pins (#23577) 2022-05-07 15:38:55 -05:00
Mike La Spina
2142456a25 🐛 Fix LCD contrast/brightness init (#23567)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-05-07 15:38:55 -05:00
Scott Lahteine
99f3b8b4a8 ♻️ Adjust LCD init, contrast default, settings load 2022-05-07 15:38:55 -05:00
Keith Bennett
de0bc19230 🚸 TH3D EZBoard V2 TMC slave addresses (#23857) 2022-05-07 15:38:55 -05:00
John Lagonikas
17099e7973 🩹 Fix power.h compile (#23573) 2022-05-07 15:38:55 -05:00
Scott Lahteine
63f3e347d9 🩹 BOARD_INIT followup 2022-05-07 15:38:55 -05:00
Scott Lahteine
32ff8c1489 🧑‍💻 Add chmod to mfprep 2022-05-07 15:38:55 -05:00
Scott Lahteine
369ba99fdb 🩹 Fix Robin Nano BOARD_INIT 2022-05-07 15:38:55 -05:00
Scott Lahteine
f33ec4aacf 📝 Tweak G26 Q description 2022-05-07 15:38:55 -05:00
Scott Lahteine
1d0ca179b5 🎨 LCD_SCREEN_ROT_* => LCD_SCREEN_ROTATE 2022-05-07 15:38:55 -05:00
Scott Lahteine
8ea172cafe 🎨 Misc. style and cleanup 2022-05-07 15:27:24 -05:00
John Lagonikas
7b4f5108ac 🐛 Fix conditional M81 suicide (#23549) 2022-05-07 15:27:20 -05:00
Scott Lahteine
6f82d1befb 📌 RAMPS AUX 1-2 headers (#23544) 2022-05-07 15:27:17 -05:00
Fahad Alduraibi
5d5be55ef9 🐛 Fix RAMPS 1.4 Plus EXP headers (#23523) 2022-05-07 15:27:10 -05:00
GHGiampy
e704de9bb0 Long filename open/create/write (#23526)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2022-05-07 15:26:59 -05:00
A. Herlas
8695f462b7 Z Offset Wizard for TFT_LVGL_UI (English) (#23489) 2022-05-07 15:26:59 -05:00
Ave6683
d8c5e49281 MagLev V4 probe by MDD (#23192) 2022-05-07 15:26:59 -05:00
Salvatore Bramante
4e72df9a28 🐛 Fix Octopus v1.x probe pin (#23548) 2022-05-07 15:26:59 -05:00
Scott Lahteine
ac6c1a9e12 💥 Generalize extra debugging 2022-05-07 15:26:45 -05:00
Taylor Talkington
3f4112aee4 💄 Improve Ender3 v2 DWIN MarlinUI (#23369)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-05-07 15:25:08 -05:00
Keith Bennett
31ec8f2449 🔨 Suppressible CONFIGURATION_EMBEDDING warning (#23545) 2022-05-07 15:25:08 -05:00
John Lagonikas
d18558bbd3 🚸 Suppressible pin warnings (#23530)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-05-07 15:24:42 -05:00
zerkix
70f03ad852 🐛 Finish and organize temp sensors (#23519)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-05-07 15:24:42 -05:00
Anson Liu
ab40c99893 🐛 Fix Ultimain 2 E-autofan pin mapping (#23466) 2022-05-07 15:24:42 -05:00
Miguel Risco-Castillo
420f074915 🐛 Fix PLR for E3V2 Enhanced UI (#23543) 2022-05-07 15:14:44 -05:00
Taylor Talkington
4f2ed67324 💄 MarlinUI+DOGM leveled bed bitmaps (#23539) 2022-05-07 15:14:44 -05:00
Sola
a80cafbcfc ️ SPI+DMA+interrupt method (STM32 / MKS UI) (#23464) 2022-05-07 15:13:40 -05:00
Mike La Spina
01cb7c19f9 🐛 Fix, improve PWM on AVR (#23520) 2022-05-07 15:13:40 -05:00
Scott Lahteine
44249b1380 🔧 Skip unused axis names 2022-05-07 15:12:59 -05:00
George Fu
d7287e7db8 🔨 Set upload_command for CHEETAH v20 (#23515) 2022-05-07 15:12:59 -05:00
Scott Lahteine
cf654bbba2 🩹 Followup to extra axes 2022-05-07 15:12:59 -05:00
Scott Lahteine
5617edbb96 🧑‍💻 Misc. updates for extra axes (#23521) 2022-05-07 15:12:45 -05:00
Mike La Spina
39e4310c7b 🐛 Fix, improve PWM on AVR (#23463) 2022-05-07 15:12:45 -05:00
Lefteris Garyfalakis
0204547c09 🚸 Fix E3V2 Enhanced UI time labels (#23502) 2022-05-07 15:12:45 -05:00
Scott Lahteine
7b79d53de0 🎨 Misc. spindle/laser adjustments 2022-05-07 15:12:45 -05:00
Scott Lahteine
c478ed08c8 🧑‍💻 Adjust FastIO AVR timer enums, macros 2022-05-07 15:12:45 -05:00
GHGiampy
67e5298a34 Firmware Upload via Binary Transfer (#23462) 2022-05-07 15:10:28 -05:00
John Lagonikas
2ca1d844d7 Temperature variance monitor (#23373) 2022-05-07 15:10:28 -05:00
mistic100
b435487da7 🚸 Wait for cooldown in MarlinUI power-off (#23476) 2022-05-07 15:10:28 -05:00
Scott Lahteine
d7b7b570c7 🎨 Misc. cleanup, comments 2022-05-07 15:10:19 -05:00
John Lagonikas
2690bb1bc2 M81 D / S - Power-off Delay (#23396, #23455) 2022-05-07 15:10:19 -05:00
Scott Lahteine
b6c37960e8 📝 KHz => kHz (#23512) 2022-05-07 15:10:19 -05:00
Scott Lahteine
c1d3e4634c 💚 Lock CI testing to PlatformIO 5.2.5 2022-05-04 15:00:52 -05:00
Scott Lahteine
9df0dbc981 💚 Use PIO-develop for CI 2022-04-20 04:30:15 -05:00
Scott Lahteine
d418f3bfba 🔨 Skip cron with exit code 0 2022-04-19 19:30:08 -05:00
Scott Lahteine
2893060302 💚 Lock CI testing to PlatformIO 5.2.5 2022-03-29 03:24:30 -05:00
Scott Lahteine
ad945017d6 🔨 Update TMC26XStepper link 2022-03-27 00:40:07 -05:00
Scott Lahteine
52a92ca24e 🔨 Use some v3 actions 2022-03-25 20:35:12 -05:00
Keith Bennett
ba2f6c66d3 🔨 Remove StaleBot age limit (#23907) 2022-03-17 22:19:00 -05:00
Keith Bennett
19e193410e 🔨 Include "More Data" issues in stale check (#23863) 2022-03-12 18:27:18 -06:00
Scott Lahteine
b9cef2e2e3 🚸 12345.6 num-to-string 2022-03-04 16:56:45 -06:00
ellensp
186d2ba6b4 🐛 Fix HAS_TMC26X feature path (#23757) 2022-02-17 18:40:16 -06:00
Scott Lahteine
4dfd398d7d 🐛 Patch Creality RAMPS FET / FAN pins
Improvement for multi-hotend setup by TH3D.
2022-02-17 18:40:16 -06:00
Giuseppe499
bfdb7c7135 🐛 Fix XATC divide-by-zero (#23743) 2022-02-17 18:40:16 -06:00
Mads Ynddal
bf067738f2 🐛 Fix XYZEval::set(XY, Z) and (XY, Z, E) (#23704)
Fix regression in #21953

Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2022-02-10 12:01:51 -06:00
Maeyanie
e028a3c441 🐛 Fix M852 report (#23660) 2022-02-10 12:01:16 -06:00
Timothy Hoogland
9847470b38 🐛 Fix EZBoard V2 Environment for OpenBLT (#23659) 2022-02-01 17:25:02 -06:00
Timothy Hoogland
51209667a5 🐛 Fix EZBoard V2 timer conflict (#23648) 2022-01-30 06:38:49 -06:00
Scott Lahteine
db4172b5fa 🔨 Prevent two [cron] in a row 2022-01-17 04:19:12 -06:00
Jim Watson
242192d03d 🐛 Fix SHOW_REMAINING_TIME compile (#23503) 2022-01-12 10:23:50 -06:00
ellensp
7135c3b185 🚑️ Fix M105 regression (#23505)
Fixes #23504
2022-01-12 10:23:50 -06:00
ellensp
c91d033b5d 🐛 Fix Arduino build issues (#23510) 2022-01-12 10:23:50 -06:00
Scott Lahteine
0470fbe0a1 🧑‍💻 Move PB0 init for MKS_ROBIN_NANO 2022-01-12 10:23:50 -06:00
Scott Lahteine
eb8d819325 🧑‍💻 Fewer string macros 2022-01-10 05:52:02 -06:00
DerAndere
41f80a4498 🚸 Include extra axes in position report (#23490) 2022-01-10 05:52:02 -06:00
David Ross Smith
e0f75d4f06 🚑️ Fix preheat target bug
Fixes Jyers/Marlin#1651
2022-01-09 04:41:07 -06:00
Scott Lahteine
42449b8683 🌐 Update auto home axis strings 2022-01-09 04:40:41 -06:00
Roman Moravčík
e23c696566 🌐 Update Slovak language (#23475) 2022-01-09 04:40:28 -06:00
Scott Lahteine
035f9b8e13 🔨 Rename (not copy) with board_build.rename 2022-01-09 04:34:42 -06:00
Miguel Risco-Castillo
49f8171f7a 🚸 BLTouch HS menu item for DWIN Enhanced UI (#23480) 2022-01-09 04:34:29 -06:00
ClockeNessMnstr
75d0e94d5b 🚸 Do G34 "Z Backoff" at full current 2022-01-09 04:33:24 -06:00
jdegenstein
915f610782 📌 LCD_FOR_MELZI for BTT E3 RRF (#23453) 2022-01-09 04:33:24 -06:00
Lefteris Garyfalakis
2231e00b2c 🌐 Localize E3V2 Enhanced UI (#23424) 2022-01-09 04:33:24 -06:00
Anson Liu
63f2b15396 📺 Tune ULTI_CONTROLLER encoder, enable PCA9632 (#23461) 2022-01-09 04:33:24 -06:00
Kyle Hu
f503722c45 🐛 Fix Artillery Ruby (startup code, build flags) (#23446) 2022-01-09 04:33:24 -06:00
Mike La Spina
4fd1de7fb7 🐛 Define required endstop enums (#23425) 2022-01-09 04:33:24 -06:00
Scott Lahteine
93126c0d02 🔨 Strip CR in mftest > awk 2022-01-09 04:33:24 -06:00
Scott Lahteine
80f77ea807 🐛 Fix strlen_P parameter error
Fixes #23447
2022-01-09 04:33:24 -06:00
Scott Lahteine
9ff8220b8a 🩹 Fix RADDS+RRD encoder button 2022-01-09 04:33:24 -06:00
hwmland
7754860289 🩹 RAMPS FET order overridable, E + Laser (#23428) 2022-01-09 04:33:24 -06:00
Jason Smith
4efe4788af ⬆️ Assert newer GCC in PIO via atmelavr@~3.4 (#23432) 2022-01-09 04:33:24 -06:00
Jason Smith
2faf4e2a99 💚 Fix Teensy CI test (#23433) 2022-01-09 04:33:24 -06:00
Scott Lahteine
9956e62674 🧑‍💻 Apply axis conditionals 2022-01-09 04:33:24 -06:00
Scott Lahteine
a732427329 🚨 Fix M906 warning 2022-01-09 04:33:24 -06:00
Mike La Spina
974883d2f6 🔧 Normal FET layout with Spindle/Laser (#23409) 2022-01-09 04:33:24 -06:00
Jason Smith
1170ed995e 🔧 Update deprecated auto_build.py (#23427) 2022-01-09 04:33:24 -06:00
Johannes Hörmann
24f9c3a777 🔨 Upload to Optiboot at 115200 (#23403) 2022-01-09 04:33:24 -06:00
Scott Lahteine
5ec384f40c M919 : Chopper Timing (#23400) 2022-01-09 04:33:24 -06:00
Jason Smith
6d7ffa6add 🔧 Only warn about enabled CONFIGURATION_EMBEDDING (#23408) 2022-01-09 04:33:24 -06:00
Scott Lahteine
dadd7516b5 🚑️ Fix thermal conditionals, structure 2022-01-09 04:33:24 -06:00
Robby Candra
f99732ba75 🔧 DWIN_MARLINUI sanity checks (#23399) 2022-01-09 04:33:24 -06:00
Scott Lahteine
5a9635aa58 🩺 Assert FAN_SOFT_PWM where required (#23383, #23477) 2022-01-09 04:33:24 -06:00
Lefteris Garyfalakis
1552c6d2a5 🎨 E3V2 corner leveling => tramming (#23375) 2022-01-09 04:33:24 -06:00
Miguel Risco-Castillo
06c2ed3c99 🚸 DWIN Enhanced improve, fix, and extend (#23240)
- Offset icon change to show mesh leveling status
- Reset extruder position when enter to Move menu
- New live end-stop diagnostic page
- Editable firmware retracts settings for Tune and filament settings menu
- Print Statistics page accessible from the Advanced Settings menu
- Reset printer draws the boot image
- Adds individual axes homing menu
- Adds probe deploy/stow to Probe Settings menu
- Updates lock screen
- Rebuilds main buttons to support text caption in other languages
- Increases probe offset limits to 60 mm
- Fix M303 PID variable update
- Fix Resume/Pause button update
- Fix redraw of print done
- Fix very large file name bug
- Fix bug in bed manual leveling
2022-01-09 04:33:24 -06:00
Scott Lahteine
430c5da54c 🚚 Rename L6470 G-code file 2022-01-09 04:33:24 -06:00
Scott Lahteine
5b9f3bd4b1 🧑‍💻 Remove extraneous 'inline' hints 2022-01-09 04:33:17 -06:00
Scott Lahteine
ccc66a8528 🎨 Misc. cleanup 2022-01-09 04:33:01 -06:00
Scott Lahteine
8abe314b18 🔨 Get FIRMWARE_BIN from env 2022-01-09 04:32:43 -06:00
Miguel Risco-Castillo
dc470eb10f 🐛 Fix EEPROM_INIT_NOW build hash test (#23479) 2022-01-09 01:31:03 -06:00
Miguel Risco-Castillo
4c5e57ae89 🩹 Reset DWIN CrealityUI print progress on start (#23481) 2022-01-09 01:31:03 -06:00
Scott Lahteine
5d7328df46 🧑‍💻 Add AXIS_COLLISION to catch broken parameters
\
2022-01-09 01:31:03 -06:00
Scott Lahteine
99c237e05e 🚸 Refine stepper-driver-related G-codes (#23372) 2022-01-09 01:31:03 -06:00
Scott Lahteine
56adbc3ebf 📝 Consistent pin header orientation 2022-01-09 01:31:03 -06:00
Scott Lahteine
4cfe812c18 📌 Define MKS Monster8 pins for MKS_MINI_12864
Fixes #23324
2022-01-09 01:31:03 -06:00
Scott Lahteine
27d2471ea3 🐛 Fix mffp usage 2022-01-09 01:31:03 -06:00
Scott Lahteine
61b9248c35 🎨 Pins and SDIO cleanup 2022-01-09 01:31:03 -06:00
EvilGremlin
c9561a8826 🔧 Check Chiron LCD requirements (#23353)
Co-Authored-By: EvilGremlin <22657714+EvilGremlin@users.noreply.github.com>
2022-01-09 01:31:03 -06:00
Scott Lahteine
58c84f17ba 🎨 Simplify some debug echos 2022-01-09 01:31:03 -06:00
Scott Lahteine
73b8320e9c 🔨 Add .vscode/extensions.json 2022-01-05 04:24:04 -06:00
ellensp
1c3f2498b1 🐛 Fix RRW Keypad & Zonestar buttons (#23388) 2022-01-05 04:24:04 -06:00
GHGiampy
4202baa409 🩹 Fix Enhanced UI max E speed (#23387) 2022-01-05 04:24:04 -06:00
Scott Lahteine
f471eab1a2 🔖 Marlin 2.0.9.3 2022-01-05 04:24:03 -06:00
Keith Bennett
9b13ae2399 🐛 Fix MKS Robin E3 NeoPixel pin default (#23350) 2021-12-25 23:11:43 -06:00
kaidegit
06f36dc746 🐛 Fix open for bin rename (#23351) 2021-12-25 23:11:43 -06:00
Scott Lahteine
98eca9cb23 🔧 Move MOTHERBOARD closer to top 2021-12-25 23:11:43 -06:00
fflosi
6268795003 Per-axis TMC hold multiplier (#23345) 2021-12-25 23:11:43 -06:00
Sola
b4f0922a7c MKS TinyBee board support (#23340)
Co-Authored-By: Sola <42537573+solawc@users.noreply.github.com>
2021-12-25 03:23:10 -06:00
Robby Candra
aef613acd3 🔧 Group FAST_PWM_FAN.options (#23331)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-12-25 03:23:10 -06:00
InsanityAutomation
9ecfa1d252 BLTouch High Speed mode runtime configuration (#22916, #23337)
Co-Authored-By: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-12-25 03:23:10 -06:00
ellensp
e0bed1e344 Option to reset EEPROM on first run (#23276)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-12-25 03:23:10 -06:00
Spencer Owen
d21fa25ab8 Creality3D V4.2.3 / Ender-2 Pro board (#23307) 2021-12-25 03:23:10 -06:00
X-Ryl669
0dc1a58b24 Configurations embed and retrieve (#21321, #23303) 2021-12-25 03:23:10 -06:00
John Lagonikas
f2ca70e232 🐛 Fix and improve MAX31865 (#23215)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-12-25 03:23:10 -06:00
BigTreeTech
a6bed22839 BigTreeTech SKR mini E3 V3.0 (STM32G0B1RET6) (#23283) 2021-12-25 03:23:09 -06:00
Giuseppe499
efd67cf80d X Twist Compensation & Calibration (#23238) 2021-12-25 03:23:09 -06:00
ladismrkolj
15204470a8 🔧 Chamber Fan index option (#23262) 2021-12-25 03:23:09 -06:00
Mike La Spina
48358d6a5c 🏗️ Fix Maple HAL/STM32F1 PWM (#23211) 2021-12-25 03:23:09 -06:00
Tanguy Pruvot
d7abb891cd 🏗️ Rework STM32 timer frequency protection (#23187) 2021-12-25 03:23:09 -06:00
Scott Lahteine
52a44eb200 🐛 Fix STM32 FastPWM 2021-12-25 03:23:09 -06:00
Scott Lahteine
9b1c0a75e1 🎨 Rename HAL timer elements 2021-12-25 03:23:09 -06:00
schmttc
d75e7784e5 EasyThreeD ET4000+ board and UI (#23080)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-12-25 03:23:09 -06:00
John Robertson
0e60c8b7e0 MarkForged YX kinematics (#23163) 2021-12-25 03:23:09 -06:00
Keith Bennett
018c7b1cf4 BigTreeTech Mini 12864 V1.0 (#23130)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-12-25 03:23:09 -06:00
Giuliano Zaro
af1d603374 Fan tachometer support (#23086, #23180, #23199)
Co-Authored-By: Scott Lahteine <github@thinkyhead.com>
2021-12-25 03:23:09 -06:00
Scott Lahteine
884308f964 🔧 SOUND_MENU_ITEM for E3V2 2021-12-25 03:23:09 -06:00
Miguel Risco-Castillo
7269990413 🚸 Expose sub-options for E3V2 Enhanced (#23099) 2021-12-25 03:23:09 -06:00
Keith Bennett
2a90d93b17 📌 Overridable probe-related pins (#23107) 2021-12-25 03:23:09 -06:00
BigTreeTech
6e284f8823 Support for BIQU B1-SE-Plus strain gauge probe (#23101)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-12-25 03:23:09 -06:00
Scott Lahteine
a2349fc411 🔨 Configurable firmware bin filename
Configuration.h > FIRMWARE_BIN
2021-12-25 02:09:52 -06:00
Scott Lahteine
a3964b2b40 🔨 Ignore more generated files 2021-12-25 02:09:17 -06:00
Scott Lahteine
226ee7c1f3 🔧 Sanity check MMU2_MENUS 2021-12-25 02:07:59 -06:00
Attila BODY
2c12171f46 🐛 Fix Robin Nano v3 filament runout pins (#23344)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-12-25 02:06:34 -06:00
MrAlvin
d034a9c295 🚸 Show mm'ss during first hour (#23335)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-12-25 02:05:32 -06:00
Robby Candra
d2c7104bb3 🚸 Change "SD" to "Media" or "SD/FD" (#23297) 2021-12-25 02:02:05 -06:00
ellensp
570c7e8638 🐛 Fix Chitu Z_STOP_PIN (#23330) 2021-12-25 02:01:32 -06:00
Tanguy Pruvot
cc4578a3d3 🩹 Fix settings G21 report (#23338) 2021-12-25 01:59:52 -06:00
Mike La Spina
1db84be66a 🚑️ FAST_PWM_FAN default 1KHz base freq. (#23326)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-12-25 01:58:34 -06:00
ellensp
77c9668fe2 🐛 Fix LCD_BED_LEVELING compile (#23298) 2021-12-25 01:55:26 -06:00
GHGiampy
22cf9b444e 🧑‍💻 Option allowing > 127 Neopixels (#23322) 2021-12-25 01:54:39 -06:00
Scott Lahteine
97798d1e47 🎨 Update SKR V2 pins 2021-12-25 01:53:13 -06:00
Giuliano Zaro
f4b808456a 🚸 Use M600 for disabled MMU (#21865) 2021-12-25 01:52:31 -06:00
Tanguy Pruvot
6264736968 🐛 Fix TFT_COLOR_UI Release Media issue (#23123) 2021-12-25 01:51:37 -06:00
John Lagonikas
7a5f103bcf 🔧 Warning for IGNORE_THERMOCOUPLE_ERRORS (#23312) 2021-12-25 01:51:11 -06:00
Scott Lahteine
1a8307b196 📝 Fix a config comment 2021-12-25 01:51:11 -06:00
ellensp
13a1c86ae8 M115 flag EXTENDED_M20 (#22941) 2021-12-25 01:51:11 -06:00
ellensp
15656201d2 ✏️ Clean up duplicate defs (#23182) 2021-12-25 01:51:11 -06:00
Robby Candra
f3e372cb4c 🩹 Init fan speed at boot (#23181)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-12-25 01:46:19 -06:00
Scott Lahteine
c781ecc437 🔧 Fix unknown board test 2021-12-25 01:46:19 -06:00
Scott Lahteine
daa8fff6c6 🩹 SD abort requires open file
See #22566
2021-12-25 01:42:26 -06:00
ellensp
d481bba327 🐛 Fix MARLIN_F103Rx variant SCK / MOSI pins (#23282) 2021-12-25 01:42:13 -06:00
Scott Alfter
32b08ae04c Fix Endstops::report_states (#23280)
Fix regression 4d45fdf0eb
2021-12-25 01:39:34 -06:00
Scott Lahteine
f00a0356c7 🎨 Misc. probe / endstop cleanup 2021-12-25 01:39:34 -06:00
Sola
9871800874 🐛 Fix MKS LVGL UI retraction (#23267) 2021-12-25 01:39:34 -06:00
Robby Candra
39c2c038be 🩹 Coerce pin_t in set_pwm_duty macros (#23273) 2021-12-25 01:39:34 -06:00
Jason Smith
285d6488a3 🐛 Fix ACTION_ITEM with nullptr (#23195)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-12-25 01:39:34 -06:00
Robby Candra
eecbd09a46 🚸 Onboard SD for SKR 2.0 / SKR PRO (#23274) 2021-12-25 01:37:58 -06:00
Scott Lahteine
8d4e4ac115 🎨 Rename MAX31865 elements 2021-12-25 01:37:38 -06:00
Scott Lahteine
b77a5d4c8d ✏️ MAX31856 => MAX31865 2021-12-25 01:37:21 -06:00
Mike La Spina
c3b8b3e7e6 🩹 Fix non-PWM cutter compile (#23169) 2021-12-25 01:37:21 -06:00
Stuart Pittaway
7123b15801 🐛 Fix TWIBus Wire.begin call (#23183) 2021-12-25 01:37:21 -06:00
Chris Pepper
8a2f13d657 🐛 HAL_reboot for native HAL (#23246) 2021-12-25 01:36:47 -06:00
tommywienert
251d9fc1d7 🐛 Fix env:chitu_f103 (#23225) 2021-12-25 01:36:32 -06:00
ellensp
5eeb9650b5 📌 More Longer3D LKx Pro serial tests (#23260) 2021-12-25 01:36:32 -06:00
Stuart Pittaway
c0addd1d33 M3426 to read i2c MCP3426 ADC (#23184) 2021-12-25 01:36:32 -06:00
Scott Lahteine
05b57278d4 🔧 Cutter pins for SKR 2.0 2021-12-25 01:36:31 -06:00
Robby Candra
aa3ec2fbfd 🚸 Park nozzle on "loud kill" (#23172) 2021-12-25 01:34:19 -06:00
ellensp
4468516aa2 BigTree SKR 2 with F429 (#23177) 2021-12-25 01:34:08 -06:00
ellensp
95d006b406 🐛 Fix TIMER_TONE for ZM3E4 (#23212) 2021-12-25 01:33:53 -06:00
Jiri Jirus
5b057b4bcf 🩹 Assume 4K EEPROM for RUMBA32 BTT (#23205) 2021-12-25 01:32:24 -06:00
Scott Lahteine
77af48e547 🐛 Fix STM32 FastPWM 2021-12-25 01:30:50 -06:00
Keith Bennett
0f7f709aad ✏️ Fix Unicode (#23186) 2021-12-25 01:29:19 -06:00
Jason Smith
a8c0e11cb1 🩹 Handle nullptr in CardReader::printLongPath (#23197) 2021-12-25 01:29:19 -06:00
Anson Liu
0556da85b0 🩹 UM2 extruder cooling fan on PJ6 (#23194) 2021-12-25 01:28:54 -06:00
George Fu
93652e5c6f FYSETC Spider v2.2 (#23208) 2021-12-25 01:28:24 -06:00
Giuliano Zaro
f3fc1d15a3 🩹 Fix include path (#23150) 2021-12-25 01:26:59 -06:00
Keith Bennett
3148060550 📌 Biqu BX temporary framework workaround (#23131) 2021-12-25 01:26:59 -06:00
Mike La Spina
5f08864d1f 🐛 Fix STM32 set_pwm_duty (#23125) 2021-12-25 01:26:27 -06:00
Tanguy Pruvot
184fc36a08 🐛 Fix TFT backlight sleep/wake (#23153) 2021-12-25 01:25:14 -06:00
Tanguy Pruvot
281ed99868 ️ Reduce calls to set fan PWM (#23149) 2021-12-25 01:24:58 -06:00
Scott Lahteine
2cc4a1b326 🎨 Misc formatting 2021-12-25 01:24:44 -06:00
BigTreeTech
c5bd08755c 🐛 Init PROBE_ENABLE_PIN (#23133) 2021-12-25 01:24:34 -06:00
luzpaz
99f58f63f2 🎨 Fix misspelling (#23137) 2021-12-25 01:23:32 -06:00
espr14
c2a674d2c1 🏗️ Planner::busy() (#23145) 2021-12-25 01:23:17 -06:00
Scott Lahteine
feffc19867 🐛 Fix fast PWM WGM code
Followup to #23102
2021-12-25 01:23:02 -06:00
Scott Lahteine
f637e1c501 🔨 Bring Makefile up to date 2021-12-25 01:22:50 -06:00
EvilGremlin
78240a279b 🔨 Ignore sim flashdrive file (#23129) 2021-12-25 01:22:50 -06:00
Luc Van Daele
656034d2d9 🐛 Fix G33, Delta radii, reachable (#22795) 2021-12-25 01:22:50 -06:00
Mikhail Basov
39a81d167e 🚸 LCD_SHOW_E_TOTAL for TFT_COLOR_UI (#23127) 2021-12-25 01:19:21 -06:00
Scott Lahteine
cb1570d162 🐛 Fix SENSORLESS_HOMING for 6-axis 2021-12-25 01:19:21 -06:00
EvilGremlin
8cb646cc20 🚸 Simplify touchscreen calibration for SimUI (#23124) 2021-12-25 01:18:35 -06:00
Miguel Risco-Castillo
3cccb21dc9 🚸 Fix up E3V2 Enhanced (#23100) 2021-12-25 01:18:35 -06:00
Scott Lahteine
7f4a49cc44 🎨 Misc. issue review patches 2021-12-25 01:18:35 -06:00
Mike La Spina
e0c439fe91 ️ Controller Fan software PWM (etc.) (#23102)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-12-25 01:15:49 -06:00
Tanguy Pruvot
49e233e06f 🎨 MPX ARM Mini pins cleanup (#23113) 2021-12-25 01:14:21 -06:00
Mike La Spina
b662dd1f92 🐛 [LCP1768] Init PWM in set_pwm_duty (#23110) 2021-12-25 01:13:47 -06:00
Skruppy
700cae43ab 🩹 Fix RGB case light compile (#23108) 2021-12-25 01:13:23 -06:00
George Fu
1c74c6e7ac 🐛 Fix FYSETC Cheetah 2.0 pins for production (#23104) 2021-12-25 01:13:07 -06:00
Minims
757a9477db 🩹 Adjust GTR 1.0 ST7920 display delay (#22904) 2021-12-25 01:10:51 -06:00
Scott Lahteine
59d43408f6 fix breaks in F() resolution 2021-12-25 01:10:51 -06:00
Scott Lahteine
1d8941d008 🔨 Port libsdl2_net required for macOS simulator 2021-12-25 01:10:51 -06:00
Keith Bennett
17f853d99c ️ BTT002 (STM32F407VET6) variant, MK3_FAN_PINS flag (#23093) 2021-12-25 00:54:46 -06:00
Scott Lahteine
6f9f25dbb2 🎨 Misc. code cleanup 2021-12-25 00:54:46 -06:00
VragVideo
0273a68587 WYH L12864 LCD (Alfawise Ex8) (#22863) 2021-12-25 00:54:46 -06:00
Keith Bennett
58a26fcaac 🚸 Indicate Preheating for probe / leveling (#23088) 2021-12-25 00:46:49 -06:00
Evgeniy Zhabotinskiy
489aca03ff 🩹 Fix M503 report (#23084) 2021-12-25 00:46:49 -06:00
Jin
f32e19e1c6 🍻 Preliminary fix for Max31865 SPI (#22682)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-12-25 00:46:49 -06:00
dwzg
57bd04b6ce 🐛 Fix JyersUI scrolling filename, etc. (#23082)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-12-25 00:46:49 -06:00
ellensp
396df93220 🐛 Fix DGUS Reloaded status message (#23090) 2021-12-25 00:46:49 -06:00
Scott Lahteine
9b76b58b79 🍻 Get/clear reset source earlier
Followup to #23075
2021-12-25 00:46:49 -06:00
Skruppy
9fffed7160 🐛 Prevent AVR watchdogpile (#23075) 2021-12-25 00:46:49 -06:00
Tanguy Pruvot
fd136d5501 🐛 Fix TFT backlight [STM32] (#23062) 2021-12-25 00:46:49 -06:00
BigTreeTech
89ec1c71f0 🐛 Fix Octopus-Pro Max31865 / SPI (#23072) 2021-12-25 00:46:49 -06:00
Robby Candra
fc2020c6ec 🔨 Fix IntelliSense / PIO conflicts (#23058)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-12-25 00:46:49 -06:00
ellensp
f97635de36 📌 'STOP' auto-assign, some Chitu V9 pins (#22889)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-12-25 00:46:49 -06:00
Scott Lahteine
a0a57406a2 🔨 Script 'mfprep' finds pending commits 2021-12-25 00:46:49 -06:00
Scott Lahteine
5efef86cfa 🔨 Update git helper scripts 2021-12-25 00:46:49 -06:00
Scott Lahteine
20c747753d 🔨 Support ABM in mf scripts 2021-12-25 00:46:49 -06:00
Keith Bennett
08a9c61587 📌 Default NeoPixel pin for MKS Robin E3/E3D (#23060) 2021-12-25 00:46:49 -06:00
Andrei M
0d91b07797 ⚗️ Use pwm_set_duty over analogWrite to set PWM (#23048)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-12-25 00:46:49 -06:00
Keith Bennett
b033da1782 🔧 Endstop / DIAG homing conflict warning (#23050) 2021-12-25 00:46:49 -06:00
Keith Bennett
4dcd872be5 Allow Low EJERK with LA, optional (#23054) 2021-12-25 00:46:49 -06:00
Keith Bennett
7e9e2a7435 Artillery Ruby (STM32F401RCT6) (#23029) 2021-12-25 00:46:48 -06:00
tombrazier
0b84194127 🚸 More flexible Probe Temperature Compensation (#23033) 2021-12-25 00:46:48 -06:00
Scott Lahteine
efd9329c81 📝 Tweak EXP comments 2021-12-25 00:46:48 -06:00
Scott Lahteine
5cbb820e29 🔨 Help for GDB remote debugging 2021-12-25 00:46:48 -06:00
Scott Lahteine
5a0166489e 🩹 Fix linker error (transfer_port_index) 2021-12-25 00:46:48 -06:00
Scott Lahteine
692c9a6312 💚 Update Ender-3 V2 config path
MarlinFirmware/Configurations#600
2021-12-25 00:46:48 -06:00
Scott Lahteine
545d14f9a5 🎨 Adjust Ender-3 V2 DWIN options 2021-12-25 00:46:48 -06:00
aalku
7b9e01eb2b Shutdown Host Action (#22908)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-12-25 00:46:48 -06:00
Scott Lahteine
8562f0ec44 "Rutilea" ESP32 board (#22880) 2021-12-25 00:46:48 -06:00
Scott Lahteine
6f59d8171f 🔧 Configuration version 02000903 2021-12-25 00:46:48 -06:00
Scott Lahteine
d29a9014f2 🎨 Standard 'cooldown' method 2021-12-25 00:46:48 -06:00
Scott Lahteine
205d867e4b 🎨 Standard material presets behavior 2021-12-25 00:46:48 -06:00
Scott Lahteine
84f9490149 🎨 Define HAS_PREHEAT conditional 2021-12-25 00:46:48 -06:00
tome9111991
1fd4258423 🐛 Fix E3V2 (CrealityUI) Tune/Prepare > Zoffset (#23040) 2021-12-25 00:46:48 -06:00
Scott Lahteine
e8a55972a7 🐛 Fix EZBoard V2 board name 2021-12-25 00:46:48 -06:00
Keith Bennett
aef413202e 🐛 Fix MKS Robin E3/E3D Z Stop/Probe pins (#23034) 2021-12-25 00:46:48 -06:00
Scott Lahteine
cbc7dadf42 🎨 Apply HAS_MULTI_HOTEND conditional 2021-12-25 00:46:48 -06:00
Zlopi
c508ecc414 🚸 Scroll long filename on MKS TFT (#23031) 2021-12-25 00:46:48 -06:00
ellensp
384a31765f 🩹 Retain LCD pins with motor expansion (#23024) 2021-12-25 00:46:48 -06:00
somehibs
0f2c4fc40b 🐛 Fix serial PORT_RESTORE (and BUFFER_MONITORING) (#23022) 2021-12-25 00:46:48 -06:00
tome9111991
66a274452c 🐛 Fix E3V2 (CrealityUI) position display (#23023)
Followup to #23005, #22778
2021-12-25 00:46:48 -06:00
Scott Lahteine
12f8168d1e 🚸 Tweaks to UBL G29 Q 2021-12-25 00:46:47 -06:00
woisy00
2142e1dae4 🐛 Fix AUTOTEMP bug (thermal runaway) (#23025)
Regression from 9823a37
2021-12-25 00:46:47 -06:00
tombrazier
8d21ea55a2 🐛 Add USE_TEMP_EXT_COMPENSATION options (#23007) 2021-12-25 00:46:47 -06:00
Scott Lahteine
a0da7e8a1f 🔧 Fewer alerts about Z_SAFE_HOMING 2021-12-25 00:46:47 -06:00
tome9111991
e2452d6c57 🐛 Fix SHOW_REMAINING_TIME option for JyersUI (#22999) 2021-12-25 00:46:47 -06:00
Keith Bennett
5173a3140d BigTreeTech TFT35 SPI V1.0 (#22986) 2021-12-25 00:46:47 -06:00
Mike La Spina
e44f2b7d2d 🩹 Fix pragma ignored for older GCC (#22978) 2021-12-25 00:45:55 -06:00
Scott Lahteine
ed78f7f4e6 🎨 Refactor MOSFET pins layout (#22983) 2021-12-25 00:45:05 -06:00
Scott Lahteine
aa198e41dd 🎨 Pragma GCC cleanup 2021-12-25 00:45:05 -06:00
Jason Smith
18b38fb58a 🐛 Fix max chamber fan speed (#22977) 2021-12-25 00:45:05 -06:00
Keith Bennett
5d79d8fad6 🐛 Fix I2C EEPROM SDA/SCL aliases with SKR Mini E3 V2 (#22955) 2021-12-25 00:45:05 -06:00
ellensp
e7a746966d 🐛 Fix MMU1 compile (#22965) 2021-12-25 00:45:05 -06:00
Mike La Spina
555f35d46f 🎨 Suppress type warning (#22976) 2021-12-25 00:45:05 -06:00
Scott Lahteine
de77dfcbbd 🎨 Add MKS UI goto_previous_ui 2021-12-25 00:45:05 -06:00
Scott Lahteine
af08f16efc 🚸 Tweak MKS UI G-code console 2021-12-25 00:45:05 -06:00
Scott Lahteine
01a0f3a8cf 🎨 Fix up MKS UI defines 2021-12-25 00:45:05 -06:00
Scott Lahteine
f80bcdcc5c 🎨 Refactor Host Actions as singleton 2021-12-25 00:45:05 -06:00
ellensp
1ead7ce681 🔧 Add, update TFT sanity checks (#22928) 2021-12-25 00:45:05 -06:00
InsanityAutomation
dffa56463e ️ Formbot ST7920 delays, intentional X2 pins (#22915)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-12-25 00:45:05 -06:00
Dmytro
ae98d2e5ea 🎨 Update MKS UI for no bed, extruder (#22938)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-12-25 00:45:05 -06:00
InsanityAutomation
5b1ef638ee 🐛 Fix IDEX + DISABLE_INACTIVE_EXTRUDER (#22925) 2021-12-25 00:45:05 -06:00
Stuart Pittaway
f3be03da20 M261 S I2C output format (#22890)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-12-25 00:45:05 -06:00
Tanguy Pruvot
64128a5bcb 🐛 Queue string followup (#22900) 2021-12-25 00:45:05 -06:00
Pyro-Fox
0018c94a79 🐛 LCD string followup (#22892) 2021-12-25 00:45:05 -06:00
Scott Lahteine
d48cb11537 🐛 Followup to F() in config_line
Followup to 1dafd1887e
2021-12-25 00:45:05 -06:00
Scott Lahteine
d9f7de7a24 🐛 ExtUI F() followups
Followup to 12b5d997a2
2021-12-25 00:45:04 -06:00
Scott Lahteine
3d102a77ca 🎨 Apply F() to kill / sendinfoscreen 2021-12-25 00:45:04 -06:00
Scott Lahteine
492d70424d 🎨 Apply F() to MKS UI errors, assets 2021-12-25 00:45:04 -06:00
Scott Lahteine
24dbeceb45 🎨 Apply F() to various reports 2021-12-25 00:45:04 -06:00
Scott Lahteine
cabd538fdd 🎨 Apply F() to G-code report header 2021-12-25 00:45:04 -06:00
Scott Lahteine
9cf1c3cf05 🎨 Apply F() to UTF-8/MMU2 string put 2021-12-25 00:45:04 -06:00
Scott Lahteine
c3ae221a10 🎨 Apply F() to some ExtUI functions 2021-12-25 00:31:06 -06:00
Scott Lahteine
7626d859a6 🎨 Apply F() to Host Actions strings 2021-12-25 00:20:45 -06:00
Scott Lahteine
360311f232 🎨 Apply F() to status message 2021-12-25 00:20:45 -06:00
Scott Lahteine
433eedd50f 🎨 Apply F() to serial macros 2021-12-25 00:20:45 -06:00
Scott Lahteine
46c53f6730 🎨 Apply F() to G-code suite and queue 2021-12-25 00:20:45 -06:00
Scott Lahteine
2b9ae0cc33 🎨 Apply F() to G-code subcommands 2021-12-25 00:20:45 -06:00
Scott Lahteine
433a27e475 🎨 Update F string declarations 2021-12-25 00:20:44 -06:00
Scott Lahteine
1de265ea5d 🎨 Axis name string interpolation, with examples (#22879) 2021-12-25 00:20:44 -06:00
Robby Candra
854ce63358 🐛 Fix loud_kill heater disable (#23314) 2021-12-18 16:35:22 -06:00
lukrow80
170f77fada 🐛 Fix homing current for extra axes (#23152)
Followup to #19112
2021-11-23 15:30:48 -06:00
InsanityAutomation
72b99bf1ba 🐛 Fix IDEX Duplication Mode Positioning (#22914)
Fixing #22538
2021-11-23 15:22:20 -06:00
Robby Candra
1a8583f4fc 🐛 Fix serial_data_available (#23160) 2021-11-23 15:20:26 -06:00
Scott Lahteine
49e8defda1 🔨 Move Creality 4.2.2 warning 2021-11-03 01:46:17 -05:00
Sebastien BLAISOT
e5c4e77eb0 🐛 Fix NEOPIXEL2_SEPARATE default color (#23057) 2021-11-03 00:32:20 -05:00
ellensp
8dd3f38ae9 🩹 Fill gaps in pinsDebug_list (#23051) 2021-11-03 00:32:20 -05:00
ellensp
044a7db370 🐛 Fix Y_SERIAL_RX_PIN for FYSETC S6 (#23055) 2021-11-03 00:32:20 -05:00
Robby Candra
8cecc626c6 🎨 Fix redefine warnings (#23061) 2021-11-03 00:32:20 -05:00
tombrazier
ee26fd0e05 🚸 Default T0 for M569, M906, M913 (#23020) 2021-10-26 16:07:46 -05:00
ellensp
a7ea6b5925 ️ Add'l PCINTs for Mega Extended (#23019) 2021-10-26 16:07:46 -05:00
Keith Bennett
2b8a804997 Octopus Pro V1.0 with STM32F429ZGT6 (#23008) 2021-10-26 16:07:46 -05:00
Keith Bennett
908335367e BTT Octopus Pro V1.0 (STM32F446ZET6) (#22971) 2021-10-26 16:05:51 -05:00
ellensp
a7415a052e 🐛 Fix børken E_DUAL_STEPPER_DRIVERS (#23017) 2021-10-26 16:01:55 -05:00
Miguel Risco-Castillo
f51e07b196 🐛 Fix Ender-3 V2 Enhanced SetFlow (#23016) 2021-10-26 16:01:45 -05:00
Lefteris Garyfalakis
5f35c539ce 🚸 E3V2 Enhanced cosmetic fixes (#23009) 2021-10-26 16:01:34 -05:00
Scott Lahteine
59503c6bbb 🎨 Apply F() to E3V2 titles, popups 2021-10-26 16:00:40 -05:00
InsanityAutomation
0309fce1fd Creality v2.4.S1 (Ender 7) board (#23010) 2021-10-26 15:55:03 -05:00
Dennis
f6d211f779 🐛 Fix JyersUI current positions (scaling) (#23005) 2021-10-26 15:53:37 -05:00
Scott Lahteine
f179e25cc6 🐛 More explicit allocation of solenoids
In reference to #22887
2021-10-26 15:52:26 -05:00
tombrazier
5b478cd5f6 🐛 Fix probe temp compensation maths (#23004) 2021-10-26 15:51:04 -05:00
ellensp
e852732ea8 🐛 Fix E3V2 width/height defines (#22994) 2021-10-21 23:58:48 -05:00
Augusto Zanellato
c9718e1ec0 Eryone Ery32 mini (STM32F103VET6) board (#22956) 2021-10-21 23:58:48 -05:00
Scott Lahteine
30158424e9 🔨 Fix older GCC CXXFLAGS warning 2021-10-19 13:01:25 -05:00
Scott Lahteine
5f6d9e9f42 🎨 Fix pinsDebug_list warnings 2021-10-19 13:01:06 -05:00
Scott Lahteine
b108741a8e 💡 Sub-include pins labels 2021-10-19 13:00:19 -05:00
Scott Lahteine
b4904cc53e 🔨 Delete after encrypt. Lerdge encrypt only once 2021-10-19 13:00:02 -05:00
Scott Lahteine
2c6fe45847 🔨 Update 'pio vscode init' detection 2021-10-19 13:00:02 -05:00
Scott Lahteine
fed72e4607 🔨 Use pull_request_target for check-pr 2021-10-19 11:18:43 -05:00
Scott Lahteine
c3a4e6b3c8 Warn about dummy thermistors 2021-10-18 02:00:53 -05:00
InsanityAutomation
5bfc5c1010 Fix JyersUI ZOffset Multiplication (#22975) 2021-10-18 02:00:53 -05:00
InsanityAutomation
1112d66fef Fix Tool Change Park (#22968) 2021-10-18 02:00:53 -05:00
Scott Lahteine
61b574f2ce 🔨 Improve 'mftest' error message 2021-10-18 02:00:53 -05:00
Scott Lahteine
522cdd5272 🔧 Safety feature warnings 2021-10-18 02:00:53 -05:00
Scott Lahteine
641bae625b 💡 Update old gnu.org links 2021-10-18 02:00:53 -05:00
InsanityAutomation
d10e20d6d2 Add option EVENT_GCODE_TOOLCHANGE_ALWAYS_RUN (#22960) 2021-10-18 02:00:53 -05:00
ellensp
b18aa933d1 🐛 Fix G33 homing current (#22909) 2021-10-12 21:20:08 -05:00
mks-viva
0f519ebf85 MKS Eagle (STM32F407VET6) board (#22897) 2021-10-12 21:20:08 -05:00
Minims
031f17b4f3 🩹 Adjust GTR 1.0 ST7920 display delay (#22904) 2021-10-12 21:20:08 -05:00
ellensp
036f763eaa 🎨 Define Octopus allocated endstop pins (#22882)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-10-12 21:20:08 -05:00
Scott Lahteine
d137f307eb 🎨 Tweak FORCE_INLINE 2021-10-12 21:20:08 -05:00
Mark
66048a5f27 ESP32 Panda_ZHU and Panda_M4 (#22644) 2021-10-12 21:20:08 -05:00
Scott Lahteine
b8c32e24d8 🎨 Rename MarlinUI::zoffset_overlay 2021-10-12 21:20:08 -05:00
Scott Lahteine
99d51af90f 🔨 Port libsdl2_net required for macOS simulator 2021-10-12 21:20:08 -05:00
Keith Bennett
f47ece0725 🐛 Fix MKS Robin Pro 1.0 LCD reset pin (#22937) 2021-10-12 21:20:08 -05:00
Keith Bennett
975089a954 🔧 Remove obsolete G34 sanity check (#22929) 2021-10-12 21:20:01 -05:00
George Fu
995230f597 🐛 Fix FYSETC Cheetah v2.0 build (#22926) 2021-10-12 21:19:55 -05:00
Keith Bennett
adf7072fa8 🐛 Fix SKR Mini E3 V2 I2C-based EEPROM (#22919)
Followup to #20609
2021-10-12 21:19:47 -05:00
Scott Lahteine
40cb7cf8d6 🔨 Add 'opt_find' to find matching options 2021-10-09 17:10:51 -05:00
ellensp
d0c0630c1f 🩹 Fix EXTRUDER 0 compile warning (#22868) 2021-10-04 01:12:35 -05:00
Sebastien Andrivet
11c829fb28 🐛 Fix ExtUI Pause messages (#22874) 2021-10-04 01:08:59 -05:00
ellensp
e0dda61501 🐛 Fix Arduino IDE compile error (#22877) 2021-10-04 00:27:25 -05:00
Scott Lahteine
a185ce22cf Marlin 2.0.9.2 2021-10-02 22:31:17 -05:00
Scott Lahteine
2a4ee1a482 MKS Robin pins updates 2021-10-02 22:31:17 -05:00
Cytown
3a82b8a251 🎨 Power-off tone followup (#22222) 2021-10-02 22:31:17 -05:00
Scott Lahteine
765b2b43f6 🎨 FTDI Eve Touch UI spinner enqueue string 2021-10-02 22:31:17 -05:00
Steven Haigh
2e602b9b88 🚑️ Fix DWIN_CompletedLeveling (#22851)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-10-02 22:31:17 -05:00
Malderin
5d3e75905d 🐛 E3V2 Mesh Viewer followup (#22850) 2021-10-02 22:31:16 -05:00
Scott Lahteine
eacb660e4b 🎨 Condense reverse-protection code 2021-10-02 22:31:16 -05:00
Scott Lahteine
021ceeba0b ️ Handle shared enable pins (#22824) 2021-10-02 22:31:16 -05:00
Miguel Risco-Castillo
25a131b942 E3V2 (Enhanced) Mesh Viewer (#22844) 2021-10-02 22:31:16 -05:00
Sola
b4c025a451 🚸 Fix MKS LVGL UI temperature set interface (#22848, #22842) 2021-10-02 22:31:16 -05:00
espr14
604a01cd1a 🎨 steps_to_mm => mm_per_step (#22847) 2021-10-02 22:31:16 -05:00
Tanguy Pruvot
064f91e9b0 🚸 TFT backlight PWM / brightness (#22841) 2021-10-02 22:31:16 -05:00
ellensp
34c9f64925 🔧 Sanity-check BLTOUCH_SET_5V_MODE on 5V pins (#22840)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-10-02 22:31:16 -05:00
Giuliano Zaro
060b705dab 🩹 Fix M412_report formatting (#22834) 2021-10-02 22:31:16 -05:00
Scott Lahteine
262cd757fc 🎨 Updated string macros 2021-10-02 22:31:16 -05:00
Steve Wills
dc4d2165f2 🐛 Add 'static' to fix 'duplicates' (#22826) 2021-10-02 22:31:16 -05:00
Manuel McLure
bcd2a483da 🐛 Fix M420 / M851 reports (#22829)
Followup to 79c72ed821
2021-10-02 22:31:16 -05:00
Scott Lahteine
d338872e85 🐛 Fix reset_hotend_offsets 2021-10-02 22:31:16 -05:00
Scott Lahteine
2c30b75268 🎨 Various multi-axis patches (#22823) 2021-10-02 22:31:16 -05:00
Sola
3deb54d0fd ️ Improve LVGL touch driver (#22817) 2021-10-02 22:31:16 -05:00
ellensp
9ae6351a02 🐛 Fix anycubic_i3mega_lcd debug macros (#22820) 2021-10-02 22:31:16 -05:00
Scott Lahteine
b7f95dc8d4 🩹 Add MarlinSPI to more HALs 2021-10-02 22:31:16 -05:00
Scott Lahteine
99647fa940 🎨 Less use of undef for RAMPS pins 2021-10-02 22:31:16 -05:00
Scott Lahteine
ea3df94213 🎨 Fix L64xx enable, clean up conditionals 2021-10-02 22:31:16 -05:00
Scott Lahteine
a37580e4e8 🩹 Remove extra #include, misc. style 2021-10-02 22:31:16 -05:00
Dan Royer
b3fd03198a Polargraph / Makelangelo kinematics (#22790) 2021-10-02 22:31:16 -05:00
Lefteris Garyfalakis
71b8a22d96 🌐 Update Greek language (#22799) 2021-10-02 22:31:16 -05:00
Scott Lahteine
669b68497c 🌐 Skip non-essential translations 2021-10-02 22:31:16 -05:00
Scott Lahteine
6014dd9c7b 🔨 Improve pins_set script 2021-10-02 22:31:16 -05:00
Scott Lahteine
5a54ba8316 🔨 Case-insensitive tests list 2021-10-02 22:31:16 -05:00
Scott Lahteine
be8e8260e2 🌐 Reduce language file sizes 2021-10-02 22:31:16 -05:00
Tanguy Pruvot
5d8ca7c944 🐛 STM32 ADC followup (#22798) 2021-10-02 22:31:16 -05:00
Tanguy Pruvot
0e8e215d4e 🚸 Wake up TFT for some events (#22788) 2021-10-02 22:31:16 -05:00
Scott Lahteine
6cf95509cd 🎨 Replace some infrequently-used macros 2021-10-02 22:31:16 -05:00
Scott Lahteine
ded719cc14 📝 Update some pins comments 2021-10-02 22:31:16 -05:00
Steven Haigh
2630eefcc4 🐛 STM32 ADC Resolution = 12 bit (or ADC_RESOLUTION) (#22789) 2021-10-02 22:31:16 -05:00
Scott Lahteine
2b54a9c0ff 🚸 Move fade item up 2021-10-02 22:31:16 -05:00
Scott Lahteine
bb1eb39ecb 🚸 Better bed position 2021-10-02 22:31:16 -05:00
Scott Lahteine
8b818f4ae5 💬 Add non-translated STR_DONE 2021-10-02 22:31:16 -05:00
Sola
4d113c2efd 🚸 Fix and improve MKS LVGL UI (#22783)
Co-authored-by: makerbase <4164049@qq.com>
Co-authored-by: MKS-Sean <56996910+MKS-Sean@users.noreply.github.com>
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-10-02 22:31:16 -05:00
Scott Lahteine
ab9609146f 💡 Adjust headers, formatting 2021-10-02 22:31:16 -05:00
InsanityAutomation
e7a25a45e6 Improve pause/filament change for ExtUI (#22655) 2021-10-02 22:31:15 -05:00
Scott Lahteine
023eaabc1c 🔧 Add MANUAL_FEEDRATE sanity-check 2021-10-02 22:31:15 -05:00
Scott Lahteine
03d7fbd755 🎨 Handle more pre-defined pins in pins_postprocess (#22771) 2021-10-02 22:31:15 -05:00
Miguel Risco-Castillo
89898181bd 🐛 E3V2 Brightness followup (#22821)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-10-02 22:31:15 -05:00
Scott Lahteine
e705a7724e 🎨 Consolidate Ender-3 V2 DWIN common code (#22778) 2021-10-02 22:31:15 -05:00
Keith Bennett
5b593da04d ✏️ Fix TFT field names (#22776) 2021-10-02 22:31:15 -05:00
mks-viva
9c4f9bc62a 🐛 Fix MKS Monster8 EEPROM issue (serial timer) (#22777) 2021-10-02 22:31:15 -05:00
Miguel Risco-Castillo
84d1619127 🩹 Fix DWIN Enhanced Tune menu during homing (#22773)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-10-02 22:31:15 -05:00
Dakkaron
1386e78369 M282 - Detach Servo (#22760) 2021-10-02 22:31:15 -05:00
Tanguy Pruvot
224371dfc6 TFT Screen/Backlight Sleep (#22617) 2021-10-02 22:31:15 -05:00
Scott Lahteine
033043218e 🔖 Configurations version 02000902 2021-10-02 22:31:15 -05:00
Desuuuu
fcbd99d941 🎨 Use ExtUI API where applicable 2021-10-02 22:31:15 -05:00
Roman Moravčík
209e5c27ca 🌐 Update Slovak language (#22752) 2021-10-02 22:31:15 -05:00
Scott Lahteine
92eb819aee 🐛 Fix old spindle/laser options 2021-10-02 22:31:15 -05:00
Scott Lahteine
de4eed33e4 🔧 SPINDLE_LASER_PWM => SPINDLE_LASER_USE_PWM 2021-10-02 22:31:15 -05:00
Scott Lahteine
59ad93560e 🐛 Fix CUSTOM_MENU_MAIN_SCRIPT_DONE
Fix #22762
2021-10-02 22:31:15 -05:00
Vert
50e52c0fdb 🐛 Fix ENABLED => EITHER typo (#22756) 2021-10-02 22:31:15 -05:00
mks-viva
e679fafaaf MKS Robin Nano V1.3 (STM32F407VET6) (#22749) 2021-10-02 22:31:15 -05:00
Scott Lahteine
6de25804eb 🎨 Tweak custom menu item code 2021-10-02 22:31:15 -05:00
Scott Lahteine
ded8ee0a1d 📌 Creality 4.3.1 board variants (#22704)
Co-authored-by: Chico <jjjm6000@gmail.com>
2021-10-02 22:31:15 -05:00
Luc Van Daele
44d54a0d01 🚸 G33 R and O options (#22707) 2021-10-02 22:31:15 -05:00
ellensp
6e1c997a0a 🐛 Fix Trigorilla Pro HAL/STM32 build offset (#22761) 2021-10-02 22:31:15 -05:00
Scott Lahteine
17c9450f0c 🎨 Apply more HAS_DELTA_SENSORLESS_PROBING 2021-10-02 22:31:15 -05:00
Scott Lahteine
d6a87aa75b 🐛 No probe enum for DELTA + SENSORLESS_PROBING
Fix #22729
2021-10-02 22:31:15 -05:00
Scott Lahteine
64acb9fe78 🩹 Warn about user feedback requirement 2021-10-02 22:31:15 -05:00
Scott Lahteine
22bf774d61 🐛 Fix LPC1768 SD-based EEPROM debug
Fixes #22746
2021-10-02 22:31:15 -05:00
Marcio T
e2a790b759 🚸 Enhance FTDI Eve Touch UI file select dialog (#22742) 2021-10-02 22:31:15 -05:00
Scott Lahteine
ee1c1034e5 🩹 Fix TOUCH_UI_FTDI_EVE warnings 2021-10-02 22:31:15 -05:00
Scott Lahteine
b661795ae5 🎨 Fewer serial macros 2021-10-02 22:31:15 -05:00
Scott Lahteine
6d96c221bd 🎨 Standardize G-code reporting 2021-10-02 22:31:15 -05:00
tome9111991
a596faf4e5 🐛 Fix JyersUI for LPC176x (#22745)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-10-02 22:31:15 -05:00
Scott Lahteine
3ee27e7e35 🐛 Followup to JyersUI 2021-10-02 22:31:15 -05:00
Miguel Risco-Castillo
6cf2cf7bd4 Ender-3 V2 CrealityUI Enhanced (#21942, #22728, #22733)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-10-02 22:31:15 -05:00
Jyers
54416f780d Ender-3 V2 with Jyers UI (#22422) 2021-10-02 22:31:15 -05:00
mrv96
9d73fcb959 Add DGUS_LCD_UI_RELOADED (#21931) 2021-10-02 22:31:15 -05:00
Scott Lahteine
f434915ad6 🚸 Show ExtUI message for PID_STARTED 2021-10-02 22:31:15 -05:00
Scott Lahteine
bbce951666 🎨 Misc. code cleanup 2021-10-02 22:31:15 -05:00
Scott Lahteine
8a4fec9460 🎨 Misc. Spindle/Laser (etc.) cleanup 2021-10-02 22:31:15 -05:00
Scott Lahteine
3a83516232 🚸 Per-hotend Watch items 2021-10-02 22:31:14 -05:00
Scott Lahteine
03344a0947 🎨 MarlinUI for E3V2 tweaks 2021-10-02 22:31:14 -05:00
Scott Lahteine
72d7bbbbf6 🔧 Sanity checks for Ender 3 V2 2021-10-02 22:31:14 -05:00
dotdash32
253f91765d 🎨 Use largest default ST9720 delays (#22713)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-10-02 22:31:14 -05:00
Dan
4c7f8696ab Protoneer CNC-Shield 3.00 (#22715) 2021-10-02 22:31:14 -05:00
Justin Nesselrotte
f94de97cdb Index Pick-and-Place board Rev.3 (#22647)
Co-authored-by: Gonçalo Pereira <goncalo_pereira@outlook.pt>
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-10-02 22:31:14 -05:00
Tanguy Pruvot
bae19a3737 🌐 Update "Homing" for some languages (#22706) 2021-10-02 22:31:14 -05:00
Scott Lahteine
cc3abcd2c5 🩹 Fix 'ms' warning 2021-10-02 22:31:14 -05:00
Thomas White
9e18a543fa Homing submenu option (#22692) 2021-10-02 22:31:14 -05:00
Elliott Indiran
13bccd8441 📝 Update PID_PARAMS_PER_HOTEND comment (#22694)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-10-02 22:31:14 -05:00
Tanguy Pruvot
5af3dbdb30 🐛 Fix Mixing code typos (#22697) 2021-10-02 22:31:14 -05:00
DvoraNoob
9f43452fbd 🚸 MKS UI extrusion speed/steps config (#22656) 2021-10-02 22:31:14 -05:00
Tanguy Pruvot
61364906b3 🔨 Enhance Lerdge pins, TFTs, and variants (#22658) 2021-10-02 22:31:14 -05:00
Tanguy Pruvot
105fd73c28 🩹 Allow M42 S0/1 analogWrite on PWM pins (STM32) (#22631) 2021-10-02 22:31:14 -05:00
ellensp
b4b69c0de3 🐛 BTT Octopus X MAX pin for IDEX (#22654) 2021-10-02 22:31:14 -05:00
Vert
a37be7236b GT2560 V4.x A20 (#22664) 2021-10-02 22:31:14 -05:00
Scott Lahteine
bba7c0069f Creality3D CR-30 PrintMill 2021-10-02 22:31:14 -05:00
Scott Lahteine
8916b05cb4 🎨 Tweak pins, comment formatting 2021-10-02 22:31:14 -05:00
Scott Lahteine
99028376e6 ️ Clean up Info Menu 2021-10-02 22:31:14 -05:00
Scott Lahteine
c2796fbf3b 🌐 Tweak language selection 2021-10-02 22:31:14 -05:00
Scott Lahteine
37777a78bf 🐛 Followup to CrealityUI cleanup
Followup to #22586
2021-10-02 22:31:14 -05:00
Scott Lahteine
0da0aa9b2e ️ Add PROBE_PT_LAST_STOW 2021-09-12 19:30:35 -05:00
ellensp
9ffd3ed2e4 🔧 Set Z_PROBE_OFFSET_RANGE_MIN/MAX for MBL (#22663) 2021-09-12 19:30:32 -05:00
Scott Lahteine
1176c10860 🩹 Clean up BTT_SKR_CR6
Fixes #22665
2021-09-12 19:30:29 -05:00
Jason Smith
2e9f819d5f 🚸 Improve Tramming Wizard usability (#22672) 2021-09-12 19:30:27 -05:00
ellensp
19353fc98c ️ Revert MAX31865 recent changes (#22660) 2021-09-12 19:30:24 -05:00
Christian Schuster
b21d62543f 🩹 Fix LPC176x M43 formatting (#22680) 2021-09-12 19:30:21 -05:00
Zs.Antal
a42ecb843e 🌐 Update Hungarian language (#22678) 2021-09-12 19:30:19 -05:00
Giuliano Zaro
93ff2cb086 🌐 Update Italian language (#22645) 2021-09-12 19:30:16 -05:00
Scott Lahteine
086fa0f0a7 🔨 Fix HAL/STM32 F103Zx builds (#22610) 2021-09-12 19:30:13 -05:00
Scott Lahteine
5e97f37a78 🎨 screws_tilt_adjust_pos => tramming_points 2021-09-12 19:30:05 -05:00
Scott Lahteine
c14b162b9e 🌐 MSG_PROBING_MESH => MSG_PROBING_POINT 2021-09-12 19:30:00 -05:00
Scott Lahteine
61c000d96f 🔨 Three columns in mftest menu 2021-09-12 19:29:56 -05:00
Marcio T
c06a183f28 ️ Fix, enhance FTDI Eve Touch UI (#22619) 2021-09-12 19:29:52 -05:00
Marcio T
d1db17c6f5 ️ Enhance and fix FTDI Eve Touch UI file select (#22651) 2021-09-12 19:29:49 -05:00
Scott Lahteine
d336a4d71b 🐛 Fix SDSUPPORT for SKR CR-6 (#22668)
Co-authored-by: Sebastiaan Dammann <sebastiaandammann@outlook.com>
2021-09-12 19:29:46 -05:00
Scott Lahteine
796309c903 ️ Improve G2/G3 arc handling (#22599) 2021-09-12 19:29:44 -05:00
Scott Lahteine
53df1dfe4d 🩹 Sensorless homing tweak 2021-09-12 19:29:40 -05:00
Scott Lahteine
6769718264 🎨 Update more EXP Headers 2021-09-12 19:28:07 -05:00
Scott Lahteine
7704d84419 🎨 EXP headers, ST7920 delays (#22641) 2021-09-12 19:27:38 -05:00
Scott Lahteine
9b0e196ba2 📝 AlephObjects => LulzBot 2021-09-12 19:19:02 -05:00
Tanguy Pruvot
fd594ab176 🔨 Set Longer3D timers in variant (#22632) 2021-09-12 19:18:27 -05:00
Tanguy Pruvot
8cadcf6bb6 🩹 Tweak startup message (#22633) 2021-09-12 19:18:23 -05:00
DerAndere
22fdfa9629 🔨 Melzi with OptiBoot build (#22630) 2021-09-12 19:18:19 -05:00
Jin
a0ebe7c8ff 🩹 Use <SoftwareSPI.h> in MAX31865 lib (#22618) 2021-09-12 19:18:15 -05:00
Ryan V1
125c5bc345 🐛 Fix Multi-Endstop stepping (#22625) 2021-09-12 19:18:11 -05:00
Scott Lahteine
95f27cf339 🎨 EXP1/2 headers and pins cleanup (#22628) 2021-09-12 19:18:07 -05:00
Scott Lahteine
02ae4bc9b9 New board TH3D_EZBOARD_LITE_V2 (#22621) 2021-09-12 19:18:04 -05:00
Scott Lahteine
6bf2be66ed 🎨 Define FYSETC S6 and TH3D EZBoard EXP1/2 pins 2021-09-12 19:17:59 -05:00
Chris Pepper
d8ef23eda7 🐛 Fix LPC176x M43 Pins Debugging (#22611) 2021-09-12 19:17:56 -05:00
Scott Lahteine
73ef26a106 MarlinUI for Ender 3 v2 DWIN LCD (#22594)
Co-Authored-By: Taylor Talkington <taylor.talkington@gmail.com>
2021-09-12 19:17:52 -05:00
ellensp
d51e70083d BOARD_RUMBA32_BTT (#22607) 2021-09-12 19:17:48 -05:00
Scott Lahteine
dc5ae16861 🎨 Misc code and spacing cleanup 2021-09-12 19:17:24 -05:00
Scott Lahteine
0aa87af82f 🎨 Tweak TMC software serial pins 2021-09-12 19:17:18 -05:00
Keith Bennett
0be98b98a7 ⬆️ TMCStepper 0.7.3 (#22608) 2021-09-12 19:17:14 -05:00
Fjederhaek
f7ce107ac6 🐛 Update H-bot / Core for 6-axis (#22600)
Followup to #19112
2021-09-12 19:17:10 -05:00
Scott Lahteine
3f772df568 🌐 Update menu titles, add more IJK (#22605)
Followup to #19112
2021-09-12 19:17:05 -05:00
Scott Lahteine
caa6ec0519 🐛 Show bed size as 'work:' in M115
Fixes #22598
2021-09-12 19:17:01 -05:00
Scott Lahteine
30665737dc 🎨 Fix some formatting, F() versus PSTR() 2021-09-12 19:16:13 -05:00
mks-viva
0c401bddad MKS MINI12864 V3 for MKS Robin Nano V2/3 (#22285) 2021-09-12 18:31:47 -05:00
Scott Lahteine
eb0d80cb19 🎨 Update MKSPWC, some other pins (#22557) 2021-08-18 20:39:41 -05:00
charlespick
e62486a610 M76 Host Pause Feature (#21738) 2021-08-18 20:39:41 -05:00
chendo
51d954a4fd D576 Buffer Monitoring (#19674) 2021-08-18 20:39:41 -05:00
Scott Lahteine
416234f43a Add TEMP_SENSOR_BOARD (#22279, #22342, #22343, #22344, #22350) 2021-08-18 20:39:41 -05:00
Katelyn Schiesser
9ddb4de70a ♻️ Consolidate PSU_CONTROL (#22304) 2021-08-18 20:39:22 -05:00
Cytown
9741be5966 Power-off confirm / beep options (#22191) 2021-08-18 20:39:22 -05:00
Vert
ecb625a666 Mixer Presets (#21562) 2021-08-18 20:39:22 -05:00
Scott Lahteine
de7f6c425b ♻️ Clean up CrealityUI and MarlinUI (#22586) 2021-08-18 20:39:20 -05:00
Scott Lahteine
718227a94c 📌 Disregard TMCStepper 0.7.2 2021-08-18 20:37:26 -05:00
Tanguy Pruvot
bb12ebcca6 🐛 Fix STM32 delay, double reset in FSMC TFT init (#22584) 2021-08-18 20:36:21 -05:00
Tanguy Pruvot
2e14bf15dd 🐛 Fix Longer3D PWM/timer pins (#22583) 2021-08-18 20:36:21 -05:00
Jason Smith
11070b79a3 ️ Simplify PROBING_STEPPERS_OFF (#22581) 2021-08-18 20:36:11 -05:00
Keith Bennett
4219ae9106 ️ Revert ABL G29 feedrate (#22574)
Reverts 9130f58
2021-08-18 20:35:58 -05:00
Scott Lahteine
f803d74bc9 💚 Update STM32F103RET6_creality test path 2021-08-18 20:33:19 -05:00
Scott Lahteine
f0bca66d45 🐛 Fix LCD_COL_X_RJ
Followup to #22471
2021-08-18 20:31:49 -05:00
Tanguy Pruvot
b3c8d9bec8 🚸 Fewer CRs in settings report (#22560) 2021-08-18 20:31:49 -05:00
BigTreeTech
4a7d3a336b 🐛 Fix some BTT SKR2 pins (#22558) 2021-08-18 20:31:49 -05:00
Scott Lahteine
65e39116cb 🔨 Use zip link for MarlinSimUI 2021-08-18 20:31:49 -05:00
Tanguy Pruvot
0c97a2afdc 🐛 Fix M575 port index output (#22553) 2021-08-18 20:29:56 -05:00
Scott Lahteine
9c19d4705e 🎨 Tweak M73 condition 2021-08-18 20:29:56 -05:00
ellensp
be55401e3c 🚸 Better error for MOTHERBOARD not defined (#22551) 2021-08-18 20:29:56 -05:00
luzpaz
c612b56bc1 🐛 Spellcheck comments (#22496)
codespell -q 3 --builtin=clear,rare,informal,code -S ./Marlin/src/lcd/language -L alo,amin,endcode,stdio,uint
2021-08-18 20:29:56 -05:00
ldursw
8385be25cd 🔨 Fix (RRF E3) RX/TX buffer size override (#22475) 2021-08-18 20:29:56 -05:00
Miguel Risco-Castillo
2a323d0a8e 🐛 Fix Ender-3 v2 language init (#22550) 2021-08-18 20:29:56 -05:00
Scott Lahteine
c544711f14 🚚 Relocate and adjust DWIN E3V2 (#22471) 2021-08-18 20:29:56 -05:00
Scott Lahteine
a348f8e02c 🔨 Fix: BIGTREE_E3_RRF doesn't use user RX/TX sizes
Fixes #22466. Regression from #22377.
2021-08-18 20:29:56 -05:00
ellensp
42d9b4c91f 📝 Document DGUS display options (#22443) 2021-08-18 20:29:56 -05:00
Scott Lahteine
7d0efb452a 🎨 Update HAL/STM32 wrappers
Followup to #22537
2021-08-18 20:29:56 -05:00
Scott Lahteine
418743cf6a 🚸 Set M122 interval only with S0 or Pn 2021-08-10 04:07:59 -05:00
Scott Lahteine
eafd0ed765 🐛 Use delete [] for new [] 2021-08-10 04:07:59 -05:00
Scott Lahteine
0c0f84b659 🐛 Fix CoreXY plus extra axes
See #22490
2021-08-10 04:07:59 -05:00
Marcio T
166324fc7b 🐛 Fix and improve FTDI Eve Touch UI (#22361, #22439, #22459, #22468, #22500, #22530) 2021-08-09 01:09:08 -05:00
ellensp
3924545912 Zonestar ZM3E2, ZM3E4 V1, ZM3E4 V2 (#22498) 2021-08-09 01:02:06 -05:00
Tanguy Pruvot
86e78410d6 🚑️ Init FastIO before anything else (#22508) 2021-08-09 00:59:16 -05:00
Scott Lahteine
157c60c93b 🌐 Level Corners => Bed Tramming 2021-08-09 00:59:16 -05:00
George Fu
d7f3228ec6 🔨 Fix FYSETC S6 envs (#22421)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-08-09 00:59:16 -05:00
Scott Lahteine
c56ac0c34a 🎨 Misc. Cleanup 2021-08-09 00:59:16 -05:00
Scott Lahteine
e71fa2b649 🎨 Add DWIN_StatusChanged_P 2021-08-09 00:59:16 -05:00
Scott Lahteine
fefde2a644 🐛 Fix fan index for Singlenozzle, chamber fan
Fixes #22512
Followup to #19152, #19519
2021-08-09 00:37:55 -05:00
Scott Lahteine
a668a9d302 🏗️ Define HAL_STM32 for HAL/STM32 (#22537) 2021-08-09 00:37:55 -05:00
Jason Smith
e3c294dc9b 🐛 Fix some Simulator on Windows issues (#22516) 2021-08-09 00:27:35 -05:00
Chris Pepper
dc67705049 Simulator HAL and build targets (#22418) 2021-08-09 00:27:31 -05:00
mks-viva
e0fa6ed4f8 📌 MKS pins for PSU_CONTROL (#22528) 2021-08-09 00:25:31 -05:00
ellensp
a4cd654e48 🐛 Fix MKS 'USB Flash MSC' environments (#22515) 2021-08-09 00:25:31 -05:00
mks-viva
06b963d9ea MKS Monster8 board (#22455) 2021-08-09 00:25:31 -05:00
Scott Lahteine
a36a6685ae 🐛 Fix up endstop flags (#22487, #22525) 2021-08-09 00:25:31 -05:00
DerAndere
83b8a0f2ac 🐛 Followup to 6 linear axes (#22482) 2021-08-09 00:25:31 -05:00
Grayson
1866f51d08 🐛 Fix G38 with probe on Z_MIN (#22452) 2021-08-09 00:25:31 -05:00
Scott Lahteine
4b2fdbeeb1 M256 LCD brightness (#22478) 2021-08-09 00:24:57 -05:00
Tanguy Pruvot
eeac85642f 🔨 Offset/encrypt/rename for Maple STM32F1 (#22477) 2021-08-09 00:24:57 -05:00
Scott Lahteine
0bbe85d3e7 🚸 Fix BLTouch spelling 2021-08-09 00:24:57 -05:00
Tanguy Pruvot
0af762d609 🚸 Prevent M42 unintended pin change to output (#22493) 2021-08-09 00:24:57 -05:00
Scott Lahteine
b567717762 🐛 Prevent ABL G29 setting a funky feedrate
See #22472
2021-08-09 00:20:42 -05:00
Tanguy Pruvot
2b2a8355c9 🐛 Fix Longer3D STM32 boot, add Maple test (#22473) 2021-08-09 00:20:12 -05:00
Scott Lahteine
ac64d6915f 🐛 Fix report_a_position ABC criteria 2021-08-09 00:17:25 -05:00
Tanguy Pruvot
1bee38a1c1 🎨 Fix "'EEPROM' unused" warning (#22511) 2021-08-09 00:15:44 -05:00
Scott Lahteine
4e54fa2320 💚 Fix tests for new sanity-checks 2021-08-09 00:14:51 -05:00
Scott Lahteine
eba0ae4ee1 🔧 Sanity-check DEFAULT_EJERK with LIN_ADVANCE
See #20649
2021-08-09 00:14:51 -05:00
Scott Lahteine
d49a26bcc6 🔧 Sanity-check Mixing plus Disable Inactive Extruder
See #22166
2021-08-09 00:14:51 -05:00
Scott Lahteine
a2759bc245 🐛 Allow SKR Pro CONTROLLER_FAN_PIN override
Followup to #22411
2021-08-09 00:12:53 -05:00
Bob Anthony
f642d8b79e 🐛 Fix extra E move in toolchange with ..._NO_RETURN (#22504) 2021-08-09 00:12:53 -05:00
ellensp
bc773e9c96 🐛 Fix sprintf_P compile error (Maple) (#22479) 2021-08-09 00:02:57 -05:00
Scott Lahteine
ffde284288 🎨 Adjust settings.cpp indent 2021-08-09 00:01:29 -05:00
Tanguy Pruvot
e3b05dd6c2 🔨 Update Longer and Chitu envs (#22467) 2021-08-09 00:00:52 -05:00
Malderin
8e84d24737 🐛 Fix custom menus on MKS UI (#22470) 2021-08-09 00:00:52 -05:00
Scott Lahteine
981191660d 🐛 Fix custom menus on TFT LVGL
Fixes #21423. Regression from #18177.
2021-08-08 23:59:17 -05:00
Scott Lahteine
245b6e0884 Custom logging for MBL 2021-08-08 23:59:00 -05:00
ellensp
c753071961 🐛 Fix DGUS displays compile (#22464) 2021-08-08 23:58:18 -05:00
Scott Lahteine
22ef6362ae 🔨 Fix: BIGTREE_E3_RRF doesn't use user RX/TX sizes (#22475)
Fixes #22466. Regression from #22377.
2021-08-08 23:57:38 -05:00
Scott Lahteine
80f8ec94aa 🔧 HAS_CUSTOM_PROBE_PIN => USES_Z_MIN_PROBE_PIN 2021-08-08 23:54:48 -05:00
mks-viva
381c5908b4 📺 MKS MINI12864 V3 for Robin E3P, etc. (#22453) 2021-08-08 23:54:07 -05:00
ellensp
fbb5732dee 🐛 SAV_3DGLCD conditionals (#22447) 2021-08-08 23:52:56 -05:00
George Fu
90ed772590 ️ Larger FYSETC S6 I2C EEPROM size (#22424) 2021-08-08 23:52:56 -05:00
Scott Lahteine
3e559d5c1c 🎨 abs => ABS 2021-08-08 23:52:56 -05:00
Marcio T
eb8649ba42 📺 Fix and optimize FTDI Eve Touch Interface (#22427) 2021-08-08 23:52:56 -05:00
vyacheslav-shubin
99f917c022 🐛 Reset workDirDepth in cdroot() (#22441) 2021-08-08 23:51:49 -05:00
borland1
55cf3bd5ee 🐛 Fix LCD Menu MBL Z-Offset Adjustment (#22450) 2021-08-08 23:51:33 -05:00
Keith Bennett
776ededca4 🐛 Fix SKR Pro bad directive (#22438) 2021-08-08 23:51:04 -05:00
Tanguy Pruvot
b16a72a7e6 🐛 Fix Longer3D SDSS / SD_SS (#22444) 2021-08-08 23:50:38 -05:00
InsanityAutomation
f9809ca75a 🐛 Fix delta calibrate manual move scale (#22430) 2021-08-08 23:47:14 -05:00
Scott Lahteine
e402f43c02 🎨 NULL => nullptr 2021-08-08 23:47:14 -05:00
Scott Lahteine
2aad79fa15 🐛 Fix some board names 2021-08-08 23:47:14 -05:00
tome9111991
89e84fec61 📝 SKR E3 Turbo custom cable description (#22426) 2021-08-08 23:45:45 -05:00
Luke Harrison
8d34a99d8f 🔧 Octopus SPI display pins, fix USB build env (#22412) 2021-08-08 23:45:06 -05:00
luzpaz
15cf97f0d5 🎨 Spellcheck code (#22531) 2021-08-08 21:40:52 -05:00
ellensp
c158d8023e 💚 Specify compatible Teensy @4.12 (#22448) 2021-08-08 21:38:22 -05:00
Tanguy Pruvot
bc68664c3b 🚑️ Init FastIO before anything else (#22508) 2021-08-08 21:38:22 -05:00
Scott Lahteine
924e4f95c8 🚸 Ask for bed leveling on bug form 2021-08-04 16:48:30 -05:00
Scott Lahteine
35df24e1cb 🐛 One-based G35 point index output 2021-07-30 02:41:40 -05:00
Scott Lahteine
74b0133bc9 🐛 Fix 5-axis no extruder compile
Fixes #22446
2021-07-30 02:41:02 -05:00
Scott Lahteine
12581bcc44 🐛 Fix 3-point leveling position
See #22457. Fixes a G29 regression from #19112.
2021-07-30 02:41:02 -05:00
Scott Lahteine
c7c56ac45f 🐛 Fix PAUSE_MESSAGE_PAUSING=>PARKING
Fixes #22250. Regression from #17460.
2021-07-30 02:40:18 -05:00
Serhiy-K
603b65e843 Laser support for TFT GLCD (#22391) 2021-07-30 02:38:26 -05:00
Scott Lahteine
2e5e5c4a1d 🎨 BTT SKR Pro pins auto-assign (#22411)
Co-authored-by: MarkusThur <83773817+MarkusThur@users.noreply.github.com>
2021-07-30 02:38:26 -05:00
Scott Lahteine
bcc31f68c6 🐛 Fix PAUSE_PROBE_DEPLOY_WHEN_TRIGGERED
Fixes #22295. Regression from #20241.
2021-07-30 02:37:36 -05:00
ellensp
f8f68f9259 🎨 MKS Hardware Test followup (#22414)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-07-27 16:39:07 -05:00
Katelyn Schiesser
7773504afa ♻️ Refactor STM32 ini files (#22377)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-07-21 00:28:26 -05:00
VTXtruder
6b73b6c966 Chitu3D V9 board (#22401)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-07-21 00:28:26 -05:00
Tanguy Pruvot
29dde9be2b 🐛 Fix Longer3D build environment (#22378) 2021-07-21 00:28:26 -05:00
ellensp
b6cb56f396 🔨 More HAL/STM32 targets (#22358, #22369) 2021-07-21 00:06:42 -05:00
ellensp
8283f1577a 🐛 Fix STATUS_COMBINE_HEATERS compile (#22405) 2021-07-21 00:06:42 -05:00
Mike La Spina
0e9eb5f6ce 🐛 Fix Ammeter display on DOGM (#22384) 2021-07-21 00:04:46 -05:00
Katelyn Schiesser
61d0b08298 🎨 Prefer DELAY_NS over DELAY_CYCLES (#22382) 2021-07-21 00:00:16 -05:00
Scott Lahteine
b57f73a488 🎨 Add MMU2 enabled() accessor 2021-07-21 00:00:16 -05:00
Yash
40b99d8084 🐛 Fix G2/G3 angular motion calculation (#22407) 2021-07-20 23:56:22 -05:00
vyacheslav-shubin
c944e4fc60 🩹 Init var to suppress invalid warning (#22396) 2021-07-20 23:54:57 -05:00
Katelyn Schiesser
eebab93358 🐛 Ensure Software SPI pins for Max Thermocouple (#22389) 2021-07-20 23:54:10 -05:00
Scott Lahteine
0074ea5e0b 🐛 Change font for selected language (#22381) 2021-07-20 23:53:13 -05:00
Roxy-3D
e190684fe6 🐛 Fix UBL G29 J - Vector3 regression 2021-07-20 23:50:47 -05:00
Katelyn Schiesser
69c1e79c30 🐛 Fix BTC_SAMPLE_RES sanity check (#22394) 2021-07-20 23:50:47 -05:00
Keith Bennett
b3a3d81406 🎨 Fix unused lambda warning (#22399) 2021-07-20 23:50:47 -05:00
Malderin
f1161a9a5f 🐛 Fix MKS UI compile (#22388, #22395)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-07-20 23:50:47 -05:00
squiddity
95f0970d85 🐛 Fix M913 typos (#22385) 2021-07-18 19:26:56 -05:00
Scott Lahteine
31a3cc6278 🐛 No translated serial strings 2021-07-18 00:47:30 -05:00
mks-viva
6e7c20e78e MKS Mini12864 v3 for Robin E3/E3D (#22368) 2021-07-17 02:46:38 -05:00
Cytown
165ae139d5 🎨 Power-off tone followup (#22222) 2021-07-17 02:46:38 -05:00
Scott Lahteine
42eb2347d4 🎨 Strip trailing whitespace 2021-07-17 02:41:31 -05:00
mks-viva
3ab6789807 MKS MINI12864 V3 for MKS Robin Nano V2/3 (#22285) 2021-07-17 02:41:31 -05:00
Katelyn Schiesser
5054dc6ea2 🐛 Redundant Temp Sensor followup (#22196) 2021-07-17 02:41:31 -05:00
lujios
ee54cd4bd7 ️ Improve Sensorless homing/probing for G28, G33 (#21899) 2021-07-17 02:41:31 -05:00
Cytown
399a240f84 🚸 Retain power during Pause (#22227) 2021-07-17 02:41:31 -05:00
Scott Lahteine
fef76a76a3 🔨 Consolidate STM32 extra_scripts (#22365) 2021-07-17 02:41:31 -05:00
Keith Bennett
a5459a68a6 💡 Update FLYmaker comments, URL (#22355) 2021-07-17 02:35:44 -05:00
Keith Bennett
b44d4746c8 🩹 FLYmaker FLY Mini followup (#22364)
Followup to #22355, #22356.
2021-07-17 02:35:44 -05:00
ellensp
6f9194eb29 FLY Mini for stm32duino (#22356) 2021-07-17 02:35:44 -05:00
Krzysztof Błażewicz
6b2370fd7c DWIN LCD for BTT SKR Mini E3 (#22288) 2021-07-17 02:32:25 -05:00
Mihai
ee64081696 Enable 'M20 L' with LONG_FILENAME_HOST_SUPPORT (#22271) 2021-07-17 02:32:25 -05:00
InsanityAutomation
a35c234ce1 🐛 Fix redundant heater / sensor pin assignments (#22309) 2021-07-17 02:32:25 -05:00
Mike La Spina
5026797310 🏗️ Allow headless Flow Meter (#22234) 2021-07-17 02:31:54 -05:00
Victor Oliveira
8334e92b6f MSC Support for STM32 + SDIO boards -> SKR 2 (#22354) 2021-07-17 02:31:54 -05:00
Katelyn Schiesser
8cf15e8546 🎨 Call millis() once in manage_inactivity (#22363) 2021-07-17 02:31:54 -05:00
Skruppy
7ae099f2be 🐛 Fix AVR DELAY_US int overflow (#22268) 2021-07-17 02:31:54 -05:00
Scott Lahteine
6d191d12c9 🔨 Clean up build scripts (#22264)
* Add 10K to marlin_blackSTM32F407VET6 (typo?)
* Document custom build scripts.
* Add a Robin common build script.
* Extraneous .ldscript specifiers
2021-07-17 02:31:54 -05:00
bilsef
e213246ab9 M115: Axis Count (#22219) 2021-07-17 02:31:54 -05:00
Scott Lahteine
650e1dd1d2 🎨 Minor cleanup of TFT/FSMC pins 2021-07-17 02:28:43 -05:00
Taylor Talkington
87cc387321 🐛 Fix Filament Change menu (#22370)
Followup to #22277
2021-07-17 02:15:17 -05:00
Katelyn Schiesser
a7cfdeef21 🐛 Fix Einsy RAMBo FAN1_PIN (#22305) 2021-07-17 01:54:27 -05:00
Scott Lahteine
3750ab5c8b 📝 Tom's 3D Forums discontinued 2021-07-17 01:54:27 -05:00
ellensp
a0704cb14f 🐛 Define MT_DET_PIN_INVERTING for MKS_ROBIN_NANO_V3 (#22348) 2021-07-17 01:54:27 -05:00
MKS-Sean
cad2f69687 MKS Robin Nano v3 + TFT_LVGL_UI + WiFi module (#22109) 2021-07-17 01:54:27 -05:00
mks-viva
31fbec9a00 🐛 Fix Robin Nano V3 X_DIAG_PIN (#22340) 2021-07-17 01:54:27 -05:00
Scott Lahteine
b1c5afaf3c 🐛 Fix SD pins for MKS Robin Lite 2021-07-17 01:54:27 -05:00
Scott Lahteine
bc459a76f4 🐛 TM3D fixes and improvements
Co-Authored-By: InsanityAutomation <38436470+InsanityAutomation@users.noreply.github.com>
2021-07-17 01:54:27 -05:00
Marcio T
dd8ac689c3 ️ Fixes to FTDI Eve Touch UI (#22347) 2021-07-17 01:54:27 -05:00
ellensp
24f0613b9f 🎨 Optional Custom Button description (#22336) 2021-07-17 01:54:27 -05:00
Mike La Spina
00b27b1aa7 🔨 Update LPC176x platform to 0.2.8 (#22333) 2021-07-17 01:54:27 -05:00
Scott Lahteine
f76b063e58 🚸 M666: Fix value filter, add report (#22337)
In reference to #22325
2021-07-17 01:54:27 -05:00
Scott Lahteine
c746b1a2ae 🚸 Limit LCD delta endstop adjustment like M666
In reference to #22325
2021-07-17 01:54:27 -05:00
InsanityAutomation
be13220e32 📺 ExtUI pause state response (#22164) 2021-07-17 01:54:27 -05:00
Scott Lahteine
78c2eb6876 🎨 Check flags without ENABLED 2021-07-17 01:54:27 -05:00
Tanguy Pruvot
fea4e06484 🌐 Update French language (#22323) 2021-07-17 01:54:27 -05:00
Zs.Antal
91f11e0d41 🌐 Update Hungarian language (#22307) 2021-07-17 01:54:27 -05:00
BigTreeTech
573b8a62d9 🐛 Fixes for BTT Octopus (#22314) 2021-07-17 01:54:27 -05:00
Skruppy
eafb94e72d 🐛 Fix HAS_KILL && SOFT_RESET_ON_KILL soft reset button logic (#22269) 2021-07-17 01:54:27 -05:00
Scott Lahteine
69b44c2309 📌 Require U8glib-HAL@~0.5.0 (#22324) 2021-07-09 16:03:41 -05:00
Katelyn Schiesser
e9a1c10b34 🐛 Fix manage_heaters recursion on servo move (#22313)
Followup to e297748b22
2021-07-08 23:48:51 -05:00
Scott Lahteine
304a926b0a 👷 Bump date on /Version.h 2021-07-06 20:44:34 -05:00
Marcio T
1bb61f27e9 📺 Assorted small FTDI Eve Touch UI fixes (#22273) 2021-07-06 20:44:34 -05:00
Serhiy-K
091bdb79e6 🌐 Update Russian and Ukrainian (#22290) 2021-07-06 20:44:34 -05:00
Scott Lahteine
968c3b7e4e ♻️ Fix up and use YESNO_ITEM macros 2021-07-06 20:44:34 -05:00
ldursw
ed14d14819 🐛 Fix Maple / STM32 serial buffer (#22292) 2021-07-06 20:44:34 -05:00
George Fu
cae391bb48 🔨 FYSETC S6 small bootloader target (#22207)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-07-06 20:44:34 -05:00
Cytown
2753b4eeaa 🚸 Filament Change add confirm step (#22277) 2021-07-06 20:44:34 -05:00
ellensp
6d05da0e5e 🐛 Fix Arduino IDE build (TOUCH_UI_FTDI_EVE includes) (#22276)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-07-06 20:44:34 -05:00
Scott Lahteine
4235e23c7b 📝 Update Z_SAFE_HOMING description 2021-07-01 19:45:28 -05:00
Glought
cd01421ac3 🚸 Sanity-check Slim LCD menus with Probe Offset Wizard (#22259) 2021-06-29 15:36:52 -05:00
Katelyn Schiesser
aa13c78458 🐛 Fix ExtUI 'lcd_clicked' definition (#22257) 2021-06-29 12:36:22 -05:00
Katelyn Schiesser
b1c5dd985e 🐛 Fix PTC/BTC whole number tests (#22255) 2021-06-28 20:44:12 -05:00
tome9111991
3109a297d6 Ender-3 V2 Display for SKR E3 Turbo (#22229) 2021-06-28 20:44:12 -05:00
Scott Lahteine
b878127ea0 Marlin 2.0.9.1 2021-06-28 19:50:00 -05:00
Katelyn Schiesser
6ea6556d09 🐛 Use setTargetHotend in menus (#22247) 2021-06-28 19:50:00 -05:00
Scott Lahteine
2b37a71eba ♻️ Refactor status screen timeout 2021-06-28 19:50:00 -05:00
Cytown
e3ae76d76d 🚸 Expand box in draw_boxed_string (#22209) 2021-06-28 19:50:00 -05:00
Katelyn Schiesser
b24508907e 🐛 No HOTEND_LOOP with EXTRUDERS 0 (#22245) 2021-06-28 19:50:00 -05:00
Sébastien Gariépy
ec3daadf43 🌐 MSG_MOVE_100MM (#22242) 2021-06-28 19:50:00 -05:00
Cytown
ae76011e75 🐛 Fix wide glyph characters display (#22237) 2021-06-28 19:50:00 -05:00
Scott Lahteine
34066c1717 📝 Update probe heating value 2021-06-27 11:54:28 -05:00
ellensp
19fe3d5e79 🚸 MarlinUI Move Z >= 1000 (#22192) 2021-06-27 11:32:14 -05:00
Scott Lahteine
ec518e6e7b 🎨 Small tweak, ms => now 2021-06-27 11:25:58 -05:00
Scott Lahteine
003ce25acf 🎨 Format onboard_sd.cpp 2021-06-27 11:25:48 -05:00
ellensp
3e5d867276 🐛 Fix Z_MULTI_ENDSTOPS + NUM_Z_STEPPER_DRIVERS 4 compile (#22203) 2021-06-27 11:25:36 -05:00
cr20-123
b1bcb387fa Update/extend Quiet Probing (#22205) 2021-06-27 11:25:07 -05:00
ellensp
0fbd8c52bb 🔧 Fix E.S.T. sanity-check errors (#22224) 2021-06-27 11:24:54 -05:00
Marcio T
08895e6cb0 🎨 Fix and improve FTDI Eve Touch UI (#22223) 2021-06-27 11:24:43 -05:00
Keith Bennett
38e775496a 📝 Update TMC SPI endstops comment (#22221) 2021-06-27 11:24:33 -05:00
Scott Lahteine
47631167f9 🐛 Trigger existing endstops on G38 hit 2021-06-27 11:24:22 -05:00
bwspath
185e0dc7b7 🐛 Fix Octopus build on case-sensitive FS (#22206) 2021-06-27 11:23:56 -05:00
Serhiy-K
bcf6ca59df 🌐 Update Russian language (#22193) 2021-06-27 11:23:42 -05:00
Marcio T
1ba694cebb 🎨 Fix and enhance FTDI Eve Touch UI (#22189) 2021-06-27 11:22:20 -05:00
Scott Lahteine
906fa05bd6 🐛🌐 Fix extra axis translations 2021-06-27 11:21:33 -05:00
Scott Lahteine
651f15f833 🎨 Cosmetic cleanup 2021-06-21 16:26:38 -05:00
Katelyn Schiesser
ef41c1f452 🐛 Fix IJK axis references, E stepper indices (#22176)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-06-21 16:26:38 -05:00
Grumpy
8050813d32 🐛 Fix dual Neopixels (#22174) 2021-06-21 16:26:38 -05:00
ellensp
25e7e2fce0 🐛 Fix heater display options/compile (#22185) 2021-06-21 16:26:38 -05:00
Scott Lahteine
a0f7f0e9e2 🐛 Fix compact sensitive pins array (#22184) 2021-06-21 16:26:38 -05:00
Serhiy-K
f3e0bc7a4b 🌐 Update Ukrainian language (#22183) 2021-06-21 16:26:38 -05:00
Giuliano Zaro
49ff1e837a 🌐 Update Italian language (#22182) 2021-06-21 16:26:38 -05:00
Katelyn Schiesser
4f8191b481 🐛 Redundant Temp Sensor followup (#22173) 2021-06-20 16:44:01 -05:00
Scott Lahteine
927a1a1738 🐛 Fix LCD define typos 2021-06-20 16:40:50 -05:00
Scott Lahteine
f2f23e8097 🎨 Cosmetic changes for G28 2021-06-20 16:40:23 -05:00
Scott Lahteine
cce585f6ca 🐛 Define 'HEAD' axes for Markforged
Fixes #22167
2021-06-18 13:13:27 -05:00
Ari-SSO
5bfb465ab4 🚸 Include 'H' value in M412 report (#22138)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-06-18 12:26:12 -05:00
Katelyn Schiesser
ce7bbafb8f 💡 Add G28 L description (#22144) 2021-06-18 12:26:10 -05:00
Keith Bennett
5ffc4bfe3a 🐛 TFT encoder pin for BTT GTR (#22162) 2021-06-18 12:25:42 -05:00
Mike La Spina
3ecc99e95d 🐛 Fix Air Assist (#22159)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-06-18 12:25:05 -05:00
gjdodd
f22c5d3cc6 🩹 Extruders 0 patch for PWM Motor Current (#22163) 2021-06-18 12:24:54 -05:00
Victor Oliveira
d8df8e0eed 🐛 Fix env validation for 1280/2560 boards (#22150)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-06-18 12:24:47 -05:00
Victor Oliveira
e38958f256 🐛 Fix MKS Robin E3 build (#22149) 2021-06-18 12:23:46 -05:00
Scott Lahteine
d7c77403fd Marlin 2.0.9 2021-06-15 20:45:37 -05:00
ellensp
c8898b5ca0 Redundant Part Cooling Fan (#21888)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-06-15 00:12:35 -05:00
Scott Lahteine
781257bc64 🐛 Prevent stepper sleep during long UBL idle (#22137) 2021-06-15 00:12:30 -05:00
qwewer0
dec083dcc1 ️ Home Z (and maybe XY) at the start of G35 (#22060) 2021-06-15 00:12:27 -05:00
ellensp
cdd9507493 🚑️ Prevent BFT unaligned compressed data corruption (#22134) 2021-06-15 00:12:23 -05:00
Bo Herrmannsen
dba877311e Extruder with Dual Stepper Drivers (#21403) 2021-06-15 00:12:20 -05:00
Victor Oliveira
31fd3be6eb 🔥 Remove Chitu default Touch Calibration (#22133) 2021-06-15 00:12:16 -05:00
Victor Oliveira
2b4284df81 MULTI_VOLUME for Color UI and MarlinUI (#22004) 2021-06-15 00:12:01 -05:00
InsanityAutomation
d84e2d6e29 🎨 ExtUI "user click" and other tweaks (#22122)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-06-15 00:11:57 -05:00
Victor Oliveira
56355159c6 🐛 Include common TFT driver macros (#22125) 2021-06-15 00:11:54 -05:00
Katelyn Schiesser
a7135d429b 🐛 Fix UBL 'R' parameter and adjust 'P' (#22129) 2021-06-15 00:11:50 -05:00
Sola
3b0a40cd5d 🐛 Fix ExtUI/DGUS Celsius display (#22121) 2021-06-15 00:11:46 -05:00
Scott Lahteine
83c74802f8 🎨 General cleanup of extui/dgus
In relation to #22121
2021-06-15 00:11:42 -05:00
Victor Oliveira
adc17933cd 🔨 Fix Serial+MSC for _USB envs (#22116) 2021-06-15 00:11:39 -05:00
Katelyn Schiesser
68c52673d6 🐛 Use whole PROBE_TEMP_COMPENSATION values (#22130) 2021-06-15 00:11:34 -05:00
Scott Lahteine
2aa35577f2 🏗️ Refactor build encrypt / rename (#22124) 2021-06-15 00:11:29 -05:00
Scott Lahteine
14ffc66c45 🩹 Use #pragma once in pins files 2021-06-15 00:11:26 -05:00
Scott Lahteine
2ea0832e0f 📝 Number SKR EXP headers 2021-06-15 00:11:22 -05:00
Scott Lahteine
ab050878e9 🎨 Clean up LPC1768 SPI init 2021-06-15 00:11:18 -05:00
Scott Lahteine
707a04022e 🔨 Remove obsolete ON_BOARD_SPI_DEVICE 2021-06-15 00:11:15 -05:00
mrv96
d12c357793 🔨 Robin Nano V3 overridable POWER_LOSS_PIN (#22123) 2021-06-15 00:11:11 -05:00
Scott Lahteine
ddf8668e16 📝 Describe G12 XYZ 2021-06-15 00:11:06 -05:00
Victor Oliveira
3491e49c5f 🐛 Fix boot / SD for STM32 (F103Rx) boards (#22087) 2021-06-15 00:10:02 -05:00
Katelyn Schiesser
d322e495b2 More flexible redundant temp sensor (#22085) 2021-06-15 00:09:52 -05:00
Keith Bennett
5d80f7006a 🔨 Envs for BTT SKR Mini with RET6 (512K) (#22050) 2021-06-15 00:09:52 -05:00
Zs.Antal
3e7a9e5d20 🌐 Update Hungarian language (#22083) 2021-06-15 00:09:52 -05:00
grauerfuchs
33e8769226 🔨 MightyBoard envs for A.B.M. (#22100) 2021-06-15 00:09:52 -05:00
Radek
59842edbcb 🔧 EEPROM options for BTT SKR 1.4 (#22092) 2021-06-15 00:09:52 -05:00
Marcio T
507e1e436e 🎨 Fix and improve FTDI Eve Touch UI (#22093) 2021-06-15 00:09:52 -05:00
ellensp
b27447ef48 🔧 Enforce BLTouch settings (#22086) 2021-06-15 00:09:52 -05:00
Scott Lahteine
c9a3ba99be 🎨 Adjust some conditionals 2021-06-15 00:09:52 -05:00
Scott Lahteine
967942460e ️ Optimize Sensitive Pins array (except STM32) (#22080) 2021-06-15 00:09:52 -05:00
Kyle Repinski
bfa257902e 🐛 Fix small/huge I2C EEPROM address (#22081) 2021-06-15 00:09:52 -05:00
Scott Lahteine
3f103c91f0 🎨 Laser Ammeter followup (#22079)
Followup to #21835
2021-06-15 00:09:52 -05:00
Mike La Spina
2fd9971f41 Add Laser Based I2C Ammeter Feature (#21835) 2021-06-15 00:09:52 -05:00
ellensp
a3063a9392 expose hidden BLTOUCH setting changes (#22069) 2021-06-15 00:09:52 -05:00
Marcio T
d8a02bbbdb 🎨 Reorganize FTDI Touch UI variants (#22066) 2021-06-15 00:09:52 -05:00
ellensp
76d4a395d1 🩹 Fallback ID for MKS TS35 V2.0 (#22031) 2021-06-15 00:09:52 -05:00
7FM
c515bfb5fb 👽️ Include <EEPROM.h> in STM32 (for now) (#22054) 2021-06-15 00:09:52 -05:00
ellensp
83430be580 📦️ Malyan M200 with HAL/STM32 (#22052) 2021-06-15 00:09:52 -05:00
George Fu
9bd9f91722 📌 Update FYSETC E4 to espressif32@2.1.0 (#22049) 2021-06-15 00:09:52 -05:00
Victor Oliveira
e6ef43e51a ⚰️ Remove obsolete CUSTOM_SPI_PINS (#22058) 2021-06-15 00:09:52 -05:00
ellensp
16bca67f2d 🔧 Check G29_RETRY_AND_RECOVER requirements (#21921) 2021-06-15 00:09:52 -05:00
Scott Lahteine
d65eea550c 🔧 FOAMCUTTER_XYUV moved to custom config 2021-06-15 00:09:52 -05:00
DerAndere
46080b367a ✏️ Six Linear Axes followup (Fix M503) (#22112) 2021-06-15 00:09:52 -05:00
Marcio T
317afae37c ✏️ Six Linear Axes followup (typos) (#22094) 2021-06-15 00:08:32 -05:00
ellensp
930a608236 🎨 IJK auto-allocation (#22075) 2021-06-15 00:07:40 -05:00
DerAndere
6e3c45580c ✏️ Six Linear Axes followup (Hybrid Threshold init) (#22068) 2021-06-15 00:07:06 -05:00
DerAndere
e3df7d7bc8 ✏️ Followup to Six Linear Axes (#22056) 2021-06-15 00:05:52 -05:00
DerAndere
c1fca91103 🏗️ Support for up to 6 linear axes (#19112)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-06-15 00:05:03 -05:00
Scott Lahteine
d3c56a76e7 ♻️ Patches for Zero Extruders (with TMC) 2021-06-15 00:04:47 -05:00
Scott Lahteine
4194cdda5b ♻️ Refactor Linear / Logical / Distinct Axes (#21953)
* More patches supporting EXTRUDERS 0
* Extend types in prep for more axes
2021-06-15 00:03:55 -05:00
Marcio T
f5f999d7bf 📺 Fix and enhance FTDI EVE Touch UI (#22047) 2021-06-14 23:52:14 -05:00
Keith Bennett
b4b607681c BigTreeTech Octopus V1.1 (#22042) 2021-06-14 23:52:05 -05:00
ellensp
1e75eba27b 🐛 Fix STM3R / BEAST envs (#22028) 2021-06-14 23:51:52 -05:00
Victor Oliveira
f3f3d202ac 📦️ STM32F103RE_btt(_USB) with HAL/STM32 (#22040) 2021-06-14 23:51:46 -05:00
Scott Lahteine
c90fa530db Update G34 for 4x Z steppers (#22039) 2021-06-14 23:51:40 -05:00
Taylor Talkington
aeb8097cbc 🐛 Fix M140 print job timer autostart (#22046) 2021-06-14 23:51:23 -05:00
Giuliano Zaro
04bea72787 🐛 Fix MMU compile with >5 EXTRUDERS (#22036) 2021-06-14 23:51:17 -05:00
ldursw
ce95f56ac8 🔨 MKS Robin E3 for HAL/STM32 (#21927) 2021-06-14 23:51:10 -05:00
Scott Lahteine
aff45fd455 ✏️ Remove whitespace 2021-06-14 23:51:00 -05:00
ellensp
c8f28d9d09 🐛 Fix Creality v4 servo timer (#22021)
Followup to #21999
2021-06-14 23:51:00 -05:00
Keith Bennett
f3697e5e02 🔨 Consolidate BTT linker scripts followup (#22038) 2021-06-14 23:51:00 -05:00
Scott Lahteine
557ba20ff4 🔨 Consolidate BTT linker scripts
Originally from #22022
2021-06-14 23:50:17 -05:00
ellensp
dd0e5c26d1 🐛 Fix env:STM32F103RE maple/unified split-up (#22019)
Followup to #21999
2021-06-14 23:50:11 -05:00
Scott Lahteine
c9a3f41152 📝 Update G61 comment 2021-06-14 23:49:57 -05:00
ellensp
d13ffa0aba 🔨 Creality v4 with STM32 HAL (#21999)
- New STM32 env for Creality V4 boards.
- Separate Libmaple targets into their own `ini` file.
- Temporarily remove unusable targets from `pins.h`.

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

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

Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-05-01 20:26:03 -05:00
ellensp
8abef30a75 Fix SDCARD_CONNECTION default for BTT SKR (#21755) 2021-05-01 20:24:53 -05:00
Scott Lahteine
158b26b875 Fix undefined abl_points 2021-05-01 20:23:33 -05:00
2115 changed files with 183380 additions and 61564 deletions

View File

@@ -14,6 +14,10 @@ end_of_line = lf
indent_style = space
indent_size = 2
[{*.py,*.conf,*.sublime-project}]
[{*.py}]
indent_style = space
indent_size = 4
[{*.conf,*.sublime-project}]
indent_style = tab
indent_size = 4

View File

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

View File

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

View File

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

View File

@@ -34,8 +34,11 @@ This project and everyone participating in it is governed by the [Marlin Code of
We have a Message Board and a Facebook group where our knowledgable user community can provide helpful advice if you have questions.
* [Marlin RepRap forum](https://reprap.org/forum/list.php?415)
* [MarlinFirmware on Facebook](https://www.facebook.com/groups/1049718498464482/)
- [Marlin Documentation](https://marlinfw.org) - Official Marlin documentation
- Facebook Group ["Marlin Firmware"](https://www.facebook.com/groups/1049718498464482/)
- RepRap.org [Marlin Forum](https://forums.reprap.org/list.php?415)
- Facebook Group ["Marlin Firmware for 3D Printers"](https://www.facebook.com/groups/3Dtechtalk/)
- [Marlin Configuration](https://www.youtube.com/results?search_query=marlin+configuration) on YouTube
If chat is more your speed, you can join the MarlinFirmware Discord server:
@@ -50,13 +53,13 @@ If chat is more your speed, you can join the MarlinFirmware Discord server:
This section guides you through submitting a Bug Report for Marlin. Following these guidelines helps maintainers and the community understand your report, reproduce the behavior, and find related reports.
Before creating a Bug Report, please test the "nightly" development branch, as you might find out that you don't need to create one. When you are creating a Bug Report, please [include as many details as possible](#how-do-i-submit-a-good-bug-report). Fill out [the required template](issue_template.md), the information it asks for helps us resolve issues faster.
Before creating a Bug Report, please test the "nightly" development branch, as you might find out that you don't need to create one. When you are creating a Bug Report, please [include as many details as possible](#how-do-i-submit-a-good-bug-report). Fill out [the required template](ISSUE_TEMPLATE/bug_report.yml), the information it asks for helps us resolve issues faster.
> **Note:** Regressions can happen. If you find a **Closed** issue that seems like your issue, go ahead and open a new issue and include a link to the original issue in the body of your new one. All you need to create a link is the issue number, preceded by #. For example, #8888.
#### How Do I Submit A (Good) Bug Report?
Bugs are tracked as [GitHub issues](https://guides.github.com/features/issues/). Use the New Issue button to create an issue and provide the following information by filling in [the template](issue_template.md).
Bugs are tracked as [GitHub issues](https://guides.github.com/features/issues/). Use the New Issue button to create an issue and provide the following information by filling in [the template](ISSUE_TEMPLATE/bug_report.yml).
Explain the problem and include additional details to help maintainers reproduce the problem:
@@ -88,12 +91,12 @@ Include details about your configuration and environment:
This section guides you through submitting a suggestion for Marlin, including completely new features and minor improvements to existing functionality. Following these guidelines helps maintainers and the community understand your suggestion and find related suggestions.
Before creating a suggestion, please check [this list](#before-submitting-a-suggestion) as you might find out that you don't need to create one. When you are creating an enhancement suggestion, please [include as many details as possible](#how-do-i-submit-a-good-enhancement-suggestion). Fill in [the template](issue_template.md), including the steps that you imagine you would take if the feature you're requesting existed.
Before creating a suggestion, please check [this list](https://github.com/MarlinFirmware/Marlin/issues?q=is%3Aopen+is%3Aissue+label%3A%22T%3A+Feature+Request%22) as you might find out that you don't need to create one. When you are creating an enhancement suggestion, please [include as many details as possible](#how-do-i-submit-a-good-feature-request). Fill in [the template](ISSUE_TEMPLATE/feature_request.yml), including the steps that you imagine you would take if the feature you're requesting existed.
#### Before Submitting a Feature Request
* **Check the [Marlin website](https://marlinfw.org/)** for tips — you might discover that the feature is already included. Most importantly, check if you're using [the latest version of Marlin](https://github.com/MarlinFirmware/Marlin/releases) and if you can get the desired behavior by changing [Marlin's config settings](https://marlinfw.org/docs/configuration/configuration.html).
* **Perform a [cursory search](https://github.com/MarlinFirmware/Marlin/issues?q=is%3Aissue)** to see if the enhancement has already been suggested. If it has, add a comment to the existing issue instead of opening a new one.
* **Perform a [cursory search](https://github.com/MarlinFirmware/Marlin/issues?q=is%3Aopen+is%3Aissue+label%3A%22T%3A+Feature+Request%22)** to see if the enhancement has already been suggested. If it has, add a comment to the existing issue instead of opening a new one.
#### How Do I Submit A (Good) Feature Request?
@@ -116,7 +119,7 @@ Unsure where to begin contributing to Marlin? You can start by looking through t
### Pull Requests
Pull Requests should always be targeted to working branches (e.g., `bugfix-1.1.x` and/or `bugfix-2.0.x`) and never to release branches (e.g., `1.1.x`). If this is your first Pull Request, please read our [Guide to Pull Requests](https://marlinfw.org/docs/development/getting_started_pull_requests.html) and Github's [Pull Request](https://help.github.com/articles/creating-a-pull-request/) documentation.
Pull Requests should always be targeted to working branches (e.g., `bugfix-2.0.x` and/or `bugfix-1.1.x`) and never to release branches (e.g., `2.0.x` and/or `1.1.x`). If this is your first Pull Request, please read our [Guide to Pull Requests](https://marlinfw.org/docs/development/getting_started_pull_requests.html) and Github's [Pull Request](https://help.github.com/articles/creating-a-pull-request/) documentation.
* Fill in [the required template](pull_request_template.md).
* Don't include issue numbers in the PR title.

View File

@@ -1,35 +0,0 @@
<!--
Have you read Marlin's Code of Conduct? By filing an Issue, you are expected to comply with it, including treating everyone with respect: https://github.com/MarlinFirmware/Marlin/blob/bugfix-2.0.x/.github/code_of_conduct.md
Do you want to ask a question? Are you looking for support? Please don't post here. Instead use one of the following options:
- The Marlin Firmware forum at https://reprap.org/forum/list.php?415
- The MarlinFirmware Facebook Group at https://www.facebook.com/groups/1049718498464482/
- The MarlinFirmware Discord Server at https://discord.gg/n5NJ59y.
Before filing an issue be sure to test the latest "bugfix" branch to see whether the issue is already addressed.
-->
### Description
<!-- Description of the bug or requested feature -->
### Steps to Reproduce
<!-- If this is a Bug Report, please describe the steps needed to reproduce the issue -->
1. [First Step]
2. [Second Step]
3. [and so on...]
**Expected behavior:** [What you expect to happen]
**Actual behavior:** [What actually happens]
#### Additional Information
* Include a ZIP file containing your `Configuration.h` and `Configuration_adv.h` files.
* Provide pictures or links to videos that clearly demonstrate the issue.
* See [How Can I Contribute](#how-can-i-contribute) for additional guidelines.

40
.github/lock.yml vendored
View File

@@ -1,40 +0,0 @@
#
# Configuration for Lock Threads - https://github.com/dessant/lock-threads-app
#
# Number of days of inactivity before a closed issue or pull request is locked
daysUntilLock: 60
# Skip issues and pull requests created before a given timestamp. Timestamp must
# follow ISO 8601 (`YYYY-MM-DD`). Set to `false` to disable
skipCreatedBefore: false
# Issues and pull requests with these labels will be ignored. Set to `[]` to disable
exemptLabels: [ 'no-locking' ]
# Label to add before locking, such as `outdated`. Set to `false` to disable
lockLabel: false
# Comment to post before locking. Set to `false` to disable
lockComment: >
This thread has been automatically locked since there has not been
any recent activity after it was closed. Please open a new issue for
related bugs.
# Assign `resolved` as the reason for locking. Set to `false` to disable
setLockReason: true
# Limit to only `issues` or `pulls`
# only: issues
# Optionally, specify configuration settings just for `issues` or `pulls`
# issues:
# exemptLabels:
# - help-wanted
# lockLabel: outdated
# pulls:
# daysUntilLock: 30
# Repository to extend settings from
# _extends: repo

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -3,7 +3,7 @@
# Do test builds to catch compile errors
#
name: CI
name: CI - bugfix-2.0.x
on:
pull_request:
@@ -36,9 +36,11 @@ jobs:
# Base Environments
- DUE
- DUE_archim
- esp32
- linux_native
- mega2560
- at90usb1286_dfu
- teensy31
- teensy35
- teensy41
@@ -46,21 +48,35 @@ jobs:
# Extended AVR Environments
- FYSETC_F6_13
- FYSETC_F6
- mega1280
- rambo
- sanguino1284p
- sanguino644p
# Extended STM32 Environments
# STM32F1 (Maple) Environments
#- STM32F103RC_btt_maple
- STM32F103RC_btt_USB_maple
- STM32F103RC_fysetc_maple
- STM32F103RC_meeb_maple
- jgaurora_a5s_a1_maple
- STM32F103VE_longer_maple
#- mks_robin_maple
- mks_robin_lite_maple
- mks_robin_pro_maple
#- mks_robin_nano35_maple
#- STM32F103RE_creality_maple
- STM32F103VE_ZM3E4V2_USB_maple
# STM32 (ST) Environments
- STM32F103RC_btt
- STM32F103RC_btt_USB
#- STM32F103RC_btt_USB
- STM32F103RE_btt
- STM32F103RE_btt_USB
- STM32F103RC_fysetc
- STM32F103RC_meeb
- jgaurora_a5s_a1
- STM32F103RE_creality
- STM32F401RC_creality
- STM32F103VE_longer
- STM32F407VE_black
- STM32F401VE_STEVAL
@@ -68,56 +84,64 @@ jobs:
- BIGTREE_SKR_PRO
- BIGTREE_GTR_V1_0
- mks_robin
- mks_robin_stm32
- ARMED
- FYSETC_S6
- STM32F070CB_malyan
- STM32F070RB_malyan
- malyan_M300
- mks_robin_lite
- FLYF407ZG
- rumba32
- mks_robin_pro
- STM32F103RET6_creality
- LERDGEX
- LERDGEK
- mks_robin_nano35
- NUCLEO_F767ZI
- REMRAM_V1
- BTT_SKR_SE_BX
- chitu_f103
- Opulo_Lumen_REV3
# Put lengthy tests last
- LPC1768
- LPC1769
# STM32 with non-STM framework. both broken for now. they should use HAL_STM32 which is working.
#- STM32F4
#- STM32F7
# Non-working environment tests
#- at90usb1286_cdc
#- at90usb1286_dfu
#- STM32F103CB_malyan
#- STM32F103RE
#- mks_robin_mini
steps:
- name: Check out the PR
uses: actions/checkout@v3
- name: Cache pip
uses: actions/cache@v3
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }}
restore-keys: |
${{ runner.os }}-pip-
- name: Cache PlatformIO
uses: actions/cache@v3
with:
path: ~/.platformio
key: ${{ runner.os }}-${{ hashFiles('**/lockfiles') }}
- name: Select Python 3.7
uses: actions/setup-python@v1
uses: actions/setup-python@v3
with:
python-version: '3.7' # Version range or exact version of a Python version to use, using semvers version range syntax.
architecture: 'x64' # optional x64 or x86. Defaults to x64 if not specified
- name: Install PlatformIO
run: |
pip install -U https://github.com/platformio/platformio-core/archive/develop.zip
platformio update
- name: Check out the PR
uses: actions/checkout@v2
pip install -U platformio
pio upgrade --dev
pio pkg update --global
- name: Run ${{ matrix.test-platform }} Tests
run: |
# Inline tests script
chmod +x buildroot/bin/*
chmod +x buildroot/tests/*
export PATH=./buildroot/bin/:./buildroot/tests/:${PATH}
run_tests . ${{ matrix.test-platform }}
make tests-single-ci TEST_TARGET=${{ matrix.test-platform }}

View File

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

26
.gitignore vendored
View File

@@ -22,12 +22,16 @@
# Generated files
_Version.h
bdf2u8g
marlin_config.json
mczip.h
*.gen
*.sublime-workspace
#
# OS
#
applet/
*.DS_Store
.DS_Store
#
# Misc
@@ -37,7 +41,6 @@ applet/
*.rej
*.bak
*.idea
*.s
*.i
*.ii
*.swp
@@ -137,16 +140,19 @@ __vm/
vc-fileutils.settings
# Visual Studio Code
.vscode
.vscode/.browse.c_cpp.db*
.vscode/c_cpp_properties.json
.vscode/launch.json
.vscode/*.db
.vscode/*
!.vscode/extensions.json
# cmake
#Simulation
imgui.ini
eeprom.dat
spi_flash.bin
#cmake
CMakeLists.txt
src/CMakeLists.txt
CMakeListsPrivate.txt
build/
# CLion
cmake-build-*
@@ -163,7 +169,3 @@ __pycache__
# IOLogger logs
*_log.csv
# Simulation / Native
eeprom.dat
imgui.ini

11
.vscode/extensions.json vendored Normal file
View File

@@ -0,0 +1,11 @@
{
// See http://go.microsoft.com/fwlink/?LinkId=827846
// for the documentation about the extensions.json format
"recommendations": [
"marlinfirmware.auto-build",
"platformio.platformio-ide"
],
"unwantedRecommendations": [
"ms-vscode.cpptools-extension-pack"
]
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -109,8 +109,8 @@ LIQUID_TWI2 ?= 0
# This defines if Wire is needed
WIRE ?= 0
# This defines if Tone is needed (i.e SPEAKER is defined in Configuration.h)
# Disabling this (and SPEAKER) saves approximatively 350 bytes of memory.
# This defines if Tone is needed (i.e., SPEAKER is defined in Configuration.h)
# Disabling this (and SPEAKER) saves approximately 350 bytes of memory.
TONE ?= 1
# This defines if U8GLIB is needed (may require RELOC_WORKAROUND)
@@ -132,7 +132,7 @@ CC_MIN:=$(shell $(CC) -dM -E - < /dev/null | grep __GNUC_MINOR__ | cut -f3 -d\ )
CC_PATCHLEVEL:=$(shell $(CC) -dM -E - < /dev/null | grep __GNUC_PATCHLEVEL__ | cut -f3 -d\ )
CC_VER:=$(shell echo $$(( $(CC_MAJ) * 10000 + $(CC_MIN) * 100 + $(CC_PATCHLEVEL) )))
ifeq ($(shell test $(CC_VER) -lt 40901 && echo 1),1)
@echo This version of GCC is likely broken. Enabling relocation workaround.
$(warning This GCC version $(CC_VER) is likely broken. Enabling relocation workaround.)
RELOC_WORKAROUND = 1
endif
@@ -207,11 +207,11 @@ else ifeq ($(HARDWARE_MOTHERBOARD),1105)
else ifeq ($(HARDWARE_MOTHERBOARD),1106)
# MKS BASE v1.0
else ifeq ($(HARDWARE_MOTHERBOARD),1107)
# MKS v1.4 with A4982 stepper drivers
# MKS BASE v1.4 with Allegro A4982 stepper drivers
else ifeq ($(HARDWARE_MOTHERBOARD),1108)
# MKS v1.5 with Allegro A4982 stepper drivers
# MKS BASE v1.5 with Allegro A4982 stepper drivers
else ifeq ($(HARDWARE_MOTHERBOARD),1109)
# MKS v1.6 with Allegro A4982 stepper drivers
# MKS BASE v1.6 with Allegro A4982 stepper drivers
else ifeq ($(HARDWARE_MOTHERBOARD),1110)
# MKS BASE 1.0 with Heroic HR4982 stepper drivers
else ifeq ($(HARDWARE_MOTHERBOARD),1111)
@@ -219,93 +219,108 @@ else ifeq ($(HARDWARE_MOTHERBOARD),1111)
else ifeq ($(HARDWARE_MOTHERBOARD),1112)
# MKS GEN L
else ifeq ($(HARDWARE_MOTHERBOARD),1113)
# zrib V2.0 control board (Chinese RAMPS replica)
else ifeq ($(HARDWARE_MOTHERBOARD),1114)
# BigTreeTech or BIQU KFB2.0
else ifeq ($(HARDWARE_MOTHERBOARD),1114)
# zrib V2.0 (Chinese RAMPS replica)
else ifeq ($(HARDWARE_MOTHERBOARD),1115)
# Felix 2.0+ Electronics Board (RAMPS like)
# zrib V5.2 (Chinese RAMPS replica)
else ifeq ($(HARDWARE_MOTHERBOARD),1116)
# Invent-A-Part RigidBoard
# Felix 2.0+ Electronics Board (RAMPS like)
else ifeq ($(HARDWARE_MOTHERBOARD),1117)
# Invent-A-Part RigidBoard V2
# Invent-A-Part RigidBoard
else ifeq ($(HARDWARE_MOTHERBOARD),1118)
# Sainsmart 2-in-1 board
# Invent-A-Part RigidBoard V2
else ifeq ($(HARDWARE_MOTHERBOARD),1119)
# Ultimaker
# Sainsmart 2-in-1 board
else ifeq ($(HARDWARE_MOTHERBOARD),1120)
# Ultimaker (Older electronics. Pre 1.5.4. This is rare)
# Ultimaker
else ifeq ($(HARDWARE_MOTHERBOARD),1121)
# Ultimaker (Older electronics. Pre 1.5.4. This is rare)
else ifeq ($(HARDWARE_MOTHERBOARD),1122)
MCU ?= atmega1280
PROG_MCU ?= m1280
# Azteeg X3
else ifeq ($(HARDWARE_MOTHERBOARD),1122)
# Azteeg X3 Pro
else ifeq ($(HARDWARE_MOTHERBOARD),1123)
# Ultimainboard 2.x (Uses TEMP_SENSOR 20)
# Azteeg X3 Pro
else ifeq ($(HARDWARE_MOTHERBOARD),1124)
# Rumba
# Ultimainboard 2.x (Uses TEMP_SENSOR 20)
else ifeq ($(HARDWARE_MOTHERBOARD),1125)
# Raise3D Rumba
# Rumba
else ifeq ($(HARDWARE_MOTHERBOARD),1126)
# Rapide Lite RL200 Rumba
# Raise3D N series Rumba derivative
else ifeq ($(HARDWARE_MOTHERBOARD),1127)
# Formbot T-Rex 2 Plus
# Rapide Lite 200 (v1, low-cost RUMBA clone with drv)
else ifeq ($(HARDWARE_MOTHERBOARD),1128)
# Formbot T-Rex 3
# Formbot T-Rex 2 Plus
else ifeq ($(HARDWARE_MOTHERBOARD),1129)
# Formbot Raptor
# Formbot T-Rex 3
else ifeq ($(HARDWARE_MOTHERBOARD),1130)
# Formbot Raptor 2
# Formbot Raptor
else ifeq ($(HARDWARE_MOTHERBOARD),1131)
# bq ZUM Mega 3D
# Formbot Raptor 2
else ifeq ($(HARDWARE_MOTHERBOARD),1132)
# MakeBoard Mini v2.1.2 is a control board sold by MicroMake
# bq ZUM Mega 3D
else ifeq ($(HARDWARE_MOTHERBOARD),1133)
# TriGorilla Anycubic version 1.3 based on RAMPS EFB
# MakeBoard Mini v2.1.2 by MicroMake
else ifeq ($(HARDWARE_MOTHERBOARD),1134)
# TriGorilla Anycubic version 1.4 based on RAMPS EFB
# TriGorilla Anycubic version 1.3-based on RAMPS EFB
else ifeq ($(HARDWARE_MOTHERBOARD),1135)
# TriGorilla Anycubic version 1.4 Rev 1.1
# ... Ver 1.4
else ifeq ($(HARDWARE_MOTHERBOARD),1136)
# Creality: Ender-4, CR-8
# ... Rev 1.1 (new servo pin order)
else ifeq ($(HARDWARE_MOTHERBOARD),1137)
# Creality: CR10S, CR20, CR-X
# Creality: Ender-4, CR-8
else ifeq ($(HARDWARE_MOTHERBOARD),1138)
# Dagoma F5
# Creality: CR10S, CR20, CR-X
else ifeq ($(HARDWARE_MOTHERBOARD),1139)
# FYSETC F6 1.3
# Dagoma F5
else ifeq ($(HARDWARE_MOTHERBOARD),1140)
# FYSETC F6 1.5
# FYSETC F6 1.3
else ifeq ($(HARDWARE_MOTHERBOARD),1141)
# Duplicator i3 Plus
# FYSETC F6 1.4
else ifeq ($(HARDWARE_MOTHERBOARD),1142)
# VORON
# Wanhao Duplicator i3 Plus
else ifeq ($(HARDWARE_MOTHERBOARD),1143)
# TRONXY V3 1.0
# VORON Design
else ifeq ($(HARDWARE_MOTHERBOARD),1144)
# Z-Bolt X Series
# Tronxy TRONXY-V3-1.0
else ifeq ($(HARDWARE_MOTHERBOARD),1145)
# TT OSCAR
# Z-Bolt X Series
else ifeq ($(HARDWARE_MOTHERBOARD),1146)
# Overlord/Overlord Pro
# TT OSCAR
else ifeq ($(HARDWARE_MOTHERBOARD),1147)
# ADIMLab Gantry v1
# Overlord/Overlord Pro
else ifeq ($(HARDWARE_MOTHERBOARD),1148)
# ADIMLab Gantry v2
# ADIMLab Gantry v1
else ifeq ($(HARDWARE_MOTHERBOARD),1149)
# BIQU Tango V1
# ADIMLab Gantry v2
else ifeq ($(HARDWARE_MOTHERBOARD),1150)
# MKS GEN L V2
# BIQU Tango V1
else ifeq ($(HARDWARE_MOTHERBOARD),1151)
# MKS GEN L V2.1
# MKS GEN L V2
else ifeq ($(HARDWARE_MOTHERBOARD),1152)
# Copymaster 3D
# MKS GEN L V2.1
else ifeq ($(HARDWARE_MOTHERBOARD),1153)
# Ortur 4
# Copymaster 3D
else ifeq ($(HARDWARE_MOTHERBOARD),1154)
# Tenlog D3 Hero
# Ortur 4
else ifeq ($(HARDWARE_MOTHERBOARD),1155)
# Tenlog D3 Hero IDEX printer
else ifeq ($(HARDWARE_MOTHERBOARD),1156)
# Ramps S 1.2 by Sakul.cz (Power outputs: Hotend0, Hotend1, Fan, Bed)
else ifeq ($(HARDWARE_MOTHERBOARD),1157)
# Ramps S 1.2 by Sakul.cz (Power outputs: Hotend0, Hotend1, Hotend2, Bed)
else ifeq ($(HARDWARE_MOTHERBOARD),1158)
# Ramps S 1.2 by Sakul.cz (Power outputs: Hotend, Fan0, Fan1, Bed)
else ifeq ($(HARDWARE_MOTHERBOARD),1159)
# Longer LK1 PRO / Alfawise U20 Pro (PRO version)
else ifeq ($(HARDWARE_MOTHERBOARD),1160)
# Longer LKx PRO / Alfawise Uxx Pro (PRO version)
else ifeq ($(HARDWARE_MOTHERBOARD),1161)
# Zonestar zrib V5.3 (Chinese RAMPS replica)
else ifeq ($(HARDWARE_MOTHERBOARD),1162)
# Pxmalion Core I3
else ifeq ($(HARDWARE_MOTHERBOARD),1163)
#
# RAMBo and derivatives
@@ -358,20 +373,38 @@ else ifeq ($(HARDWARE_MOTHERBOARD),1311)
else ifeq ($(HARDWARE_MOTHERBOARD),1312)
# Mega controller
else ifeq ($(HARDWARE_MOTHERBOARD),1313)
# Geeetech GT2560 Rev B for Mecreator2
# Geeetech GT2560 Rev A
else ifeq ($(HARDWARE_MOTHERBOARD),1314)
# Geeetech GT2560 Rev. A
# Geeetech GT2560 Rev A+ (with auto level probe)
else ifeq ($(HARDWARE_MOTHERBOARD),1315)
# Geeetech GT2560 Rev. A+ (with auto level probe)
# Geeetech GT2560 Rev B
else ifeq ($(HARDWARE_MOTHERBOARD),1316)
# Geeetech GT2560 Rev B for A10(M/D)
# Geeetech GT2560 Rev B for A10(M/T/D)
else ifeq ($(HARDWARE_MOTHERBOARD),1317)
# Geeetech GT2560 Rev B for A20(M/D)
# Geeetech GT2560 Rev B for A10(M/T/D)
else ifeq ($(HARDWARE_MOTHERBOARD),1318)
# Einstart retrofit
# Geeetech GT2560 Rev B for Mecreator2
else ifeq ($(HARDWARE_MOTHERBOARD),1319)
# Wanhao 0ne+ i3 Mini
# Geeetech GT2560 Rev B for A20(M/T/D)
else ifeq ($(HARDWARE_MOTHERBOARD),1320)
# Einstart retrofit
else ifeq ($(HARDWARE_MOTHERBOARD),1321)
# Wanhao 0ne+ i3 Mini
else ifeq ($(HARDWARE_MOTHERBOARD),1322)
# Leapfrog Xeed 2015
else ifeq ($(HARDWARE_MOTHERBOARD),1323)
# PICA Shield (original version)
else ifeq ($(HARDWARE_MOTHERBOARD),1324)
# PICA Shield (rev C or later)
else ifeq ($(HARDWARE_MOTHERBOARD),1325)
# Intamsys 4.0 (Funmat HT)
else ifeq ($(HARDWARE_MOTHERBOARD),1326)
# Malyan M180 Mainboard Version 2 (no display function, direct G-code only)
else ifeq ($(HARDWARE_MOTHERBOARD),1327)
# Geeetech GT2560 Rev B for A20(M/T/D)
else ifeq ($(HARDWARE_MOTHERBOARD),1328)
# Mega controller & Protoneer CNC Shield V3.00
else ifeq ($(HARDWARE_MOTHERBOARD),1329)
#
# ATmega1281, ATmega2561
@@ -445,6 +478,11 @@ else ifeq ($(HARDWARE_MOTHERBOARD),1510)
HARDWARE_VARIANT ?= Sanguino
MCU ?= atmega1284p
PROG_MCU ?= m1284p
# ZoneStar ZMIB V2
else ifeq ($(HARDWARE_MOTHERBOARD),1511)
HARDWARE_VARIANT ?= Sanguino
MCU ?= atmega1284p
PROG_MCU ?= m1284p
#
# Other ATmega644P, ATmega644, ATmega1284P

View File

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

211
Marlin/config.ini Normal file
View File

@@ -0,0 +1,211 @@
#
# Marlin Firmware
# config.ini - Options to apply before the build
#
[config:base]
ini_use_config = none
# Load all config: sections in this file
;ini_use_config = all
# Load config file relative to Marlin/
;ini_use_config = another.ini
# Download configurations from GitHub
;ini_use_config = example/Creality/Ender-5 Plus @ bugfix-2.1.x
# Download configurations from your server
;ini_use_config = https://me.myserver.com/path/to/configs
# Evaluate config:base and do a config dump
;ini_use_config = base
;config_export = 2
[config:minimal]
motherboard = BOARD_RAMPS_14_EFB
serial_port = 0
baudrate = 250000
use_watchdog = on
thermal_protection_hotends = on
thermal_protection_hysteresis = 4
thermal_protection_period = 40
bufsize = 4
block_buffer_size = 16
max_cmd_size = 96
extruders = 1
temp_sensor_0 = 1
temp_hysteresis = 3
heater_0_mintemp = 5
heater_0_maxtemp = 275
preheat_1_temp_hotend = 180
bang_max = 255
pidtemp = on
pid_k1 = 0.95
pid_max = BANG_MAX
pid_functional_range = 10
default_kp = 22.20
default_ki = 1.08
default_kd = 114.00
x_driver_type = A4988
y_driver_type = A4988
z_driver_type = A4988
e0_driver_type = A4988
x_bed_size = 200
x_min_pos = 0
x_max_pos = X_BED_SIZE
y_bed_size = 200
y_min_pos = 0
y_max_pos = Y_BED_SIZE
z_min_pos = 0
z_max_pos = 200
x_home_dir = -1
y_home_dir = -1
z_home_dir = -1
use_xmin_plug = on
use_ymin_plug = on
use_zmin_plug = on
x_min_endstop_inverting = false
y_min_endstop_inverting = false
z_min_endstop_inverting = false
default_axis_steps_per_unit = { 80, 80, 400, 500 }
axis_relative_modes = { false, false, false, false }
default_max_feedrate = { 300, 300, 5, 25 }
default_max_acceleration = { 3000, 3000, 100, 10000 }
homing_feedrate_mm_m = { (50*60), (50*60), (4*60) }
homing_bump_divisor = { 2, 2, 4 }
x_enable_on = 0
y_enable_on = 0
z_enable_on = 0
e_enable_on = 0
invert_x_dir = false
invert_y_dir = true
invert_z_dir = false
invert_e0_dir = false
invert_e_step_pin = false
invert_x_step_pin = false
invert_y_step_pin = false
invert_z_step_pin = false
disable_x = false
disable_y = false
disable_z = false
disable_e = false
proportional_font_ratio = 1.0
default_nominal_filament_dia = 1.75
junction_deviation_mm = 0.013
default_acceleration = 3000
default_travel_acceleration = 3000
default_retract_acceleration = 3000
default_minimumfeedrate = 0.0
default_mintravelfeedrate = 0.0
minimum_planner_speed = 0.05
min_steps_per_segment = 6
default_minsegmenttime = 20000
[config:basic]
bed_overshoot = 10
busy_while_heating = on
default_ejerk = 5.0
default_keepalive_interval = 2
default_leveling_fade_height = 0.0
disable_inactive_extruder = on
display_charset_hd44780 = JAPANESE
eeprom_boot_silent = on
eeprom_chitchat = on
endstoppullups = on
extrude_maxlength = 200
extrude_mintemp = 170
host_keepalive_feature = on
hotend_overshoot = 15
jd_handle_small_segments = on
lcd_info_screen_style = 0
lcd_language = en
max_bed_power = 255
mesh_inset = 0
min_software_endstops = on
max_software_endstops = on
min_software_endstop_x = on
min_software_endstop_y = on
min_software_endstop_z = on
max_software_endstop_x = on
max_software_endstop_y = on
max_software_endstop_z = on
preheat_1_fan_speed = 0
preheat_1_label = "PLA"
preheat_1_temp_bed = 70
prevent_cold_extrusion = on
prevent_lengthy_extrude = on
printjob_timer_autostart = on
probing_margin = 10
show_bootscreen = on
soft_pwm_scale = 0
string_config_h_author = "(none, default config)"
temp_bed_hysteresis = 3
temp_bed_residency_time = 10
temp_bed_window = 1
temp_residency_time = 10
temp_window = 1
validate_homing_endstops = on
xy_probe_feedrate = (133*60)
z_clearance_between_probes = 5
z_clearance_deploy_probe = 10
z_clearance_multi_probe = 5
[config:advanced]
arc_support = on
auto_report_temperatures = on
autotemp = on
autotemp_oldweight = 0.98
bed_check_interval = 5000
default_stepper_deactive_time = 120
default_volumetric_extruder_limit = 0.00
disable_inactive_e = true
disable_inactive_x = true
disable_inactive_y = true
disable_inactive_z = true
e0_auto_fan_pin = -1
encoder_100x_steps_per_sec = 80
encoder_10x_steps_per_sec = 30
encoder_rate_multiplier = on
extended_capabilities_report = on
extruder_auto_fan_speed = 255
extruder_auto_fan_temperature = 50
fanmux0_pin = -1
fanmux1_pin = -1
fanmux2_pin = -1
faster_gcode_parser = on
homing_bump_mm = { 5, 5, 2 }
max_arc_segment_mm = 1.0
min_arc_segment_mm = 0.1
min_circle_segments = 72
n_arc_correction = 25
serial_overrun_protection = on
slowdown = on
slowdown_divisor = 2
temp_sensor_bed = 0
thermal_protection_bed_hysteresis = 2
thermocouple_max_errors = 15
tx_buffer_size = 0
watch_bed_temp_increase = 2
watch_bed_temp_period = 60
watch_temp_increase = 2
watch_temp_period = 20

View File

@@ -23,6 +23,7 @@
#include "../../inc/MarlinConfig.h"
#include "HAL.h"
#include <avr/wdt.h>
#ifdef USBCON
DefaultSerial1 MSerial0(false, Serial);
@@ -35,13 +36,32 @@
// Public Variables
// ------------------------
//uint8_t MCUSR;
// Don't initialize/override variable (which would happen in .init4)
uint8_t MarlinHAL::reset_reason __attribute__((section(".noinit")));
// ------------------------
// Public functions
// ------------------------
void HAL_init() {
__attribute__((naked)) // Don't output function pro- and epilogue
__attribute__((used)) // Output the function, even if "not used"
__attribute__((section(".init3"))) // Put in an early user definable section
void save_reset_reason() {
#if ENABLED(OPTIBOOT_RESET_REASON)
__asm__ __volatile__(
A("STS %0, r2")
: "=m"(hal.reset_reason)
);
#else
hal.reset_reason = MCUSR;
#endif
// Clear within 16ms since WDRF bit enables a 16ms watchdog timer -> Boot loop
hal.clear_reset_source();
wdt_disable();
}
void MarlinHAL::init() {
// Init Servo Pins
#define INIT_SERVO(N) OUT_WRITE(SERVO##N##_PIN, LOW)
#if HAS_SERVO_0
@@ -56,9 +76,11 @@ void HAL_init() {
#if HAS_SERVO_3
INIT_SERVO(3);
#endif
init_pwm_timers(); // Init user timers to default frequency - 1000HZ
}
void HAL_reboot() {
void MarlinHAL::reboot() {
#if ENABLED(USE_WATCHDOG)
while (1) { /* run out the watchdog */ }
#else
@@ -67,6 +89,62 @@ void HAL_reboot() {
#endif
}
// ------------------------
// Watchdog Timer
// ------------------------
#if ENABLED(USE_WATCHDOG)
#include <avr/wdt.h>
#include "../../MarlinCore.h"
// Initialize watchdog with 8s timeout, if possible. Otherwise, make it 4s.
void MarlinHAL::watchdog_init() {
#if ENABLED(WATCHDOG_DURATION_8S) && defined(WDTO_8S)
#define WDTO_NS WDTO_8S
#else
#define WDTO_NS WDTO_4S
#endif
#if ENABLED(WATCHDOG_RESET_MANUAL)
// Enable the watchdog timer, but only for the interrupt.
// Take care, as this requires the correct order of operation, with interrupts disabled.
// See the datasheet of any AVR chip for details.
wdt_reset();
cli();
_WD_CONTROL_REG = _BV(_WD_CHANGE_BIT) | _BV(WDE);
_WD_CONTROL_REG = _BV(WDIE) | (WDTO_NS & 0x07) | ((WDTO_NS & 0x08) << 2); // WDTO_NS directly does not work. bit 0-2 are consecutive in the register but the highest value bit is at bit 5
// So worked for up to WDTO_2S
sei();
wdt_reset();
#else
wdt_enable(WDTO_NS); // The function handles the upper bit correct.
#endif
//delay(10000); // test it!
}
//===========================================================================
//=================================== ISR ===================================
//===========================================================================
// Watchdog timer interrupt, called if main program blocks >4sec and manual reset is enabled.
#if ENABLED(WATCHDOG_RESET_MANUAL)
ISR(WDT_vect) {
sei(); // With the interrupt driven serial we need to allow interrupts.
SERIAL_ERROR_MSG(STR_WATCHDOG_FIRED);
minkill(); // interrupt-safe final kill and infinite loop
}
#endif
// Reset watchdog. MUST be called at least every 4 seconds after the
// first watchdog_init or AVR will go into emergency procedures.
void MarlinHAL::watchdog_refresh() { wdt_reset(); }
#endif // USE_WATCHDOG
// ------------------------
// Free Memory Accessor
// ------------------------
#if ENABLED(SDSUPPORT)
#include "../../sd/SdFatUtil.h"
@@ -74,20 +152,20 @@ void HAL_reboot() {
#else // !SDSUPPORT
extern "C" {
extern char __bss_end;
extern char __heap_start;
extern void* __brkval;
extern "C" {
extern char __bss_end;
extern char __heap_start;
extern void* __brkval;
int freeMemory() {
int free_memory;
if ((int)__brkval == 0)
free_memory = ((int)&free_memory) - ((int)&__bss_end);
else
free_memory = ((int)&free_memory) - ((int)__brkval);
return free_memory;
int freeMemory() {
int free_memory;
if ((int)__brkval == 0)
free_memory = ((int)&free_memory) - ((int)&__bss_end);
else
free_memory = ((int)&free_memory) - ((int)__brkval);
return free_memory;
}
}
}
#endif // !SDSUPPORT

View File

@@ -19,16 +19,18 @@
*/
#pragma once
/**
* HAL for Arduino AVR
*/
#include "../shared/Marduino.h"
#include "../shared/HAL_SPI.h"
#include "fastio.h"
#include "watchdog.h"
#include "math.h"
#ifdef USBCON
#include <HardwareSerial.h>
#else
#define HardwareSerial_h // Hack to prevent HardwareSerial.h header inclusion
#include "MarlinSerial.h"
#endif
@@ -39,6 +41,19 @@
#include <avr/interrupt.h>
#include <avr/io.h>
//
// Default graphical display delays
//
#if F_CPU >= 20000000
#define CPU_ST7920_DELAY_1 150
#define CPU_ST7920_DELAY_2 0
#define CPU_ST7920_DELAY_3 150
#elif F_CPU == 16000000
#define CPU_ST7920_DELAY_1 125
#define CPU_ST7920_DELAY_2 0
#define CPU_ST7920_DELAY_3 188
#endif
#ifndef pgm_read_ptr
// Compatibility for avr-libc 1.8.0-4.1 included with Ubuntu for
// Windows Subsystem for Linux on Windows 10 as of 10/18/2019
@@ -61,9 +76,9 @@
#define CRITICAL_SECTION_START() unsigned char _sreg = SREG; cli()
#define CRITICAL_SECTION_END() SREG = _sreg
#endif
#define ISRS_ENABLED() TEST(SREG, SREG_I)
#define ENABLE_ISRS() sei()
#define DISABLE_ISRS() cli()
#define HAL_CAN_SET_PWM_FREQ // This HAL supports PWM Frequency adjustment
#define PWM_FREQUENCY 1000 // Default PWM frequency when set_pwm_duty() is called without set_pwm_frequency()
// ------------------------
// Types
@@ -71,16 +86,15 @@
typedef int8_t pin_t;
#define SHARED_SERVOS HAS_SERVOS
#define HAL_SERVO_LIB Servo
#define SHARED_SERVOS HAS_SERVOS // Use shared/servos.cpp
class Servo;
typedef Servo hal_servo_t;
// ------------------------
// Public Variables
// ------------------------
//extern uint8_t MCUSR;
// Serial ports
// ------------------------
#ifdef USBCON
#include "../../core/serial_hook.h"
typedef ForwardSerial1Class< decltype(Serial) > DefaultSerial1;
@@ -93,28 +107,35 @@ typedef int8_t pin_t;
#define MYSERIAL1 TERN(BLUETOOTH, btSerial, MSerial0)
#else
#if !WITHIN(SERIAL_PORT, -1, 3)
#error "SERIAL_PORT must be from 0 to 3. You can also use -1 if the board supports Native USB."
#error "SERIAL_PORT must be from 0 to 3, or -1 for USB Serial."
#endif
#define MYSERIAL1 customizedSerial1
#ifdef SERIAL_PORT_2
#if !WITHIN(SERIAL_PORT_2, -1, 3)
#error "SERIAL_PORT_2 must be from 0 to 3. You can also use -1 if the board supports Native USB."
#error "SERIAL_PORT_2 must be from 0 to 3, or -1 for USB Serial."
#endif
#define MYSERIAL2 customizedSerial2
#endif
#ifdef SERIAL_PORT_3
#if !WITHIN(SERIAL_PORT_3, -1, 3)
#error "SERIAL_PORT_3 must be from 0 to 3, or -1 for USB Serial."
#endif
#define MYSERIAL3 customizedSerial3
#endif
#endif
#ifdef MMU2_SERIAL_PORT
#if !WITHIN(MMU2_SERIAL_PORT, -1, 3)
#error "MMU2_SERIAL_PORT must be from 0 to 3. You can also use -1 if the board supports Native USB."
#error "MMU2_SERIAL_PORT must be from 0 to 3, or -1 for USB Serial."
#endif
#define MMU2_SERIAL mmuSerial
#endif
#ifdef LCD_SERIAL_PORT
#if !WITHIN(LCD_SERIAL_PORT, -1, 3)
#error "LCD_SERIAL_PORT must be from 0 to 3. You can also use -1 if the board supports Native USB."
#error "LCD_SERIAL_PORT must be from 0 to 3, or -1 for USB Serial."
#endif
#define LCD_SERIAL lcdSerial
#if HAS_DGUS_LCD
@@ -122,64 +143,20 @@ typedef int8_t pin_t;
#endif
#endif
// ------------------------
// Public functions
// ------------------------
void HAL_init();
//void cli();
//void _delay_ms(const int delay);
inline void HAL_clear_reset_source() { MCUSR = 0; }
inline uint8_t HAL_get_reset_source() { return MCUSR; }
void HAL_reboot();
#if GCC_VERSION <= 50000
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wunused-function"
#endif
extern "C" int freeMemory();
#if GCC_VERSION <= 50000
#pragma GCC diagnostic pop
#endif
//
// ADC
#ifdef DIDR2
#define HAL_ANALOG_SELECT(ind) do{ if (ind < 8) SBI(DIDR0, ind); else SBI(DIDR2, ind & 0x07); }while(0)
#else
#define HAL_ANALOG_SELECT(ind) SBI(DIDR0, ind);
#endif
inline void HAL_adc_init() {
ADCSRA = _BV(ADEN) | _BV(ADSC) | _BV(ADIF) | 0x07;
DIDR0 = 0;
#ifdef DIDR2
DIDR2 = 0;
#endif
}
#define SET_ADMUX_ADCSRA(ch) ADMUX = _BV(REFS0) | (ch & 0x07); SBI(ADCSRA, ADSC)
#ifdef MUX5
#define HAL_START_ADC(ch) if (ch > 7) ADCSRB = _BV(MUX5); else ADCSRB = 0; SET_ADMUX_ADCSRA(ch)
#else
#define HAL_START_ADC(ch) ADCSRB = 0; SET_ADMUX_ADCSRA(ch)
#endif
//
#define HAL_ADC_VREF 5.0
#define HAL_ADC_RESOLUTION 10
#define HAL_READ_ADC() ADC
#define HAL_ADC_READY() !TEST(ADCSRA, ADSC)
//
// Pin Mapping for M42, M43, M226
//
#define GET_PIN_MAP_PIN(index) index
#define GET_PIN_MAP_INDEX(pin) pin
#define PARSED_PIN_INDEX(code, dval) parser.intval(code, dval)
#define HAL_SENSITIVE_PINS 0, 1
#define HAL_SENSITIVE_PINS 0, 1,
#ifdef __AVR_AT90USB1286__
#define JTAG_DISABLE() do{ MCUCR = 0x80; MCUCR = 0x80; }while(0)
@@ -188,23 +165,113 @@ inline void HAL_adc_init() {
// AVR compatibility
#define strtof strtod
#define HAL_CAN_SET_PWM_FREQ // This HAL supports PWM Frequency adjustment
// ------------------------
// Free Memory Accessor
// ------------------------
/**
* set_pwm_frequency
* Sets the frequency of the timer corresponding to the provided pin
* as close as possible to the provided desired frequency. Internally
* calculates the required waveform generation mode, prescaler and
* resolution values required and sets the timer registers accordingly.
* NOTE that the frequency is applied to all pins on the timer (Ex OC3A, OC3B and OC3B)
* NOTE that there are limitations, particularly if using TIMER2. (see Configuration_adv.h -> FAST FAN PWM Settings)
*/
void set_pwm_frequency(const pin_t pin, int f_desired);
#pragma GCC diagnostic push
#if GCC_VERSION <= 50000
#pragma GCC diagnostic ignored "-Wunused-function"
#endif
/**
* set_pwm_duty
* Sets the PWM duty cycle of the provided pin to the provided value
* Optionally allows inverting the duty cycle [default = false]
* Optionally allows changing the maximum size of the provided value to enable finer PWM duty control [default = 255]
*/
void set_pwm_duty(const pin_t pin, const uint16_t v, const uint16_t v_size=255, const bool invert=false);
extern "C" int freeMemory();
#pragma GCC diagnostic pop
// ------------------------
// MarlinHAL Class
// ------------------------
class MarlinHAL {
public:
// Earliest possible init, before setup()
MarlinHAL() {}
// Watchdog
static void watchdog_init() IF_DISABLED(USE_WATCHDOG, {});
static void watchdog_refresh() IF_DISABLED(USE_WATCHDOG, {});
static void init(); // Called early in setup()
static void init_board() {} // Called less early in setup()
static void reboot(); // Restart the firmware from 0x0
// Interrupts
static bool isr_state() { return TEST(SREG, SREG_I); }
static void isr_on() { sei(); }
static void isr_off() { cli(); }
static void delay_ms(const int ms) { _delay_ms(ms); }
// Tasks, called from idle()
static void idletask() {}
// Reset
static uint8_t reset_reason;
static uint8_t get_reset_source() { return reset_reason; }
static void clear_reset_source() { MCUSR = 0; }
// Free SRAM
static int freeMemory() { return ::freeMemory(); }
//
// ADC Methods
//
// Called by Temperature::init once at startup
static void adc_init() {
ADCSRA = _BV(ADEN) | _BV(ADSC) | _BV(ADIF) | 0x07;
DIDR0 = 0;
#ifdef DIDR2
DIDR2 = 0;
#endif
}
// Called by Temperature::init for each sensor at startup
static void adc_enable(const uint8_t ch) {
#ifdef DIDR2
if (ch > 7) { SBI(DIDR2, ch & 0x07); return; }
#endif
SBI(DIDR0, ch);
}
// Begin ADC sampling on the given channel. Called from Temperature::isr!
static void adc_start(const uint8_t ch) {
#ifdef MUX5
ADCSRB = ch > 7 ? _BV(MUX5) : 0;
#else
ADCSRB = 0;
#endif
ADMUX = _BV(REFS0) | (ch & 0x07);
SBI(ADCSRA, ADSC);
}
// Is the ADC ready for reading?
static bool adc_ready() { return !TEST(ADCSRA, ADSC); }
// The current value of the ADC register
static __typeof__(ADC) adc_value() { return ADC; }
/**
* init_pwm_timers
* Set the default frequency for timers 2-5 to 1000HZ
*/
static void init_pwm_timers();
/**
* Set the PWM duty cycle for the pin to the given value.
* Optionally invert the duty cycle [default = false]
* Optionally change the scale of the provided value to enable finer PWM duty control [default = 255]
*/
static void set_pwm_duty(const pin_t pin, const uint16_t v, const uint16_t v_size=255, const bool invert=false);
/**
* Set the frequency of the timer for the given pin as close as
* possible to the provided desired frequency. Internally calculate
* the required waveform generation mode, prescaler, and resolution
* values and set timer registers accordingly.
* NOTE that the frequency is applied to all pins on the timer (Ex OC3A, OC3B and OC3B)
* NOTE that there are limitations, particularly if using TIMER2. (see Configuration_adv.h -> FAST_PWM_FAN Settings)
*/
static void set_pwm_frequency(const pin_t pin, const uint16_t f_desired);
};

View File

@@ -34,21 +34,21 @@
#include "../../inc/MarlinConfig.h"
void spiBegin() {
OUT_WRITE(SD_SS_PIN, HIGH);
#if PIN_EXISTS(SD_SS)
// Do not init HIGH for boards with pin 4 used as Fans or Heaters or otherwise, not likely to have multiple SPI devices anyway.
#if defined(__AVR_ATmega644__) || defined(__AVR_ATmega644P__) || defined(__AVR_ATmega644PA__) || defined(__AVR_ATmega1284P__)
// SS must be in output mode even it is not chip select
SET_OUTPUT(SD_SS_PIN);
#else
// set SS high - may be chip select for another SPI device
OUT_WRITE(SD_SS_PIN, HIGH);
#endif
#endif
SET_OUTPUT(SD_SCK_PIN);
SET_INPUT(SD_MISO_PIN);
SET_OUTPUT(SD_MOSI_PIN);
#if DISABLED(SOFTWARE_SPI)
// SS must be in output mode even it is not chip select
//SET_OUTPUT(SD_SS_PIN);
// set SS high - may be chip select for another SPI device
//#if SET_SPI_SS_HIGH
//WRITE(SD_SS_PIN, HIGH);
//#endif
// set a default rate
spiInit(1);
#endif
IF_DISABLED(SOFTWARE_SPI, spiInit(SPI_HALF_SPEED));
}
#if NONE(SOFTWARE_SPI, FORCE_SOFT_SPI)
@@ -74,7 +74,8 @@ void spiBegin() {
#elif defined(PRR0)
PRR0
#endif
, PRSPI);
, PRSPI
);
SPCR = _BV(SPE) | _BV(MSTR) | (spiRate >> 1);
SPSR = spiRate & 1 || spiRate == 6 ? 0 : _BV(SPI2X);

View File

@@ -1,6 +1,6 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2021 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
@@ -21,5 +21,6 @@
*/
#pragma once
void watchdog_init();
void HAL_watchdog_refresh();
#include <SPI.h>
using MarlinSPI = SPIClass;

View File

@@ -486,7 +486,7 @@ void MarlinSerial<Cfg>::write(const uint8_t c) {
const uint8_t i = (tx_buffer.head + 1) & (Cfg::TX_SIZE - 1);
// If global interrupts are disabled (as the result of being called from an ISR)...
if (!ISRS_ENABLED()) {
if (!hal.isr_state()) {
// Make room by polling if it is possible to transmit, and do so!
while (i == tx_buffer.tail) {
@@ -534,7 +534,7 @@ void MarlinSerial<Cfg>::flushTX() {
if (!_written) return;
// If global interrupts are disabled (as the result of being called from an ISR)...
if (!ISRS_ENABLED()) {
if (!hal.isr_state()) {
// Wait until everything was transmitted - We must do polling, as interrupts are disabled
while (tx_buffer.head != tx_buffer.tail || !B_TXC) {
@@ -567,7 +567,7 @@ ISR(SERIAL_REGNAME(USART, SERIAL_PORT, _UDRE_vect)) {
// Because of the template definition above, it's required to instantiate the template to have all methods generated
template class MarlinSerial< MarlinSerialCfg<SERIAL_PORT> >;
MSerialT customizedSerial1(MSerialT::HasEmergencyParser);
MSerialT1 customizedSerial1(MSerialT1::HasEmergencyParser);
#ifdef SERIAL_PORT_2
@@ -582,7 +582,24 @@ MSerialT customizedSerial1(MSerialT::HasEmergencyParser);
template class MarlinSerial< MarlinSerialCfg<SERIAL_PORT_2> >;
MSerialT2 customizedSerial2(MSerialT2::HasEmergencyParser);
#endif
#endif // SERIAL_PORT_2
#ifdef SERIAL_PORT_3
// Hookup ISR handlers
ISR(SERIAL_REGNAME(USART, SERIAL_PORT_3, _RX_vect)) {
MarlinSerial<MarlinSerialCfg<SERIAL_PORT_3>>::store_rxd_char();
}
ISR(SERIAL_REGNAME(USART, SERIAL_PORT_3, _UDRE_vect)) {
MarlinSerial<MarlinSerialCfg<SERIAL_PORT_3>>::_tx_udr_empty_irq();
}
template class MarlinSerial< MarlinSerialCfg<SERIAL_PORT_3> >;
MSerialT3 customizedSerial3(MSerialT3::HasEmergencyParser);
#endif // SERIAL_PORT_3
#ifdef MMU2_SERIAL_PORT
@@ -595,8 +612,9 @@ MSerialT customizedSerial1(MSerialT::HasEmergencyParser);
}
template class MarlinSerial< MMU2SerialCfg<MMU2_SERIAL_PORT> >;
MSerialT3 mmuSerial(MSerialT3::HasEmergencyParser);
#endif
MSerialMMU2 mmuSerial(MSerialMMU2::HasEmergencyParser);
#endif // MMU2_SERIAL_PORT
#ifdef LCD_SERIAL_PORT
@@ -609,7 +627,7 @@ MSerialT customizedSerial1(MSerialT::HasEmergencyParser);
}
template class MarlinSerial< LCDSerialCfg<LCD_SERIAL_PORT> >;
MSerialT4 lcdSerial(MSerialT4::HasEmergencyParser);
MSerialLCD lcdSerial(MSerialLCD::HasEmergencyParser);
#if HAS_DGUS_LCD
template<typename Cfg>
@@ -622,13 +640,13 @@ MSerialT customizedSerial1(MSerialT::HasEmergencyParser);
}
#endif
#endif
#endif // LCD_SERIAL_PORT
#endif // !USBCON && (UBRRH || UBRR0H || UBRR1H || UBRR2H || UBRR3H)
// For AT90USB targets use the UART for BT interfacing
#if defined(USBCON) && ENABLED(BLUETOOTH)
MSerialT5 bluetoothSerial(false);
MSerialBT bluetoothSerial(false);
#endif
#endif // __AVR__

View File

@@ -191,13 +191,13 @@
rx_framing_errors;
static ring_buffer_pos_t rx_max_enqueued;
static FORCE_INLINE ring_buffer_pos_t atomic_read_rx_head();
FORCE_INLINE static ring_buffer_pos_t atomic_read_rx_head();
static volatile bool rx_tail_value_not_stable;
static volatile uint16_t rx_tail_value_backup;
static FORCE_INLINE void atomic_set_rx_tail(ring_buffer_pos_t value);
static FORCE_INLINE ring_buffer_pos_t atomic_read_rx_tail();
FORCE_INLINE static void atomic_set_rx_tail(ring_buffer_pos_t value);
FORCE_INLINE static ring_buffer_pos_t atomic_read_rx_tail();
public:
FORCE_INLINE static void store_rxd_char();
@@ -217,7 +217,7 @@
#endif
enum { HasEmergencyParser = Cfg::EMERGENCYPARSER };
static inline bool emergency_parser_enabled() { return Cfg::EMERGENCYPARSER; }
static bool emergency_parser_enabled() { return Cfg::EMERGENCYPARSER; }
FORCE_INLINE static uint8_t dropped() { return Cfg::DROPPED_RX ? rx_dropped_bytes : 0; }
FORCE_INLINE static uint8_t buffer_overruns() { return Cfg::RX_OVERRUNS ? rx_buffer_overruns : 0; }
@@ -238,14 +238,19 @@
static constexpr bool MAX_RX_QUEUED = ENABLED(SERIAL_STATS_MAX_RX_QUEUED);
};
typedef Serial1Class< MarlinSerial< MarlinSerialCfg<SERIAL_PORT> > > MSerialT;
extern MSerialT customizedSerial1;
typedef Serial1Class< MarlinSerial< MarlinSerialCfg<SERIAL_PORT> > > MSerialT1;
extern MSerialT1 customizedSerial1;
#ifdef SERIAL_PORT_2
typedef Serial1Class< MarlinSerial< MarlinSerialCfg<SERIAL_PORT_2> > > MSerialT2;
extern MSerialT2 customizedSerial2;
#endif
#ifdef SERIAL_PORT_3
typedef Serial1Class< MarlinSerial< MarlinSerialCfg<SERIAL_PORT_3> > > MSerialT3;
extern MSerialT3 customizedSerial3;
#endif
#endif // !USBCON
#ifdef MMU2_SERIAL_PORT
@@ -262,8 +267,8 @@
static constexpr bool RX_OVERRUNS = false;
};
typedef Serial1Class< MarlinSerial< MMU2SerialCfg<MMU2_SERIAL_PORT> > > MSerialT3;
extern MSerialT3 mmuSerial;
typedef Serial1Class< MarlinSerial< MMU2SerialCfg<MMU2_SERIAL_PORT> > > MSerialMMU2;
extern MSerialMMU2 mmuSerial;
#endif
#ifdef LCD_SERIAL_PORT
@@ -281,12 +286,12 @@
static constexpr bool RX_OVERRUNS = BOTH(HAS_DGUS_LCD, SERIAL_STATS_RX_BUFFER_OVERRUNS);
};
typedef Serial1Class< MarlinSerial< LCDSerialCfg<LCD_SERIAL_PORT> > > MSerialT4;
extern MSerialT4 lcdSerial;
typedef Serial1Class< MarlinSerial< LCDSerialCfg<LCD_SERIAL_PORT> > > MSerialLCD;
extern MSerialLCD lcdSerial;
#endif
// Use the UART for Bluetooth in AT90USB configurations
#if defined(USBCON) && ENABLED(BLUETOOTH)
typedef Serial1Class<HardwareSerial> MSerialT5;
extern MSerialT5 bluetoothSerial;
typedef Serial1Class<HardwareSerial> MSerialBT;
extern MSerialBT bluetoothSerial;
#endif

View File

@@ -66,27 +66,26 @@ static volatile int8_t Channel[_Nbr_16timers]; // counter for the s
/************ static functions common to all instances ***********************/
static inline void handle_interrupts(timer16_Sequence_t timer, volatile uint16_t* TCNTn, volatile uint16_t* OCRnA) {
if (Channel[timer] < 0)
*TCNTn = 0; // channel set to -1 indicated that refresh interval completed so reset the timer
else {
if (SERVO_INDEX(timer, Channel[timer]) < ServoCount && SERVO(timer, Channel[timer]).Pin.isActive)
extDigitalWrite(SERVO(timer, Channel[timer]).Pin.nbr, LOW); // pulse this channel low if activated
}
static inline void handle_interrupts(const timer16_Sequence_t timer, volatile uint16_t* TCNTn, volatile uint16_t* OCRnA) {
int8_t cho = Channel[timer]; // Handle the prior Channel[timer] first
if (cho < 0) // Channel -1 indicates the refresh interval completed...
*TCNTn = 0; // ...so reset the timer
else if (SERVO_INDEX(timer, cho) < ServoCount) // prior channel handled?
extDigitalWrite(SERVO(timer, cho).Pin.nbr, LOW); // pulse the prior channel LOW
Channel[timer]++; // increment to the next channel
if (SERVO_INDEX(timer, Channel[timer]) < ServoCount && Channel[timer] < SERVOS_PER_TIMER) {
*OCRnA = *TCNTn + SERVO(timer, Channel[timer]).ticks;
if (SERVO(timer, Channel[timer]).Pin.isActive) // check if activated
extDigitalWrite(SERVO(timer, Channel[timer]).Pin.nbr, HIGH); // it's an active channel so pulse it high
Channel[timer] = ++cho; // Handle the next channel (or 0)
if (cho < SERVOS_PER_TIMER && SERVO_INDEX(timer, cho) < ServoCount) {
*OCRnA = *TCNTn + SERVO(timer, cho).ticks; // set compare to current ticks plus duration
if (SERVO(timer, cho).Pin.isActive) // activated?
extDigitalWrite(SERVO(timer, cho).Pin.nbr, HIGH); // yes: pulse HIGH
}
else {
// finished all channels so wait for the refresh period to expire before starting over
if (((unsigned)*TCNTn) + 4 < usToTicks(REFRESH_INTERVAL)) // allow a few ticks to ensure the next OCR1A not missed
*OCRnA = (unsigned int)usToTicks(REFRESH_INTERVAL);
else
*OCRnA = *TCNTn + 4; // at least REFRESH_INTERVAL has elapsed
Channel[timer] = -1; // this will get incremented at the end of the refresh period to start again at the first channel
const unsigned int cval = ((unsigned)*TCNTn) + 32 / (SERVO_TIMER_PRESCALER), // allow 32 cycles to ensure the next OCR1A not missed
ival = (unsigned int)usToTicks(REFRESH_INTERVAL); // at least REFRESH_INTERVAL has elapsed
*OCRnA = max(cval, ival);
Channel[timer] = -1; // reset the timer counter to 0 on the next call
}
}
@@ -123,91 +122,102 @@ static inline void handle_interrupts(timer16_Sequence_t timer, volatile uint16_t
/****************** end of static functions ******************************/
void initISR(timer16_Sequence_t timer) {
#ifdef _useTimer1
if (timer == _timer1) {
TCCR1A = 0; // normal counting mode
TCCR1B = _BV(CS11); // set prescaler of 8
TCNT1 = 0; // clear the timer count
#if defined(__AVR_ATmega8__) || defined(__AVR_ATmega128__)
SBI(TIFR, OCF1A); // clear any pending interrupts;
SBI(TIMSK, OCIE1A); // enable the output compare interrupt
#else
// here if not ATmega8 or ATmega128
SBI(TIFR1, OCF1A); // clear any pending interrupts;
SBI(TIMSK1, OCIE1A); // enable the output compare interrupt
#endif
#ifdef WIRING
timerAttach(TIMER1OUTCOMPAREA_INT, Timer1Service);
#endif
}
#endif
void initISR(const timer16_Sequence_t timer_index) {
switch (timer_index) {
default: break;
#ifdef _useTimer3
if (timer == _timer3) {
TCCR3A = 0; // normal counting mode
TCCR3B = _BV(CS31); // set prescaler of 8
TCNT3 = 0; // clear the timer count
#ifdef __AVR_ATmega128__
SBI(TIFR, OCF3A); // clear any pending interrupts;
SBI(ETIMSK, OCIE3A); // enable the output compare interrupt
#else
SBI(TIFR3, OCF3A); // clear any pending interrupts;
SBI(TIMSK3, OCIE3A); // enable the output compare interrupt
#endif
#ifdef WIRING
timerAttach(TIMER3OUTCOMPAREA_INT, Timer3Service); // for Wiring platform only
#endif
}
#endif
#ifdef _useTimer1
case _timer1:
TCCR1A = 0; // normal counting mode
TCCR1B = _BV(CS11); // set prescaler of 8
TCNT1 = 0; // clear the timer count
#if defined(__AVR_ATmega8__) || defined(__AVR_ATmega128__)
SBI(TIFR, OCF1A); // clear any pending interrupts;
SBI(TIMSK, OCIE1A); // enable the output compare interrupt
#else
// here if not ATmega8 or ATmega128
SBI(TIFR1, OCF1A); // clear any pending interrupts;
SBI(TIMSK1, OCIE1A); // enable the output compare interrupt
#endif
#ifdef WIRING
timerAttach(TIMER1OUTCOMPAREA_INT, Timer1Service);
#endif
break;
#endif
#ifdef _useTimer4
if (timer == _timer4) {
TCCR4A = 0; // normal counting mode
TCCR4B = _BV(CS41); // set prescaler of 8
TCNT4 = 0; // clear the timer count
TIFR4 = _BV(OCF4A); // clear any pending interrupts;
TIMSK4 = _BV(OCIE4A); // enable the output compare interrupt
}
#endif
#ifdef _useTimer3
case _timer3:
TCCR3A = 0; // normal counting mode
TCCR3B = _BV(CS31); // set prescaler of 8
TCNT3 = 0; // clear the timer count
#ifdef __AVR_ATmega128__
SBI(TIFR, OCF3A); // clear any pending interrupts;
SBI(ETIMSK, OCIE3A); // enable the output compare interrupt
#else
SBI(TIFR3, OCF3A); // clear any pending interrupts;
SBI(TIMSK3, OCIE3A); // enable the output compare interrupt
#endif
#ifdef WIRING
timerAttach(TIMER3OUTCOMPAREA_INT, Timer3Service); // for Wiring platform only
#endif
break;
#endif
#ifdef _useTimer5
if (timer == _timer5) {
TCCR5A = 0; // normal counting mode
TCCR5B = _BV(CS51); // set prescaler of 8
TCNT5 = 0; // clear the timer count
TIFR5 = _BV(OCF5A); // clear any pending interrupts;
TIMSK5 = _BV(OCIE5A); // enable the output compare interrupt
}
#endif
#ifdef _useTimer4
case _timer4:
TCCR4A = 0; // normal counting mode
TCCR4B = _BV(CS41); // set prescaler of 8
TCNT4 = 0; // clear the timer count
TIFR4 = _BV(OCF4A); // clear any pending interrupts;
TIMSK4 = _BV(OCIE4A); // enable the output compare interrupt
break;
#endif
#ifdef _useTimer5
case _timer5:
TCCR5A = 0; // normal counting mode
TCCR5B = _BV(CS51); // set prescaler of 8
TCNT5 = 0; // clear the timer count
TIFR5 = _BV(OCF5A); // clear any pending interrupts;
TIMSK5 = _BV(OCIE5A); // enable the output compare interrupt
break;
#endif
}
}
void finISR(timer16_Sequence_t timer) {
void finISR(const timer16_Sequence_t timer_index) {
// Disable use of the given timer
#ifdef WIRING
if (timer == _timer1) {
CBI(
#if defined(__AVR_ATmega1281__) || defined(__AVR_ATmega2561__)
TIMSK1
#else
TIMSK
#endif
, OCIE1A); // disable timer 1 output compare interrupt
timerDetach(TIMER1OUTCOMPAREA_INT);
}
else if (timer == _timer3) {
CBI(
#if defined(__AVR_ATmega1281__) || defined(__AVR_ATmega2561__)
TIMSK3
#else
ETIMSK
#endif
, OCIE3A); // disable the timer3 output compare A interrupt
timerDetach(TIMER3OUTCOMPAREA_INT);
switch (timer_index) {
default: break;
case _timer1:
CBI(
#if defined(__AVR_ATmega1281__) || defined(__AVR_ATmega2561__)
TIMSK1
#else
TIMSK
#endif
, OCIE1A // disable timer 1 output compare interrupt
);
timerDetach(TIMER1OUTCOMPAREA_INT);
break;
case _timer3:
CBI(
#if defined(__AVR_ATmega1281__) || defined(__AVR_ATmega2561__)
TIMSK3
#else
ETIMSK
#endif
, OCIE3A // disable the timer3 output compare A interrupt
);
timerDetach(TIMER3OUTCOMPAREA_INT);
break;
}
#else // !WIRING
// For arduino - in future: call here to a currently undefined function to reset the timer
UNUSED(timer);
UNUSED(timer_index);
#endif
}

View File

@@ -168,6 +168,51 @@ void setup_endstop_interrupts() {
pciSetup(Z_MIN_PIN);
#endif
#endif
#if HAS_I_MAX
#if (digitalPinToInterrupt(I_MAX_PIN) != NOT_AN_INTERRUPT)
_ATTACH(I_MAX_PIN);
#else
static_assert(digitalPinHasPCICR(I_MAX_PIN), "I_MAX_PIN is not interrupt-capable");
pciSetup(I_MAX_PIN);
#endif
#elif HAS_I_MIN
#if (digitalPinToInterrupt(I_MIN_PIN) != NOT_AN_INTERRUPT)
_ATTACH(I_MIN_PIN);
#else
static_assert(digitalPinHasPCICR(I_MIN_PIN), "I_MIN_PIN is not interrupt-capable");
pciSetup(I_MIN_PIN);
#endif
#endif
#if HAS_J_MAX
#if (digitalPinToInterrupt(J_MAX_PIN) != NOT_AN_INTERRUPT)
_ATTACH(J_MAX_PIN);
#else
static_assert(digitalPinHasPCICR(J_MAX_PIN), "J_MAX_PIN is not interrupt-capable");
pciSetup(J_MAX_PIN);
#endif
#elif HAS_J_MIN
#if (digitalPinToInterrupt(J_MIN_PIN) != NOT_AN_INTERRUPT)
_ATTACH(J_MIN_PIN);
#else
static_assert(digitalPinHasPCICR(J_MIN_PIN), "J_MIN_PIN is not interrupt-capable");
pciSetup(J_MIN_PIN);
#endif
#endif
#if HAS_K_MAX
#if (digitalPinToInterrupt(K_MAX_PIN) != NOT_AN_INTERRUPT)
_ATTACH(K_MAX_PIN);
#else
static_assert(digitalPinHasPCICR(K_MAX_PIN), "K_MAX_PIN is not interrupt-capable");
pciSetup(K_MAX_PIN);
#endif
#elif HAS_K_MIN
#if (digitalPinToInterrupt(K_MIN_PIN) != NOT_AN_INTERRUPT)
_ATTACH(K_MIN_PIN);
#else
static_assert(digitalPinHasPCICR(K_MIN_PIN), "K_MIN_PIN is not interrupt-capable");
pciSetup(K_MIN_PIN);
#endif
#endif
#if HAS_X2_MAX
#if (digitalPinToInterrupt(X2_MAX_PIN) != NOT_AN_INTERRUPT)
_ATTACH(X2_MAX_PIN);

View File

@@ -21,11 +21,7 @@
*/
#ifdef __AVR__
#include "../../inc/MarlinConfigPre.h"
#if NEEDS_HARDWARE_PWM // Specific meta-flag for features that mandate PWM
#include "HAL.h"
#include "../../inc/MarlinConfig.h"
struct Timer {
volatile uint8_t* TCCRnQ[3]; // max 3 TCCR registers per timer
@@ -33,250 +29,194 @@ struct Timer {
volatile uint16_t* ICRn; // max 1 ICR register per timer
uint8_t n; // the timer number [0->5]
uint8_t q; // the timer output [0->2] (A->C)
bool isPWM; // True if pin is a "hardware timer"
bool isProtected; // True if timer is protected
};
// Macros for the Timer structure
#define _SET_WGMnQ(T, V) do{ \
*(T.TCCRnQ)[0] = (*(T.TCCRnQ)[0] & ~(0x3 << 0)) | (( int(V) & 0x3) << 0); \
*(T.TCCRnQ)[1] = (*(T.TCCRnQ)[1] & ~(0x3 << 3)) | (((int(V) >> 2) & 0x3) << 3); \
}while(0)
// Set TCCR CS bits
#define _SET_CSn(T, V) (*(T.TCCRnQ)[1] = (*(T.TCCRnQ[1]) & ~(0x7 << 0)) | ((int(V) & 0x7) << 0))
// Set TCCR COM bits
#define _SET_COMnQ(T, Q, V) (*(T.TCCRnQ)[0] = (*(T.TCCRnQ)[0] & ~(0x3 << (6-2*(Q)))) | (int(V) << (6-2*(Q))))
// Set OCRnQ register
#define _SET_OCRnQ(T, Q, V) (*(T.OCRnQ)[Q] = int(V) & 0xFFFF)
// Set ICRn register (one per timer)
#define _SET_ICRn(T, V) (*(T.ICRn) = int(V) & 0xFFFF)
/**
* get_pwm_timer
* Get the timer information and register of the provided pin.
* Return a Timer struct containing this information.
* Used by set_pwm_frequency, set_pwm_duty
* Return a Timer struct describing a pin's timer.
*/
Timer get_pwm_timer(const pin_t pin) {
const Timer get_pwm_timer(const pin_t pin) {
uint8_t q = 0;
switch (digitalPinToTimer(pin)) {
// Protect reserved timers (TIMER0 & TIMER1)
#ifdef TCCR0A
#if !AVR_AT90USB1286_FAMILY
case TIMER0A:
#endif
case TIMER0B:
IF_DISABLED(AVR_AT90USB1286_FAMILY, case TIMER0A:)
#endif
#ifdef TCCR1A
case TIMER1A: case TIMER1B:
#endif
break;
#if defined(TCCR2) || defined(TCCR2A)
#ifdef TCCR2
case TIMER2: {
Timer timer = {
/*TCCRnQ*/ { &TCCR2, nullptr, nullptr },
/*OCRnQ*/ { (uint16_t*)&OCR2, nullptr, nullptr },
/*ICRn*/ nullptr,
/*n, q*/ 2, 0
};
}
#elif defined(TCCR2A)
#if ENABLED(USE_OCR2A_AS_TOP)
case TIMER2A: break; // protect TIMER2A
case TIMER2B: {
Timer timer = {
/*TCCRnQ*/ { &TCCR2A, &TCCR2B, nullptr },
/*OCRnQ*/ { (uint16_t*)&OCR2A, (uint16_t*)&OCR2B, nullptr },
/*ICRn*/ nullptr,
/*n, q*/ 2, 1
};
return timer;
}
#else
case TIMER2B: ++q;
case TIMER2A: {
Timer timer = {
/*TCCRnQ*/ { &TCCR2A, &TCCR2B, nullptr },
/*OCRnQ*/ { (uint16_t*)&OCR2A, (uint16_t*)&OCR2B, nullptr },
/*ICRn*/ nullptr,
2, q
};
return timer;
}
#endif
#endif
break; // Protect reserved timers (TIMER0 & TIMER1)
#ifdef TCCR0A
case TIMER0B: // Protected timer, but allow setting the duty cycle on OCR0B for pin D4 only
return Timer({ { &TCCR0A, nullptr, nullptr }, { (uint16_t*)&OCR0A, (uint16_t*)&OCR0B, nullptr }, nullptr, 0, 1, true, true });
#endif
#if HAS_TCCR2
case TIMER2:
return Timer({ { &TCCR2, nullptr, nullptr }, { (uint16_t*)&OCR2, nullptr, nullptr }, nullptr, 2, 0, true, false });
#elif ENABLED(USE_OCR2A_AS_TOP)
case TIMER2A: break; // Protect TIMER2A since its OCR is used by TIMER2B
case TIMER2B:
return Timer({ { &TCCR2A, &TCCR2B, nullptr }, { (uint16_t*)&OCR2A, (uint16_t*)&OCR2B, nullptr }, nullptr, 2, 1, true, false });
#elif defined(TCCR2A)
case TIMER2B: ++q; case TIMER2A:
return Timer({ { &TCCR2A, &TCCR2B, nullptr }, { (uint16_t*)&OCR2A, (uint16_t*)&OCR2B, nullptr }, nullptr, 2, q, true, false });
#endif
#ifdef OCR3C
case TIMER3C: ++q;
case TIMER3B: ++q;
case TIMER3A: {
Timer timer = {
/*TCCRnQ*/ { &TCCR3A, &TCCR3B, &TCCR3C },
/*OCRnQ*/ { &OCR3A, &OCR3B, &OCR3C },
/*ICRn*/ &ICR3,
/*n, q*/ 3, q
};
return timer;
}
case TIMER3C: ++q; case TIMER3B: ++q; case TIMER3A:
return Timer({ { &TCCR3A, &TCCR3B, &TCCR3C }, { &OCR3A, &OCR3B, &OCR3C }, &ICR3, 3, q, true, false });
#elif defined(OCR3B)
case TIMER3B: ++q;
case TIMER3A: {
Timer timer = {
/*TCCRnQ*/ { &TCCR3A, &TCCR3B, nullptr },
/*OCRnQ*/ { &OCR3A, &OCR3B, nullptr },
/*ICRn*/ &ICR3,
/*n, q*/ 3, q
};
return timer;
}
case TIMER3B: ++q; case TIMER3A:
return Timer({ { &TCCR3A, &TCCR3B, nullptr }, { &OCR3A, &OCR3B, nullptr }, &ICR3, 3, q, true, false });
#endif
#ifdef TCCR4A
case TIMER4C: ++q;
case TIMER4B: ++q;
case TIMER4A: {
Timer timer = {
/*TCCRnQ*/ { &TCCR4A, &TCCR4B, &TCCR4C },
/*OCRnQ*/ { &OCR4A, &OCR4B, &OCR4C },
/*ICRn*/ &ICR4,
/*n, q*/ 4, q
};
return timer;
}
case TIMER4C: ++q; case TIMER4B: ++q; case TIMER4A:
return Timer({ { &TCCR4A, &TCCR4B, &TCCR4C }, { &OCR4A, &OCR4B, &OCR4C }, &ICR4, 4, q, true, false });
#endif
#ifdef TCCR5A
case TIMER5C: ++q;
case TIMER5B: ++q;
case TIMER5A: {
Timer timer = {
/*TCCRnQ*/ { &TCCR5A, &TCCR5B, &TCCR5C },
/*OCRnQ*/ { &OCR5A, &OCR5B, &OCR5C },
/*ICRn*/ &ICR5,
/*n, q*/ 5, q
};
return timer;
}
case TIMER5C: ++q; case TIMER5B: ++q; case TIMER5A:
return Timer({ { &TCCR5A, &TCCR5B, &TCCR5C }, { &OCR5A, &OCR5B, &OCR5C }, &ICR5, 5, q, true, false });
#endif
}
Timer timer = {
/*TCCRnQ*/ { nullptr, nullptr, nullptr },
/*OCRnQ*/ { nullptr, nullptr, nullptr },
/*ICRn*/ nullptr,
0, 0
};
return timer;
return Timer();
}
void set_pwm_frequency(const pin_t pin, int f_desired) {
Timer timer = get_pwm_timer(pin);
if (timer.n == 0) return; // Don't proceed if protected timer or not recognised
uint16_t size;
if (timer.n == 2) size = 255; else size = 65535;
void MarlinHAL::set_pwm_frequency(const pin_t pin, const uint16_t f_desired) {
const Timer timer = get_pwm_timer(pin);
if (timer.isProtected || !timer.isPWM) return; // Don't proceed if protected timer or not recognized
uint16_t res = 255; // resolution (TOP value)
uint8_t j = 0; // prescaler index
uint8_t wgm = 1; // waveform generation mode
const bool is_timer2 = timer.n == 2;
const uint16_t maxtop = is_timer2 ? 0xFF : 0xFFFF;
uint16_t res = 0xFF; // resolution (TOP value)
uint8_t j = CS_NONE; // prescaler index
uint8_t wgm = WGM_PWM_PC_8; // waveform generation mode
// Calculating the prescaler and resolution to use to achieve closest frequency
if (f_desired != 0) {
int f = (F_CPU) / (2 * 1024 * size) + 1; // Initialize frequency as lowest (non-zero) achievable
uint16_t prescaler[] = { 0, 1, 8, /*TIMER2 ONLY*/32, 64, /*TIMER2 ONLY*/128, 256, 1024 };
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)
// loop over prescaler values
LOOP_S_L_N(i, 1, 8) {
uint16_t res_temp_fast = 255, res_temp_phase_correct = 255;
if (timer.n == 2) {
// No resolution calculation for TIMER2 unless enabled USE_OCR2A_AS_TOP
#if ENABLED(USE_OCR2A_AS_TOP)
const uint16_t rtf = (F_CPU) / (prescaler[i] * f_desired);
res_temp_fast = rtf - 1;
res_temp_phase_correct = rtf / 2;
LOOP_L_N(i, COUNT(prescaler)) { // Loop through all prescaler values
const uint16_t p = prescaler[i];
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;
#else
res_fast_temp = res_pc_temp = maxtop;
#endif
}
else {
// Skip TIMER2 specific prescalers when not TIMER2
if (i == 3 || i == 5) continue;
const uint16_t rtf = (F_CPU) / (prescaler[i] * f_desired);
res_temp_fast = rtf - 1;
res_temp_phase_correct = rtf / 2;
if (p == 32 || p == 128) continue; // Skip TIMER2 specific prescalers when not TIMER2
const uint16_t rft = (F_CPU) / (p * f_desired);
res_fast_temp = rft - 1;
res_pc_temp = rft / 2;
}
LIMIT(res_temp_fast, 1U, size);
LIMIT(res_temp_phase_correct, 1U, size);
LIMIT(res_fast_temp, 1U, maxtop);
LIMIT(res_pc_temp, 1U, maxtop);
// Calculate frequencies of test prescaler and resolution values
const int f_temp_fast = (F_CPU) / (prescaler[i] * (1 + res_temp_fast)),
f_temp_phase_correct = (F_CPU) / (2 * prescaler[i] * res_temp_phase_correct),
f_diff = ABS(f - f_desired),
f_fast_diff = ABS(f_temp_fast - f_desired),
f_phase_diff = ABS(f_temp_phase_correct - f_desired);
const uint32_t f_diff = _MAX(f, f_desired) - _MIN(f, f_desired),
f_fast_temp = (F_CPU) / (p * (1 + res_fast_temp)),
f_fast_diff = _MAX(f_fast_temp, f_desired) - _MIN(f_fast_temp, f_desired),
f_pc_temp = (F_CPU) / (2 * p * res_pc_temp),
f_pc_diff = _MAX(f_pc_temp, f_desired) - _MIN(f_pc_temp, f_desired);
// If FAST values are closest to desired f
if (f_fast_diff < f_diff && f_fast_diff <= f_phase_diff) {
// Remember this combination
f = f_temp_fast;
res = res_temp_fast;
j = i;
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
if (timer.n == 2) {
wgm = (
#if ENABLED(USE_OCR2A_AS_TOP)
WGM2_FAST_PWM_OCR2A
#else
WGM2_FAST_PWM
#endif
);
}
else wgm = WGM_FAST_PWM_ICRn;
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;
}
// If PHASE CORRECT values are closes to desired f
else if (f_phase_diff < f_diff) {
f = f_temp_phase_correct;
res = res_temp_phase_correct;
j = i;
else if (f_pc_diff < f_diff) { // PHASE CORRECT values are closes to desired f
// Set the Wave Generation Mode to PWM PHASE CORRECT
if (timer.n == 2) {
wgm = (
#if ENABLED(USE_OCR2A_AS_TOP)
WGM2_PWM_PC_OCR2A
#else
WGM2_PWM_PC
#endif
);
}
else wgm = WGM_PWM_PC_ICRn;
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;
}
}
}
_SET_WGMnQ(timer.TCCRnQ, wgm);
_SET_CSn(timer.TCCRnQ, j);
if (timer.n == 2) {
#if ENABLED(USE_OCR2A_AS_TOP)
_SET_OCRnQ(timer.OCRnQ, 0, res); // Set OCR2A value (TOP) = res
#endif
_SET_WGMnQ(timer, wgm);
_SET_CSn(timer, j);
if (is_timer2) {
TERN_(USE_OCR2A_AS_TOP, _SET_OCRnQ(timer, 0, res)); // Set OCR2A value (TOP) = res
}
else
_SET_ICRn(timer.ICRn, res); // Set ICRn value (TOP) = res
_SET_ICRn(timer, res); // Set ICRn value (TOP) = res
}
void set_pwm_duty(const pin_t pin, const uint16_t v, const uint16_t v_size/*=255*/, const bool invert/*=false*/) {
void MarlinHAL::set_pwm_duty(const pin_t pin, const uint16_t v, const uint16_t v_size/*=255*/, const bool invert/*=false*/) {
// If v is 0 or v_size (max), digitalWrite to LOW or HIGH.
// Note that digitalWrite also disables pwm output for us (sets COM bit to 0)
// Note that digitalWrite also disables PWM output for us (sets COM bit to 0)
if (v == 0)
digitalWrite(pin, invert);
else if (v == v_size)
digitalWrite(pin, !invert);
else {
Timer timer = get_pwm_timer(pin);
if (timer.n == 0) return; // Don't proceed if protected timer or not recognised
// Set compare output mode to CLEAR -> SET or SET -> CLEAR (if inverted)
_SET_COMnQ(timer.TCCRnQ, (timer.q
#ifdef TCCR2
+ (timer.q == 2) // COM20 is on bit 4 of TCCR2, thus requires q + 1 in the macro
#endif
), COM_CLEAR_SET + invert
);
uint16_t top;
if (timer.n == 2) { // if TIMER2
top = (
#if ENABLED(USE_OCR2A_AS_TOP)
*timer.OCRnQ[0] // top = OCR2A
#else
255 // top = 0xFF (max)
#endif
);
const Timer timer = get_pwm_timer(pin);
if (timer.isPWM) {
if (timer.n == 0) {
_SET_COMnQ(timer, timer.q, COM_CLEAR_SET); // Only allow a TIMER0B select...
_SET_OCRnQ(timer, timer.q, v); // ...and OCR0B duty update. For output pin D4 no frequency changes are permitted.
}
else if (!timer.isProtected) {
const uint16_t top = timer.n == 2 ? TERN(USE_OCR2A_AS_TOP, *timer.OCRnQ[0], 255) : *timer.ICRn;
_SET_COMnQ(timer, SUM_TERN(HAS_TCCR2, timer.q, timer.q == 2), COM_CLEAR_SET + invert); // COM20 is on bit 4 of TCCR2, so +1 for q==2
_SET_OCRnQ(timer, timer.q, uint16_t(uint32_t(v) * top / v_size)); // Scale 8/16-bit v to top value
}
}
else
top = *timer.ICRn; // top = ICRn
_SET_OCRnQ(timer.OCRnQ, timer.q, v * float(top) / float(v_size)); // Scale 8/16-bit v to top value
digitalWrite(pin, v < v_size / 2 ? LOW : HIGH);
}
}
#endif // NEEDS_HARDWARE_PWM
void MarlinHAL::init_pwm_timers() {
// Init some timer frequencies to a default 1KHz
const pin_t pwm_pin[] = {
#ifdef __AVR_ATmega2560__
10, 5, 6, 46
#elif defined(__AVR_ATmega1280__)
12, 31
#elif defined(__AVR_ATmega644__) || defined(__AVR_ATmega1284__)
15, 6
#elif defined(__AVR_AT90USB1286__) || defined(__AVR_mega64) || defined(__AVR_mega128)
16, 24
#endif
};
LOOP_L_N(i, COUNT(pwm_pin))
set_pwm_frequency(pwm_pin[i], 1000);
}
#endif // __AVR__

View File

@@ -245,7 +245,7 @@ uint16_t set_pwm_frequency_hz(const_float_t hz, const float dca, const float dcb
float count = 0;
if (hz > 0 && (dca || dcb || dcc)) {
count = float(F_CPU) / hz; // 1x prescaler, TOP for 16MHz base freq.
uint16_t prescaler; // Range of 30.5Hz (65535) 64.5KHz (>31)
uint16_t prescaler; // Range of 30.5Hz (65535) 64.5kHz (>31)
if (count >= 255. * 256.) { prescaler = 1024; SET_CS(5, PRESCALER_1024); }
else if (count >= 255. * 64.) { prescaler = 256; SET_CS(5, PRESCALER_256); }
@@ -257,7 +257,7 @@ uint16_t set_pwm_frequency_hz(const_float_t hz, const float dca, const float dcb
const float pwm_top = round(count); // Get the rounded count
ICR5 = (uint16_t)pwm_top - 1; // Subtract 1 for TOP
OCR5A = pwm_top * ABS(dca); // Update and scale DCs
OCR5A = pwm_top * ABS(dca); // Update and scale DCs
OCR5B = pwm_top * ABS(dcb);
OCR5C = pwm_top * ABS(dcc);
_SET_COM(5, A, dca ? (dca < 0 ? COM_SET_CLEAR : COM_CLEAR_SET) : COM_NORMAL); // Set compare modes
@@ -267,17 +267,17 @@ uint16_t set_pwm_frequency_hz(const_float_t hz, const float dca, const float dcb
SET_WGM(5, FAST_PWM_ICRn); // Fast PWM with ICR5 as TOP
//SERIAL_ECHOLNPGM("Timer 5 Settings:");
//SERIAL_ECHOLNPAIR(" Prescaler=", prescaler);
//SERIAL_ECHOLNPAIR(" TOP=", ICR5);
//SERIAL_ECHOLNPAIR(" OCR5A=", OCR5A);
//SERIAL_ECHOLNPAIR(" OCR5B=", OCR5B);
//SERIAL_ECHOLNPAIR(" OCR5C=", OCR5C);
//SERIAL_ECHOLNPGM(" Prescaler=", prescaler);
//SERIAL_ECHOLNPGM(" TOP=", ICR5);
//SERIAL_ECHOLNPGM(" OCR5A=", OCR5A);
//SERIAL_ECHOLNPGM(" OCR5B=", OCR5B);
//SERIAL_ECHOLNPGM(" OCR5C=", OCR5C);
}
else {
// Restore the default for Timer 5
SET_WGM(5, PWM_PC_8); // PWM 8-bit (Phase Correct)
SET_COMS(5, NORMAL, NORMAL, NORMAL); // Do nothing
SET_CS(5, PRESCALER_64); // 16MHz / 64 = 250KHz
SET_CS(5, PRESCALER_64); // 16MHz / 64 = 250kHz
OCR5A = OCR5B = OCR5C = 0;
}
return round(count);

View File

@@ -118,7 +118,7 @@
*/
// Waveform Generation Modes
enum WaveGenMode : char {
enum WaveGenMode : uint8_t {
WGM_NORMAL, // 0
WGM_PWM_PC_8, // 1
WGM_PWM_PC_9, // 2
@@ -138,19 +138,19 @@ enum WaveGenMode : char {
};
// Wavefore Generation Modes (Timer 2 only)
enum WaveGenMode2 : char {
WGM2_NORMAL, // 0
WGM2_PWM_PC, // 1
WGM2_CTC_OCR2A, // 2
WGM2_FAST_PWM, // 3
WGM2_reserved_1, // 4
WGM2_PWM_PC_OCR2A, // 5
WGM2_reserved_2, // 6
WGM2_FAST_PWM_OCR2A, // 7
enum WaveGenMode2 : uint8_t {
WGM2_NORMAL, // 0
WGM2_PWM_PC, // 1
WGM2_CTC_OCR2A, // 2
WGM2_FAST_PWM, // 3
WGM2_reserved_1, // 4
WGM2_PWM_PC_OCR2A, // 5
WGM2_reserved_2, // 6
WGM2_FAST_PWM_OCR2A, // 7
};
// Compare Modes
enum CompareMode : char {
enum CompareMode : uint8_t {
COM_NORMAL, // 0
COM_TOGGLE, // 1 Non-PWM: OCnx ... Both PWM (WGM 9,11,14,15): OCnA only ... else NORMAL
COM_CLEAR_SET, // 2 Non-PWM: OCnx ... Fast PWM: OCnx/Bottom ... PF-FC: OCnx Up/Down
@@ -158,7 +158,7 @@ enum CompareMode : char {
};
// Clock Sources
enum ClockSource : char {
enum ClockSource : uint8_t {
CS_NONE, // 0
CS_PRESCALER_1, // 1
CS_PRESCALER_8, // 2
@@ -170,7 +170,7 @@ enum ClockSource : char {
};
// Clock Sources (Timer 2 only)
enum ClockSource2 : char {
enum ClockSource2 : uint8_t {
CS2_NONE, // 0
CS2_PRESCALER_1, // 1
CS2_PRESCALER_8, // 2
@@ -203,40 +203,33 @@ enum ClockSource2 : char {
TCCR##T##B = (TCCR##T##B & ~(0x3 << WGM##T##2)) | (((int(V) >> 2) & 0x3) << WGM##T##2); \
}while(0)
#define SET_WGM(T,V) _SET_WGM(T,WGM_##V)
// Runtime (see set_pwm_frequency):
#define _SET_WGMnQ(TCCRnQ, V) do{ \
*(TCCRnQ)[0] = (*(TCCRnQ)[0] & ~(0x3 << 0)) | (( int(V) & 0x3) << 0); \
*(TCCRnQ)[1] = (*(TCCRnQ)[1] & ~(0x3 << 3)) | (((int(V) >> 2) & 0x3) << 3); \
}while(0)
// Set Clock Select bits
// Ex: SET_CS3(PRESCALER_64);
#ifdef TCCR2
#define HAS_TCCR2 1
#endif
#define _SET_CS(T,V) (TCCR##T##B = (TCCR##T##B & ~(0x7 << CS##T##0)) | ((int(V) & 0x7) << CS##T##0))
#define _SET_CS0(V) _SET_CS(0,V)
#define _SET_CS1(V) _SET_CS(1,V)
#ifdef TCCR2
#define _SET_CS2(V) (TCCR2 = (TCCR2 & ~(0x7 << CS20)) | (int(V) << CS20))
#else
#define _SET_CS2(V) _SET_CS(2,V)
#endif
#define _SET_CS3(V) _SET_CS(3,V)
#define _SET_CS4(V) _SET_CS(4,V)
#define _SET_CS5(V) _SET_CS(5,V)
#define SET_CS0(V) _SET_CS0(CS_##V)
#define SET_CS1(V) _SET_CS1(CS_##V)
#ifdef TCCR2
#if HAS_TCCR2
#define _SET_CS2(V) (TCCR2 = (TCCR2 & ~(0x7 << CS20)) | (int(V) << CS20))
#define SET_CS2(V) _SET_CS2(CS2_##V)
#else
#define _SET_CS2(V) _SET_CS(2,V)
#define SET_CS2(V) _SET_CS2(CS_##V)
#endif
#define SET_CS3(V) _SET_CS3(CS_##V)
#define SET_CS4(V) _SET_CS4(CS_##V)
#define SET_CS5(V) _SET_CS5(CS_##V)
#define SET_CS(T,V) SET_CS##T(V)
// Runtime (see set_pwm_frequency)
#define _SET_CSn(TCCRnQ, V) do{ \
(*(TCCRnQ)[1] = (*(TCCRnQ[1]) & ~(0x7 << 0)) | ((int(V) & 0x7) << 0)); \
}while(0)
// Set Compare Mode bits
// Ex: SET_COMS(4,CLEAR_SET,CLEAR_SET,CLEAR_SET);
@@ -246,22 +239,6 @@ enum ClockSource2 : char {
#define SET_COMB(T,V) SET_COM(T,B,V)
#define SET_COMC(T,V) SET_COM(T,C,V)
#define SET_COMS(T,V1,V2,V3) do{ SET_COMA(T,V1); SET_COMB(T,V2); SET_COMC(T,V3); }while(0)
// Runtime (see set_pwm_duty)
#define _SET_COMnQ(TCCRnQ, Q, V) do{ \
(*(TCCRnQ)[0] = (*(TCCRnQ)[0] & ~(0x3 << (6-2*(Q)))) | (int(V) << (6-2*(Q)))); \
}while(0)
// Set OCRnQ register
// Runtime (see set_pwm_duty):
#define _SET_OCRnQ(OCRnQ, Q, V) do{ \
(*(OCRnQ)[(Q)] = (0x0000) | (int(V) & 0xFFFF)); \
}while(0)
// Set ICRn register (one per timer)
// Runtime (see set_pwm_frequency)
#define _SET_ICRn(ICRn, V) do{ \
(*(ICRn) = (0x0000) | (int(V) & 0xFFFF)); \
}while(0)
// Set Noise Canceler bit
// Ex: SET_ICNC(2,1)
@@ -284,7 +261,7 @@ enum ClockSource2 : char {
* PWM availability macros
*/
// Determine which harware PWMs are already in use
// Determine which hardware PWMs are already in use
#define _PWM_CHK_FAN_B(P) (P == E0_AUTO_FAN_PIN || P == E1_AUTO_FAN_PIN || P == E2_AUTO_FAN_PIN || P == E3_AUTO_FAN_PIN || P == E4_AUTO_FAN_PIN || P == E5_AUTO_FAN_PIN || P == E6_AUTO_FAN_PIN || P == E7_AUTO_FAN_PIN || P == CHAMBER_AUTO_FAN_PIN || P == COOLER_AUTO_FAN_PIN)
#if PIN_EXISTS(CONTROLLER_FAN)
#define PWM_CHK_FAN_B(P) (_PWM_CHK_FAN_B(P) || P == CONTROLLER_FAN_PIN)

View File

@@ -25,25 +25,57 @@
* Test AVR-specific configuration values for errors at compile-time.
*/
/**
* Check for common serial pin conflicts
*/
#define CHECK_SERIAL_PIN(N) ( \
X_STOP_PIN == N || Y_STOP_PIN == N || Z_STOP_PIN == N \
|| X_MIN_PIN == N || Y_MIN_PIN == N || Z_MIN_PIN == N \
|| X_MAX_PIN == N || Y_MAX_PIN == N || Z_MAX_PIN == N \
|| X_STEP_PIN == N || Y_STEP_PIN == N || Z_STEP_PIN == N \
|| X_DIR_PIN == N || Y_DIR_PIN == N || Z_DIR_PIN == N \
|| X_ENA_PIN == N || Y_ENA_PIN == N || Z_ENA_PIN == N \
)
#if CONF_SERIAL_IS(0) // D0-D1. No known conflicts.
#endif
#if CONF_SERIAL_IS(1) && (CHECK_SERIAL_PIN(18) || CHECK_SERIAL_PIN(19))
#error "Serial Port 1 pin D18 and/or D19 conflicts with another pin on the board."
#endif
#if CONF_SERIAL_IS(2) && (CHECK_SERIAL_PIN(16) || CHECK_SERIAL_PIN(17))
#error "Serial Port 2 pin D16 and/or D17 conflicts with another pin on the board."
#endif
#if CONF_SERIAL_IS(3) && (CHECK_SERIAL_PIN(14) || CHECK_SERIAL_PIN(15))
#error "Serial Port 3 pin D14 and/or D15 conflicts with another pin on the board."
#endif
#undef CHECK_SERIAL_PIN
/**
* Checks for FAST PWM
*/
#if ENABLED(FAST_PWM_FAN) && (ENABLED(USE_OCR2A_AS_TOP) && defined(TCCR2))
#error "USE_OCR2A_AS_TOP does not apply to devices with a single output TIMER2"
#if ALL(FAST_PWM_FAN, USE_OCR2A_AS_TOP, HAS_TCCR2)
#error "USE_OCR2A_AS_TOP does not apply to devices with a single output TIMER2."
#endif
/**
* Checks for SOFT PWM
*/
#if HAS_FAN0 && FAN_PIN == 9 && DISABLED(FAN_SOFT_PWM) && ENABLED(SPEAKER)
#error "FAN_PIN 9 Hardware PWM uses Timer 2 which conflicts with Arduino AVR Tone Timer (for SPEAKER)."
#error "Disable SPEAKER or enable FAN_SOFT_PWM."
#endif
/**
* Sanity checks for Spindle / Laser PWM
*/
#if ENABLED(SPINDLE_LASER_PWM)
#if ENABLED(SPINDLE_LASER_USE_PWM)
#include "../ServoTimers.h" // Needed to check timer availability (_useTimer3)
#if SPINDLE_LASER_PWM_PIN == 4 || WITHIN(SPINDLE_LASER_PWM_PIN, 11, 13)
#error "Counter/Timer for SPINDLE_LASER_PWM_PIN is used by a system interrupt."
#elif NUM_SERVOS > 0 && defined(_useTimer3) && (WITHIN(SPINDLE_LASER_PWM_PIN, 2, 3) || SPINDLE_LASER_PWM_PIN == 5)
#error "Counter/Timer for SPINDLE_LASER_PWM_PIN is used by the servo system."
#endif
#elif defined(SPINDLE_LASER_FREQUENCY)
#error "SPINDLE_LASER_FREQUENCY requires SPINDLE_LASER_PWM."
#elif SPINDLE_LASER_FREQUENCY
#error "SPINDLE_LASER_FREQUENCY requires SPINDLE_LASER_USE_PWM."
#endif
/**
@@ -63,3 +95,7 @@
#if ENABLED(POSTMORTEM_DEBUGGING)
#error "POSTMORTEM_DEBUGGING is not supported on AVR boards."
#endif
#if USING_PULLDOWNS
#error "PULLDOWN pin mode is not available on AVR boards."
#endif

View File

@@ -35,7 +35,7 @@
// C B A is longIn1
// D C B A is longIn2
//
static FORCE_INLINE uint16_t MultiU24X32toH16(uint32_t longIn1, uint32_t longIn2) {
FORCE_INLINE static uint16_t MultiU24X32toH16(uint32_t longIn1, uint32_t longIn2) {
uint8_t tmp1;
uint8_t tmp2;
uint16_t intRes;
@@ -89,7 +89,7 @@ static FORCE_INLINE uint16_t MultiU24X32toH16(uint32_t longIn1, uint32_t longIn2
// uses:
// r26 to store 0
// r27 to store the byte 1 of the 24 bit result
static FORCE_INLINE uint16_t MultiU16X8toH16(uint8_t charIn1, uint16_t intIn2) {
FORCE_INLINE static uint16_t MultiU16X8toH16(uint8_t charIn1, uint16_t intIn2) {
uint8_t tmp;
uint16_t intRes;
__asm__ __volatile__ (

View File

@@ -2,6 +2,9 @@
* 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
@@ -38,7 +41,7 @@
// portModeRegister takes a different argument
#define digitalPinToTimer_DEBUG(p) digitalPinToTimer(p)
#define digitalPinToBitMask_DEBUG(p) digitalPinToBitMask(p)
#define digitalPinToPort_DEBUG(p) digitalPinToPort_Teensy(p)
#define digitalPinToPort_DEBUG(p) digitalPinToPort(p)
#define GET_PINMODE(pin) (*portModeRegister(pin) & digitalPinToBitMask_DEBUG(pin))
#elif AVR_ATmega2560_FAMILY_PLUS_70 // So we can access/display all the pins on boards using more than 70
@@ -71,7 +74,7 @@
#define MULTI_NAME_PAD 26 // space needed to be pretty if not first name assigned to a pin
void PRINT_ARRAY_NAME(uint8_t x) {
char *name_mem_pointer = (char*)pgm_read_ptr(&pin_array[x].name);
PGM_P const name_mem_pointer = (PGM_P)pgm_read_ptr(&pin_array[x].name);
LOOP_L_N(y, MAX_NAME_LENGTH) {
char temp_char = pgm_read_byte(name_mem_pointer + y);
if (temp_char != 0)
@@ -99,7 +102,7 @@ void PRINT_ARRAY_NAME(uint8_t x) {
return true; \
} else return false
#define ABTEST(N) defined(TCCR##N##A) && defined(COM##N##A1)
/**
* Print a pin's PWM status.
@@ -110,7 +113,7 @@ static bool pwm_status(uint8_t pin) {
switch (digitalPinToTimer_DEBUG(pin)) {
#if defined(TCCR0A) && defined(COM0A1)
#if ABTEST(0)
#ifdef TIMER0A
#if !AVR_AT90USB1286_FAMILY // not available in Teensyduino type IDEs
PWM_CASE(0, A);
@@ -119,20 +122,20 @@ static bool pwm_status(uint8_t pin) {
PWM_CASE(0, B);
#endif
#if defined(TCCR1A) && defined(COM1A1)
#if ABTEST(1)
PWM_CASE(1, A);
PWM_CASE(1, B);
#if defined(COM1C1) && defined(TIMER1C)
PWM_CASE(1, C);
#endif
#if defined(COM1C1) && defined(TIMER1C)
PWM_CASE(1, C);
#endif
#endif
#if defined(TCCR2A) && defined(COM2A1)
#if ABTEST(2)
PWM_CASE(2, A);
PWM_CASE(2, B);
#endif
#if defined(TCCR3A) && defined(COM3A1)
#if ABTEST(3)
PWM_CASE(3, A);
PWM_CASE(3, B);
#ifdef COM3C1
@@ -146,7 +149,7 @@ static bool pwm_status(uint8_t pin) {
PWM_CASE(4, C);
#endif
#if defined(TCCR5A) && defined(COM5A1)
#if ABTEST(5)
PWM_CASE(5, A);
PWM_CASE(5, B);
PWM_CASE(5, C);
@@ -163,16 +166,16 @@ static bool pwm_status(uint8_t pin) {
const volatile uint8_t* const PWM_other[][3] PROGMEM = {
{ &TCCR0A, &TCCR0B, &TIMSK0 },
{ &TCCR1A, &TCCR1B, &TIMSK1 },
#if defined(TCCR2A) && defined(COM2A1)
#if ABTEST(2)
{ &TCCR2A, &TCCR2B, &TIMSK2 },
#endif
#if defined(TCCR3A) && defined(COM3A1)
#if ABTEST(3)
{ &TCCR3A, &TCCR3B, &TIMSK3 },
#endif
#ifdef TCCR4A
{ &TCCR4A, &TCCR4B, &TIMSK4 },
#endif
#if defined(TCCR5A) && defined(COM5A1)
#if ABTEST(5)
{ &TCCR5A, &TCCR5B, &TIMSK5 },
#endif
};
@@ -192,11 +195,11 @@ const volatile uint8_t* const PWM_OCR[][3] PROGMEM = {
{ (const uint8_t*)&OCR1A, (const uint8_t*)&OCR1B, 0 },
#endif
#if defined(TCCR2A) && defined(COM2A1)
#if ABTEST(2)
{ &OCR2A, &OCR2B, 0 },
#endif
#if defined(TCCR3A) && defined(COM3A1)
#if ABTEST(3)
#ifdef COM3C1
{ (const uint8_t*)&OCR3A, (const uint8_t*)&OCR3B, (const uint8_t*)&OCR3C },
#else
@@ -208,7 +211,7 @@ const volatile uint8_t* const PWM_OCR[][3] PROGMEM = {
{ (const uint8_t*)&OCR4A, (const uint8_t*)&OCR4B, (const uint8_t*)&OCR4C },
#endif
#if defined(TCCR5A) && defined(COM5A1)
#if ABTEST(5)
{ (const uint8_t*)&OCR5A, (const uint8_t*)&OCR5B, (const uint8_t*)&OCR5C },
#endif
};
@@ -235,9 +238,9 @@ static void print_is_also_tied() { SERIAL_ECHOPGM(" is also tied to this pin");
inline void com_print(const uint8_t N, const uint8_t Z) {
const uint8_t *TCCRA = (uint8_t*)TCCR_A(N);
SERIAL_ECHOPAIR(" COM", AS_CHAR('0' + N));
SERIAL_ECHOPGM(" COM", AS_DIGIT(N));
SERIAL_CHAR(Z);
SERIAL_ECHOPAIR(": ", int((*TCCRA >> (6 - Z * 2)) & 0x03));
SERIAL_ECHOPGM(": ", int((*TCCRA >> (6 - Z * 2)) & 0x03));
}
void timer_prefix(uint8_t T, char L, uint8_t N) { // T - timer L - pwm N - WGM bit layout
@@ -247,7 +250,7 @@ void timer_prefix(uint8_t T, char L, uint8_t N) { // T - timer L - pwm N -
uint8_t WGM = (((*TCCRB & _BV(WGM_2)) >> 1) | (*TCCRA & (_BV(WGM_0) | _BV(WGM_1))));
if (N == 4) WGM |= ((*TCCRB & _BV(WGM_3)) >> 1);
SERIAL_ECHOPAIR(" TIMER", AS_CHAR(T + '0'));
SERIAL_ECHOPGM(" TIMER", AS_DIGIT(T));
SERIAL_CHAR(L);
SERIAL_ECHO_SP(3);
@@ -259,14 +262,14 @@ void timer_prefix(uint8_t T, char L, uint8_t N) { // T - timer L - pwm N -
const uint16_t *OCRVAL16 = (uint16_t*)OCR_VAL(T, L - 'A');
PWM_PRINT(*OCRVAL16);
}
SERIAL_ECHOPAIR(" WGM: ", WGM);
SERIAL_ECHOPGM(" WGM: ", WGM);
com_print(T,L);
SERIAL_ECHOPAIR(" CS: ", (*TCCRB & (_BV(CS_0) | _BV(CS_1) | _BV(CS_2)) ));
SERIAL_ECHOPAIR(" TCCR", AS_CHAR(T + '0'), "A: ", *TCCRA);
SERIAL_ECHOPAIR(" TCCR", AS_CHAR(T + '0'), "B: ", *TCCRB);
SERIAL_ECHOPGM(" CS: ", (*TCCRB & (_BV(CS_0) | _BV(CS_1) | _BV(CS_2)) ));
SERIAL_ECHOPGM(" TCCR", AS_DIGIT(T), "A: ", *TCCRA);
SERIAL_ECHOPGM(" TCCR", AS_DIGIT(T), "B: ", *TCCRB);
const uint8_t *TMSK = (uint8_t*)TIMSK(T);
SERIAL_ECHOPAIR(" TIMSK", AS_CHAR(T + '0'), ": ", *TMSK);
SERIAL_ECHOPGM(" TIMSK", AS_DIGIT(T), ": ", *TMSK);
const uint8_t OCIE = L - 'A' + 1;
if (N == 3) { if (WGM == 0 || WGM == 2 || WGM == 4 || WGM == 6) err_is_counter(); }
@@ -278,7 +281,7 @@ void timer_prefix(uint8_t T, char L, uint8_t N) { // T - timer L - pwm N -
static void pwm_details(uint8_t pin) {
switch (digitalPinToTimer_DEBUG(pin)) {
#if defined(TCCR0A) && defined(COM0A1)
#if ABTEST(0)
#ifdef TIMER0A
#if !AVR_AT90USB1286_FAMILY // not available in Teensyduino type IDEs
case TIMER0A: timer_prefix(0, 'A', 3); break;
@@ -287,7 +290,7 @@ static void pwm_details(uint8_t pin) {
case TIMER0B: timer_prefix(0, 'B', 3); break;
#endif
#if defined(TCCR1A) && defined(COM1A1)
#if ABTEST(1)
case TIMER1A: timer_prefix(1, 'A', 4); break;
case TIMER1B: timer_prefix(1, 'B', 4); break;
#if defined(COM1C1) && defined(TIMER1C)
@@ -295,12 +298,12 @@ static void pwm_details(uint8_t pin) {
#endif
#endif
#if defined(TCCR2A) && defined(COM2A1)
#if ABTEST(2)
case TIMER2A: timer_prefix(2, 'A', 3); break;
case TIMER2B: timer_prefix(2, 'B', 3); break;
#endif
#if defined(TCCR3A) && defined(COM3A1)
#if ABTEST(3)
case TIMER3A: timer_prefix(3, 'A', 4); break;
case TIMER3B: timer_prefix(3, 'B', 4); break;
#ifdef COM3C1
@@ -314,7 +317,7 @@ static void pwm_details(uint8_t pin) {
case TIMER4C: timer_prefix(4, 'C', 4); break;
#endif
#if defined(TCCR5A) && defined(COM5A1)
#if ABTEST(5)
case TIMER5A: timer_prefix(5, 'A', 4); break;
case TIMER5B: timer_prefix(5, 'B', 4); break;
case TIMER5C: timer_prefix(5, 'C', 4); break;
@@ -348,7 +351,6 @@ static void pwm_details(uint8_t pin) {
#endif
} // pwm_details
#ifndef digitalRead_mod // Use Teensyduino's version of digitalRead - it doesn't disable the PWMs
int digitalRead_mod(const int8_t pin) { // same as digitalRead except the PWM stop section has been removed
const uint8_t port = digitalPinToPort_DEBUG(pin);
@@ -393,3 +395,6 @@ static void pwm_details(uint8_t pin) {
#endif
#define PRINT_PIN(p) do{ sprintf_P(buffer, PSTR("%3d "), p); SERIAL_ECHO(buffer); }while(0)
#define PRINT_PIN_ANALOG(p) do{ sprintf_P(buffer, PSTR(" (A%2d) "), DIGITAL_PIN_TO_ANALOG_PIN(pin)); SERIAL_ECHO(buffer); }while(0)
#undef ABTEST

View File

@@ -2,6 +2,9 @@
* 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

View File

@@ -2,6 +2,9 @@
* 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

View File

@@ -34,14 +34,14 @@ typedef uint16_t hal_timer_t;
#define HAL_TIMER_RATE ((F_CPU) / 8) // i.e., 2MHz or 2.5MHz
#ifndef STEP_TIMER_NUM
#define STEP_TIMER_NUM 1
#ifndef MF_TIMER_STEP
#define MF_TIMER_STEP 1
#endif
#ifndef PULSE_TIMER_NUM
#define PULSE_TIMER_NUM STEP_TIMER_NUM
#ifndef MF_TIMER_PULSE
#define MF_TIMER_PULSE MF_TIMER_STEP
#endif
#ifndef TEMP_TIMER_NUM
#define TEMP_TIMER_NUM 0
#ifndef MF_TIMER_TEMP
#define MF_TIMER_TEMP 0
#endif
#define TEMP_TIMER_FREQUENCY ((F_CPU) / 64.0 / 256.0)
@@ -58,13 +58,13 @@ typedef uint16_t hal_timer_t;
#define DISABLE_STEPPER_DRIVER_INTERRUPT() CBI(TIMSK1, OCIE1A)
#define STEPPER_ISR_ENABLED() TEST(TIMSK1, OCIE1A)
#define ENABLE_TEMPERATURE_INTERRUPT() SBI(TIMSK0, OCIE0B)
#define DISABLE_TEMPERATURE_INTERRUPT() CBI(TIMSK0, OCIE0B)
#define TEMPERATURE_ISR_ENABLED() TEST(TIMSK0, OCIE0B)
#define ENABLE_TEMPERATURE_INTERRUPT() SBI(TIMSK0, OCIE0A)
#define DISABLE_TEMPERATURE_INTERRUPT() CBI(TIMSK0, OCIE0A)
#define TEMPERATURE_ISR_ENABLED() TEST(TIMSK0, OCIE0A)
FORCE_INLINE void HAL_timer_start(const uint8_t timer_num, const uint32_t) {
switch (timer_num) {
case STEP_TIMER_NUM:
case MF_TIMER_STEP:
// waveform generation = 0100 = CTC
SET_WGM(1, CTC_OCRnA);
@@ -84,10 +84,10 @@ FORCE_INLINE void HAL_timer_start(const uint8_t timer_num, const uint32_t) {
TCNT1 = 0;
break;
case TEMP_TIMER_NUM:
case MF_TIMER_TEMP:
// Use timer0 for temperature measurement
// Interleave temperature interrupt with millies interrupt
OCR0B = 128;
OCR0A = 128;
break;
}
}
@@ -109,12 +109,12 @@ FORCE_INLINE void HAL_timer_start(const uint8_t timer_num, const uint32_t) {
* (otherwise, characters will be lost due to UART overflow).
* Then: Stepper, Endstops, Temperature, and -finally- all others.
*/
#define HAL_timer_isr_prologue(TIMER_NUM)
#define HAL_timer_isr_epilogue(TIMER_NUM)
#define HAL_timer_isr_prologue(T) NOOP
#define HAL_timer_isr_epilogue(T) NOOP
/* 18 cycles maximum latency */
#ifndef HAL_STEP_TIMER_ISR
/* 18 cycles maximum latency */
#define HAL_STEP_TIMER_ISR() \
extern "C" void TIMER1_COMPA_vect() __attribute__ ((signal, naked, used, externally_visible)); \
extern "C" void TIMER1_COMPA_vect_bottom() asm ("TIMER1_COMPA_vect_bottom") __attribute__ ((used, externally_visible, noinline)); \
@@ -180,7 +180,7 @@ void TIMER1_COMPA_vect() { \
: \
: [timsk0] "i" ((uint16_t)&TIMSK0), \
[timsk1] "i" ((uint16_t)&TIMSK1), \
[msk0] "M" ((uint8_t)(1<<OCIE0B)),\
[msk0] "M" ((uint8_t)(1<<OCIE0A)),\
[msk1] "M" ((uint8_t)(1<<OCIE1A)) \
: \
); \
@@ -193,9 +193,9 @@ void TIMER1_COMPA_vect_bottom()
/* 14 cycles maximum latency */
#define HAL_TEMP_TIMER_ISR() \
extern "C" void TIMER0_COMPB_vect() __attribute__ ((signal, naked, used, externally_visible)); \
extern "C" void TIMER0_COMPB_vect_bottom() asm ("TIMER0_COMPB_vect_bottom") __attribute__ ((used, externally_visible, noinline)); \
void TIMER0_COMPB_vect() { \
extern "C" void TIMER0_COMPA_vect() __attribute__ ((signal, naked, used, externally_visible)); \
extern "C" void TIMER0_COMPA_vect_bottom() asm ("TIMER0_COMPA_vect_bottom") __attribute__ ((used, externally_visible, noinline)); \
void TIMER0_COMPA_vect() { \
__asm__ __volatile__ ( \
A("push r16") /* 2 Save R16 */ \
A("in r16, __SREG__") /* 1 Get SREG */ \
@@ -223,7 +223,7 @@ void TIMER0_COMPB_vect() { \
A("push r30") \
A("push r31") \
A("clr r1") /* C runtime expects this register to be 0 */ \
A("call TIMER0_COMPB_vect_bottom") /* Call the bottom handler - No inlining allowed, otherwise registers used are not saved */ \
A("call TIMER0_COMPA_vect_bottom") /* Call the bottom handler - No inlining allowed, otherwise registers used are not saved */ \
A("pop r31") \
A("pop r30") \
A("pop r27") \
@@ -251,10 +251,10 @@ void TIMER0_COMPB_vect() { \
A("reti") /* 4 Return from interrupt */ \
: \
: [timsk0] "i"((uint16_t)&TIMSK0), \
[msk0] "M" ((uint8_t)(1<<OCIE0B)) \
[msk0] "M" ((uint8_t)(1<<OCIE0A)) \
: \
); \
} \
void TIMER0_COMPB_vect_bottom()
void TIMER0_COMPA_vect_bottom()
#endif // HAL_TEMP_TIMER_ISR

View File

@@ -62,10 +62,10 @@
#include "../shared/Marduino.h"
#include "../shared/Delay.h"
#include <U8glib.h>
#include <U8glib-HAL.h>
uint8_t u8g_bitData, u8g_bitNotData, u8g_bitClock, u8g_bitNotClock;
volatile uint8_t *u8g_outData, *u8g_outClock;
static uint8_t u8g_bitData, u8g_bitNotData, u8g_bitClock, u8g_bitNotClock;
static volatile uint8_t *u8g_outData, *u8g_outClock;
static void u8g_com_arduino_init_shift_out(uint8_t dataPin, uint8_t clockPin) {
u8g_outData = portOutputRegister(digitalPinToPort(dataPin));

View File

@@ -1,70 +0,0 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
*/
#ifdef __AVR__
#include "../../inc/MarlinConfig.h"
#if ENABLED(USE_WATCHDOG)
#include "watchdog.h"
#include "../../MarlinCore.h"
// Initialize watchdog with 8s timeout, if possible. Otherwise, make it 4s.
void watchdog_init() {
#if ENABLED(WATCHDOG_DURATION_8S) && defined(WDTO_8S)
#define WDTO_NS WDTO_8S
#else
#define WDTO_NS WDTO_4S
#endif
#if ENABLED(WATCHDOG_RESET_MANUAL)
// Enable the watchdog timer, but only for the interrupt.
// Take care, as this requires the correct order of operation, with interrupts disabled.
// See the datasheet of any AVR chip for details.
wdt_reset();
cli();
_WD_CONTROL_REG = _BV(_WD_CHANGE_BIT) | _BV(WDE);
_WD_CONTROL_REG = _BV(WDIE) | (WDTO_NS & 0x07) | ((WDTO_NS & 0x08) << 2); // WDTO_NS directly does not work. bit 0-2 are consecutive in the register but the highest value bit is at bit 5
// So worked for up to WDTO_2S
sei();
wdt_reset();
#else
wdt_enable(WDTO_NS); // The function handles the upper bit correct.
#endif
//delay(10000); // test it!
}
//===========================================================================
//=================================== ISR ===================================
//===========================================================================
// Watchdog timer interrupt, called if main program blocks >4sec and manual reset is enabled.
#if ENABLED(WATCHDOG_RESET_MANUAL)
ISR(WDT_vect) {
sei(); // With the interrupt driven serial we need to allow interrupts.
SERIAL_ERROR_MSG(STR_WATCHDOG_FIRED);
minkill(); // interrupt-safe final kill and infinite loop
}
#endif
#endif // USE_WATCHDOG
#endif // __AVR__

View File

@@ -25,7 +25,7 @@
#ifdef ARDUINO_ARCH_SAM
#include "../../inc/MarlinConfig.h"
#include "HAL.h"
#include "../../MarlinCore.h"
#include <Wire.h>
#include "usb/usb_task.h"
@@ -34,39 +34,33 @@
// Public Variables
// ------------------------
uint16_t HAL_adc_result;
uint16_t MarlinHAL::adc_result;
// ------------------------
// Public functions
// ------------------------
TERN_(POSTMORTEM_DEBUGGING, extern void install_min_serial());
#if ENABLED(POSTMORTEM_DEBUGGING)
extern void install_min_serial();
#endif
// HAL initialization task
void HAL_init() {
// Initialize the USB stack
void MarlinHAL::init() {
#if ENABLED(SDSUPPORT)
OUT_WRITE(SDSS, HIGH); // Try to set SDSS inactive before any other SPI users start up
#endif
usb_task_init();
usb_task_init(); // Initialize the USB stack
TERN_(POSTMORTEM_DEBUGGING, install_min_serial()); // Install the min serial handler
}
// HAL idle task
void HAL_idletask() {
// Perform USB stack housekeeping
usb_task_idle();
void MarlinHAL::init_board() {
#ifdef BOARD_INIT
BOARD_INIT();
#endif
}
// Disable interrupts
void cli() { noInterrupts(); }
void MarlinHAL::idletask() { usb_task_idle(); } // Perform USB stack housekeeping
// Enable interrupts
void sei() { interrupts(); }
void HAL_clear_reset_source() { }
uint8_t HAL_get_reset_source() {
uint8_t MarlinHAL::get_reset_source() {
switch ((RSTC->RSTC_SR >> 8) & 0x07) {
case 0: return RST_POWER_ON;
case 1: return RST_BACKUP;
@@ -77,13 +71,105 @@ uint8_t HAL_get_reset_source() {
}
}
void HAL_reboot() { rstc_start_software_reset(RSTC); }
void MarlinHAL::reboot() { rstc_start_software_reset(RSTC); }
void _delay_ms(const int delay_ms) {
// Todo: port for Due?
delay(delay_ms);
// ------------------------
// Watchdog Timer
// ------------------------
#if ENABLED(USE_WATCHDOG)
// Initialize watchdog - On SAM3X, Watchdog was already configured
// and enabled or disabled at startup, so no need to reconfigure it
// here.
void MarlinHAL::watchdog_init() { WDT_Restart(WDT); } // Reset watchdog to start clean
// Reset watchdog. MUST be called at least every 4 seconds after the
// first watchdog_init or AVR will go into emergency procedures.
void MarlinHAL::watchdog_refresh() { watchdogReset(); }
#endif
// Override Arduino runtime to either config or disable the watchdog
//
// We need to configure the watchdog as soon as possible in the boot
// process, because watchdog initialization at hardware reset on SAM3X8E
// is unreliable, and there is risk of unintended resets if we delay
// that initialization to a later time.
void watchdogSetup() {
#if ENABLED(USE_WATCHDOG)
// 4 seconds timeout
uint32_t timeout = TERN(WATCHDOG_DURATION_8S, 8000, 4000);
// Calculate timeout value in WDT counter ticks: This assumes
// the slow clock is running at 32.768 kHz watchdog
// frequency is therefore 32768 / 128 = 256 Hz
timeout = (timeout << 8) / 1000;
if (timeout == 0)
timeout = 1;
else if (timeout > 0xFFF)
timeout = 0xFFF;
// We want to enable the watchdog with the specified timeout
uint32_t value =
WDT_MR_WDV(timeout) | // With the specified timeout
WDT_MR_WDD(timeout) | // and no invalid write window
#if !(SAMV70 || SAMV71 || SAME70 || SAMS70)
WDT_MR_WDRPROC | // WDT fault resets processor only - We want
// to keep PIO controller state
#endif
WDT_MR_WDDBGHLT | // WDT stops in debug state.
WDT_MR_WDIDLEHLT; // WDT stops in idle state.
#if ENABLED(WATCHDOG_RESET_MANUAL)
// We enable the watchdog timer, but only for the interrupt.
// Configure WDT to only trigger an interrupt
value |= WDT_MR_WDFIEN; // Enable WDT fault interrupt.
// Disable WDT interrupt (just in case, to avoid triggering it!)
NVIC_DisableIRQ(WDT_IRQn);
// We NEED memory barriers to ensure Interrupts are actually disabled!
// ( https://dzone.com/articles/nvic-disabling-interrupts-on-arm-cortex-m-and-the )
__DSB();
__ISB();
// Initialize WDT with the given parameters
WDT_Enable(WDT, value);
// Configure and enable WDT interrupt.
NVIC_ClearPendingIRQ(WDT_IRQn);
NVIC_SetPriority(WDT_IRQn, 0); // Use highest priority, so we detect all kinds of lockups
NVIC_EnableIRQ(WDT_IRQn);
#else
// a WDT fault triggers a reset
value |= WDT_MR_WDRSTEN;
// Initialize WDT with the given parameters
WDT_Enable(WDT, value);
#endif
// Reset the watchdog
WDT_Restart(WDT);
#else
// Make sure to completely disable the Watchdog
WDT_Disable(WDT);
#endif
}
// ------------------------
// Free Memory Accessor
// ------------------------
extern "C" {
extern unsigned int _ebss; // end of bss section
}
@@ -95,18 +181,9 @@ int freeMemory() {
}
// ------------------------
// ADC
// Serial Ports
// ------------------------
void HAL_adc_start_conversion(const uint8_t ch) {
HAL_adc_result = analogRead(ch);
}
uint16_t HAL_adc_get_result() {
// nop
return HAL_adc_result;
}
// Forward the default serial ports
#if USING_HW_SERIAL0
DefaultSerial1 MSerial0(false, Serial);

View File

@@ -32,12 +32,15 @@
#include "../shared/math_32bit.h"
#include "../shared/HAL_SPI.h"
#include "fastio.h"
#include "watchdog.h"
#include <stdint.h>
#include "../../core/serial_hook.h"
// ------------------------
// Serial ports
// ------------------------
typedef ForwardSerial1Class< decltype(Serial) > DefaultSerial1;
typedef ForwardSerial1Class< decltype(Serial1) > DefaultSerial2;
typedef ForwardSerial1Class< decltype(Serial2) > DefaultSerial3;
@@ -50,13 +53,12 @@ extern DefaultSerial4 MSerial3;
#define _MSERIAL(X) MSerial##X
#define MSERIAL(X) _MSERIAL(X)
// Define MYSERIAL1/2 before MarlinSerial includes!
#if SERIAL_PORT == -1 || ENABLED(EMERGENCY_PARSER)
#define MYSERIAL1 customizedSerial1
#elif WITHIN(SERIAL_PORT, 0, 3)
#define MYSERIAL1 MSERIAL(SERIAL_PORT)
#else
#error "The required SERIAL_PORT must be from 0 to 3. You can also use -1 if the board supports Native USB."
#error "The required SERIAL_PORT must be from 0 to 3, or -1 for USB Serial."
#endif
#ifdef SERIAL_PORT_2
@@ -65,7 +67,17 @@ extern DefaultSerial4 MSerial3;
#elif WITHIN(SERIAL_PORT_2, 0, 3)
#define MYSERIAL2 MSERIAL(SERIAL_PORT_2)
#else
#error "SERIAL_PORT_2 must be from 0 to 3. You can also use -1 if the board supports Native USB."
#error "SERIAL_PORT_2 must be from 0 to 3, or -1 for USB Serial."
#endif
#endif
#ifdef SERIAL_PORT_3
#if SERIAL_PORT_3 == -1 || ENABLED(EMERGENCY_PARSER)
#define MYSERIAL3 customizedSerial3
#elif WITHIN(SERIAL_PORT_3, 0, 3)
#define MYSERIAL3 MSERIAL(SERIAL_PORT_3)
#else
#error "SERIAL_PORT_3 must be from 0 to 3, or -1 for USB Serial."
#endif
#endif
@@ -78,67 +90,48 @@ extern DefaultSerial4 MSerial3;
#endif
#ifdef LCD_SERIAL_PORT
#if LCD_SERIAL_PORT == -1
#define LCD_SERIAL lcdSerial
#elif WITHIN(LCD_SERIAL_PORT, 0, 3)
#if WITHIN(LCD_SERIAL_PORT, 0, 3)
#define LCD_SERIAL MSERIAL(LCD_SERIAL_PORT)
#else
#error "LCD_SERIAL_PORT must be from 0 to 3. You can also use -1 if the board supports Native USB."
#error "LCD_SERIAL_PORT must be from 0 to 3."
#endif
#endif
#include "MarlinSerial.h"
#include "MarlinSerialUSB.h"
// On AVR this is in math.h?
#define square(x) ((x)*(x))
// ------------------------
// Types
// ------------------------
typedef int8_t pin_t;
#define SHARED_SERVOS HAS_SERVOS
#define HAL_SERVO_LIB Servo
#define SHARED_SERVOS HAS_SERVOS // Use shared/servos.cpp
class Servo;
typedef Servo hal_servo_t;
//
// Interrupts
//
#define CRITICAL_SECTION_START() uint32_t primask = __get_PRIMASK(); __disable_irq()
#define CRITICAL_SECTION_END() if (!primask) __enable_irq()
#define ISRS_ENABLED() (!__get_PRIMASK())
#define ENABLE_ISRS() __enable_irq()
#define DISABLE_ISRS() __disable_irq()
#define sei() interrupts()
#define cli() noInterrupts()
void cli(); // Disable interrupts
void sei(); // Enable interrupts
void HAL_clear_reset_source(); // clear reset reason
uint8_t HAL_get_reset_source(); // get reset reason
void HAL_reboot();
#define CRITICAL_SECTION_START() const bool _irqon = hal.isr_state(); hal.isr_off()
#define CRITICAL_SECTION_END() if (_irqon) hal.isr_on()
//
// ADC
//
extern uint16_t HAL_adc_result; // result of last ADC conversion
#define HAL_ADC_VREF 3.3
#define HAL_ADC_RESOLUTION 10
#ifndef analogInputToDigitalPin
#define analogInputToDigitalPin(p) ((p < 12U) ? (p) + 54U : -1)
#endif
#define HAL_ANALOG_SELECT(ch)
inline void HAL_adc_init() {}//todo
#define HAL_ADC_VREF 3.3
#define HAL_ADC_RESOLUTION 10
#define HAL_START_ADC(ch) HAL_adc_start_conversion(ch)
#define HAL_READ_ADC() HAL_adc_result
#define HAL_ADC_READY() true
void HAL_adc_start_conversion(const uint8_t ch);
uint16_t HAL_adc_get_result();
//
// Pin Map
// Pin Mapping for M42, M43, M226
//
#define GET_PIN_MAP_PIN(index) index
#define GET_PIN_MAP_INDEX(pin) pin
@@ -147,30 +140,19 @@ uint16_t HAL_adc_get_result();
//
// Tone
//
void toneInit();
void tone(const pin_t _pin, const unsigned int frequency, const unsigned long duration=0);
void noTone(const pin_t _pin);
// Enable hooks into idle and setup for HAL
#define HAL_IDLETASK 1
void HAL_idletask();
void HAL_init();
//
// Utility functions
//
void _delay_ms(const int delay);
// ------------------------
// Class Utilities
// ------------------------
#pragma GCC diagnostic push
#if GCC_VERSION <= 50000
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wunused-function"
#endif
int freeMemory();
#if GCC_VERSION <= 50000
#pragma GCC diagnostic pop
#endif
#pragma GCC diagnostic pop
#ifdef __cplusplus
extern "C" {
@@ -179,3 +161,73 @@ char *dtostrf(double __val, signed char __width, unsigned char __prec, char *__s
#ifdef __cplusplus
}
#endif
// Return free RAM between end of heap (or end bss) and whatever is current
int freeMemory();
// ------------------------
// MarlinHAL Class
// ------------------------
class MarlinHAL {
public:
// Earliest possible init, before setup()
MarlinHAL() {}
// Watchdog
static void watchdog_init() IF_DISABLED(USE_WATCHDOG, {});
static void watchdog_refresh() IF_DISABLED(USE_WATCHDOG, {});
static void init(); // Called early in setup()
static void init_board(); // Called less early in setup()
static void reboot(); // Restart the firmware
// Interrupts
static bool isr_state() { return !__get_PRIMASK(); }
static void isr_on() { __enable_irq(); }
static void isr_off() { __disable_irq(); }
static void delay_ms(const int ms) { delay(ms); }
// Tasks, called from idle()
static void idletask();
// Reset
static uint8_t get_reset_source();
static void clear_reset_source() {}
// Free SRAM
static int freeMemory() { return ::freeMemory(); }
//
// ADC Methods
//
static uint16_t adc_result;
// Called by Temperature::init once at startup
static void adc_init() {}
// Called by Temperature::init for each sensor at startup
static void adc_enable(const uint8_t ch) {}
// Begin ADC sampling on the given channel. Called from Temperature::isr!
static void adc_start(const uint8_t ch) { adc_result = analogRead(ch); }
// Is the ADC ready for reading?
static bool adc_ready() { return true; }
// The current value of the ADC register
static uint16_t adc_value() { return adc_result; }
/**
* Set the PWM duty cycle for the pin to the given value.
* No inverting the duty cycle in this HAL.
* No changing the maximum size of the provided value to enable finer PWM duty control in this HAL.
*/
static void set_pwm_duty(const pin_t pin, const uint16_t v, const uint16_t=255, const bool=false) {
analogWrite(pin, v);
}
};

View File

@@ -31,8 +31,6 @@
/**
* HAL for Arduino Due and compatible (SAM3X8E)
*
* For ARDUINO_ARCH_SAM
*/
#ifdef ARDUINO_ARCH_SAM
@@ -240,7 +238,7 @@
}
// all the others
static uint32_t spiDelayCyclesX4 = 4 * (F_CPU) / 1000000; // 4µs => 125khz
static uint16_t spiDelayNS = 4000; // 4000ns => 125khz
static uint8_t spiTransferX(uint8_t b) { // using Mode 0
int bits = 8;
@@ -249,12 +247,12 @@
b <<= 1; // little setup time
WRITE(SD_SCK_PIN, HIGH);
DELAY_CYCLES(spiDelayCyclesX4);
DELAY_NS(spiDelayNS);
b |= (READ(SD_MISO_PIN) != 0);
WRITE(SD_SCK_PIN, LOW);
DELAY_CYCLES(spiDelayCyclesX4);
DELAY_NS(spiDelayNS);
} while (--bits);
return b;
}
@@ -437,7 +435,7 @@
} while (--todo);
}
// Pointers to generic functions for block tranfers
// Pointers to generic functions for block transfers
static pfnSpiTxBlock spiTxBlock = (pfnSpiTxBlock)spiTxBlockX;
static pfnSpiRxBlock spiRxBlock = (pfnSpiRxBlock)spiRxBlockX;
@@ -510,7 +508,7 @@
spiRxBlock = (pfnSpiRxBlock)spiRxBlockX;
break;
default:
spiDelayCyclesX4 = ((F_CPU) / 1000000) >> (6 - spiRate) << 2; // spiRate of 2 gives the maximum error with current CPU
spiDelayNS = 4000 >> (6 - spiRate); // spiRate of 2 gives the maximum error with current CPU
spiTransferTx = (pfnSpiTransfer)spiTransferX;
spiTransferRx = (pfnSpiTransfer)spiTransferX;
spiTxBlock = (pfnSpiTxBlock)spiTxBlockX;
@@ -594,18 +592,14 @@
SPI_Configure(SPI0, ID_SPI0, SPI_MR_MSTR | SPI_MR_MODFDIS | SPI_MR_PS);
SPI_Enable(SPI0);
SET_OUTPUT(DAC0_SYNC);
SET_OUTPUT(DAC0_SYNC_PIN);
#if HAS_MULTI_EXTRUDER
SET_OUTPUT(DAC1_SYNC);
WRITE(DAC1_SYNC, HIGH);
OUT_WRITE(DAC1_SYNC_PIN, HIGH);
#endif
SET_OUTPUT(SPI_EEPROM1_CS);
SET_OUTPUT(SPI_EEPROM2_CS);
SET_OUTPUT(SPI_FLASH_CS);
WRITE(DAC0_SYNC, HIGH);
WRITE(SPI_EEPROM1_CS, HIGH);
WRITE(SPI_EEPROM2_CS, HIGH);
WRITE(SPI_FLASH_CS, HIGH);
WRITE(DAC0_SYNC_PIN, HIGH);
OUT_WRITE(SPI_EEPROM1_CS_PIN, HIGH);
OUT_WRITE(SPI_EEPROM2_CS_PIN, HIGH);
OUT_WRITE(SPI_FLASH_CS_PIN, HIGH);
WRITE(SD_SS_PIN, HIGH);
OUT_WRITE(SDSS, LOW);

View File

@@ -1,6 +1,6 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2021 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
@@ -21,5 +21,6 @@
*/
#pragma once
void watchdog_init();
void HAL_watchdog_refresh();
#include <SPI.h>
using MarlinSPI = SPIClass;

View File

@@ -406,7 +406,7 @@ size_t MarlinSerial<Cfg>::write(const uint8_t c) {
const uint8_t i = (tx_buffer.head + 1) & (Cfg::TX_SIZE - 1);
// If global interrupts are disabled (as the result of being called from an ISR)...
if (!ISRS_ENABLED()) {
if (!hal.isr_state()) {
// Make room by polling if it is possible to transmit, and do so!
while (i == tx_buffer.tail) {
@@ -454,7 +454,7 @@ void MarlinSerial<Cfg>::flushTX() {
if (!_written) return;
// If global interrupts are disabled (as the result of being called from an ISR)...
if (!ISRS_ENABLED()) {
if (!hal.isr_state()) {
// Wait until everything was transmitted - We must do polling, as interrupts are disabled
while (tx_buffer.head != tx_buffer.tail || !(HWUART->UART_SR & UART_SR_TXEMPTY)) {
@@ -478,7 +478,7 @@ void MarlinSerial<Cfg>::flushTX() {
// If not using the USB port as serial port
#if defined(SERIAL_PORT) && SERIAL_PORT >= 0
template class MarlinSerial< MarlinSerialCfg<SERIAL_PORT> >;
MSerialT customizedSerial1(MarlinSerialCfg<SERIAL_PORT>::EMERGENCYPARSER);
MSerialT1 customizedSerial1(MarlinSerialCfg<SERIAL_PORT>::EMERGENCYPARSER);
#endif
#if defined(SERIAL_PORT_2) && SERIAL_PORT_2 >= 0
@@ -486,4 +486,9 @@ void MarlinSerial<Cfg>::flushTX() {
MSerialT2 customizedSerial2(MarlinSerialCfg<SERIAL_PORT_2>::EMERGENCYPARSER);
#endif
#if defined(SERIAL_PORT_3) && SERIAL_PORT_3 >= 0
template class MarlinSerial< MarlinSerialCfg<SERIAL_PORT_3> >;
MSerialT3 customizedSerial3(MarlinSerialCfg<SERIAL_PORT_3>::EMERGENCYPARSER);
#endif
#endif // ARDUINO_ARCH_SAM

View File

@@ -118,7 +118,7 @@ public:
static size_t write(const uint8_t c);
static void flushTX();
static inline bool emergency_parser_enabled() { return Cfg::EMERGENCYPARSER; }
static bool emergency_parser_enabled() { return Cfg::EMERGENCYPARSER; }
FORCE_INLINE static uint8_t dropped() { return Cfg::DROPPED_RX ? rx_dropped_bytes : 0; }
FORCE_INLINE static uint8_t buffer_overruns() { return Cfg::RX_OVERRUNS ? rx_buffer_overruns : 0; }
@@ -141,11 +141,16 @@ struct MarlinSerialCfg {
};
#if defined(SERIAL_PORT) && SERIAL_PORT >= 0
typedef Serial1Class< MarlinSerial< MarlinSerialCfg<SERIAL_PORT> > > MSerialT;
extern MSerialT customizedSerial1;
typedef Serial1Class< MarlinSerial< MarlinSerialCfg<SERIAL_PORT> > > MSerialT1;
extern MSerialT1 customizedSerial1;
#endif
#if defined(SERIAL_PORT_2) && SERIAL_PORT_2 >= 0
typedef Serial1Class< MarlinSerial< MarlinSerialCfg<SERIAL_PORT_2> > > MSerialT2;
extern MSerialT2 customizedSerial2;
#endif
#if defined(SERIAL_PORT_3) && SERIAL_PORT_3 >= 0
typedef Serial1Class< MarlinSerial< MarlinSerialCfg<SERIAL_PORT_3> > > MSerialT3;
extern MSerialT3 customizedSerial3;
#endif

View File

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

View File

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

View File

@@ -25,7 +25,7 @@
#if ENABLED(POSTMORTEM_DEBUGGING)
#include "../shared/HAL_MinSerial.h"
#include "../shared/MinSerial.h"
#include <stdarg.h>

View File

@@ -47,12 +47,12 @@
#include "../shared/servo.h"
#include "../shared/servo_private.h"
static volatile int8_t Channel[_Nbr_16timers]; // counter for the servo being pulsed for each timer (or -1 if refresh interval)
static Flags<_Nbr_16timers> DisablePending; // ISR should disable the timer at the next timer reset
// ------------------------
/// Interrupt handler for the TC0 channel 1.
// ------------------------
void Servo_Handler(timer16_Sequence_t timer, Tc *pTc, uint8_t channel);
void Servo_Handler(const timer16_Sequence_t, Tc*, const uint8_t);
#ifdef _useTimer1
void HANDLER_FOR_TIMER1() { Servo_Handler(_timer1, TC_FOR_TIMER1, CHANNEL_FOR_TIMER1); }
@@ -70,88 +70,92 @@ void Servo_Handler(timer16_Sequence_t timer, Tc *pTc, uint8_t channel);
void HANDLER_FOR_TIMER5() { Servo_Handler(_timer5, TC_FOR_TIMER5, CHANNEL_FOR_TIMER5); }
#endif
void Servo_Handler(timer16_Sequence_t timer, Tc *tc, uint8_t channel) {
// clear interrupt
tc->TC_CHANNEL[channel].TC_SR;
if (Channel[timer] < 0)
tc->TC_CHANNEL[channel].TC_CCR |= TC_CCR_SWTRG; // channel set to -1 indicated that refresh interval completed so reset the timer
else if (SERVO_INDEX(timer, Channel[timer]) < ServoCount && SERVO(timer, Channel[timer]).Pin.isActive)
extDigitalWrite(SERVO(timer, Channel[timer]).Pin.nbr, LOW); // pulse this channel low if activated
void Servo_Handler(const timer16_Sequence_t timer, Tc *tc, const uint8_t channel) {
static int8_t Channel[_Nbr_16timers]; // Servo counters to pulse (or -1 for refresh interval)
int8_t cho = Channel[timer]; // Handle the prior Channel[timer] first
if (cho < 0) { // Channel -1 indicates the refresh interval completed...
tc->TC_CHANNEL[channel].TC_CCR |= TC_CCR_SWTRG; // ...so reset the timer
if (DisablePending[timer]) {
// Disabling only after the full servo period expires prevents
// pulses being too close together if immediately re-enabled.
DisablePending.clear(timer);
TC_Stop(tc, channel);
tc->TC_CHANNEL[channel].TC_SR; // clear interrupt
return;
}
}
else if (SERVO_INDEX(timer, cho) < ServoCount) // prior channel handled?
extDigitalWrite(SERVO(timer, cho).Pin.nbr, LOW); // pulse the prior channel LOW
Channel[timer]++; // increment to the next channel
if (SERVO_INDEX(timer, Channel[timer]) < ServoCount && Channel[timer] < SERVOS_PER_TIMER) {
tc->TC_CHANNEL[channel].TC_RA = tc->TC_CHANNEL[channel].TC_CV + SERVO(timer,Channel[timer]).ticks;
if (SERVO(timer,Channel[timer]).Pin.isActive) // check if activated
extDigitalWrite(SERVO(timer, Channel[timer]).Pin.nbr, HIGH); // its an active channel so pulse it high
Channel[timer] = ++cho; // go to the next channel (or 0)
if (cho < SERVOS_PER_TIMER && SERVO_INDEX(timer, cho) < ServoCount) {
tc->TC_CHANNEL[channel].TC_RA = tc->TC_CHANNEL[channel].TC_CV + SERVO(timer, cho).ticks;
if (SERVO(timer, cho).Pin.isActive) // activated?
extDigitalWrite(SERVO(timer, cho).Pin.nbr, HIGH); // yes: pulse HIGH
}
else {
// finished all channels so wait for the refresh period to expire before starting over
tc->TC_CHANNEL[channel].TC_RA =
tc->TC_CHANNEL[channel].TC_CV < usToTicks(REFRESH_INTERVAL) - 4
? (unsigned int)usToTicks(REFRESH_INTERVAL) // allow a few ticks to ensure the next OCR1A not missed
: tc->TC_CHANNEL[channel].TC_CV + 4; // at least REFRESH_INTERVAL has elapsed
Channel[timer] = -1; // this will get incremented at the end of the refresh period to start again at the first channel
const unsigned int cval = tc->TC_CHANNEL[channel].TC_CV + 128 / (SERVO_TIMER_PRESCALER), // allow 128 cycles to ensure the next CV not missed
ival = (unsigned int)usToTicks(REFRESH_INTERVAL); // at least REFRESH_INTERVAL has elapsed
tc->TC_CHANNEL[channel].TC_RA = max(cval, ival);
Channel[timer] = -1; // reset the timer CCR on the next call
}
tc->TC_CHANNEL[channel].TC_SR; // clear interrupt
}
static void _initISR(Tc *tc, uint32_t channel, uint32_t id, IRQn_Type irqn) {
pmc_enable_periph_clk(id);
TC_Configure(tc, channel,
TC_CMR_TCCLKS_TIMER_CLOCK3 | // MCK/32
TC_CMR_WAVE | // Waveform mode
TC_CMR_WAVSEL_UP_RC ); // Counter running up and reset when equals to RC
TC_CMR_WAVE // Waveform mode
| TC_CMR_WAVSEL_UP_RC // Counter running up and reset when equal to RC
| (SERVO_TIMER_PRESCALER == 2 ? TC_CMR_TCCLKS_TIMER_CLOCK1 : 0) // MCK/2
| (SERVO_TIMER_PRESCALER == 8 ? TC_CMR_TCCLKS_TIMER_CLOCK2 : 0) // MCK/8
| (SERVO_TIMER_PRESCALER == 32 ? TC_CMR_TCCLKS_TIMER_CLOCK3 : 0) // MCK/32
| (SERVO_TIMER_PRESCALER == 128 ? TC_CMR_TCCLKS_TIMER_CLOCK4 : 0) // MCK/128
);
/* 84MHz, MCK/32, for 1.5ms: 3937 */
TC_SetRA(tc, channel, 2625); // 1ms
// Wait 1ms before the first ISR
TC_SetRA(tc, channel, (F_CPU) / (SERVO_TIMER_PRESCALER) / 1000UL); // 1ms
/* Configure and enable interrupt */
// Configure and enable interrupt
NVIC_EnableIRQ(irqn);
// TC_IER_CPAS: RA Compare
tc->TC_CHANNEL[channel].TC_IER = TC_IER_CPAS;
tc->TC_CHANNEL[channel].TC_IER = TC_IER_CPAS; // TC_IER_CPAS: RA Compare
// Enables the timer clock and performs a software reset to start the counting
TC_Start(tc, channel);
}
void initISR(timer16_Sequence_t timer) {
#ifdef _useTimer1
if (timer == _timer1)
_initISR(TC_FOR_TIMER1, CHANNEL_FOR_TIMER1, ID_TC_FOR_TIMER1, IRQn_FOR_TIMER1);
#endif
#ifdef _useTimer2
if (timer == _timer2)
_initISR(TC_FOR_TIMER2, CHANNEL_FOR_TIMER2, ID_TC_FOR_TIMER2, IRQn_FOR_TIMER2);
#endif
#ifdef _useTimer3
if (timer == _timer3)
_initISR(TC_FOR_TIMER3, CHANNEL_FOR_TIMER3, ID_TC_FOR_TIMER3, IRQn_FOR_TIMER3);
#endif
#ifdef _useTimer4
if (timer == _timer4)
_initISR(TC_FOR_TIMER4, CHANNEL_FOR_TIMER4, ID_TC_FOR_TIMER4, IRQn_FOR_TIMER4);
#endif
#ifdef _useTimer5
if (timer == _timer5)
_initISR(TC_FOR_TIMER5, CHANNEL_FOR_TIMER5, ID_TC_FOR_TIMER5, IRQn_FOR_TIMER5);
#endif
void initISR(const timer16_Sequence_t timer_index) {
CRITICAL_SECTION_START();
const bool disable_soon = DisablePending[timer_index];
DisablePending.clear(timer_index);
CRITICAL_SECTION_END();
if (!disable_soon) switch (timer_index) {
default: break;
#ifdef _useTimer1
case _timer1: return _initISR(TC_FOR_TIMER1, CHANNEL_FOR_TIMER1, ID_TC_FOR_TIMER1, IRQn_FOR_TIMER1);
#endif
#ifdef _useTimer2
case _timer2: return _initISR(TC_FOR_TIMER2, CHANNEL_FOR_TIMER2, ID_TC_FOR_TIMER2, IRQn_FOR_TIMER2);
#endif
#ifdef _useTimer3
case _timer3: return _initISR(TC_FOR_TIMER3, CHANNEL_FOR_TIMER3, ID_TC_FOR_TIMER3, IRQn_FOR_TIMER3);
#endif
#ifdef _useTimer4
case _timer4: return _initISR(TC_FOR_TIMER4, CHANNEL_FOR_TIMER4, ID_TC_FOR_TIMER4, IRQn_FOR_TIMER4);
#endif
#ifdef _useTimer5
case _timer5: return _initISR(TC_FOR_TIMER5, CHANNEL_FOR_TIMER5, ID_TC_FOR_TIMER5, IRQn_FOR_TIMER5);
#endif
}
}
void finISR(timer16_Sequence_t) {
#ifdef _useTimer1
TC_Stop(TC_FOR_TIMER1, CHANNEL_FOR_TIMER1);
#endif
#ifdef _useTimer2
TC_Stop(TC_FOR_TIMER2, CHANNEL_FOR_TIMER2);
#endif
#ifdef _useTimer3
TC_Stop(TC_FOR_TIMER3, CHANNEL_FOR_TIMER3);
#endif
#ifdef _useTimer4
TC_Stop(TC_FOR_TIMER4, CHANNEL_FOR_TIMER4);
#endif
#ifdef _useTimer5
TC_Stop(TC_FOR_TIMER5, CHANNEL_FOR_TIMER5);
#endif
void finISR(const timer16_Sequence_t timer_index) {
// Timer is disabled from the ISR, to ensure proper final pulse length.
DisablePending.set(timer_index);
}
#endif // HAS_SERVOS

View File

@@ -37,7 +37,7 @@
#define _useTimer5
#define TRIM_DURATION 2 // compensation ticks to trim adjust for digitalWrite delays
#define SERVO_TIMER_PRESCALER 32 // timer prescaler
#define SERVO_TIMER_PRESCALER 2 // timer prescaler
/*
TC0, chan 0 => TC0_Handler

View File

@@ -35,20 +35,20 @@
static pin_t tone_pin;
volatile static int32_t toggles;
void tone(const pin_t _pin, const unsigned int frequency, const unsigned long duration) {
void tone(const pin_t _pin, const unsigned int frequency, const unsigned long duration/*=0*/) {
tone_pin = _pin;
toggles = 2 * frequency * duration / 1000;
HAL_timer_start(TONE_TIMER_NUM, 2 * frequency);
HAL_timer_start(MF_TIMER_TONE, 2 * frequency);
}
void noTone(const pin_t _pin) {
HAL_timer_disable_interrupt(TONE_TIMER_NUM);
HAL_timer_disable_interrupt(MF_TIMER_TONE);
extDigitalWrite(_pin, LOW);
}
HAL_TONE_TIMER_ISR() {
static uint8_t pin_state = 0;
HAL_timer_isr_prologue(TONE_TIMER_NUM);
HAL_timer_isr_prologue(MF_TIMER_TONE);
if (toggles) {
toggles--;

View File

@@ -20,7 +20,6 @@
*
*/
/**
* Based on u8g_com_msp430_hw_spi.c
*
@@ -60,7 +59,7 @@
#if HAS_MARLINUI_U8GLIB
#include <U8glib.h>
#include <U8glib-HAL.h>
#include "../../../MarlinCore.h"

View File

@@ -57,12 +57,12 @@
#include "../../../inc/MarlinConfigPre.h"
#if ENABLED(U8GLIB_ST7920)
#if IS_U8GLIB_ST7920
#include "../../../inc/MarlinConfig.h"
#include "../../shared/Delay.h"
#include <U8glib.h>
#include <U8glib-HAL.h>
#include "u8g_com_HAL_DUE_sw_spi_shared.h"
@@ -182,5 +182,5 @@ uint8_t u8g_com_HAL_DUE_ST7920_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_va
}
#endif // LIGHTWEIGHT_UI
#endif // U8GLIB_ST7920
#endif // IS_U8GLIB_ST7920
#endif // ARDUINO_ARCH_SAM

View File

@@ -57,14 +57,14 @@
#include "../../../inc/MarlinConfigPre.h"
#if HAS_MARLINUI_U8GLIB && DISABLED(U8GLIB_ST7920)
#if HAS_MARLINUI_U8GLIB && !IS_U8GLIB_ST7920
#include "u8g_com_HAL_DUE_sw_spi_shared.h"
#include "../../shared/Marduino.h"
#include "../../shared/Delay.h"
#include <U8glib.h>
#include <U8glib-HAL.h>
#if ENABLED(FYSETC_MINI_12864)
#define SPISEND_SW_DUE u8g_spiSend_sw_DUE_mode_3
@@ -141,5 +141,5 @@ uint8_t u8g_com_HAL_DUE_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void
return 1;
}
#endif // HAS_MARLINUI_U8GLIB && !U8GLIB_ST7920
#endif // HAS_MARLINUI_U8GLIB && !IS_U8GLIB_ST7920
#endif // ARDUINO_ARCH_SAM

View File

@@ -62,7 +62,7 @@
#include "../../../inc/MarlinConfig.h"
#include "../../shared/Delay.h"
#include <U8glib.h>
#include <U8glib-HAL.h>
#include "u8g_com_HAL_DUE_sw_spi_shared.h"

View File

@@ -23,7 +23,7 @@
#include "../../../inc/MarlinConfigPre.h"
#include "../../shared/Marduino.h"
#include <U8glib.h>
#include <U8glib-HAL.h>
void u8g_SetPIOutput_DUE(u8g_t *u8g, uint8_t pin_index);
void u8g_SetPILevel_DUE(u8g_t *u8g, uint8_t pin_index, uint8_t level);

View File

@@ -199,10 +199,9 @@ static bool ee_PageWrite(uint16_t page, const void *data) {
for (i = 0; i <PageSize >> 2; i++)
pageContents[i] = (((uint32_t*)data)[i]) | (~(pageContents[i] ^ ((uint32_t*)data)[i]));
DEBUG_ECHO_START();
DEBUG_ECHOLNPAIR("EEPROM PageWrite ", page);
DEBUG_ECHOLNPAIR(" in FLASH address ", (uint32_t)addrflash);
DEBUG_ECHOLNPAIR(" base address ", (uint32_t)getFlashStorage(0));
DEBUG_ECHO_MSG("EEPROM PageWrite ", page);
DEBUG_ECHOLNPGM(" in FLASH address ", (uint32_t)addrflash);
DEBUG_ECHOLNPGM(" base address ", (uint32_t)getFlashStorage(0));
DEBUG_FLUSH();
// Get the page relative to the start of the EFC controller, and the EFC controller to use
@@ -245,8 +244,7 @@ static bool ee_PageWrite(uint16_t page, const void *data) {
// Reenable interrupts
__enable_irq();
DEBUG_ECHO_START();
DEBUG_ECHOLNPAIR("EEPROM Unlock failure for page ", page);
DEBUG_ECHO_MSG("EEPROM Unlock failure for page ", page);
return false;
}
@@ -270,8 +268,7 @@ static bool ee_PageWrite(uint16_t page, const void *data) {
// Reenable interrupts
__enable_irq();
DEBUG_ECHO_START();
DEBUG_ECHOLNPAIR("EEPROM Write failure for page ", page);
DEBUG_ECHO_MSG("EEPROM Write failure for page ", page);
return false;
}
@@ -286,8 +283,7 @@ static bool ee_PageWrite(uint16_t page, const void *data) {
if (memcmp(getFlashStorage(page),data,PageSize)) {
#ifdef EE_EMU_DEBUG
DEBUG_ECHO_START();
DEBUG_ECHOLNPAIR("EEPROM Verify Write failure for page ", page);
DEBUG_ECHO_MSG("EEPROM Verify Write failure for page ", page);
ee_Dump( page, (uint32_t *)addrflash);
ee_Dump(-page, data);
@@ -306,7 +302,7 @@ static bool ee_PageWrite(uint16_t page, const void *data) {
}
}
}
DEBUG_ECHOLNPAIR("--> Differing bits: ", count);
DEBUG_ECHOLNPGM("--> Differing bits: ", count);
#endif
return false;
@@ -325,10 +321,9 @@ static bool ee_PageErase(uint16_t page) {
uint16_t i;
uint32_t addrflash = uint32_t(getFlashStorage(page));
DEBUG_ECHO_START();
DEBUG_ECHOLNPAIR("EEPROM PageErase ", page);
DEBUG_ECHOLNPAIR(" in FLASH address ", (uint32_t)addrflash);
DEBUG_ECHOLNPAIR(" base address ", (uint32_t)getFlashStorage(0));
DEBUG_ECHO_MSG("EEPROM PageErase ", page);
DEBUG_ECHOLNPGM(" in FLASH address ", (uint32_t)addrflash);
DEBUG_ECHOLNPGM(" base address ", (uint32_t)getFlashStorage(0));
DEBUG_FLUSH();
// Get the page relative to the start of the EFC controller, and the EFC controller to use
@@ -370,8 +365,7 @@ static bool ee_PageErase(uint16_t page) {
// Reenable interrupts
__enable_irq();
DEBUG_ECHO_START();
DEBUG_ECHOLNPAIR("EEPROM Unlock failure for page ",page);
DEBUG_ECHO_MSG("EEPROM Unlock failure for page ",page);
return false;
}
@@ -394,8 +388,7 @@ static bool ee_PageErase(uint16_t page) {
// Reenable interrupts
__enable_irq();
DEBUG_ECHO_START();
DEBUG_ECHOLNPAIR("EEPROM Erase failure for page ",page);
DEBUG_ECHO_MSG("EEPROM Erase failure for page ",page);
return false;
}
@@ -410,8 +403,7 @@ static bool ee_PageErase(uint16_t page) {
uint32_t * aligned_src = (uint32_t *) addrflash;
for (i = 0; i < PageSize >> 2; i++) {
if (*aligned_src++ != 0xFFFFFFFF) {
DEBUG_ECHO_START();
DEBUG_ECHOLNPAIR("EEPROM Verify Erase failure for page ",page);
DEBUG_ECHO_MSG("EEPROM Verify Erase failure for page ",page);
ee_Dump(page, (uint32_t *)addrflash);
return false;
}
@@ -921,8 +913,7 @@ static void ee_Init() {
// If all groups seem to be used, default to first group
if (curGroup >= GroupCount) curGroup = 0;
DEBUG_ECHO_START();
DEBUG_ECHOLNPAIR("EEPROM Current Group: ",curGroup);
DEBUG_ECHO_MSG("EEPROM Current Group: ",curGroup);
DEBUG_FLUSH();
// Now, validate that all the other group pages are empty
@@ -931,8 +922,7 @@ static void ee_Init() {
for (int page = 0; page < PagesPerGroup; page++) {
if (!ee_IsPageClean(grp * PagesPerGroup + page)) {
DEBUG_ECHO_START();
DEBUG_ECHOLNPAIR("EEPROM Page ", page, " not clean on group ", grp);
DEBUG_ECHO_MSG("EEPROM Page ", page, " not clean on group ", grp);
DEBUG_FLUSH();
ee_PageErase(grp * PagesPerGroup + page);
}
@@ -948,15 +938,13 @@ static void ee_Init() {
}
}
DEBUG_ECHO_START();
DEBUG_ECHOLNPAIR("EEPROM Active page: ", curPage);
DEBUG_ECHO_MSG("EEPROM Active page: ", curPage);
DEBUG_FLUSH();
// Make sure the pages following the first clean one are also clean
for (int page = curPage + 1; page < PagesPerGroup; page++) {
if (!ee_IsPageClean(curGroup * PagesPerGroup + page)) {
DEBUG_ECHO_START();
DEBUG_ECHOLNPAIR("EEPROM Page ", page, " not clean on active group ", curGroup);
DEBUG_ECHO_MSG("EEPROM Page ", page, " not clean on active group ", curGroup);
DEBUG_FLUSH();
ee_Dump(curGroup * PagesPerGroup + page, getFlashStorage(curGroup * PagesPerGroup + page));
ee_PageErase(curGroup * PagesPerGroup + page);

View File

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

View File

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

View File

@@ -25,7 +25,7 @@
* is NOT used to directly toggle pins. The ISR writes to the pin assigned to
* that interrupt.
*
* All PWMs use the same repetition rate. The G2 needs about 10KHz min in order to
* All PWMs use the same repetition rate. The G2 needs about 10kHz min in order to
* not have obvious ripple on the Vref signals.
*
* The data structures are setup to minimize the computation done by the ISR which

View File

@@ -25,6 +25,30 @@
* Test Arduino Due specific configuration values for errors at compile-time.
*/
/**
* Check for common serial pin conflicts
*/
#define CHECK_SERIAL_PIN(N) ( \
X_STOP_PIN == N || Y_STOP_PIN == N || Z_STOP_PIN == N \
|| X_MIN_PIN == N || Y_MIN_PIN == N || Z_MIN_PIN == N \
|| X_MAX_PIN == N || Y_MAX_PIN == N || Z_MAX_PIN == N \
|| X_STEP_PIN == N || Y_STEP_PIN == N || Z_STEP_PIN == N \
|| X_DIR_PIN == N || Y_DIR_PIN == N || Z_DIR_PIN == N \
|| X_ENA_PIN == N || Y_ENA_PIN == N || Z_ENA_PIN == N \
)
#if CONF_SERIAL_IS(0) // D0-D1. No known conflicts.
#endif
#if CONF_SERIAL_IS(1) && (CHECK_SERIAL_PIN(18) || CHECK_SERIAL_PIN(19))
#error "Serial Port 1 pin D18 and/or D19 conflicts with another pin on the board."
#endif
#if CONF_SERIAL_IS(2) && (CHECK_SERIAL_PIN(16) || CHECK_SERIAL_PIN(17))
#error "Serial Port 2 pin D16 and/or D17 conflicts with another pin on the board."
#endif
#if CONF_SERIAL_IS(3) && (CHECK_SERIAL_PIN(14) || CHECK_SERIAL_PIN(15))
#error "Serial Port 3 pin D14 and/or D15 conflicts with another pin on the board."
#endif
#undef CHECK_SERIAL_PIN
/**
* HARDWARE VS. SOFTWARE SPI COMPATIBILITY
*
@@ -59,3 +83,7 @@
#if HAS_TMC_SW_SERIAL
#error "TMC220x Software Serial is not supported on the DUE platform."
#endif
#if USING_PULLDOWNS
#error "PULLDOWN pin mode is not available on DUE boards."
#endif

View File

@@ -2,6 +2,9 @@
* 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
@@ -50,7 +53,7 @@
* The net result is that both the g_pinStatus[pin] array and the PIO_OSR register
* needs to be looked at when determining if a pin is an input or an output.
*
* b) Due has only pins 6, 7, 8 & 9 enabled for PWMs. FYI - they run at 1KHz
* b) Due has only pins 6, 7, 8 & 9 enabled for PWMs. FYI - they run at 1kHz
*
* c) NUM_DIGITAL_PINS does not include the analog pins
*
@@ -64,6 +67,7 @@
#define PRINT_PORT(p)
#define PRINT_ARRAY_NAME(x) do{ sprintf_P(buffer, PSTR("%-" STRINGIFY(MAX_NAME_LENGTH) "s"), pin_array[x].name); SERIAL_ECHO(buffer); }while(0)
#define PRINT_PIN(p) do{ sprintf_P(buffer, PSTR("%02d"), p); SERIAL_ECHO(buffer); }while(0)
#define PRINT_PIN_ANALOG(p) do{ sprintf_P(buffer, PSTR(" (A%2d) "), DIGITAL_PIN_TO_ANALOG_PIN(pin)); SERIAL_ECHO(buffer); }while(0)
#define GET_ARRAY_PIN(p) pin_array[p].pin
#define GET_ARRAY_IS_DIGITAL(p) pin_array[p].is_digital
#define VALID_PIN(pin) (pin >= 0 && pin < (int8_t)NUMBER_PINS_TOTAL ? 1 : 0)
@@ -82,11 +86,10 @@ bool GET_PINMODE(int8_t pin) { // 1: output, 0: input
|| pwm_status(pin));
}
void pwm_details(int32_t pin) {
if (pwm_status(pin)) {
uint32_t chan = g_APinDescription[pin].ulPWMChannel;
SERIAL_ECHOPAIR("PWM = ", PWM_INTERFACE->PWM_CH_NUM[chan].PWM_CDTY);
SERIAL_ECHOPGM("PWM = ", PWM_INTERFACE->PWM_CH_NUM[chan].PWM_CDTY);
}
}

View File

@@ -42,7 +42,7 @@
// Private Variables
// ------------------------
const tTimerConfig TimerConfig [NUM_HARDWARE_TIMERS] = {
const tTimerConfig timer_config[NUM_HARDWARE_TIMERS] = {
{ TC0, 0, TC0_IRQn, 3}, // 0 - [servo timer5]
{ TC0, 1, TC1_IRQn, 0}, // 1
{ TC0, 2, TC2_IRQn, 2}, // 2 - stepper
@@ -66,9 +66,9 @@ const tTimerConfig TimerConfig [NUM_HARDWARE_TIMERS] = {
*/
void HAL_timer_start(const uint8_t timer_num, const uint32_t frequency) {
Tc *tc = TimerConfig[timer_num].pTimerRegs;
IRQn_Type irq = TimerConfig[timer_num].IRQ_Id;
uint32_t channel = TimerConfig[timer_num].channel;
Tc *tc = timer_config[timer_num].pTimerRegs;
IRQn_Type irq = timer_config[timer_num].IRQ_Id;
uint32_t channel = timer_config[timer_num].channel;
// Disable interrupt, just in case it was already enabled
NVIC_DisableIRQ(irq);
@@ -86,13 +86,20 @@ void HAL_timer_start(const uint8_t timer_num, const uint32_t frequency) {
pmc_set_writeprotect(false);
pmc_enable_periph_clk((uint32_t)irq);
NVIC_SetPriority(irq, TimerConfig [timer_num].priority);
NVIC_SetPriority(irq, timer_config[timer_num].priority);
// wave mode, reset counter on match with RC,
TC_Configure(tc, channel, TC_CMR_WAVE | TC_CMR_WAVSEL_UP_RC | TC_CMR_TCCLKS_TIMER_CLOCK1);
TC_Configure(tc, channel,
TC_CMR_WAVE
| TC_CMR_WAVSEL_UP_RC
| (HAL_TIMER_PRESCALER == 2 ? TC_CMR_TCCLKS_TIMER_CLOCK1 : 0)
| (HAL_TIMER_PRESCALER == 8 ? TC_CMR_TCCLKS_TIMER_CLOCK2 : 0)
| (HAL_TIMER_PRESCALER == 32 ? TC_CMR_TCCLKS_TIMER_CLOCK3 : 0)
| (HAL_TIMER_PRESCALER == 128 ? TC_CMR_TCCLKS_TIMER_CLOCK4 : 0)
);
// Set compare value
TC_SetRC(tc, channel, VARIANT_MCK / 2 / frequency);
TC_SetRC(tc, channel, VARIANT_MCK / (HAL_TIMER_PRESCALER) / frequency);
// And start timer
TC_Start(tc, channel);
@@ -105,12 +112,12 @@ void HAL_timer_start(const uint8_t timer_num, const uint32_t frequency) {
}
void HAL_timer_enable_interrupt(const uint8_t timer_num) {
IRQn_Type irq = TimerConfig[timer_num].IRQ_Id;
IRQn_Type irq = timer_config[timer_num].IRQ_Id;
NVIC_EnableIRQ(irq);
}
void HAL_timer_disable_interrupt(const uint8_t timer_num) {
IRQn_Type irq = TimerConfig[timer_num].IRQ_Id;
IRQn_Type irq = timer_config[timer_num].IRQ_Id;
NVIC_DisableIRQ(irq);
// We NEED memory barriers to ensure Interrupts are actually disabled!
@@ -125,7 +132,7 @@ static bool NVIC_GetEnabledIRQ(IRQn_Type IRQn) {
}
bool HAL_timer_interrupt_enabled(const uint8_t timer_num) {
IRQn_Type irq = TimerConfig[timer_num].IRQ_Id;
IRQn_Type irq = timer_config[timer_num].IRQ_Id;
return NVIC_GetEnabledIRQ(irq);
}

View File

@@ -35,37 +35,38 @@
typedef uint32_t hal_timer_t;
#define HAL_TIMER_TYPE_MAX 0xFFFFFFFF
#define HAL_TIMER_RATE ((F_CPU) / 2) // frequency of timers peripherals
#define HAL_TIMER_PRESCALER 2
#define HAL_TIMER_RATE ((F_CPU) / (HAL_TIMER_PRESCALER)) // frequency of timers peripherals
#ifndef STEP_TIMER_NUM
#define STEP_TIMER_NUM 2 // Timer Index for Stepper
#ifndef MF_TIMER_STEP
#define MF_TIMER_STEP 2 // Timer Index for Stepper
#endif
#ifndef PULSE_TIMER_NUM
#define PULSE_TIMER_NUM STEP_TIMER_NUM
#ifndef MF_TIMER_PULSE
#define MF_TIMER_PULSE MF_TIMER_STEP
#endif
#ifndef TEMP_TIMER_NUM
#define TEMP_TIMER_NUM 4 // Timer Index for Temperature
#ifndef MF_TIMER_TEMP
#define MF_TIMER_TEMP 4 // Timer Index for Temperature
#endif
#ifndef TONE_TIMER_NUM
#define TONE_TIMER_NUM 6 // index of timer to use for beeper tones
#ifndef MF_TIMER_TONE
#define MF_TIMER_TONE 6 // index of timer to use for beeper tones
#endif
#define TEMP_TIMER_FREQUENCY 1000 // temperature interrupt frequency
#define STEPPER_TIMER_RATE HAL_TIMER_RATE // frequency of stepper timer (HAL_TIMER_RATE / STEPPER_TIMER_PRESCALE)
#define STEPPER_TIMER_TICKS_PER_US ((STEPPER_TIMER_RATE) / 1000000) // stepper timer ticks per µs
#define STEPPER_TIMER_PRESCALE (CYCLES_PER_MICROSECOND / STEPPER_TIMER_TICKS_PER_US)
#define STEPPER_TIMER_RATE HAL_TIMER_RATE // frequency of stepper timer (HAL_TIMER_RATE / STEPPER_TIMER_PRESCALE)
#define STEPPER_TIMER_TICKS_PER_US ((STEPPER_TIMER_RATE) / 1000000) // stepper timer ticks per µs
#define STEPPER_TIMER_PRESCALE (CYCLES_PER_MICROSECOND / STEPPER_TIMER_TICKS_PER_US)
#define PULSE_TIMER_RATE STEPPER_TIMER_RATE // frequency of pulse timer
#define PULSE_TIMER_PRESCALE STEPPER_TIMER_PRESCALE
#define PULSE_TIMER_TICKS_PER_US STEPPER_TIMER_TICKS_PER_US
#define PULSE_TIMER_RATE STEPPER_TIMER_RATE // frequency of pulse timer
#define PULSE_TIMER_PRESCALE STEPPER_TIMER_PRESCALE
#define PULSE_TIMER_TICKS_PER_US STEPPER_TIMER_TICKS_PER_US
#define ENABLE_STEPPER_DRIVER_INTERRUPT() HAL_timer_enable_interrupt(STEP_TIMER_NUM)
#define DISABLE_STEPPER_DRIVER_INTERRUPT() HAL_timer_disable_interrupt(STEP_TIMER_NUM)
#define STEPPER_ISR_ENABLED() HAL_timer_interrupt_enabled(STEP_TIMER_NUM)
#define ENABLE_STEPPER_DRIVER_INTERRUPT() HAL_timer_enable_interrupt(MF_TIMER_STEP)
#define DISABLE_STEPPER_DRIVER_INTERRUPT() HAL_timer_disable_interrupt(MF_TIMER_STEP)
#define STEPPER_ISR_ENABLED() HAL_timer_interrupt_enabled(MF_TIMER_STEP)
#define ENABLE_TEMPERATURE_INTERRUPT() HAL_timer_enable_interrupt(TEMP_TIMER_NUM)
#define DISABLE_TEMPERATURE_INTERRUPT() HAL_timer_disable_interrupt(TEMP_TIMER_NUM)
#define ENABLE_TEMPERATURE_INTERRUPT() HAL_timer_enable_interrupt(MF_TIMER_TEMP)
#define DISABLE_TEMPERATURE_INTERRUPT() HAL_timer_disable_interrupt(MF_TIMER_TEMP)
#ifndef HAL_STEP_TIMER_ISR
#define HAL_STEP_TIMER_ISR() void TC2_Handler()
@@ -92,7 +93,7 @@ typedef struct {
// Public Variables
// ------------------------
extern const tTimerConfig TimerConfig[];
extern const tTimerConfig timer_config[];
// ------------------------
// Public functions
@@ -101,17 +102,17 @@ extern const tTimerConfig TimerConfig[];
void HAL_timer_start(const uint8_t timer_num, const uint32_t frequency);
FORCE_INLINE static void HAL_timer_set_compare(const uint8_t timer_num, const hal_timer_t compare) {
const tTimerConfig * const pConfig = &TimerConfig[timer_num];
const tTimerConfig * const pConfig = &timer_config[timer_num];
pConfig->pTimerRegs->TC_CHANNEL[pConfig->channel].TC_RC = compare;
}
FORCE_INLINE static hal_timer_t HAL_timer_get_compare(const uint8_t timer_num) {
const tTimerConfig * const pConfig = &TimerConfig[timer_num];
const tTimerConfig * const pConfig = &timer_config[timer_num];
return pConfig->pTimerRegs->TC_CHANNEL[pConfig->channel].TC_RC;
}
FORCE_INLINE static hal_timer_t HAL_timer_get_count(const uint8_t timer_num) {
const tTimerConfig * const pConfig = &TimerConfig[timer_num];
const tTimerConfig * const pConfig = &timer_config[timer_num];
return pConfig->pTimerRegs->TC_CHANNEL[pConfig->channel].TC_CV;
}
@@ -120,9 +121,9 @@ void HAL_timer_disable_interrupt(const uint8_t timer_num);
bool HAL_timer_interrupt_enabled(const uint8_t timer_num);
FORCE_INLINE static void HAL_timer_isr_prologue(const uint8_t timer_num) {
const tTimerConfig * const pConfig = &TimerConfig[timer_num];
const tTimerConfig * const pConfig = &timer_config[timer_num];
// Reading the status register clears the interrupt flag
pConfig->pTimerRegs->TC_CHANNEL[pConfig->channel].TC_SR;
}
#define HAL_timer_isr_epilogue(TIMER_NUM)
#define HAL_timer_isr_epilogue(T) NOOP

View File

@@ -4,15 +4,16 @@
# Windows: bossac.exe
# Other: leave unchanged
#
import pioutil
if pioutil.is_pio_build():
import platform
current_OS = platform.system()
import platform
current_OS = platform.system()
if current_OS == 'Windows':
if current_OS == 'Windows':
Import("env")
Import("env")
# Use bossac.exe on Windows
env.Replace(
UPLOADCMD="bossac --info --unlock --write --verify --reset --erase -U false --boot $SOURCE"
)
# Use bossac.exe on Windows
env.Replace(
UPLOADCMD="bossac --info --unlock --write --verify --reset --erase -U false --boot $SOURCE"
)

View File

@@ -71,7 +71,7 @@
/* ------------------------------------------------------------------------ */
/**
* \page arduino_due_x_board_info "Arduino Due/X - Board informations"
* \page arduino_due_x_board_info "Arduino Due/X - Board information"
* This page lists several definition related to the board description.
*
*/

View File

@@ -1059,7 +1059,7 @@ static inline void convert_64_bit_to_byte_array(uint64_t value, uint8_t *data)
while (val_index < 8)
{
data[val_index++] = value & 0xFF;
value = value >> 8;
value >>= 8;
}
}

View File

@@ -10,7 +10,7 @@
#include "../../../sd/cardreader.h"
extern "C" {
#include "sd_mmc_spi_mem.h"
#include "sd_mmc_spi_mem.h"
}
#define SD_MMC_BLOCK_SIZE 512

View File

@@ -74,7 +74,7 @@
#define SD_MMC_REMOVING 2
//---- CONTROL FONCTIONS ----
//---- CONTROL FUNCTIONS ----
//!
//! @brief This function initializes the hw/sw resources required to drive the SD_MMC_SPI.
//!/
@@ -134,7 +134,7 @@ extern bool sd_mmc_spi_wr_protect(void);
extern bool sd_mmc_spi_removal(void);
//---- ACCESS DATA FONCTIONS ----
//---- ACCESS DATA FUNCTIONS ----
#if ACCESS_USB == true
// Standard functions for open in read/write mode the device

View File

@@ -90,7 +90,7 @@ typedef struct {
//! This buffer must be word align for DATA IN phase (use prefix COMPILER_WORD_ALIGNED for buffer)
uint8_t *payload;
//! Size of buffer to send or fill, and content the number of byte transfered
//! Size of buffer to send or fill, and content the number of byte transferred
uint16_t payload_size;
//! Callback called after reception of ZLP from setup request
@@ -132,10 +132,10 @@ typedef void (*udd_callback_halt_cleared_t)(void);
*
* \param status UDD_EP_TRANSFER_OK, if transfer is complete
* \param status UDD_EP_TRANSFER_ABORT, if transfer is aborted
* \param n number of data transfered
* \param n number of data transferred
*/
typedef void (*udd_callback_trans_t) (udd_ep_status_t status,
iram_size_t nb_transfered, udd_ep_id_t ep);
iram_size_t nb_transferred, udd_ep_id_t ep);
/**
* \brief Authorizes the VBUS event
@@ -303,7 +303,7 @@ bool udd_ep_wait_stall_clear(udd_ep_id_t ep,
* The driver uses a specific DMA USB to transfer data
* from internal RAM to endpoint, if this one is available.
* When the transfer is finished or aborted (stall, reset, ...), the \a callback is called.
* The \a callback returns the transfer status and eventually the number of byte transfered.
* The \a callback returns the transfer status and eventually the number of byte transferred.
* Note: The control endpoint is not authorized.
*
* \param ep The ID of the endpoint to use

View File

@@ -162,7 +162,7 @@ static void udi_cdc_ctrl_state_notify(uint8_t port, udd_ep_id_t ep);
*
* \param status UDD_EP_TRANSFER_OK, if transfer finished
* \param status UDD_EP_TRANSFER_ABORT, if transfer aborted
* \param n number of data transfered
* \param n number of data transferred
*/
static void udi_cdc_serial_state_msg_sent(udd_ep_status_t status, iram_size_t n, udd_ep_id_t ep);
@@ -200,7 +200,7 @@ static void udi_cdc_data_received(udd_ep_status_t status, iram_size_t n, udd_ep_
*
* \param status UDD_EP_TRANSFER_OK, if transfer finished
* \param status UDD_EP_TRANSFER_ABORT, if transfer aborted
* \param n number of data transfered
* \param n number of data transferred
*/
static void udi_cdc_data_sent(udd_ep_status_t status, iram_size_t n, udd_ep_id_t ep);

View File

@@ -106,7 +106,7 @@ extern "C" {
*/
//@{
# if UDI_CDC_PORT_NB > 2
# error USBB, UDP, UDPHS and UOTGHS interfaces have not enought endpoints.
# error USBB, UDP, UDPHS and UOTGHS interfaces have not enough endpoints.
# endif
#define UDI_CDC_DATA_EP_IN_0 (1 | USB_EP_DIR_IN) // TX
#define UDI_CDC_DATA_EP_OUT_0 (2 | USB_EP_DIR_OUT) // RX

View File

@@ -173,7 +173,7 @@ static void udi_msc_cbw_wait(void);
*
* \param status UDD_EP_TRANSFER_OK, if transfer is finished
* \param status UDD_EP_TRANSFER_ABORT, if transfer is aborted
* \param nb_received number of data transfered
* \param nb_received number of data transferred
*/
static void udi_msc_cbw_received(udd_ep_status_t status,
iram_size_t nb_received, udd_ep_id_t ep);
@@ -211,7 +211,7 @@ static void udi_msc_data_send(uint8_t * buffer, uint8_t buf_size);
*
* \param status UDD_EP_TRANSFER_OK, if transfer finish
* \param status UDD_EP_TRANSFER_ABORT, if transfer aborted
* \param nb_sent number of data transfered
* \param nb_sent number of data transferred
*/
static void udi_msc_data_sent(udd_ep_status_t status, iram_size_t nb_sent,
udd_ep_id_t ep);
@@ -244,7 +244,7 @@ void udi_msc_csw_send(void);
*
* \param status UDD_EP_TRANSFER_OK, if transfer is finished
* \param status UDD_EP_TRANSFER_ABORT, if transfer is aborted
* \param nb_sent number of data transfered
* \param nb_sent number of data transferred
*/
static void udi_msc_csw_sent(udd_ep_status_t status, iram_size_t nb_sent,
udd_ep_id_t ep);
@@ -463,7 +463,7 @@ uint8_t udi_msc_getsetting(void)
static void udi_msc_cbw_invalid(void)
{
if (!udi_msc_b_cbw_invalid)
return; // Don't re-stall endpoint if error reseted by setup
return; // Don't re-stall endpoint if error reset by setup
udd_ep_set_halt(UDI_MSC_EP_OUT);
// If stall cleared then re-stall it. Only Setup MSC Reset can clear it
udd_ep_wait_stall_clear(UDI_MSC_EP_OUT, udi_msc_cbw_invalid);
@@ -472,7 +472,7 @@ static void udi_msc_cbw_invalid(void)
static void udi_msc_csw_invalid(void)
{
if (!udi_msc_b_cbw_invalid)
return; // Don't re-stall endpoint if error reseted by setup
return; // Don't re-stall endpoint if error reset by setup
udd_ep_set_halt(UDI_MSC_EP_IN);
// If stall cleared then re-stall it. Only Setup MSC Reset can clear it
udd_ep_wait_stall_clear(UDI_MSC_EP_IN, udi_msc_csw_invalid);

View File

@@ -325,7 +325,7 @@ static void udd_sleep_mode(bool b_idle)
/**
* \name Control endpoint low level management routine.
*
* This function performs control endpoint mangement.
* This function performs control endpoint management.
* It handle the SETUP/DATA/HANDSHAKE phases of a control transaction.
*/
//@{
@@ -397,9 +397,9 @@ static void udd_ctrl_endofrequest(void);
/**
* \brief Main interrupt routine for control endpoint
*
* This switchs control endpoint events to correct sub function.
* This switches control endpoint events to correct sub function.
*
* \return \c 1 if an event about control endpoint is occured, otherwise \c 0.
* \return \c 1 if an event about control endpoint is occurred, otherwise \c 0.
*/
static bool udd_ctrl_interrupt(void);
@@ -410,7 +410,7 @@ static bool udd_ctrl_interrupt(void);
* \name Management of bulk/interrupt/isochronous endpoints
*
* The UDD manages the data transfer on endpoints:
* - Start data tranfer on endpoint with USB Device DMA
* - Start data transfer on endpoint with USB Device DMA
* - Send a ZLP packet if requested
* - Call callback registered to signal end of transfer
* The transfer abort and stall feature are supported.
@@ -431,7 +431,7 @@ typedef struct {
uint8_t *buf;
//! Size of buffer to send or fill
iram_size_t buf_size;
//!< Size of data transfered
//!< Size of data transferred
iram_size_t buf_cnt;
//!< Size of data loaded (or prepared for DMA) last time
iram_size_t buf_load;
@@ -486,7 +486,7 @@ static void udd_ep_finish_job(udd_ep_job_t * ptr_job, bool b_abort, uint8_t ep_n
#ifdef UDD_EP_DMA_SUPPORTED
/**
* \brief Start the next transfer if necessary or complet the job associated.
* \brief Start the next transfer if necessary or complete the job associated.
*
* \param ep endpoint number without direction flag
*/
@@ -496,9 +496,9 @@ static void udd_ep_finish_job(udd_ep_job_t * ptr_job, bool b_abort, uint8_t ep_n
/**
* \brief Main interrupt routine for bulk/interrupt/isochronous endpoints
*
* This switchs endpoint events to correct sub function.
* This switches endpoint events to correct sub function.
*
* \return \c 1 if an event about bulk/interrupt/isochronous endpoints has occured, otherwise \c 0.
* \return \c 1 if an event about bulk/interrupt/isochronous endpoints has occurred, otherwise \c 0.
*/
static bool udd_ep_interrupt(void);
@@ -520,7 +520,7 @@ static bool udd_ep_interrupt(void);
*
* Note:
* Here, the global interrupt mask is not clear when an USB interrupt is enabled
* because this one can not be occured during the USB ISR (=during INTX is masked).
* because this one can not be occurred during the USB ISR (=during INTX is masked).
* See Technical reference $3.8.3 Masking interrupt requests in peripheral modules.
*/
#ifdef UHD_ENABLE
@@ -787,7 +787,7 @@ void udd_attach(void)
udd_sleep_mode(true);
otg_unfreeze_clock();
// This section of clock check can be improved with a chek of
// This section of clock check can be improved with a check of
// USB clock source via sysclk()
// Check USB clock because the source can be a PLL
while (!Is_otg_clock_usable());
@@ -803,7 +803,7 @@ void udd_attach(void)
#ifdef USB_DEVICE_HS_SUPPORT
udd_enable_msof_interrupt();
#endif
// Reset following interupts flag
// Reset following interrupts flag
udd_ack_reset();
udd_ack_sof();
udd_ack_msof();
@@ -902,7 +902,7 @@ bool udd_ep_alloc(udd_ep_id_t ep, uint8_t bmAttributes,
}
dbg_print("alloc(%x, %d) ", ep, MaxEndpointSize);
// Bank choise
// Bank choice
switch (bmAttributes & USB_EP_TYPE_MASK) {
case USB_EP_TYPE_ISOCHRONOUS:
nb_bank = UDD_ISOCHRONOUS_NB_BANK(ep);
@@ -1228,7 +1228,7 @@ bool udd_ep_wait_stall_clear(udd_ep_id_t ep,
if (Is_udd_endpoint_stall_requested(ep)
|| ptr_job->stall_requested) {
// Endpoint halted then registes the callback
// Endpoint halted then registers the callback
ptr_job->busy = true;
ptr_job->call_nohalt = callback;
} else {
@@ -1386,7 +1386,7 @@ static void udd_ctrl_setup_received(void)
// Decode setup request
if (udc_process_setup() == false) {
// Setup request unknow then stall it
// Setup request unknown then stall it
udd_ctrl_stall_data();
udd_ack_setup_received(0);
return;
@@ -1447,7 +1447,7 @@ static void udd_ctrl_in_sent(void)
udd_ctrl_prev_payload_buf_cnt += udd_ctrl_payload_buf_cnt;
if ((udd_g_ctrlreq.req.wLength == udd_ctrl_prev_payload_buf_cnt)
|| b_shortpacket) {
// All data requested are transfered or a short packet has been sent
// All data requested are transferred or a short packet has been sent
// then it is the end of data phase.
// Generate an OUT ZLP for handshake phase.
udd_ctrl_send_zlp_out();
@@ -1516,7 +1516,7 @@ static void udd_ctrl_out_received(void)
// End of SETUP request:
// - Data IN Phase aborted,
// - or last Data IN Phase hidden by ZLP OUT sending quiclky,
// - or ZLP OUT received normaly.
// - or ZLP OUT received normally.
udd_ctrl_endofrequest();
} else {
// Protocol error during SETUP request
@@ -1544,7 +1544,7 @@ static void udd_ctrl_out_received(void)
(udd_ctrl_prev_payload_buf_cnt +
udd_ctrl_payload_buf_cnt))) {
// End of reception because it is a short packet
// Before send ZLP, call intermediat calback
// Before send ZLP, call intermediate callback
// in case of data receiv generate a stall
udd_g_ctrlreq.payload_size = udd_ctrl_payload_buf_cnt;
if (NULL != udd_g_ctrlreq.over_under_run) {
@@ -1565,7 +1565,7 @@ static void udd_ctrl_out_received(void)
if (udd_g_ctrlreq.payload_size == udd_ctrl_payload_buf_cnt) {
// Overrun then request a new payload buffer
if (!udd_g_ctrlreq.over_under_run) {
// No callback availabled to request a new payload buffer
// No callback available to request a new payload buffer
udd_ctrl_stall_data();
// Ack reception of OUT to replace NAK by a STALL
udd_ack_out_received(0);
@@ -1805,7 +1805,7 @@ static void udd_ep_trans_done(udd_ep_id_t ep)
// transfer size of UDD_ENDPOINT_MAX_TRANS Bytes
next_trans = UDD_ENDPOINT_MAX_TRANS;
// Set 0 to tranfer the maximum
// Set 0 to transfer the maximum
udd_dma_ctrl = UOTGHS_DEVDMACONTROL_BUFF_LENGTH(0);
} else {
udd_dma_ctrl = UOTGHS_DEVDMACONTROL_BUFF_LENGTH(next_trans);
@@ -1850,7 +1850,7 @@ static void udd_ep_trans_done(udd_ep_id_t ep)
}
cpu_irq_restore(flags);
// Here a ZLP has been recieved
// Here a ZLP has been received
// and the DMA transfer must be not started.
// It is the end of transfer
ptr_job->buf_size = ptr_job->buf_cnt;
@@ -1991,13 +1991,13 @@ static bool udd_ep_interrupt(void)
}
dbg_print("dma%x: ", ep);
udd_disable_endpoint_dma_interrupt(ep);
// Save number of data no transfered
// Save number of data no transferred
nb_remaining = (udd_endpoint_dma_get_status(ep) &
UOTGHS_DEVDMASTATUS_BUFF_COUNT_Msk)
>> UOTGHS_DEVDMASTATUS_BUFF_COUNT_Pos;
if (nb_remaining) {
// Transfer no complete (short packet or ZLP) then:
// Update number of data transfered
// Update number of data transferred
ptr_job->buf_cnt -= nb_remaining;
// Set transfer complete to stop the transfer
ptr_job->buf_size = ptr_job->buf_cnt;
@@ -2056,7 +2056,7 @@ static bool udd_ep_interrupt(void)
udd_disable_endpoint_interrupt(ep);
Assert(ptr_job->stall_requested);
// A stall has been requested during backgound transfer
// A stall has been requested during background transfer
ptr_job->stall_requested = false;
udd_disable_endpoint_bank_autoswitch(ep);
udd_enable_stall_handshake(ep);

View File

@@ -130,7 +130,7 @@ struct usb_msc_cbw {
struct usb_msc_csw {
le32_t dCSWSignature; //!< Must contain 'USBS'
le32_t dCSWTag; //!< Same as dCBWTag
le32_t dCSWDataResidue; //!< Number of bytes not transfered
le32_t dCSWDataResidue; //!< Number of bytes not transferred
uint8_t bCSWStatus; //!< Status code
};

View File

@@ -1,114 +0,0 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
*/
#ifdef ARDUINO_ARCH_SAM
#include "../../inc/MarlinConfig.h"
#include "../../MarlinCore.h"
#include "watchdog.h"
// Override Arduino runtime to either config or disable the watchdog
//
// We need to configure the watchdog as soon as possible in the boot
// process, because watchdog initialization at hardware reset on SAM3X8E
// is unreliable, and there is risk of unintended resets if we delay
// that initialization to a later time.
void watchdogSetup() {
#if ENABLED(USE_WATCHDOG)
// 4 seconds timeout
uint32_t timeout = TERN(WATCHDOG_DURATION_8S, 8000, 4000);
// Calculate timeout value in WDT counter ticks: This assumes
// the slow clock is running at 32.768 kHz watchdog
// frequency is therefore 32768 / 128 = 256 Hz
timeout = (timeout << 8) / 1000;
if (timeout == 0)
timeout = 1;
else if (timeout > 0xFFF)
timeout = 0xFFF;
// We want to enable the watchdog with the specified timeout
uint32_t value =
WDT_MR_WDV(timeout) | // With the specified timeout
WDT_MR_WDD(timeout) | // and no invalid write window
#if !(SAMV70 || SAMV71 || SAME70 || SAMS70)
WDT_MR_WDRPROC | // WDT fault resets processor only - We want
// to keep PIO controller state
#endif
WDT_MR_WDDBGHLT | // WDT stops in debug state.
WDT_MR_WDIDLEHLT; // WDT stops in idle state.
#if ENABLED(WATCHDOG_RESET_MANUAL)
// We enable the watchdog timer, but only for the interrupt.
// Configure WDT to only trigger an interrupt
value |= WDT_MR_WDFIEN; // Enable WDT fault interrupt.
// Disable WDT interrupt (just in case, to avoid triggering it!)
NVIC_DisableIRQ(WDT_IRQn);
// We NEED memory barriers to ensure Interrupts are actually disabled!
// ( https://dzone.com/articles/nvic-disabling-interrupts-on-arm-cortex-m-and-the )
__DSB();
__ISB();
// Initialize WDT with the given parameters
WDT_Enable(WDT, value);
// Configure and enable WDT interrupt.
NVIC_ClearPendingIRQ(WDT_IRQn);
NVIC_SetPriority(WDT_IRQn, 0); // Use highest priority, so we detect all kinds of lockups
NVIC_EnableIRQ(WDT_IRQn);
#else
// a WDT fault triggers a reset
value |= WDT_MR_WDRSTEN;
// Initialize WDT with the given parameters
WDT_Enable(WDT, value);
#endif
// Reset the watchdog
WDT_Restart(WDT);
#else
// Make sure to completely disable the Watchdog
WDT_Disable(WDT);
#endif
}
#if ENABLED(USE_WATCHDOG)
// Initialize watchdog - On SAM3X, Watchdog was already configured
// and enabled or disabled at startup, so no need to reconfigure it
// here.
void watchdog_init() {
// Reset watchdog to start clean
WDT_Restart(WDT);
}
#endif // USE_WATCHDOG
#endif

View File

@@ -28,6 +28,10 @@
#include <esp_adc_cal.h>
#include <HardwareSerial.h>
#if ENABLED(USE_ESP32_TASK_WDT)
#include <esp_task_wdt.h>
#endif
#if ENABLED(WIFISUPPORT)
#include <ESPAsyncWebServer.h>
#include "wifi.h"
@@ -48,7 +52,7 @@
// Externs
// ------------------------
portMUX_TYPE spinlock = portMUX_INITIALIZER_UNLOCKED;
portMUX_TYPE MarlinHAL::spinlock = portMUX_INITIALIZER_UNLOCKED;
// ------------------------
// Local defines
@@ -60,7 +64,8 @@ portMUX_TYPE spinlock = portMUX_INITIALIZER_UNLOCKED;
// Public Variables
// ------------------------
uint16_t HAL_adc_result;
uint16_t MarlinHAL::adc_result;
pwm_pin_t MarlinHAL::pwm_pin_data[MAX_EXPANDER_BITS];
// ------------------------
// Private Variables
@@ -69,9 +74,16 @@ uint16_t HAL_adc_result;
esp_adc_cal_characteristics_t characteristics[ADC_ATTEN_MAX];
adc_atten_t attenuations[ADC1_CHANNEL_MAX] = {};
uint32_t thresholds[ADC_ATTEN_MAX];
volatile int numPWMUsed = 0,
pwmPins[MAX_PWM_PINS],
pwmValues[MAX_PWM_PINS];
volatile int numPWMUsed = 0;
volatile struct { pin_t pin; int value; } pwmState[MAX_PWM_PINS];
pin_t chan_pin[CHANNEL_MAX_NUM + 1] = { 0 }; // PWM capable IOpins - not 0 or >33 on ESP32
struct {
uint32_t freq; // ledcReadFreq doesn't work if a duty hasn't been set yet!
uint16_t res;
} pwmInfo[(CHANNEL_MAX_NUM + 1) / 2];
// ------------------------
// Public functions
@@ -90,8 +102,26 @@ volatile int numPWMUsed = 0,
#endif
void HAL_init_board() {
#if ENABLED(USE_ESP32_EXIO)
HardwareSerial YSerial2(2);
void Write_EXIO(uint8_t IO, uint8_t v) {
if (hal.isr_state()) {
hal.isr_off();
YSerial2.write(0x80 | (((char)v) << 5) | (IO - 100));
hal.isr_on();
}
else
YSerial2.write(0x80 | (((char)v) << 5) | (IO - 100));
}
#endif
void MarlinHAL::init_board() {
#if ENABLED(USE_ESP32_TASK_WDT)
esp_task_wdt_init(10, true);
#endif
#if ENABLED(ESP3D_WIFISUPPORT)
esp3dlib.init();
#elif ENABLED(WIFISUPPORT)
@@ -127,30 +157,58 @@ void HAL_init_board() {
// Initialize the i2s peripheral only if the I2S stepper stream is enabled.
// The following initialization is performed after Serial1 and Serial2 are defined as
// their native pins might conflict with the i2s stream even when they are remapped.
TERN_(I2S_STEPPER_STREAM, i2s_init());
#if ENABLED(USE_ESP32_EXIO)
YSerial2.begin(460800 * 3, SERIAL_8N1, 16, 17);
#elif ENABLED(I2S_STEPPER_STREAM)
i2s_init();
#endif
}
void HAL_idletask() {
void MarlinHAL::idletask() {
#if BOTH(WIFISUPPORT, OTASUPPORT)
OTA_handle();
#endif
TERN_(ESP3D_WIFISUPPORT, esp3dlib.idletask());
}
void HAL_clear_reset_source() { }
uint8_t MarlinHAL::get_reset_source() { return rtc_get_reset_reason(1); }
uint8_t HAL_get_reset_source() { return rtc_get_reset_reason(1); }
void HAL_reboot() { ESP.restart(); }
void MarlinHAL::reboot() { ESP.restart(); }
void _delay_ms(int delay_ms) { delay(delay_ms); }
// return free memory between end of heap (or end bss) and whatever is current
int freeMemory() { return ESP.getFreeHeap(); }
int MarlinHAL::freeMemory() { return ESP.getFreeHeap(); }
// ------------------------
// Watchdog Timer
// ------------------------
#if ENABLED(USE_WATCHDOG)
#define WDT_TIMEOUT_US TERN(WATCHDOG_DURATION_8S, 8000000, 4000000) // 4 or 8 second timeout
extern "C" {
esp_err_t esp_task_wdt_reset();
}
void watchdogSetup() {
// do whatever. don't remove this function.
}
void MarlinHAL::watchdog_init() {
// TODO
}
// Reset watchdog.
void MarlinHAL::watchdog_refresh() { esp_task_wdt_reset(); }
#endif
// ------------------------
// ADC
// ------------------------
#define ADC1_CHANNEL(pin) ADC1_GPIO ## pin ## _CHANNEL
adc1_channel_t get_channel(int pin) {
@@ -172,22 +230,24 @@ void adc1_set_attenuation(adc1_channel_t chan, adc_atten_t atten) {
}
}
void HAL_adc_init() {
void MarlinHAL::adc_init() {
// Configure ADC
adc1_config_width(ADC_WIDTH_12Bit);
// Configure channels only if used as (re-)configuring a pin for ADC that is used elsewhere might have adverse effects
TERN_(HAS_TEMP_ADC_0, adc1_set_attenuation(get_channel(TEMP_0_PIN), ADC_ATTEN_11db));
TERN_(HAS_TEMP_ADC_1, adc1_set_attenuation(get_channel(TEMP_1_PIN), ADC_ATTEN_11db));
TERN_(HAS_TEMP_ADC_2, adc1_set_attenuation(get_channel(TEMP_2_PIN), ADC_ATTEN_11db));
TERN_(HAS_TEMP_ADC_3, adc1_set_attenuation(get_channel(TEMP_3_PIN), ADC_ATTEN_11db));
TERN_(HAS_TEMP_ADC_4, adc1_set_attenuation(get_channel(TEMP_4_PIN), ADC_ATTEN_11db));
TERN_(HAS_TEMP_ADC_5, adc1_set_attenuation(get_channel(TEMP_5_PIN), ADC_ATTEN_11db));
TERN_(HAS_TEMP_ADC_6, adc2_set_attenuation(get_channel(TEMP_6_PIN), ADC_ATTEN_11db));
TERN_(HAS_TEMP_ADC_7, adc3_set_attenuation(get_channel(TEMP_7_PIN), ADC_ATTEN_11db));
TERN_(HAS_HEATED_BED, adc1_set_attenuation(get_channel(TEMP_BED_PIN), ADC_ATTEN_11db));
TERN_(HAS_TEMP_CHAMBER, adc1_set_attenuation(get_channel(TEMP_CHAMBER_PIN), ADC_ATTEN_11db));
TERN_(HAS_TEMP_COOLER, adc1_set_attenuation(get_channel(TEMP_COOLER_PIN), ADC_ATTEN_11db));
TERN_(HAS_TEMP_ADC_0, adc1_set_attenuation(get_channel(TEMP_0_PIN), ADC_ATTEN_11db));
TERN_(HAS_TEMP_ADC_1, adc1_set_attenuation(get_channel(TEMP_1_PIN), ADC_ATTEN_11db));
TERN_(HAS_TEMP_ADC_2, adc1_set_attenuation(get_channel(TEMP_2_PIN), ADC_ATTEN_11db));
TERN_(HAS_TEMP_ADC_3, adc1_set_attenuation(get_channel(TEMP_3_PIN), ADC_ATTEN_11db));
TERN_(HAS_TEMP_ADC_4, adc1_set_attenuation(get_channel(TEMP_4_PIN), ADC_ATTEN_11db));
TERN_(HAS_TEMP_ADC_5, adc1_set_attenuation(get_channel(TEMP_5_PIN), ADC_ATTEN_11db));
TERN_(HAS_TEMP_ADC_6, adc2_set_attenuation(get_channel(TEMP_6_PIN), ADC_ATTEN_11db));
TERN_(HAS_TEMP_ADC_7, adc3_set_attenuation(get_channel(TEMP_7_PIN), ADC_ATTEN_11db));
TERN_(HAS_HEATED_BED, adc1_set_attenuation(get_channel(TEMP_BED_PIN), ADC_ATTEN_11db));
TERN_(HAS_TEMP_CHAMBER, adc1_set_attenuation(get_channel(TEMP_CHAMBER_PIN), ADC_ATTEN_11db));
TERN_(HAS_TEMP_PROBE, adc1_set_attenuation(get_channel(TEMP_PROBE_PIN), ADC_ATTEN_11db));
TERN_(HAS_TEMP_COOLER, adc1_set_attenuation(get_channel(TEMP_COOLER_PIN), ADC_ATTEN_11db));
TERN_(HAS_TEMP_BOARD, adc1_set_attenuation(get_channel(TEMP_BOARD_PIN), ADC_ATTEN_11db));
TERN_(FILAMENT_WIDTH_SENSOR, adc1_set_attenuation(get_channel(FILWIDTH_PIN), ADC_ATTEN_11db));
// Note that adc2 is shared with the WiFi module, which has higher priority, so the conversion may fail.
@@ -202,11 +262,16 @@ void HAL_adc_init() {
}
}
void HAL_adc_start_conversion(const uint8_t adc_pin) {
const adc1_channel_t chan = get_channel(adc_pin);
#ifndef ADC_REFERENCE_VOLTAGE
#define ADC_REFERENCE_VOLTAGE 3.3
#endif
void MarlinHAL::adc_start(const pin_t pin) {
const adc1_channel_t chan = get_channel(pin);
uint32_t mv;
esp_adc_cal_get_voltage((adc_channel_t)chan, &characteristics[attenuations[chan]], &mv);
HAL_adc_result = mv * 1023.0 / 3300.0;
adc_result = mv * isr_float_t(1023) / isr_float_t(ADC_REFERENCE_VOLTAGE) / isr_float_t(1000);
// Change the attenuation level based on the new reading
adc_atten_t atten;
@@ -223,25 +288,106 @@ void HAL_adc_start_conversion(const uint8_t adc_pin) {
adc1_set_attenuation(chan, atten);
}
void analogWrite(pin_t pin, int value) {
// Use ledc hardware for internal pins
if (pin < 34) {
static int cnt_channel = 1, pin_to_channel[40] = { 0 };
if (pin_to_channel[pin] == 0) {
ledcAttachPin(pin, cnt_channel);
ledcSetup(cnt_channel, 490, 8);
ledcWrite(cnt_channel, value);
pin_to_channel[pin] = cnt_channel++;
// ------------------------
// PWM
// ------------------------
int8_t channel_for_pin(const uint8_t pin) {
for (int i = 0; i <= CHANNEL_MAX_NUM; i++)
if (chan_pin[i] == pin) return i;
return -1;
}
// get PWM channel for pin - if none then attach a new one
// return -1 if fail or invalid pin#, channel # (0-15) if success
int8_t get_pwm_channel(const pin_t pin, const uint32_t freq, const uint16_t res) {
if (!WITHIN(pin, 1, MAX_PWM_IOPIN)) return -1; // Not a hardware PWM pin!
int8_t cid = channel_for_pin(pin);
if (cid >= 0) return cid;
// Find an empty adjacent channel (same timer & freq/res)
for (int i = 0; i <= CHANNEL_MAX_NUM; i++) {
if (chan_pin[i] == 0) {
if (chan_pin[i ^ 0x1] != 0) {
if (pwmInfo[i / 2].freq == freq && pwmInfo[i / 2].res == res) {
chan_pin[i] = pin; // Allocate PWM to this channel
ledcAttachPin(pin, i);
return i;
}
}
else if (cid == -1) // Pair of empty channels?
cid = i & 0xFE; // Save lower channel number
}
ledcWrite(pin_to_channel[pin], value);
}
// not attached, is an empty timer slot avail?
if (cid >= 0) {
chan_pin[cid] = pin;
pwmInfo[cid / 2].freq = freq;
pwmInfo[cid / 2].res = res;
ledcSetup(cid, freq, res);
ledcAttachPin(pin, cid);
}
return cid; // -1 if no channel avail
}
void MarlinHAL::set_pwm_duty(const pin_t pin, const uint16_t v, const uint16_t v_size/*=_BV(PWM_RESOLUTION)-1*/, const bool invert/*=false*/) {
#if ENABLED(I2S_STEPPER_STREAM)
if (pin > 127) {
const uint8_t pinlo = pin & 0x7F;
pwm_pin_t &pindata = pwm_pin_data[pinlo];
const uint32_t duty = map(invert ? v_size - v : v, 0, v_size, 0, pindata.pwm_cycle_ticks);
if (duty == 0 || duty == pindata.pwm_cycle_ticks) { // max or min (i.e., on/off)
pindata.pwm_duty_ticks = 0; // turn off PWM for this pin
duty ? SBI32(i2s_port_data, pinlo) : CBI32(i2s_port_data, pinlo); // set pin level
}
else
pindata.pwm_duty_ticks = duty; // PWM duty count = # of 4µs ticks per full PWM cycle
}
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);
}
}
}
int8_t MarlinHAL::set_pwm_frequency(const pin_t pin, const uint32_t f_desired) {
#if ENABLED(I2S_STEPPER_STREAM)
if (pin > 127) {
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
}
}
// use hardware PWM if avail, if not then ISR
void analogWrite(const pin_t pin, const uint16_t value, const uint32_t freq/*=PWM_FREQUENCY*/, const uint16_t res/*=8*/) { // always 8 bit resolution!
// Use ledc hardware for internal pins
const int8_t cid = get_pwm_channel(pin, freq, res);
if (cid >= 0) {
ledcWrite(cid, value); // set duty value
return;
}
// not a hardware PWM pin OR no PWM channels available
int idx = -1;
// Search Pin
for (int i = 0; i < numPWMUsed; ++i)
if (pwmPins[i] == pin) { idx = i; break; }
if (pwmState[i].pin == pin) { idx = i; break; }
// not found ?
if (idx < 0) {
@@ -250,34 +396,34 @@ void analogWrite(pin_t pin, int value) {
// Take new slot for pin
idx = numPWMUsed;
pwmPins[idx] = pin;
pwmState[idx].pin = pin;
// Start timer on first use
if (idx == 0) HAL_timer_start(PWM_TIMER_NUM, PWM_TIMER_FREQUENCY);
if (idx == 0) HAL_timer_start(MF_TIMER_PWM, PWM_TIMER_FREQUENCY);
++numPWMUsed;
}
// Use 7bit internal value - add 1 to have 100% high at 255
pwmValues[idx] = (value + 1) / 2;
pwmState[idx].value = (value + 1) / 2;
}
// Handle PWM timer interrupt
HAL_PWM_TIMER_ISR() {
HAL_timer_isr_prologue(PWM_TIMER_NUM);
HAL_timer_isr_prologue(MF_TIMER_PWM);
static uint8_t count = 0;
for (int i = 0; i < numPWMUsed; ++i) {
if (count == 0) // Start of interval
WRITE(pwmPins[i], pwmValues[i] ? HIGH : LOW);
else if (pwmValues[i] == count) // End of duration
WRITE(pwmPins[i], LOW);
digitalWrite(pwmState[i].pin, pwmState[i].value ? HIGH : LOW);
else if (pwmState[i].value == count) // End of duration
digitalWrite(pwmState[i].pin, LOW);
}
// 128 for 7 Bit resolution
count = (count + 1) & 0x7F;
HAL_timer_isr_epilogue(PWM_TIMER_NUM);
HAL_timer_isr_epilogue(MF_TIMER_PWM);
}
#endif // ARDUINO_ARCH_ESP32

View File

@@ -32,7 +32,6 @@
#include "../shared/HAL_SPI.h"
#include "fastio.h"
#include "watchdog.h"
#include "i2s.h"
#if ENABLED(WIFISUPPORT)
@@ -49,8 +48,6 @@
// Defines
// ------------------------
extern portMUX_TYPE spinlock;
#define MYSERIAL1 flushableSerial
#if EITHER(WIFISUPPORT, ESP3D_WIFISUPPORT)
@@ -63,26 +60,33 @@ extern portMUX_TYPE spinlock;
#endif
#endif
#define CRITICAL_SECTION_START() portENTER_CRITICAL(&spinlock)
#define CRITICAL_SECTION_END() portEXIT_CRITICAL(&spinlock)
#define ISRS_ENABLED() (spinlock.owner == portMUX_FREE_VAL)
#define ENABLE_ISRS() if (spinlock.owner != portMUX_FREE_VAL) portEXIT_CRITICAL(&spinlock)
#define DISABLE_ISRS() portENTER_CRITICAL(&spinlock)
#define CRITICAL_SECTION_START() portENTER_CRITICAL(&hal.spinlock)
#define CRITICAL_SECTION_END() portEXIT_CRITICAL(&hal.spinlock)
#define HAL_CAN_SET_PWM_FREQ // This HAL supports PWM Frequency adjustment
#define PWM_FREQUENCY 1000u // Default PWM frequency when set_pwm_duty() is called without set_pwm_frequency()
#define PWM_RESOLUTION 10u // Default PWM bit resolution
#define CHANNEL_MAX_NUM 15u // max PWM channel # to allocate (7 to only use low speed, 15 to use low & high)
#define MAX_PWM_IOPIN 33u // hardware pwm pins < 34
#ifndef MAX_EXPANDER_BITS
#define MAX_EXPANDER_BITS 32 // I2S expander bit width (max 32)
#endif
// ------------------------
// Types
// ------------------------
typedef double isr_float_t; // FPU ops are used for single-precision, so use double for ISRs.
typedef int16_t pin_t;
#define HAL_SERVO_LIB Servo
typedef struct pwm_pin {
uint32_t pwm_cycle_ticks = 1000000UL / (PWM_FREQUENCY) / 4; // # ticks per pwm cycle
uint32_t pwm_tick_count = 0; // current tick count
uint32_t pwm_duty_ticks = 0; // # of ticks for current duty cycle
} pwm_pin_t;
// ------------------------
// Public Variables
// ------------------------
/** result of last ADC conversion */
extern uint16_t HAL_adc_result;
class Servo;
typedef Servo hal_servo_t;
// ------------------------
// Public functions
@@ -91,56 +95,21 @@ extern uint16_t HAL_adc_result;
//
// Tone
//
void toneInit();
void tone(const pin_t _pin, const unsigned int frequency, const unsigned long duration=0);
void noTone(const pin_t _pin);
int8_t get_pwm_channel(const pin_t pin, const uint32_t freq, const uint16_t res);
void analogWrite(const pin_t pin, const uint16_t value, const uint32_t freq=PWM_FREQUENCY, const uint16_t res=8);
// clear reset reason
void HAL_clear_reset_source();
// reset reason
uint8_t HAL_get_reset_source();
void HAL_reboot();
void _delay_ms(int delay);
#if GCC_VERSION <= 50000
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wunused-function"
#endif
int freeMemory();
#if GCC_VERSION <= 50000
#pragma GCC diagnostic pop
#endif
void analogWrite(pin_t pin, int value);
// ADC
#define HAL_ANALOG_SELECT(pin)
void HAL_adc_init();
#define HAL_ADC_VREF 3.3
#define HAL_ADC_RESOLUTION 10
#define HAL_START_ADC(pin) HAL_adc_start_conversion(pin)
#define HAL_READ_ADC() HAL_adc_result
#define HAL_ADC_READY() true
void HAL_adc_start_conversion(const uint8_t adc_pin);
//
// Pin Mapping for M42, M43, M226
//
#define GET_PIN_MAP_PIN(index) index
#define GET_PIN_MAP_INDEX(pin) pin
#define PARSED_PIN_INDEX(code, dval) parser.intval(code, dval)
// Enable hooks into idle and setup for HAL
#define HAL_IDLETASK 1
#define BOARD_INIT() HAL_init_board();
void HAL_idletask();
inline void HAL_init() {}
void HAL_init_board();
#if ENABLED(USE_ESP32_EXIO)
void Write_EXIO(uint8_t IO, uint8_t v);
#endif
//
// Delay in cycles (used by DELAY_NS / DELAY_US)
@@ -182,3 +151,96 @@ FORCE_INLINE static void DELAY_CYCLES(uint32_t x) {
}
}
// ------------------------
// Class Utilities
// ------------------------
#pragma GCC diagnostic push
#if GCC_VERSION <= 50000
#pragma GCC diagnostic ignored "-Wunused-function"
#endif
int freeMemory();
#pragma GCC diagnostic pop
void _delay_ms(const int ms);
// ------------------------
// MarlinHAL Class
// ------------------------
#define HAL_ADC_VREF 3.3
#define HAL_ADC_RESOLUTION 10
class MarlinHAL {
public:
// Earliest possible init, before setup()
MarlinHAL() {}
// Watchdog
static void watchdog_init() IF_DISABLED(USE_WATCHDOG, {});
static void watchdog_refresh() IF_DISABLED(USE_WATCHDOG, {});
static void init() {} // Called early in setup()
static void init_board(); // Called less early in setup()
static void reboot(); // Restart the firmware
// Interrupts
static portMUX_TYPE spinlock;
static bool isr_state() { return spinlock.owner == portMUX_FREE_VAL; }
static void isr_on() { if (spinlock.owner != portMUX_FREE_VAL) portEXIT_CRITICAL(&spinlock); }
static void isr_off() { portENTER_CRITICAL(&spinlock); }
static void delay_ms(const int ms) { _delay_ms(ms); }
// Tasks, called from idle()
static void idletask();
// Reset
static uint8_t get_reset_source();
static void clear_reset_source() {}
// Free SRAM
static int freeMemory();
static pwm_pin_t pwm_pin_data[MAX_EXPANDER_BITS];
//
// ADC Methods
//
static uint16_t adc_result;
// Called by Temperature::init once at startup
static void adc_init();
// Called by Temperature::init for each sensor at startup
static void adc_enable(const pin_t pin) {}
// Begin ADC sampling on the given pin. Called from Temperature::isr!
static void adc_start(const pin_t pin);
// Is the ADC ready for reading?
static bool adc_ready() { return true; }
// The current value of the ADC register
static uint16_t adc_value() { return adc_result; }
/**
* If not already allocated, allocate a hardware PWM channel
* to the pin and set the duty cycle..
* Optionally invert the duty cycle [default = false]
* Optionally change the scale of the provided value to enable finer PWM duty control [default = 255]
*/
static void set_pwm_duty(const pin_t pin, const uint16_t v, const uint16_t v_size=255, const bool invert=false);
/**
* Allocate and set the frequency of a hardware PWM pin
* Returns -1 if no pin available.
*/
static int8_t set_pwm_frequency(const pin_t pin, const uint32_t f_desired);
};

View File

@@ -53,11 +53,9 @@ static SPISettings spiConfig;
// ------------------------
void spiBegin() {
#if !PIN_EXISTS(SD_SS)
#error "SD_SS_PIN not defined!"
#if ENABLED(SDSUPPORT) && PIN_EXISTS(SD_SS)
OUT_WRITE(SD_SS_PIN, HIGH);
#endif
OUT_WRITE(SD_SS_PIN, HIGH);
}
void spiInit(uint8_t spiRate) {

View File

@@ -1,6 +1,6 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2021 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
@@ -21,8 +21,6 @@
*/
#pragma once
void watchdog_init();
void HAL_watchdog_refresh();
#include <SPI.h>
bool watchdog_timed_out();
void watchdog_clear_timeout_flag();
using MarlinSPI = SPIClass;

View File

@@ -31,20 +31,18 @@
// so we only allocate servo channels up high to avoid side effects with regards to analogWrite (fans, leds, laser pwm etc.)
int Servo::channel_next_free = 12;
Servo::Servo() {
channel = channel_next_free++;
}
Servo::Servo() {}
int8_t Servo::attach(const int inPin) {
if (channel >= CHANNEL_MAX_NUM) return -1;
if (inPin > 0) pin = inPin;
ledcSetup(channel, 50, 16); // channel X, 50 Hz, 16-bit depth
ledcAttachPin(pin, channel);
return true;
channel = get_pwm_channel(pin, 50u, 16u);
return channel; // -1 if no PWM avail.
}
void Servo::detach() { ledcDetachPin(pin); }
// leave channel connected to servo - set duty to zero
void Servo::detach() {
if (channel >= 0) ledcWrite(channel, 0);
}
int Servo::read() { return degrees; }
@@ -52,7 +50,7 @@ void Servo::write(int inDegrees) {
degrees = constrain(inDegrees, MIN_ANGLE, MAX_ANGLE);
int us = map(degrees, MIN_ANGLE, MAX_ANGLE, MIN_PULSE_WIDTH, MAX_PULSE_WIDTH);
int duty = map(us, 0, TAU_USEC, 0, MAX_COMPARE);
ledcWrite(channel, duty);
if (channel >= 0) ledcWrite(channel, duty); // don't save duty for servos!
}
void Servo::move(const int value) {

View File

@@ -30,8 +30,7 @@ class Servo {
MAX_PULSE_WIDTH = 2400, // Longest pulse sent to a servo
TAU_MSEC = 20,
TAU_USEC = (TAU_MSEC * 1000),
MAX_COMPARE = _BV(16) - 1, // 65535
CHANNEL_MAX_NUM = 16;
MAX_COMPARE = _BV(16) - 1; // 65535
public:
Servo();

View File

@@ -35,19 +35,19 @@
static pin_t tone_pin;
volatile static int32_t toggles;
void tone(const pin_t _pin, const unsigned int frequency, const unsigned long duration) {
void tone(const pin_t _pin, const unsigned int frequency, const unsigned long duration/*=0*/) {
tone_pin = _pin;
toggles = 2 * frequency * duration / 1000;
HAL_timer_start(TONE_TIMER_NUM, 2 * frequency);
HAL_timer_start(MF_TIMER_TONE, 2 * frequency);
}
void noTone(const pin_t _pin) {
HAL_timer_disable_interrupt(TONE_TIMER_NUM);
HAL_timer_disable_interrupt(MF_TIMER_TONE);
WRITE(_pin, LOW);
}
HAL_TONE_TIMER_ISR() {
HAL_timer_isr_prologue(TONE_TIMER_NUM);
HAL_timer_isr_prologue(MF_TIMER_TONE);
if (toggles) {
toggles--;

View File

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

View File

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

View File

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

View File

@@ -0,0 +1,6 @@
# Name, Type, SubType, Offset, Size, Flags
nvs, data, nvs, 0x9000, 0x5000,
otadata, data, ota, 0xe000, 0x2000,
app0, app, ota_0, 0x10000, 0x180000,
app1, app, ota_1, 0x190000, 0x180000,
spiffs, data, spiffs, 0x310000, 0xF0000,
1 # Name Type SubType Offset Size Flags
2 nvs data nvs 0x9000 0x5000
3 otadata data ota 0xe000 0x2000
4 app0 app ota_0 0x10000 0x180000
5 app1 app ota_1 0x190000 0x180000
6 spiffs data spiffs 0x310000 0xF0000

View File

@@ -40,13 +40,19 @@
// Set pin as input with pullup mode
#define _PULLUP(IO, v) pinMode(IO, v ? INPUT_PULLUP : INPUT)
// Read a pin wrapper
#define READ(IO) (IS_I2S_EXPANDER_PIN(IO) ? i2s_state(I2S_EXPANDER_PIN_INDEX(IO)) : digitalRead(IO))
#if ENABLED(USE_ESP32_EXIO)
// Read a pin wrapper
#define READ(IO) digitalRead(IO)
// Write to a pin wrapper
#define WRITE(IO, v) (IO >= 100 ? Write_EXIO(IO, v) : digitalWrite(IO, v))
#else
// Read a pin wrapper
#define READ(IO) (IS_I2S_EXPANDER_PIN(IO) ? i2s_state(I2S_EXPANDER_PIN_INDEX(IO)) : digitalRead(IO))
// Write to a pin wrapper
#define WRITE(IO, v) (IS_I2S_EXPANDER_PIN(IO) ? i2s_write(I2S_EXPANDER_PIN_INDEX(IO), v) : digitalWrite(IO, v))
#endif
// Write to a pin wrapper
#define WRITE(IO, v) (IS_I2S_EXPANDER_PIN(IO) ? i2s_write(I2S_EXPANDER_PIN_INDEX(IO), v) : digitalWrite(IO, v))
// Set pin as input wrapper
// Set pin as input wrapper (0x80 | (v << 5) | (IO - 100))
#define SET_INPUT(IO) _SET_INPUT(IO)
// Set pin as input with pullup wrapper

View File

@@ -23,6 +23,8 @@
#include "../../inc/MarlinConfigPre.h"
#if DISABLED(USE_ESP32_EXIO)
#include "i2s.h"
#include "../shared/Marduino.h"
@@ -62,12 +64,9 @@ uint32_t i2s_port_data = 0;
#define I2S_EXIT_CRITICAL() portEXIT_CRITICAL(&i2s_spinlock[i2s_num])
static inline void gpio_matrix_out_check(uint32_t gpio, uint32_t signal_idx, bool out_inv, bool oen_inv) {
//if pin = -1, do not need to configure
if (gpio != -1) {
PIN_FUNC_SELECT(GPIO_PIN_MUX_REG[gpio], PIN_FUNC_GPIO);
gpio_set_direction((gpio_num_t)gpio, (gpio_mode_t)GPIO_MODE_DEF_OUTPUT);
gpio_matrix_out(gpio, signal_idx, out_inv, oen_inv);
}
PIN_FUNC_SELECT(GPIO_PIN_MUX_REG[gpio], PIN_FUNC_GPIO);
gpio_set_direction((gpio_num_t)gpio, (gpio_mode_t)GPIO_MODE_DEF_OUTPUT);
gpio_matrix_out(gpio, signal_idx, out_inv, oen_inv);
}
static esp_err_t i2s_reset_fifo(i2s_port_t i2s_num) {
@@ -254,13 +253,7 @@ int i2s_init() {
I2S0.fifo_conf.dscr_en = 0;
I2S0.conf_chan.tx_chan_mod = (
#if ENABLED(I2S_STEPPER_SPLIT_STREAM)
4
#else
0
#endif
);
I2S0.conf_chan.tx_chan_mod = TERN(I2S_STEPPER_SPLIT_STREAM, 4, 0);
I2S0.fifo_conf.tx_fifo_mod = 0;
I2S0.conf.tx_mono = 0;
@@ -311,9 +304,16 @@ int i2s_init() {
xTaskCreatePinnedToCore(stepperTask, "StepperTask", 10000, nullptr, 1, nullptr, CONFIG_ARDUINO_RUNNING_CORE); // run I2S stepper task on same core as rest of Marlin
// Route the i2s pins to the appropriate GPIO
gpio_matrix_out_check(I2S_DATA, I2S0O_DATA_OUT23_IDX, 0, 0);
gpio_matrix_out_check(I2S_BCK, I2S0O_BCK_OUT_IDX, 0, 0);
gpio_matrix_out_check(I2S_WS, I2S0O_WS_OUT_IDX, 0, 0);
// If a pin is not defined, no need to configure
#if defined(I2S_DATA) && I2S_DATA >= 0
gpio_matrix_out_check(I2S_DATA, I2S0O_DATA_OUT23_IDX, 0, 0);
#endif
#if defined(I2S_BCK) && I2S_BCK >= 0
gpio_matrix_out_check(I2S_BCK, I2S0O_BCK_OUT_IDX, 0, 0);
#endif
#if defined(I2S_WS) && I2S_WS >= 0
gpio_matrix_out_check(I2S_WS, I2S0O_WS_OUT_IDX, 0, 0);
#endif
// Start the I2S peripheral
return i2s_start(I2S_NUM_0);
@@ -337,7 +337,28 @@ uint8_t i2s_state(uint8_t pin) {
}
void i2s_push_sample() {
// Every 4µs (when space in DMA buffer) toggle each expander PWM output using
// the current duty cycle/frequency so they sync with any steps (once
// through the DMA/FIFO buffers). PWM signal inversion handled by other functions
LOOP_L_N(p, MAX_EXPANDER_BITS) {
if (hal.pwm_pin_data[p].pwm_duty_ticks > 0) { // pin has active pwm?
if (hal.pwm_pin_data[p].pwm_tick_count == 0) {
if (TEST32(i2s_port_data, p)) { // hi->lo
CBI32(i2s_port_data, p);
hal.pwm_pin_data[p].pwm_tick_count = hal.pwm_pin_data[p].pwm_cycle_ticks - hal.pwm_pin_data[p].pwm_duty_ticks;
}
else { // lo->hi
SBI32(i2s_port_data, p);
hal.pwm_pin_data[p].pwm_tick_count = hal.pwm_pin_data[p].pwm_duty_ticks;
}
}
else
hal.pwm_pin_data[p].pwm_tick_count--;
}
}
dma.current[dma.rw_pos++] = i2s_port_data;
}
#endif // !USE_ESP32_EXIO
#endif // ARDUINO_ARCH_ESP32

View File

@@ -20,3 +20,10 @@
*
*/
#pragma once
//
// Board-specific options need to be defined before HAL.h
//
#if MB(MKS_TINYBEE)
#define MAX_EXPANDER_BITS 24 // TinyBee has 3 x HC595
#endif

View File

@@ -25,8 +25,8 @@
#error "EMERGENCY_PARSER is not yet implemented for ESP32. 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 ESP32."
#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."
#endif
#if HAS_TMC_SW_SERIAL
@@ -40,3 +40,15 @@
#if ENABLED(POSTMORTEM_DEBUGGING)
#error "POSTMORTEM_DEBUGGING is not yet supported on ESP32."
#endif
#if MB(MKS_TINYBEE) && ENABLED(FAST_PWM_FAN)
#error "FAST_PWM_FAN is not available on TinyBee."
#endif
#if USING_PULLDOWNS
#error "PULLDOWN pin mode is not available on ESP32 boards."
#endif
#if BOTH(I2S_STEPPER_STREAM, LIN_ADVANCE)
#error "I2S stream is currently incompatible with LIN_ADVANCE."
#endif

View File

@@ -2,6 +2,9 @@
* 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

View File

@@ -41,7 +41,7 @@
static timg_dev_t *TG[2] = {&TIMERG0, &TIMERG1};
const tTimerConfig TimerConfig [NUM_HARDWARE_TIMERS] = {
const tTimerConfig timer_config[NUM_HARDWARE_TIMERS] = {
{ TIMER_GROUP_0, TIMER_0, STEPPER_TIMER_PRESCALE, stepTC_Handler }, // 0 - Stepper
{ TIMER_GROUP_0, TIMER_1, TEMP_TIMER_PRESCALE, tempTC_Handler }, // 1 - Temperature
{ TIMER_GROUP_1, TIMER_0, PWM_TIMER_PRESCALE, pwmTC_Handler }, // 2 - PWM
@@ -53,7 +53,7 @@ const tTimerConfig TimerConfig [NUM_HARDWARE_TIMERS] = {
// ------------------------
void IRAM_ATTR timer_isr(void *para) {
const tTimerConfig& timer = TimerConfig[(int)para];
const tTimerConfig& timer = timer_config[(int)para];
// Retrieve the interrupt status and the counter value
// from the timer that reported the interrupt
@@ -81,8 +81,8 @@ void IRAM_ATTR timer_isr(void *para) {
* @param timer_num timer number to initialize
* @param frequency frequency of the timer
*/
void HAL_timer_start(const uint8_t timer_num, uint32_t frequency) {
const tTimerConfig timer = TimerConfig[timer_num];
void HAL_timer_start(const uint8_t timer_num, const uint32_t frequency) {
const tTimerConfig timer = timer_config[timer_num];
timer_config_t config;
config.divider = timer.divider;
@@ -115,7 +115,7 @@ void HAL_timer_start(const uint8_t timer_num, uint32_t frequency) {
* @param count threshold at which the interrupt is triggered
*/
void HAL_timer_set_compare(const uint8_t timer_num, hal_timer_t count) {
const tTimerConfig timer = TimerConfig[timer_num];
const tTimerConfig timer = timer_config[timer_num];
timer_set_alarm_value(timer.group, timer.idx, count);
}
@@ -125,7 +125,7 @@ void HAL_timer_set_compare(const uint8_t timer_num, hal_timer_t count) {
* @return the timer current threshold for the alarm to be triggered
*/
hal_timer_t HAL_timer_get_compare(const uint8_t timer_num) {
const tTimerConfig timer = TimerConfig[timer_num];
const tTimerConfig timer = timer_config[timer_num];
uint64_t alarm_value;
timer_get_alarm_value(timer.group, timer.idx, &alarm_value);
@@ -139,7 +139,7 @@ hal_timer_t HAL_timer_get_compare(const uint8_t timer_num) {
* @return the current counter of the alarm
*/
hal_timer_t HAL_timer_get_count(const uint8_t timer_num) {
const tTimerConfig timer = TimerConfig[timer_num];
const tTimerConfig timer = timer_config[timer_num];
uint64_t counter_value;
timer_get_counter_value(timer.group, timer.idx, &counter_value);
return counter_value;
@@ -150,7 +150,7 @@ hal_timer_t HAL_timer_get_count(const uint8_t timer_num) {
* @param timer_num timer number to enable interrupts on
*/
void HAL_timer_enable_interrupt(const uint8_t timer_num) {
//const tTimerConfig timer = TimerConfig[timer_num];
//const tTimerConfig timer = timer_config[timer_num];
//timer_enable_intr(timer.group, timer.idx);
}
@@ -159,12 +159,12 @@ void HAL_timer_enable_interrupt(const uint8_t timer_num) {
* @param timer_num timer number to disable interrupts on
*/
void HAL_timer_disable_interrupt(const uint8_t timer_num) {
//const tTimerConfig timer = TimerConfig[timer_num];
//const tTimerConfig timer = timer_config[timer_num];
//timer_disable_intr(timer.group, timer.idx);
}
bool HAL_timer_interrupt_enabled(const uint8_t timer_num) {
const tTimerConfig timer = TimerConfig[timer_num];
const tTimerConfig timer = timer_config[timer_num];
return TG[timer.group]->int_ena.val | BIT(timer_num);
}

View File

@@ -32,20 +32,20 @@
typedef uint64_t hal_timer_t;
#define HAL_TIMER_TYPE_MAX 0xFFFFFFFFFFFFFFFFULL
#ifndef STEP_TIMER_NUM
#define STEP_TIMER_NUM 0 // Timer Index for Stepper
#ifndef MF_TIMER_STEP
#define MF_TIMER_STEP 0 // Timer Index for Stepper
#endif
#ifndef PULSE_TIMER_NUM
#define PULSE_TIMER_NUM STEP_TIMER_NUM
#ifndef MF_TIMER_PULSE
#define MF_TIMER_PULSE MF_TIMER_STEP
#endif
#ifndef TEMP_TIMER_NUM
#define TEMP_TIMER_NUM 1 // Timer Index for Temperature
#ifndef MF_TIMER_TEMP
#define MF_TIMER_TEMP 1 // Timer Index for Temperature
#endif
#ifndef PWM_TIMER_NUM
#define PWM_TIMER_NUM 2 // index of timer to use for PWM outputs
#ifndef MF_TIMER_PWM
#define MF_TIMER_PWM 2 // index of timer to use for PWM outputs
#endif
#ifndef TONE_TIMER_NUM
#define TONE_TIMER_NUM 3 // index of timer for beeper tones
#ifndef MF_TIMER_TONE
#define MF_TIMER_TONE 3 // index of timer for beeper tones
#endif
#define HAL_TIMER_RATE APB_CLK_FREQ // frequency of timer peripherals
@@ -79,12 +79,12 @@ typedef uint64_t hal_timer_t;
#define PULSE_TIMER_PRESCALE STEPPER_TIMER_PRESCALE
#define PULSE_TIMER_TICKS_PER_US STEPPER_TIMER_TICKS_PER_US
#define ENABLE_STEPPER_DRIVER_INTERRUPT() HAL_timer_enable_interrupt(STEP_TIMER_NUM)
#define DISABLE_STEPPER_DRIVER_INTERRUPT() HAL_timer_disable_interrupt(STEP_TIMER_NUM)
#define STEPPER_ISR_ENABLED() HAL_timer_interrupt_enabled(STEP_TIMER_NUM)
#define ENABLE_STEPPER_DRIVER_INTERRUPT() HAL_timer_enable_interrupt(MF_TIMER_STEP)
#define DISABLE_STEPPER_DRIVER_INTERRUPT() HAL_timer_disable_interrupt(MF_TIMER_STEP)
#define STEPPER_ISR_ENABLED() HAL_timer_interrupt_enabled(MF_TIMER_STEP)
#define ENABLE_TEMPERATURE_INTERRUPT() HAL_timer_enable_interrupt(TEMP_TIMER_NUM)
#define DISABLE_TEMPERATURE_INTERRUPT() HAL_timer_disable_interrupt(TEMP_TIMER_NUM)
#define ENABLE_TEMPERATURE_INTERRUPT() HAL_timer_enable_interrupt(MF_TIMER_TEMP)
#define DISABLE_TEMPERATURE_INTERRUPT() HAL_timer_disable_interrupt(MF_TIMER_TEMP)
#ifndef HAL_TEMP_TIMER_ISR
#define HAL_TEMP_TIMER_ISR() extern "C" void tempTC_Handler()
@@ -121,13 +121,13 @@ typedef struct {
// Public Variables
// ------------------------
extern const tTimerConfig TimerConfig[];
extern const tTimerConfig timer_config[];
// ------------------------
// Public functions
// ------------------------
void HAL_timer_start (const uint8_t timer_num, uint32_t frequency);
void HAL_timer_start(const uint8_t timer_num, const uint32_t frequency);
void HAL_timer_set_compare(const uint8_t timer_num, const hal_timer_t count);
hal_timer_t HAL_timer_get_compare(const uint8_t timer_num);
hal_timer_t HAL_timer_get_count(const uint8_t timer_num);
@@ -136,5 +136,5 @@ void HAL_timer_enable_interrupt(const uint8_t timer_num);
void HAL_timer_disable_interrupt(const uint8_t timer_num);
bool HAL_timer_interrupt_enabled(const uint8_t timer_num);
#define HAL_timer_isr_prologue(TIMER_NUM)
#define HAL_timer_isr_epilogue(TIMER_NUM)
#define HAL_timer_isr_prologue(T) NOOP
#define HAL_timer_isr_epilogue(T) NOOP

View File

@@ -0,0 +1,94 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2022 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
*
* Copypaste of SAMD51 HAL developed by Giuliano Zaro (AKA GMagician)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
*/
#ifdef ARDUINO_ARCH_ESP32
#include "../../inc/MarlinConfig.h"
#if EITHER(MKS_MINI_12864, FYSETC_MINI_12864_2_1)
#include <U8glib-HAL.h>
#include "../shared/HAL_SPI.h"
#include "HAL.h"
#include "SPI.h"
static SPISettings spiConfig;
#ifndef LCD_SPI_SPEED
#ifdef SD_SPI_SPEED
#define LCD_SPI_SPEED SD_SPI_SPEED // Assume SPI speed shared with SD
#else
#define LCD_SPI_SPEED SPI_FULL_SPEED // Use full speed if SD speed is not supplied
#endif
#endif
uint8_t u8g_eps_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) {
static uint8_t msgInitCount = 2; // Ignore all messages until 2nd U8G_COM_MSG_INIT
if (msgInitCount) {
if (msg == U8G_COM_MSG_INIT) msgInitCount--;
if (msgInitCount) return -1;
}
switch (msg) {
case U8G_COM_MSG_STOP: break;
case U8G_COM_MSG_INIT:
OUT_WRITE(DOGLCD_CS, HIGH);
OUT_WRITE(DOGLCD_A0, HIGH);
OUT_WRITE(LCD_RESET_PIN, HIGH);
u8g_Delay(5);
spiBegin();
spiInit(LCD_SPI_SPEED);
break;
case U8G_COM_MSG_ADDRESS: /* define cmd (arg_val = 0) or data mode (arg_val = 1) */
WRITE(DOGLCD_A0, arg_val ? HIGH : LOW);
break;
case U8G_COM_MSG_CHIP_SELECT: /* arg_val == 0 means HIGH level of U8G_PI_CS */
WRITE(DOGLCD_CS, arg_val ? LOW : HIGH);
break;
case U8G_COM_MSG_RESET:
WRITE(LCD_RESET_PIN, arg_val);
break;
case U8G_COM_MSG_WRITE_BYTE:
spiSend((uint8_t)arg_val);
break;
case U8G_COM_MSG_WRITE_SEQ:
uint8_t *ptr = (uint8_t*) arg_ptr;
while (arg_val > 0) {
spiSend(*ptr++);
arg_val--;
}
break;
}
return 1;
}
#endif // EITHER(MKS_MINI_12864, FYSETC_MINI_12864_2_1)
#endif // ARDUINO_ARCH_ESP32

View File

@@ -59,7 +59,7 @@ void wifi_init() {
MDNS.addService("http", "tcp", 80);
SERIAL_ECHOLNPAIR("Successfully connected to WiFi with SSID '" WIFI_SSID "', hostname: '" WIFI_HOSTNAME "', IP address: ", WiFi.localIP().toString().c_str());
SERIAL_ECHOLNPGM("Successfully connected to WiFi with SSID '" WIFI_SSID "', hostname: '" WIFI_HOSTNAME "', IP address: ", WiFi.localIP().toString().c_str());
}
#endif // WIFISUPPORT

View File

@@ -28,6 +28,7 @@
#endif
#include HAL_PATH(.,HAL.h)
extern MarlinHAL hal;
#define HAL_ADC_RANGE _BV(HAL_ADC_RESOLUTION)
@@ -44,7 +45,3 @@
#ifndef PGMSTR
#define PGMSTR(NAM,STR) const char NAM[] = STR
#endif
inline void watchdog_refresh() {
TERN_(USE_WATCHDOG, HAL_watchdog_refresh());
}

View File

@@ -24,6 +24,10 @@
#include "../../inc/MarlinConfig.h"
#include "../shared/Delay.h"
// ------------------------
// Serial ports
// ------------------------
MSerialT usb_serial(TERN0(EMERGENCY_PARSER, true));
// U8glib required functions
@@ -37,42 +41,21 @@ extern "C" {
//************************//
// return free heap space
int freeMemory() {
return 0;
}
int freeMemory() { return 0; }
// ------------------------
// ADC
// ------------------------
void HAL_adc_init() {
uint8_t MarlinHAL::active_ch = 0;
}
void HAL_adc_enable_channel(const uint8_t ch) {
}
uint8_t active_ch = 0;
void HAL_adc_start_conversion(const uint8_t ch) {
active_ch = ch;
}
bool HAL_adc_finished() {
return true;
}
uint16_t HAL_adc_get_result() {
pin_t pin = analogInputToDigitalPin(active_ch);
uint16_t MarlinHAL::adc_value() {
const pin_t pin = analogInputToDigitalPin(active_ch);
if (!VALID_PIN(pin)) return 0;
uint16_t data = ((Gpio::get(pin) >> 2) & 0x3FF);
const uint16_t data = ((Gpio::get(pin) >> 2) & 0x3FF);
return data; // return 10bit value as Marlin expects
}
void HAL_pwm_init() {
}
void HAL_reboot() { /* Reset the application state and GPIO */ }
void MarlinHAL::reboot() { /* Reset the application state and GPIO */ }
#endif // __PLAT_LINUX__

View File

@@ -21,25 +21,42 @@
*/
#pragma once
#define CPU_32_BIT
#include "../../inc/MarlinConfigPre.h"
#define F_CPU 100000000UL
#define SystemCoreClock F_CPU
#include <iostream>
#include <stdint.h>
#include <stdarg.h>
#undef min
#undef max
#include <algorithm>
void _printf (const char *format, ...);
#include "hardware/Clock.h"
#include "../shared/Marduino.h"
#include "../shared/math_32bit.h"
#include "../shared/HAL_SPI.h"
#include "fastio.h"
#include "serial.h"
// ------------------------
// Defines
// ------------------------
#define CPU_32_BIT
#define SHARED_SERVOS HAS_SERVOS // Use shared/servos.cpp
#define F_CPU 100000000UL
#define SystemCoreClock F_CPU
#define DELAY_CYCLES(x) Clock::delayCycles(x)
#define CPU_ST7920_DELAY_1 600
#define CPU_ST7920_DELAY_2 750
#define CPU_ST7920_DELAY_3 750
void _printf(const char *format, ...);
void _putc(uint8_t c);
uint8_t _getc();
//extern "C" volatile uint32_t _millis;
//arduino: Print.h
#define DEC 10
#define HEX 16
@@ -49,67 +66,100 @@ uint8_t _getc();
#define B01 1
#define B10 2
#include "hardware/Clock.h"
#include "../shared/Marduino.h"
#include "../shared/math_32bit.h"
#include "../shared/HAL_SPI.h"
#include "fastio.h"
#include "watchdog.h"
#include "serial.h"
#define SHARED_SERVOS HAS_SERVOS
// ------------------------
// Serial ports
// ------------------------
extern MSerialT usb_serial;
#define MYSERIAL1 usb_serial
#define ST7920_DELAY_1 DELAY_NS(600)
#define ST7920_DELAY_2 DELAY_NS(750)
#define ST7920_DELAY_3 DELAY_NS(750)
//
// Interrupts
//
#define CRITICAL_SECTION_START()
#define CRITICAL_SECTION_END()
#define ISRS_ENABLED()
#define ENABLE_ISRS()
#define DISABLE_ISRS()
inline void HAL_init() {}
// ADC
#define HAL_ADC_VREF 5.0
#define HAL_ADC_RESOLUTION 10
// Utility functions
// ------------------------
// Class Utilities
// ------------------------
#pragma GCC diagnostic push
#if GCC_VERSION <= 50000
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wunused-function"
#endif
int freeMemory();
#if GCC_VERSION <= 50000
#pragma GCC diagnostic pop
#endif
#pragma GCC diagnostic pop
// ADC
#define HAL_ADC_VREF 5.0
#define HAL_ADC_RESOLUTION 10
#define HAL_ANALOG_SELECT(ch) HAL_adc_enable_channel(ch)
#define HAL_START_ADC(ch) HAL_adc_start_conversion(ch)
#define HAL_READ_ADC() HAL_adc_get_result()
#define HAL_ADC_READY() true
// ------------------------
// MarlinHAL Class
// ------------------------
void HAL_adc_init();
void HAL_adc_enable_channel(const uint8_t ch);
void HAL_adc_start_conversion(const uint8_t ch);
uint16_t HAL_adc_get_result();
class MarlinHAL {
public:
// Reset source
inline void HAL_clear_reset_source(void) {}
inline uint8_t HAL_get_reset_source(void) { return RST_POWER_ON; }
// Earliest possible init, before setup()
MarlinHAL() {}
void HAL_reboot(); // Reset the application state and GPIO
// Watchdog
static void watchdog_init() {}
static void watchdog_refresh() {}
/* ---------------- Delay in cycles */
FORCE_INLINE static void DELAY_CYCLES(uint64_t x) {
Clock::delayCycles(x);
}
static void init() {} // Called early in setup()
static void init_board() {} // Called less early in setup()
static void reboot(); // Reset the application state and GPIO
// Interrupts
static bool isr_state() { return true; }
static void isr_on() {}
static void isr_off() {}
static void delay_ms(const int ms) { _delay_ms(ms); }
// Tasks, called from idle()
static void idletask() {}
// Reset
static constexpr uint8_t reset_reason = RST_POWER_ON;
static uint8_t get_reset_source() { return reset_reason; }
static void clear_reset_source() {}
// Free SRAM
static int freeMemory() { return ::freeMemory(); }
//
// ADC Methods
//
static uint8_t active_ch;
// Called by Temperature::init once at startup
static void adc_init() {}
// Called by Temperature::init for each sensor at startup
static void adc_enable(const uint8_t) {}
// Begin ADC sampling on the given channel
static void adc_start(const uint8_t ch) { active_ch = ch; }
// Is the ADC ready for reading?
static bool adc_ready() { return true; }
// The current value of the ADC register
static uint16_t adc_value();
/**
* Set the PWM duty cycle for the pin to the given value.
* No option to change the resolution or invert the duty cycle.
*/
static void set_pwm_duty(const pin_t pin, const uint16_t v, const uint16_t=255, const bool=false) {
analogWrite(pin, v);
}
static void set_pwm_frequency(const pin_t, int) {}
};

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