Compare commits

...

1504 Commits

Author SHA1 Message Date
Scott Lahteine 8e027304c8 fix inits 2022-10-20 17:04:22 -05:00
InsanityAutomation 79dcfe5455 Init values to FAN_OFF_PWM, compare for greater than instead of not equal to in order to catch edge cases 2022-10-17 18:39:02 -04:00
Scott Lahteine 834025e486 part cooling too 2022-10-17 15:03:41 -05:00
Scott Lahteine 05d51f9c7f Fan kickstart power option 2022-10-17 14:58:45 -05:00
Scott Lahteine 44589a964d account for FAN_OFF_PWM 2022-10-17 14:43:39 -05:00
Scott Lahteine b3e3a58e8b millis_t is not an array 2022-10-17 14:38:15 -05:00
Scott Lahteine 16106e3961 remove unused wrapper (no 'break') 2022-10-17 14:38:15 -05:00
Scott Lahteine 6dad386de9 just because 2022-10-17 14:30:10 -05:00
InsanityAutomation 8df0cca036 Update controllerfan.cpp 2022-10-15 15:28:26 -04:00
InsanityAutomation 62c280a60f Update controllerfan.cpp
Update controllerfan.cpp
2022-10-15 10:15:06 -04:00
InsanityAutomation 2087a1330d Update controllerfan.cpp 2022-10-13 16:01:35 -04:00
thinkyhead cab94bb030 [cron] Bump distribution date (2022-10-12) 2022-10-12 00:37:55 +00:00
EvilGremlin 26d01c5f2c MKS SKIPR board (#24791) 2022-10-11 18:31:37 -05:00
thinkyhead 6b22f8152b [cron] Bump distribution date (2022-10-11) 2022-10-11 00:30:01 +00:00
Scott Lahteine e7cf3c7970 🔨 Update mfinfo for 2.1.x 2022-10-10 18:02:22 -04:00
Scott Lahteine 77227f66c2 🧑‍💻 Min and max for base types 2022-10-10 17:51:33 -04:00
Giuliano Zaro efde96131d ADVANCE_K per-extruder (#24821)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-10-10 14:55:04 -04:00
thinkyhead 051b95c845 [cron] Bump distribution date (2022-10-09) 2022-10-09 18:06:15 +00:00
EvilGremlin f595e40ceb ♻️ Set Progress without LCD (#24767)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-10-09 11:34:48 -04:00
thinkyhead 0d8a695ea9 [cron] Bump distribution date (2022-10-02) 2022-10-02 00:34:34 +00:00
EvilGremlin fcf9f22390 🩹 Fix Color UI touchscreen sleep (#24826) 2022-10-01 15:04:50 -05:00
thinkyhead 43fa749d27 [cron] Bump distribution date (2022-10-01) 2022-10-01 18:05:53 +00:00
Adam 6cc11b76fd 🩹 Fix Switching Toolhead compile (#24814) 2022-10-01 11:49:12 -05:00
ellensp c2f7a568f3 🧑‍💻 Einsy Rambo EXP headers (#24825) 2022-10-01 11:39:10 -05:00
ellensp a8f650079b 🔨 Detect feature parsing error (#24824) 2022-10-01 11:35:47 -05:00
ellensp 91fafec424 Creality v5.2.1 board (#24815)
Followup to #24760
2022-10-01 11:25:00 -05:00
Keith Bennett 11f8244573 🔧 Thermistor (66) sanity-check (#24803) 2022-10-01 11:19:51 -05:00
thinkyhead e1df912dc7 [cron] Bump distribution date (2022-09-30) 2022-09-30 00:41:18 +00:00
Eduardo José Tagle 35594a23de 🐛 Fix DUE compile and errors (#24809) 2022-09-29 17:54:59 -05:00
Scott Lahteine 83922dd4e6 🩹 Fix some vector_3 cast operators 2022-09-29 17:30:53 -05:00
thinkyhead a5c5bb9660 [cron] Bump distribution date (2022-09-28) 2022-09-28 18:10:34 +00:00
Keith Bennett 18b6d6c8ca 🔧 Update Creality 4.2.2 Driver Warning (#24806) 2022-09-28 10:05:06 -05:00
ellensp 2c6ed101c1 🩹 Disable DEBUG_DGUSLCD (#24798) 2022-09-28 10:03:40 -05:00
Yuri D'Elia 644c91ce8b 🎨 Remove non-const compare operators (#24810) 2022-09-28 09:49:30 -05:00
Plynix / Ben Hartiwch 1b3941c0d2 Creality v5.2.1 board (#24760) 2022-09-28 09:46:50 -05:00
thinkyhead e14faf0413 [cron] Bump distribution date (2022-09-27) 2022-09-27 00:30:06 +00:00
discip f84d51ec06 Pt1000 with 2k2 pullup (SKR 3 / EZ) (#24790) 2022-09-26 16:42:52 -05:00
ellensp 8aa3273242 ✏️ Followup for M524 (#24775)
Followup to #24761
2022-09-26 16:25:54 -05:00
Stuart Pittaway 6f68942e83 🚸 UUID fallback to STM32 device SN (#24759)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-09-26 16:18:15 -05:00
Keith Bennett 9881f758d7 📌 Specify MarlinFirmware/U8glib (#24792) 2022-09-26 16:15:14 -05:00
thinkyhead 945d5dbe13 [cron] Bump distribution date (2022-09-23) 2022-09-23 06:23:27 +00:00
Renaud11232 7d08ab4fb7 🔨 Fix LPC1768 autodetect path on Linux (#24773) 2022-09-23 00:20:44 -05:00
ellensp 4a2b08f883 🐛 Fix VW axis fields in types.h (#24780) 2022-09-23 00:16:01 -05:00
thinkyhead 1d2aecaca8 [cron] Bump distribution date (2022-09-22) 2022-09-22 18:13:30 +00:00
Bob Kuhn a4297ff492 Fix UBL regression (#24622)
Fix regression from #24188
2022-09-22 12:54:49 -05:00
ellensp 4f299bf867 📺 FYSETC Mini 12864 2.1 pins for Creality V4 (#24624) 2022-09-22 12:20:17 -05:00
Yuri D'Elia 038042b09e 👷 Array macros to …26 elements (#24789) 2022-09-22 11:54:26 -05:00
thinkyhead 8f4fb42bfb [cron] Bump distribution date (2022-09-18) 2022-09-18 06:07:46 +00:00
FBN 6fdf9bf2ea ✏️ MMU2 followup (#24770)
Followup to #24750
2022-09-17 20:53:07 -05:00
Arkadiusz Miśkiewicz 6c813fcd16 🚸 Emergency Parse M524 (#24761) 2022-09-17 20:51:37 -05:00
Scott Lahteine 1e525c5976 🩹 Fix inverse_accel redefine
Followup to #24737
2022-09-17 20:36:55 -05:00
thinkyhead b1239a42a8 [cron] Bump distribution date (2022-09-17) 2022-09-17 00:24:30 +00:00
Stefan Kalscheuer 06d7d2ada4 Anycubic i3 Mega LCD file menu fix (#24752) 2022-09-16 14:21:13 -05:00
Chris Bagwell 9467b68608 🧑‍💻 STM32G0B1RE Pins Debugging (#24748) 2022-09-16 13:30:04 -05:00
thinkyhead e338420df8 [cron] Bump distribution date (2022-09-16) 2022-09-16 00:27:49 +00:00
FBN d0e7c2c208 🚸 More automatic MMU2 load (#24750) 2022-09-15 18:02:08 -05:00
thinkyhead 1ab6e5cdc9 [cron] Bump distribution date (2022-09-15) 2022-09-15 18:06:16 +00:00
Scott Lahteine 551f5ada94 📌 Can use luc-github/ESP3DLib now
Followup to #24670
2022-09-15 10:28:49 -05:00
thinkyhead e927e58d32 [cron] Bump distribution date (2022-09-14) 2022-09-14 00:26:34 +00:00
Scott Lahteine 8a3ad7abcc 🔨 Fix config-labels.py 2022-09-13 13:29:50 -05:00
thinkyhead 5b0096c350 [cron] Bump distribution date (2022-09-13) 2022-09-13 18:28:57 +00:00
Eduard Sukharev c3b58f1938 🩹 Fix MKS TinyBee + MKS MINI 12864 SD blank on write (#24670) 2022-09-13 12:31:59 -05:00
Eduard Sukharev e003552804 🚸 Sanity check Integrated Babystepping + I2S stream + ESP32 (#24691) 2022-09-13 12:29:59 -05:00
George Fu 50f79823d2 FYSETC SPIDER KING407 (#24696) 2022-09-13 12:28:38 -05:00
ellensp 3c449b220f BTT SKR Mini E3 V3.0.1 (#24722) 2022-09-13 12:27:16 -05:00
thinkyhead c5af435449 [cron] Bump distribution date (2022-09-11) 2022-09-11 00:24:58 +00:00
Scott Lahteine 45cf997341 🌐 Some short menu strings 2022-09-09 19:31:47 -05:00
thinkyhead 0820f94a5a [cron] Bump distribution date (2022-09-10) 2022-09-10 00:27:05 +00:00
XDA-Bam d5cf0b3348 ️ Minor planner optimization (#24737) 2022-09-09 15:51:11 -05:00
kisslorand 0ae64f1140 ✏️ Fix M115 spindle/laser cap (#24747) 2022-09-09 15:36:39 -05:00
hartmannathan c80d1ea97d 📝 Fix example comment (#24744) 2022-09-09 15:35:16 -05:00
Keith Bennett 1013323f18 ️ Only Sync Emulated EEPROM Print Counter (#24731) 2022-09-09 14:22:52 -05:00
Gurmeet Athwal 25736abc0f 🚸 M115 spindle/laser (#24681) 2022-09-09 14:21:19 -05:00
Giuliano Zaro dc0b490bf0 🐛 Fix heater timeout PID output (#24682) 2022-09-09 13:54:29 -05:00
thinkyhead b95d073f02 [cron] Bump distribution date (2022-09-08) 2022-09-08 00:25:55 +00:00
studiodyne 9e5c143b87 M217 G wipe retract length 2022-09-07 17:46:28 -05:00
studiodyne 458e1aea41 XY_COUNTERPART_BACKOFF_MM 2022-09-07 15:41:17 -05:00
studiodyne 0765dfd43f RGB_STARTUP_TEST 2022-09-07 14:16:21 -05:00
Scott Lahteine 4f9ba7e991 🧑‍💻 Microsteps to stepper.cpp 2022-09-06 23:05:42 -05:00
Scott Lahteine 9ab0b18256 📝 Fix comment 2022-09-06 22:34:17 -05:00
thinkyhead 57ee26e909 [cron] Bump distribution date (2022-09-07) 2022-09-07 00:26:05 +00:00
Scott Lahteine d23ab529d8 🔨 Outdent py string 2022-09-06 17:53:36 -05:00
Arkadiusz Miśkiewicz c9ef1277f3 🚸 On pause report "SD printing byte X/Y" (#24709) 2022-09-06 01:48:42 -05:00
JoaquinBerrios 2b23bdce70 ️ BTT SKR V3.0 / EZ = 480MHz (#24721) 2022-09-06 01:39:02 -05:00
thinkyhead 61a543a471 [cron] Bump distribution date (2022-09-06) 2022-09-06 00:26:04 +00:00
dmitrygribenchuk 83aac65664 🔨 Clean up Python imports (#24736) 2022-09-05 13:19:19 -05:00
ButchMonkey c46ed8f57d 🔨 Fix config.ini custom items, and 'all' (#24720) 2022-09-04 23:48:58 -05:00
thinkyhead 9fc3642f2a [cron] Bump distribution date (2022-09-05) 2022-09-05 00:29:22 +00:00
ButchMonkey 328f6d9aff 🔨 Fix configuration.py with encoding UTF-8 (#24719)
- Opening files with Windows-1252 encoding.
2022-09-04 15:10:22 -05:00
Stephen Hawes 35d4791518 Opulo LumenPnP REV04 (#24718) 2022-09-03 20:55:37 -05:00
Giuliano Zaro 094701cc71 🐛 Fix / refactor shared PID (#24673)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-09-03 19:51:53 -05:00
thinkyhead f6d109287f [cron] Bump distribution date (2022-09-04) 2022-09-04 00:26:23 +00:00
Keith Bennett fdf6445a51 🔨 Update SKR 3 env (#24711) 2022-09-03 18:48:21 -05:00
Scott Lahteine 68d4869616 Format some comments 2022-09-03 18:21:23 -05:00
thinkyhead 5f61a896d9 [cron] Bump distribution date (2022-09-03) 2022-09-03 00:22:59 +00:00
EvilGremlin bcb6f6e85e 🔨 Native USB modified env followup (#24669)
Followup to #24619
2022-09-01 21:47:37 -05:00
tombrazier 8e71f7add4 Permit Linear Advance with I2S Streaming (#24684) 2022-09-01 21:04:46 -05:00
thinkyhead 243f7f2834 [cron] Bump distribution date (2022-09-02) 2022-09-02 00:24:02 +00:00
Giuliano Zaro 89f86bc550 🚸 Strict index 2 for M913 / M914 XY (#24680) 2022-09-01 14:16:52 -05:00
Arkadiusz Miśkiewicz 1b03fc3f63 🩹 Report M22 / M23 success / fail (#24706) 2022-09-01 13:48:24 -05:00
thinkyhead aa0904600b [cron] Bump distribution date (2022-08-30) 2022-08-30 00:41:13 +00:00
Scott Lahteine 6542f61aaf 🔖 Config version 02010200 2022-08-29 19:23:53 -05:00
EvilGremlin b229fba98b 🐛 Fix back button (#24694) 2022-08-29 18:52:02 -05:00
thinkyhead 8a3cd2f47b [cron] Bump distribution date (2022-08-27) 2022-08-27 00:22:42 +00:00
Scott Lahteine 9b7b1a3635 ✏️ Fix http:// links 2022-08-25 23:45:07 -05:00
Lefteris Garyfalakis 15a100dafa ✏️ Fix LCD sleep conditional (#24685) 2022-08-25 23:40:31 -05:00
Miguel Risco-Castillo c918e90b8d 🩹 Constrain UBL within mesh bounds (#24631)
Fixes #24630
2022-08-25 23:23:54 -05:00
thinkyhead 2635182dcb [cron] Bump distribution date (2022-08-26) 2022-08-26 00:25:25 +00:00
Keith Bennett ace358327d 🚸 Up to 10 Preheat Constants (#24636) 2022-08-25 18:14:50 -05:00
ellensp eabab4322d 🔧 Fix Auto-Fan / Controller-Fan pin conflict check (#24648) 2022-08-25 18:07:41 -05:00
ellensp 66e61f4de3 🩹 Fix PID debug output (#24647) 2022-08-25 17:51:11 -05:00
Mark 42f8cc4606 🐛 Fix Bed Distance Sensor reading (#24649) 2022-08-25 17:50:03 -05:00
Arkadiusz Miśkiewicz 82d1851743 M20_TIMESTAMP_SUPPORT (#24679)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-08-25 17:14:54 -05:00
thinkyhead 6053fae1ac [cron] Bump distribution date (2022-08-25) 2022-08-25 18:16:46 +00:00
EvilGremlin 2f91154cbd ♻️ Display sleep minutes, encoder disable option (#24618)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-08-25 12:16:55 -05:00
DejitaruJin 6704c0bc4c 🩹 Fix SainSmart LCD (#24672) 2022-08-25 12:12:13 -05:00
Keith Bennett b19d44ba0b 🩹 Fix Freeze Feature (#24664) 2022-08-25 12:08:03 -05:00
Lefteris Garyfalakis 2a2c161d87 🔨 Suppressible Creality 4.2.2 warning (#24683) 2022-08-25 11:48:35 -05:00
thinkyhead f4a5db52e8 [cron] Bump distribution date (2022-08-24) 2022-08-24 18:11:29 +00:00
Scott Lahteine a76b92bce0 Robin Nano v1 CDC (USB mod)
Followup to #24619
2022-08-24 10:15:57 -05:00
thinkyhead e201f4e656 [cron] Bump distribution date (2022-08-22) 2022-08-22 18:06:10 +00:00
EvilGremlin 2a1c2e26ed Robin Nano v1 CDC (USB mod) (#24619) 2022-08-22 10:31:02 -05:00
Alexey Galakhov 20c72845a0 🐛 Fix JyersUI (#24652) 2022-08-22 10:11:53 -05:00
Keith Bennett d77027276c 🔧 Fix Skew Correction defaults (#24601) 2022-08-22 09:53:51 -05:00
thinkyhead 6e39bd6c85 [cron] Bump distribution date (2022-08-21) 2022-08-21 00:22:59 +00:00
Scott Lahteine 34f3e5bd88 🎨 Some automated cleanup 2022-08-20 06:41:31 -05:00
thinkyhead da3b7ab259 [cron] Bump distribution date (2022-08-20) 2022-08-20 00:22:12 +00:00
Keith Bennett 6909f5fa4f 📺 Add to MKS UI About Screen (#24610) 2022-08-19 13:37:43 -05:00
Keith Bennett 03d9254079 🔧 Remove STM32F4 Print Counter Sanity Check (#24605) 2022-08-19 13:11:15 -05:00
Protomosh 4ae9bf3b9d 🐛 Fix DGUS Reloaded + STM32 (#24600) 2022-08-19 12:57:27 -05:00
Scott Lahteine 306e03b03b 🧑‍💻 Use spaces indent for Python 2022-08-19 11:10:42 -05:00
Scott Lahteine e701e0bb25 🔨 Misc. schema updates 2022-08-19 11:09:07 -05:00
Graham Reed dab60a1cb7 🔨 Fix LPC1768 automatic upload port (#24599) 2022-08-19 10:48:27 -05:00
thinkyhead 1be5a7b5d7 [cron] Bump distribution date (2022-08-19) 2022-08-19 00:25:32 +00:00
Scott Lahteine af1c7e1a81 🩹 Fix strtof interpreting a hex value
Bug introduced in #21532
2022-08-18 13:10:27 -05:00
thinkyhead 1766ee15a3 [cron] Bump distribution date (2022-08-17) 2022-08-17 18:05:53 +00:00
Scott Lahteine ce26fccc3e 🔨 Add args to schema.py 2022-08-17 07:32:43 -05:00
thinkyhead 0100b7be4d [cron] Bump distribution date (2022-08-16) 2022-08-16 18:07:16 +00:00
Scott Lahteine fab4fb7fbb 🎨 Fix '…if_chain' Uncrustify option 2022-08-16 09:47:51 -05:00
Scott Lahteine b8bd331efd 🔨 Misc. config py updates 2022-08-16 09:42:38 -05:00
Scott Lahteine e42cbe7500 🧑‍💻 Add operator== for C++20 2022-08-16 09:42:38 -05:00
thinkyhead c84f839fc7 [cron] Bump distribution date (2022-08-14) 2022-08-14 12:07:06 +00:00
Scott Lahteine c2874ca809 🔨 Update schema ignores, export value 2022-08-14 03:58:03 -05:00
thinkyhead 4bd4c1f3bc [cron] Bump distribution date (2022-08-12) 2022-08-12 00:22:10 +00:00
Keith Bennett 637bff9982 🧑‍💻 Fix UBL Build Mesh preheat items (#24598)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-08-11 13:35:36 -05:00
thinkyhead 8025117ac0 [cron] Bump distribution date (2022-08-08) 2022-08-08 06:06:06 +00:00
Scott Lahteine 1a1db10634 🔨 Fix 'val' value in schema.py 2022-08-07 20:42:33 -05:00
thinkyhead 5b68a3f79b [cron] Bump distribution date (2022-08-07) 2022-08-07 00:27:50 +00:00
Scott Lahteine d33111b215 🎨 Misc. config cleanup 2022-08-06 18:40:25 -05:00
ExtNeon 53b202cf9d SD Endstop Abort G-Code (#24461) 2022-08-06 18:37:03 -05:00
Scott Lahteine 9c86ca3a19 🔧 Schema catch missing pip 2022-08-06 03:53:21 -05:00
thinkyhead e33dafeb80 [cron] Bump distribution date (2022-08-06) 2022-08-06 06:21:59 +00:00
Ivan Kravets 5b4af52d04 🔨 Fix a PlatformIO debug issue (#24569) 2022-08-06 01:17:46 -05:00
Mark 83320f1052 Bed Distance Sensor (#24554) 2022-08-06 01:14:58 -05:00
Keith Bennett 1dc17aa64c 🩹 Fix AUTO_FAN_PIN sanity check (#24593) 2022-08-06 00:59:56 -05:00
Scott Lahteine 68f13ca9cf 🩹 G0/G1 S seen => seenval 2022-08-06 00:57:37 -05:00
qwertymodo 5a2cc41f9c M150 K – Keep unspecified components (#24315) 2022-08-06 00:18:50 -05:00
J.C. Nelson 7f10f8932e 🔨 Trigorilla Pro disk based update (#24591) 2022-08-06 00:17:27 -05:00
Travis Ziegler 1866e25eef 🩹 Fix LPC176x USB Host Shield (#24588) 2022-08-05 21:37:24 -05:00
Scott Lahteine ec4db07a51 👔 Keep "Needs: More Data" open 2022-08-05 19:40:31 -05:00
Scott Lahteine becef39c19 🩹 Fix CONFIGURATION_EMBEDDING
Followup to b7fd046d59
2022-08-05 19:23:49 -05:00
thinkyhead 24a7ed44b3 [cron] Bump distribution date (2022-08-05) 2022-08-05 00:28:07 +00:00
Ruedi Steinmann a167e2e948 🚸 Laser with only PWM pin (#24345) 2022-08-04 18:00:19 -05:00
Scott Lahteine 59c2fe4561 🧑‍💻 MARLIN_TEST_BUILD – for future use (#24077) 2022-08-04 17:56:09 -05:00
Scott Lahteine b7fd046d59 🔧 Add date, version to Config Export 2022-08-04 17:50:41 -05:00
thinkyhead 4c9146cffd [cron] Bump distribution date (2022-08-04) 2022-08-04 12:08:11 +00:00
Scott Lahteine 1bed10c380 🔧 Config INI, dump options (#24528) 2022-08-04 02:38:15 -05:00
Scott Lahteine 1c4fc4603a 🩹 Fix Malyan M300 with S-Curve compile
Fixes #24548
2022-08-04 01:17:56 -05:00
thinkyhead 35d9920ef8 [cron] Bump distribution date (2022-08-02) 2022-08-02 00:25:38 +00:00
ellensp 1ad036c52f 🔧 Update 644p/1284p Serial 1 sanity check (#24575) 2022-08-01 01:17:57 -05:00
Scott Lahteine 7f72e78520 🔨 Simplify scripts with pathlib (#24574) 2022-08-01 01:14:58 -05:00
thinkyhead 6fe317e385 [cron] Bump distribution date (2022-08-01) 2022-08-01 06:14:22 +00:00
Mike La Spina e5f2daa001 🐛 Fix laser menu enable_state (#24557) 2022-08-01 01:03:45 -05:00
thinkyhead 4ba35d3284 [cron] Bump distribution date (2022-07-31) 2022-07-31 06:05:45 +00:00
InsanityAutomation 91f9e1671f Configurable Switching Nozzle dwell (#24304) 2022-07-30 21:55:32 -05:00
tombrazier 232a104a92 Fix, improve Linear Advance (#24533) 2022-07-30 21:39:48 -05:00
tombrazier aba35ec1af 🩹 Use _MIN/_MAX macros for native compatibility (#24570) 2022-07-30 21:05:16 -05:00
DerAndere d8df9ffd61 🐛 Fix kinematic feedrate (#24568) 2022-07-30 20:49:15 -05:00
Keith Bennett f4b6870ad1 Encoder Noise Filter (#24538) 2022-07-30 19:51:25 -05:00
thinkyhead 8938e4d23c [cron] Bump distribution date (2022-07-30) 2022-07-30 00:29:03 +00:00
lukasradek 0f0edd2e37 📝 README Updates (#24564) 2022-07-29 18:56:59 -05:00
Scott Lahteine 7b0eb2d9f8 🚑️ Fix XYZEval = N not setting E 2022-07-29 18:41:03 -05:00
Scott Lahteine 44c1f2ef6b 🎨 Renum boards.h 2022-07-29 08:01:39 -05:00
Scott Lahteine 9cdfaf693c 🐛 Fix M125 for 9 Axis 2022-07-29 02:14:14 -05:00
thinkyhead 6f7d14def3 [cron] Bump distribution date (2022-07-29) 2022-07-29 06:08:47 +00:00
Scott Lahteine a25f321abb 🔨 Separate bugfix-2.1.x CI Tests 2022-07-29 01:01:34 -05:00
Scott Lahteine 7e5d5330d6 🎨 Misc. 'else' cleanup 2022-07-28 20:53:11 -05:00
thinkyhead b4dcdcc885 [cron] Bump distribution date (2022-07-28) 2022-07-28 06:06:27 +00:00
Ludy 2dff08c86b 🌐 Update German language (#24555) 2022-07-27 21:44:21 -05:00
thinkyhead ca8182344f [cron] Bump distribution date (2022-07-27) 2022-07-27 12:08:06 +00:00
Scott Lahteine 21c48d9f92 🧑‍💻 Update planner/stepper includes 2022-07-27 04:25:37 -05:00
Scott Lahteine 90b5645223 🩹 Fix lcd_preheat compile 2022-07-27 03:52:03 -05:00
Scott Lahteine d816c1b38d 🔨 Update build/CI scripts 2022-07-27 03:52:03 -05:00
Scott Lahteine 8ccbac5317 🎨 PIO scripts cleanup 2022-07-27 03:52:03 -05:00
thinkyhead 223bbc9bca [cron] Bump distribution date (2022-07-26) 2022-07-26 00:25:10 +00:00
Keith Bennett 4ffa2e80e4 📺 Fix TFT Classic UI non-Touchscreen 1024x600 (#24541) 2022-07-25 14:02:37 -05:00
Keith Bennett bc0e4c6d50 🩹 Fix JyersUI include (#24540) 2022-07-25 13:48:59 -05:00
Keith Bennett a29fb8088f 📝 Update MPCTEMP G-Code M306 T (#24535)
M306 simply reports current values. M306 T starts autotune process.
2022-07-25 13:47:07 -05:00
thinkyhead 57ca996c31 [cron] Bump distribution date (2022-07-24) 2022-07-24 00:26:50 +00:00
Scott Lahteine 8cf4c0515d 🧑‍💻 Keep state for build_all_examples --limit 2022-07-23 01:30:43 -05:00
thinkyhead 2634d0cc52 [cron] Bump distribution date (2022-07-23) 2022-07-23 06:05:41 +00:00
tombrazier deca553e18 🐛 Fix 2d mesh print (#24536) 2022-07-22 23:32:28 -05:00
Scott Lahteine 007af47768 Reinstate JyersUI 2022-07-22 22:09:08 -05:00
Scott Lahteine 8455408382 🧑‍💻 Give the simulator Stepper access 2022-07-22 21:52:14 -05:00
Scott Lahteine 3b4c759872 🧑‍💻 Fix and improve build_all_examples 2022-07-22 21:51:40 -05:00
Scott Lahteine edeea5a6fb 🔨 Minor build script changes 2022-07-22 21:49:29 -05:00
Scott Lahteine 6577fba768 🩹 Fix TFT image PACKED conflict 2022-07-22 21:46:43 -05:00
thinkyhead 7726e26ac0 [cron] Bump distribution date (2022-07-22) 2022-07-22 18:05:45 +00:00
Scott Lahteine c2972899ca 🩹 Fix MAX31865 approximations
Followup to #24407
2022-07-22 12:38:00 -05:00
thinkyhead 58329b066d [cron] Bump distribution date (2022-07-21) 2022-07-21 00:24:51 +00:00
Scott Lahteine 2419a167ee EXP header pin numbers redux (#24525)
Followup to 504fec98
2022-07-20 16:26:33 -05:00
Frederik Kemner 0138cb0552 🩹 Fix gcode.h include (#24527) 2022-07-20 16:25:15 -05:00
InsanityAutomation aacc2d3dc5 🐛 Fix Archim2 USB Hang (#24314) 2022-07-20 03:08:19 -05:00
thinkyhead 39c5793575 [cron] Bump distribution date (2022-07-20) 2022-07-20 00:21:00 +00:00
InsanityAutomation 258904e86c 🚸 Use Tool 0 for G30 (#24511) 2022-07-19 17:33:49 -05:00
ellensp 57700b4edd 📺 SKR_MINI_SCREEN_ADAPTER for BTT SKR Mini E3 V3 (#24521) 2022-07-19 17:32:08 -05:00
Eduard Sukharev c5b3bacfc9 More ESP32 (MKS TinyBee) tests (#24493) 2022-07-19 17:30:19 -05:00
thinkyhead 999f33b1e7 [cron] Bump distribution date (2022-07-19) 2022-07-19 06:07:36 +00:00
Keith Bennett 4b8a1ec86f 📝 Update Contributing Guide (#24320) 2022-07-18 20:14:58 -05:00
InsanityAutomation bb3c5aa186 🚸 Machine-relative Z_STEPPER_ALIGN_XY (#24261)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-07-18 20:12:27 -05:00
Scott Lahteine 5f2908a117 ♻️ Small sound / buzz refactor (#24520) 2022-07-18 19:53:36 -05:00
Scott Lahteine ed2071aabd 🩹 Fix manual move titles (#24518) 2022-07-18 19:52:47 -05:00
thinkyhead 48e4863cb6 [cron] Bump distribution date (2022-07-18) 2022-07-18 06:06:15 +00:00
tombrazier 3b4a5a1ae8 🩹 Arc/Planner optimization followup (#24509) 2022-07-18 00:51:44 -05:00
Keith Bennett 6d83f7a579 🩹 Fix ProUI + Leveling compile (#24508) 2022-07-17 23:33:23 -05:00
thinkyhead 23926bb4c2 [cron] Bump distribution date (2022-07-17) 2022-07-17 00:24:12 +00:00
Scott Lahteine 8fd6693d53 🔨 Update mfprep comment 2022-07-16 17:16:37 -05:00
Arthur Masson 9706cd0d7d Polargraph M665 settings (#24401) 2022-07-16 16:58:18 -05:00
Scott Lahteine 504fec9823 🚸 Renumber EXP pins to match schematics/RRF/Klipper 2022-07-16 16:40:32 -05:00
Christophe Huriaux 05a7be7b25 eMotion-Tech eMotronic (Micro-Delta rework) (#24488) 2022-07-16 16:35:40 -05:00
Scott Lahteine fa0ad4b594 🔨 Add mftest --default flag 2022-07-16 16:11:33 -05:00
Scott Lahteine e84de791ab 🩹 Fix TFT tImage struct packing 2022-07-16 16:01:28 -05:00
GHGiampy 9be1de54ae 🩹 Add'l ProUI fixes (#24500) 2022-07-15 20:14:15 -05:00
GHGiampy 147fbd9d39 🔨 Remove log2file monitor filter (#24502) 2022-07-15 20:11:47 -05:00
Nikolay-Po 8a1643587b Steinhart-Hart C Coeff for Custom Thermistor (#24428) 2022-07-15 19:56:15 -05:00
thinkyhead 2f219d6824 [cron] Bump distribution date (2022-07-16) 2022-07-16 00:24:41 +00:00
Scott Lahteine 33d261141a 🔨 Also update rm for settings.o 2022-07-15 18:47:25 -05:00
tombrazier fc0615fbd1 ️ Optimize Planner calculations (#24484) 2022-07-15 18:47:20 -05:00
Keith Bennett 48f0d55097 📝 Update board MCU comments (#24486) 2022-07-15 18:47:20 -05:00
GHGiampy 6eef807520 🔨 Fix firmware upload (#24499) 2022-07-15 03:18:57 -05:00
Scott Lahteine 0f5703a837 🔨 PlatformIO "--target upload" == "--target exec" 2022-07-14 21:56:13 -05:00
Scott Lahteine de0706e52c 🔨 Fix Warnings.cpp force-recompile 2022-07-14 21:08:07 -05:00
thinkyhead 7361c03aa4 [cron] Bump distribution date (2022-07-15) 2022-07-15 00:26:29 +00:00
Scott Lahteine e92854b0ed 🔨 Fix and update Makefile
Followup to 89fe5f6d
2022-07-14 02:56:55 -05:00
Keith Bennett 0941e8e869 📌 Pin ESP32SSDP to 1.1.1 (#24489) 2022-07-14 01:31:47 -05:00
Victor Oliveira a61fab7302 Creality3D v4.2.5 / CR200B (#24491) 2022-07-14 01:30:00 -05:00
thinkyhead 0dc46a8d27 [cron] Bump distribution date (2022-07-14) 2022-07-14 06:22:49 +00:00
GHGiampy 30ec700a1d 🩹 Fix ProUI LED compile (#24473) 2022-07-14 00:03:27 -05:00
Miguel Risco-Castillo 8fb54d4621 🚸 Fix and update ProUI (#24477) 2022-07-14 00:00:33 -05:00
toomuchwonder c47575f244 🩹 Fix MKS UI extruder speed (#24476) 2022-07-13 22:17:53 -05:00
Bob Kuhn 3f4e4a4d89 🔥 Drop STM L64** drivers, STEVAL_3DP001V1 (#24427) 2022-07-13 22:16:22 -05:00
Scott Lahteine 2dc543c4f5 🎨 ANY => EITHER 2022-07-13 21:22:53 -05:00
GHGiampy 1d31b6215a 🔨 Abort firmware update on transfer error (#24472) 2022-07-13 20:25:35 -05:00
thinkyhead cee517bc24 [cron] Bump distribution date (2022-07-13) 2022-07-13 00:25:33 +00:00
Scott Lahteine 3c3c9f1a8e 🧑‍💻 Update Mac Sim directions 2022-07-12 13:25:41 -05:00
Scott Lahteine 068624a726 📌 Ask for PlatformIO 6.1.1 or newer (#24435) 2022-07-12 13:02:54 -05:00
thinkyhead ec2864be74 [cron] Bump distribution date (2022-07-12) 2022-07-12 00:22:44 +00:00
Keith Bennett 1bab0243fd MKS Monster8 V2 (#24483) 2022-07-11 13:33:42 -05:00
thinkyhead 57e27339b6 [cron] Bump distribution date (2022-07-11) 2022-07-11 06:06:57 +00:00
Scott Lahteine d60a280bc5 🧑‍💻 Add Sim debug with lldb 2022-07-10 22:00:10 -05:00
thinkyhead 0a7be1ac58 [cron] Bump distribution date (2022-07-10) 2022-07-10 00:26:20 +00:00
Scott Lahteine f101aeb3ec 🐛 Fix SDIO for STM32 (#24470)
Followup to #24271
2022-07-09 11:13:20 -05:00
thinkyhead 62c0ab072c [cron] Bump distribution date (2022-07-09) 2022-07-09 00:18:55 +00:00
Keith Bennett 55b8d1b9d3 🔧 Assert Probe Temp Comp requirements (#24468) 2022-07-08 15:30:03 -05:00
Mike La Spina d924d17209 🐛 Fix laser/fan sync (#24460)
Followup to #22690, 307dfb15
2022-07-08 15:04:14 -05:00
tombrazier 920799e38d ️ Optimize G2-G3 Arcs (#24366) 2022-07-08 14:41:39 -05:00
Jason Smith f65f7a685b 🩹 Fix LCD_BACKLIGHT_TIMEOUT compile (#24463) 2022-07-07 23:43:56 -05:00
thinkyhead 623631286f [cron] Bump distribution date (2022-07-08) 2022-07-08 00:26:22 +00:00
Pauli Jokela abe139192f 🩹 Fix safe homing sanity-check (#24462) 2022-07-07 10:59:23 -05:00
Farva42 5979aab1c7 MAG_MOUNTED_PROBE (#24420)
Co-Authored-By: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-07-06 21:15:18 -05:00
Scott Lahteine f73fad1b2f 🔥 Remove JyersUI (#24459) 2022-07-06 21:15:18 -05:00
Scott Lahteine 1497c40379 📝 Configurations 02010100 (#24458) 2022-07-06 21:15:18 -05:00
thinkyhead 64aff274b4 [cron] Bump distribution date (2022-07-07) 2022-07-06 21:15:18 -05:00
Meilleur Gars 509dfe92d0 🚸 JyersUI updates (#24451) 2022-07-06 21:15:18 -05:00
Christophe Huriaux 58048e7748 🩹 Fix ST7565 LCD contrast init (#24457) 2022-07-06 21:15:18 -05:00
thinkyhead 9805d2bc38 [cron] Bump distribution date (2022-07-06) 2022-07-06 21:15:18 -05:00
Bob Kuhn a88e847295 🐛 Fix Sensorless Probing compile (#24455) 2022-07-06 21:15:18 -05:00
Eduard Sukharev 55417b28fe 🐛 Fix MKS TinyBee compile (#24454) 2022-07-06 21:15:18 -05:00
Mike La Spina 6a67ad4e4a ️ Fix and improve Inline Laser Power (#22690) 2022-07-06 21:15:18 -05:00
thinkyhead 132c37a651 [cron] Bump distribution date (2022-07-05) 2022-07-05 00:21:32 +00:00
Keith Bennett e08b293b54 BigTreeTech SKR SE BX V3.0 (#24449)
SKR SE BX V3.0 removes the Reverse Driver Protection feature.
2022-07-04 00:31:06 -05:00
Scott Lahteine f39e2bc1e4 🩹 Followup for lchar_t 2022-07-04 00:30:17 -05:00
EvilGremlin e94fa7d5dc 🔨 Fix OpenBLT encode; no-bootloader envs (#24446) 2022-07-03 20:49:23 -05:00
thinkyhead 954b4493d2 [cron] Bump distribution date (2022-07-04) 2022-07-04 00:26:42 +00:00
Keith Bennett fc287b44da 🚸 MPCTEMP: Home before cooling (#24434) 2022-07-03 11:08:43 -05:00
Scott Lahteine 54e7b933cd ♻️ Encapsulate PID in class (#24389) 2022-07-03 10:32:47 -05:00
Keith Bennett 9baeeedd69 🩹 Fix MKS TinyBee ADC Vref (#24432) 2022-07-03 10:08:40 -05:00
Victor Oliveira 3826b13ab1 🔨 Disable stack protector on macOS simulator (#24443) 2022-07-02 19:31:27 -05:00
thinkyhead b8741a59df [cron] Bump distribution date (2022-07-03) 2022-07-03 00:24:56 +00:00
Scott Lahteine 2b6ce3006e 🩹 Followup for lchar_t 2022-07-02 18:33:06 -05:00
Scott Lahteine d956a6ba00 🩹 Followup for lchar_t 2022-07-01 21:14:56 -05:00
Scott Lahteine 9c376f120c 🩹 Remove obsolete split_move 2022-07-01 20:23:01 -05:00
thinkyhead b1bb307dab [cron] Bump distribution date (2022-07-02) 2022-07-02 00:24:49 +00:00
Scott Lahteine cb4a79173b 🩹 Remove poison wchar_t macro 2022-07-01 18:13:38 -05:00
Scott Lahteine 35dbc286bd ✏️ Creality test followup 2022-07-01 07:53:58 -05:00
Moonglow c7923c0397 🐛 Fix M149 (#24430) 2022-06-30 21:51:55 -05:00
tombrazier a811005ab2 🚸 Vertical Max7219::quantity in portrait orientation (#24415) 2022-06-30 21:07:36 -05:00
Scott Lahteine 71368b5fa5 Update path to Ender-3 S1 configs 2022-06-30 20:57:37 -05:00
thinkyhead f76025b79c [cron] Bump distribution date (2022-07-01) 2022-07-01 00:25:21 +00:00
Scott Lahteine f5488f96cc 📝 Index Mobo Rev03 => Opulo Lumen Rev3 2022-06-30 17:31:45 -05:00
thinkyhead 4fb1c42500 [cron] Bump distribution date (2022-06-30) 2022-06-30 00:21:32 +00:00
Scott Lahteine d9ec3795fb 🩹 Fix memset block warning 2022-06-29 17:14:23 -05:00
Keith Bennett cc51bc29e1 🐛 Fix Axis Homing (#24425)
Followup to 4520a51
2022-06-29 08:24:22 -05:00
thinkyhead 914501f67e [cron] Bump distribution date (2022-06-29) 2022-06-29 00:21:53 +00:00
John Lagonikas 31d286750c 🐛 Fix MAX31865 PT1000 normalization (#24407)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-06-28 17:53:05 -05:00
thinkyhead d6fc3d2b69 [cron] Bump distribution date (2022-06-28) 2022-06-28 06:05:50 +00:00
Scott Lahteine 93ffd57383 ♻️ reset_acceleration_rates => refresh_… 2022-06-27 21:28:04 -05:00
Scott Lahteine 307dfb15ca ♻️ Planner flags refactor 2022-06-27 21:28:04 -05:00
Scott Lahteine 884f7c7db9 📝 Note about UBL bad splits 2022-06-27 21:28:04 -05:00
thinkyhead 95b70233f2 [cron] Bump distribution date (2022-06-27) 2022-06-27 00:24:23 +00:00
Scott Lahteine 76d784f75f 🎨 Misc. shorthand operators 2022-06-26 10:01:22 -05:00
Scott Lahteine d8545551fe 🐛 Fix Manual Move axis selection (#24404) 2022-06-26 06:48:24 -05:00
Shlee b46191715d 📝 Add STM32F4 example, Ruby (#24399) 2022-06-26 01:56:57 -05:00
Giuliano Zaro dc5c5bdf82 🌐 Update Italian language (#24398) 2022-06-26 01:52:19 -05:00
Roman Moravčík d976f291fd 🌐 Update Slovak language (#24397) 2022-06-26 01:51:16 -05:00
sgparry 1e66cc39c2 🩹 Fix LCD contrast with K8800 board 2022-06-26 01:49:57 -05:00
tombrazier 2266f1ad67 MAX7219 idle profiler (#24375) 2022-06-26 00:38:23 -05:00
thinkyhead a0125c85d4 [cron] Bump distribution date (2022-06-26) 2022-06-26 00:26:54 +00:00
Scott Lahteine 546b3066c3 🌐 Drop unused delta strings 2022-06-24 22:07:19 -05:00
thinkyhead 0aebcc4ded [cron] Bump distribution date (2022-06-25) 2022-06-25 00:22:43 +00:00
Bob Kuhn 12a869e2ad 🐛 Fix Lerdge build / encrypt (#24391)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-06-23 23:59:50 -05:00
thinkyhead 645c7dc370 [cron] Bump distribution date (2022-06-24) 2022-06-24 00:21:33 +00:00
Victor Oliveira 1a79537645 Classic UI BIQU BX (#24387) 2022-06-23 04:18:36 -05:00
thinkyhead 6355798bfd [cron] Bump distribution date (2022-06-23) 2022-06-23 00:18:49 +00:00
ellensp 58d1b1be28 🩹 Fix DGUS (MKS) compile (#24378) 2022-06-22 05:08:24 -05:00
Victor Oliveira 3c13be165b 🚑️ Fix BIQU BX touch freeze (#24383) 2022-06-22 03:33:03 -05:00
ellensp 8c3ba69c98 🐛 Fix M423 invocation (#24360)
Followup to #23745
2022-06-21 23:14:05 -05:00
tombrazier 757156de72 🩹 LCD strings followup, fix warning (#24328) 2022-06-21 21:45:22 -05:00
InsanityAutomation 757d66e2c5 🐛 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-21 21:09:24 -05:00
DerAndere b06e378703 FOAMCUTTER_XYUV (for RAMPS) (#24325)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2022-06-21 21:07:17 -05:00
thinkyhead 90d9f1acc9 [cron] Bump distribution date (2022-06-22) 2022-06-22 00:25:14 +00:00
ellensp 22f0496c9b 🚑️ Fix SD mount bug (#24319)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2022-06-21 17:33:25 -05:00
thinkyhead d0e9ff0e29 [cron] Bump distribution date (2022-06-21) 2022-06-21 06:05:48 +00:00
Scott Lahteine 975c8f4b77 🎨 Simplify move menus with substitution 2022-06-20 21:22:04 -05:00
Scott Lahteine 4520a51bbe 🎨 Use MAP for home axis items 2022-06-20 21:21:48 -05:00
Scott Lahteine 432c879328 🧑‍💻 Fix STATIC_ITEM_N arg order 2022-06-20 21:21:20 -05:00
Scott Lahteine 6cbd7a48d1 🎨 Fix comments, formatting 2022-06-20 21:20:42 -05:00
Scott Lahteine 751c88aa5b 🩹 M919 9-axis update 2022-06-20 21:08:31 -05:00
thinkyhead 76f1f9d3b3 [cron] Bump distribution date (2022-06-18) 2022-06-18 06:07:14 +00:00
luzpaz a526c3d77a 🌐 Fix LCD string, typos (#24324) 2022-06-17 23:19:01 -05:00
tombrazier 1a6a604310 🐛 Fix G2/G3 Arcs stutter / JD speed (#24362) 2022-06-17 23:17:12 -05:00
thinkyhead 0a3c42a87c [cron] Bump distribution date (2022-06-15) 2022-06-15 12:07:28 +00:00
ellensp 70eac0fe4f 👷 CI test without src filter (emulate Arduino) (#24335) 2022-06-15 03:02:32 -05:00
thinkyhead 873f6c0b63 [cron] Bump distribution date (2022-06-14) 2022-06-14 06:05:52 +00:00
Keith Bennett e1b22a5c75 👷 Use Biqu BX for CI test (#24331) 2022-06-13 21:04:49 -05:00
Scott Lahteine 640282b8dc 🧑‍💻 Apply F() to some LCD / TFT strings
Followup to #24228
2022-06-13 20:43:23 -05:00
ellensp 0ff3018fd2 🩹 Fix missing ProUI cpp wrapper (#24313) 2022-06-13 20:38:19 -05:00
thinkyhead 9c6e0428af [cron] Bump distribution date (2022-06-11) 2022-06-11 06:06:31 +00:00
ellensp 43e9fe7f88 🐛 Fix JGAurora A5S A1 build (#24326) 2022-06-11 00:03:20 -05:00
Scott Lahteine 20dea22091 👔 Fewer checkboxes in Bug Report 2022-06-10 23:59:07 -05:00
Steven Haigh ee90ae2c87 🩹 Fix ProUI compile (#24310)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-06-10 21:08:55 -05:00
thinkyhead fb76ce841b [cron] Bump distribution date (2022-06-09) 2022-06-09 06:07:54 +00:00
Scott Lahteine 0ca33429b6 🧑‍💻 Misc. servo code cleanup 2022-06-09 00:51:47 -05:00
Scott Lahteine e4e6abe5af 🧑‍💻 Remove servo macros 2022-06-09 00:51:08 -05:00
thinkyhead 76a0cab782 [cron] Bump distribution date (2022-06-08) 2022-06-08 00:20:44 +00:00
ellensp 3e9fb34892 🩹 Media Change followup (#24302)
Followup to #24015
2022-06-07 01:59:21 -05:00
Scott Lahteine 9e73fd7149 👔 Update mfconfig import 2022-06-06 23:38:06 -05:00
thinkyhead 371ac49fc1 [cron] Bump distribution date (2022-06-07) 2022-06-07 00:30:16 +00:00
tombrazier f6e123430f 🩹 Fix Mesh Leveling + Debug compile (#24297) 2022-06-06 19:23:55 -05:00
lujios 3b142e531c 🩹 Fix G33 Delta Sensorless Probing compile (#24291) 2022-06-06 19:22:17 -05:00
Scott Lahteine d355ad04a0 👔 Fix and comment use_example_configs 2022-06-06 19:06:03 -05:00
thinkyhead a7a730f811 [cron] Bump distribution date (2022-06-06) 2022-06-06 06:06:26 +00:00
Miguel Risco-Castillo c9a9b25d41 🚸 ProUI G-code preview, PID plot (#24282) 2022-06-06 00:09:43 -05:00
Scott Lahteine 41a9dea149 👔 Update Marlin actions for 2.1.x 2022-06-06 00:09:43 -05:00
thinkyhead ec7cc59818 [cron] Bump distribution date (2022-06-05) 2022-06-05 00:25:04 +00:00
John Robertson ca06c6eab9 ️ PWM for ESP32 I2S expander (#24193) 2022-06-04 01:26:08 -05:00
Scott Lahteine d08223429b 🔖 Moving to bugfix-2.1.x 2022-06-04 01:22:02 -05:00
Scott Lahteine 8aca38351c 🧑‍💻 Extend LCD string substitution (#24278) 2022-06-03 22:56:38 -05:00
Scott Lahteine 9c872b214c 🐛 Fix min/max temp evaluation
Fixes #24257
2022-06-03 22:06:32 -05:00
Scott Lahteine 3522d5376c 🩹 Wrap SENSORLESS_STALLGUARD_DELAY 2022-06-03 20:55:15 -05:00
thinkyhead 2c0b8b52d8 [cron] Bump distribution date (2022-06-04) 2022-06-04 00:22:33 +00:00
Scott Lahteine 384ff264d7 🐛 Fix M203 report 2022-06-03 18:39:43 -05:00
Scott Lahteine 2b3ba02f09 🔧 LEVEL_BED_CORNERS => LCD_BED_TRAMMING 2022-06-03 18:16:43 -05:00
Scott Lahteine bcd9bb9628 🩹 Fix const warning
Followup to c16ae2451d
2022-06-03 01:31:01 -05:00
lujios 41f73cb457 ️ 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-03 00:19:25 -05:00
Tanguy Pruvot 845e2f6fb7 Use default null args in select_screen 2022-06-02 20:12:24 -05:00
Tanguy Pruvot c9b97b8d64 🚑️ Fix SDIO Init bootloop on STM32F1 (#24275) 2022-06-02 19:23:07 -05:00
thinkyhead 833ea4ec29 [cron] Bump distribution date (2022-06-03) 2022-06-03 00:18:25 +00:00
Keith Bennett 12aded95dc 💚 SKR V3 case-sensitive fs fix (#24272) 2022-06-02 07:14:38 -05:00
thinkyhead 0e8e735e4c [cron] Bump distribution date (2022-06-02) 2022-06-02 12:07:36 +00:00
ellensp 49db4ef5e4 🩹 Fix G60/G61 debug code (#24231) 2022-06-02 04:28:07 -05:00
ellensp 08c51a405a 🐛 Init Stepper SPI before PSU Control (#24269) 2022-06-02 04:22:09 -05:00
BIGTREETECH eda61a2cbd BigTreeTech SKR3 - STM32H743 (#24271)
Co-authored-by: Alan.Ma <alansayyeah@gmail.com>
2022-06-02 04:02:06 -05:00
bryan065 f6b425613e 🚸 Custom Menu Items for JyersUI (#24270) 2022-06-02 03:51:39 -05:00
ledzepman71 e260d90d21 📌 Tenlog PSU pin (#24266) 2022-06-02 03:49:48 -05:00
thinkyhead 30a7c4ca52 [cron] Bump distribution date (2022-06-01) 2022-06-01 00:25:07 +00:00
John Robertson 85c0875db2 Laser Safety Timeout (#24189) 2022-05-31 17:09:44 -05:00
Keith Bennett 6f3d7d864f 👔 Configs required to submit a Bug Report (#24256) 2022-05-31 16:28:01 -05:00
thinkyhead 3d70aca6e8 [cron] Bump distribution date (2022-05-31) 2022-05-31 18:24:10 +00:00
Scott Lahteine 58ce5182c2 🎨 Fix spelling, whitespace 2022-05-31 12:44:30 -05:00
ellensp 7dd34848b6 🩹 Fix EXTRUDERS 0 manual move compile (#24255)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2022-05-31 12:21:59 -05:00
kisslorand 1a555b3812 Fix axis string 'N' (#24259)
Followup to 167672d
2022-05-31 12:05:57 -05:00
tombrazier ea7bebb568 💥 More M306 M => M306 H (#24258)
Followup to #24253
2022-05-31 12:01:59 -05:00
thinkyhead 68a7a3f88f [cron] Bump distribution date (2022-05-29) 2022-05-29 00:21:51 +00:00
tombrazier 6ecf52f196 🚩 MPC update (#24253) 2022-05-28 17:40:08 -05:00
Miguel Risco-Castillo eec9c800c9 🚸 Fix, improve, update ProUI (#24251) 2022-05-28 17:34:36 -05:00
Scott Lahteine 41a469208a 🚸 Change M201 G to S 2022-05-28 17:09:08 -05:00
Scott Lahteine a59766195c 🎨 Use pos.set method 2022-05-28 15:25:07 -05:00
elimisback 2b4a89eafe 🔨 BTT STM32G0B1RE xfer build (#24245) 2022-05-28 15:24:28 -05:00
Scott Lahteine 26f5c32872 🎨 Misc. boards/pins cleanup 2022-05-28 14:41:50 -05:00
thinkyhead 21d2d22a6f [cron] Bump distribution date (2022-05-28) 2022-05-28 00:22:28 +00:00
Simon Pilepich 4407ff31ec 📝 Fix Mightyboard MOSFET comments (#24183) 2022-05-27 17:08:24 -05:00
Scott Lahteine 1f322b565f ♻️ More updates for multi-axis 2022-05-27 00:46:46 -05:00
Scott Lahteine 1d4f928342 🎨 Combine serial echos 2022-05-27 00:46:46 -05:00
thinkyhead ff201e6552 [cron] Bump distribution date (2022-05-27) 2022-05-27 00:24:11 +00:00
ellensp 460e243693 🔨 Add src_filter for I2C_AMMETER (#24242) 2022-05-26 19:02:42 -05:00
Keith Bennett 740f652b6a ✏️ Fix some motherboard checks (#24238) 2022-05-26 18:07:10 -05:00
thinkyhead 54c9358964 [cron] Bump distribution date (2022-05-25) 2022-05-25 00:24:56 +00:00
ellensp e197695f4c 🎨 Remove MKS custom pins, TinyBee cleanup (#24186) 2022-05-24 15:31:29 -05:00
ellensp eb0c4682d5 📌 Use MarlinSimUI/bugfix-2.0.x (#24232) 2022-05-24 14:49:57 -05:00
thinkyhead 0da862fd1e [cron] Bump distribution date (2022-05-24) 2022-05-24 06:07:20 +00:00
Scott Lahteine 0a8672ae6c 👔 Move actions to default branch 2022-05-24 00:12:23 -05:00
Scott Lahteine 31413a7d77 🧑‍💻 Combined axis strings 2022-05-24 00:12:23 -05:00
ellensp 639b1f64c6 Revert "Firmware upload…" (#24229) 2022-05-23 02:39:50 -05:00
Scott Lahteine 7d9bd3a97c 🎨 Add EXP1/2 headers, adjust TFT pins (#24230) 2022-05-23 02:37:28 -05:00
Keith Bennett f26b8bf8ef 📝 Add logo, helpful links to README (#24226) 2022-05-22 22:00:58 -05:00
ellensp c1ff38c7a0 🚸 Firmware upload destination prompt (using Tk) (#24074) 2022-05-22 22:00:58 -05:00
Robby Candra 15b6159f6a 🩹 Adjust manage_media for slow/late media init (USB FD) (#24015) 2022-05-22 22:00:58 -05:00
Scott Lahteine 04d0d9431b ♻️ Watchdog followup
Followup to 52eefa90e1
2022-05-22 20:47:44 -05:00
Scott Lahteine a5e1d4c50a ♻️ Apply F() to more LCD code (#24228) 2022-05-22 19:56:46 -05:00
Scott Lahteine e88fabafc8 🔨 Fix mfprep string test 2022-05-22 18:42:25 -05:00
InsanityAutomation c6b5bf7c00 🚨 Fix build warnings on Lulzbot Taz (#24227) 2022-05-22 17:47:30 -05:00
Scott Lahteine 167672dcd7 🧑‍💻 Forward-compatible axis strings 2022-05-22 17:45:07 -05:00
Scott Lahteine a93146b71d 🐛 Fix SEGMENT_LEVELED_MOVES with UBL 2022-05-22 17:05:39 -05:00
Keith Bennett d99185be24 🎨 Fix/adjust warnings (#24225) 2022-05-22 16:32:16 -05:00
Scott Lahteine c5126de559 🧑‍💻 MAP macro for axis lists, etc. (#24191) 2022-05-22 16:08:29 -05:00
Scott Lahteine c16ae2451d 🩹 Fix const warning 2022-05-22 14:43:14 -05:00
Keith Bennett e340a61e52 🐛 Fix FLSUN Hispeed FIL_RUNOUT_PIN, MKS Robin Mini TFT pins (#24204) 2022-05-21 18:13:00 -05:00
Arthur Masson af59056c09 🐛 Fix Polargraph G92 command (#24223) 2022-05-21 14:45:30 -05:00
Keith Bennett 4b0b6e22a7 👔 Move GitHub templates, update README (#24199) 2022-05-20 11:48:34 -05:00
Scott Lahteine 2bb9e0d58e 🔧 Remove LCD_SERIAL_PORT defaults, warn on auto-assign (#24170) 2022-05-20 11:27:09 -05:00
Scott Lahteine 52eefa90e1 ♻️ Move watchdog to MarlinHAL 2022-05-20 11:22:57 -05:00
Scott Lahteine 12da2e9288 🎨 Minor HAL cleanup 2022-05-20 11:22:57 -05:00
Scott Lahteine 22c5bd7eae 🔨 Move, tweak maple envs 2022-05-20 11:22:57 -05:00
tombrazier 62057d3204 🐛 Fix Leveling apply/unapply (#24188)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2022-05-19 16:15:15 -05:00
Marcio T 00075990d0 🐛 Fix FTDI_EVE_TOUCH_UI reboot loop (#24195) 2022-05-19 10:45:48 -05:00
ellensp 6a880280e4 🔨 Require PIO >= 6.0.1 (#24205) 2022-05-19 09:15:57 -05:00
Scott Lahteine b523ddf1b2 ♻️ Common Bed Leveling object name, accessors (#24214) 2022-05-19 06:05:52 -05:00
Ivan Kravets c814fe98d7 🔨 Use PlatformIO Core 6.0 Dev for CI (#24194) 2022-05-17 16:47:11 -05:00
Miguel Risco-Castillo a65e4edb1c 🚸 ProUI APRIL2022 updates (#24084) 2022-05-17 15:46:04 -05:00
Scott Lahteine 310ff23676 🎨 Misc. E3V2 DWIN cleanup 2022-05-17 15:10:03 -05:00
ellensp 7894cd9d6a 🩹 Fix MarlinUI allow-cold-extrude (#24176)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2022-05-17 03:01:32 -05:00
thinkyhead 0b787e8ed3 [cron] Bump distribution date (2022-05-17) 2022-05-17 06:00:50 +00:00
Oliver Jean Eifler 79789571bc 🩹 Suppress ZERO() warning (#24178) 2022-05-16 23:23:03 -05:00
Marcio T e092a02d77 🐛 Fix Due cli/sei (#24182)
Followup to #23357
2022-05-16 21:45:47 -05:00
thinkyhead 66d94aad21 [cron] Bump distribution date (2022-05-15) 2022-05-15 00:01:54 +00:00
Scott Lahteine 86fe4fde40 🎨 HAL_MinSerial.* => MinSerial.* 2022-05-13 23:49:29 -05:00
Keith Bennett 956f7d32fb 🩹 Run TMC test last in setup (#24160) 2022-05-13 19:50:42 -05:00
Miguel Risco-Castillo be0f1088f0 🚸 DWIN/DACAI for Creality 4.2.3 (#24132) 2022-05-13 19:34:30 -05:00
Scott Lahteine 66e32cb0fa 🧑‍💻 Clarify MSerialUSB, drop HardwareSerial workaround 2022-05-13 19:31:07 -05:00
Keith Bennett a62dc7c70c 🚸 Improve MKS SGEN_L V2, Robin Nano V3 pins (#24147) 2022-05-13 19:27:13 -05:00
Dominic 0e4348c718 🐛 Fix AIR_ASSIST (#24162) 2022-05-13 19:18:04 -05:00
Keith Bennett 1397cf0eaa 🔧 Allow board & probe dummy thermistors (#24165) 2022-05-13 19:17:19 -05:00
grauerfuchs eb352b11b9 🐛 Fix Mightyboard LED pin, fan override (#24168) 2022-05-13 19:08:50 -05:00
Scott Lahteine 6c2249451e [cron] Bump distribution date (2022-05-14) 2022-05-13 19:06:25 -05:00
Roxy-3D a7ade2d63e 🔨 BTT Octopus ST-Link programming/debugging 2022-05-13 19:05:56 -05:00
Scott Lahteine c1b53d63fc 🎨 Nextion cleanup 2022-05-13 00:48:19 -05:00
Scott Lahteine e438c77c6a 🚚 Move speed_lookuptable.h 2022-05-13 00:48:19 -05:00
Keith Bennett 8ccc601218 🎨 Clean up warnings / extra check (#24163) 2022-05-13 00:41:38 -05:00
Scott Lahteine b934a4c612 🩹 Fix printer_busy, M73
Followup to "Misc. LCD cleanup"
2022-05-13 00:00:28 -05:00
Scott Lahteine cb31a99319 ✏️ Fix MSG_LOCKSCREEN 2022-05-12 23:29:29 -05:00
ellensp ecc138fc9e 🔧 AVR/DUE Serial Port pin conflict checks (#24148)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2022-05-12 23:07:27 -05:00
Scott Lahteine 1e749e4f48 🧑‍💻 Misc. LCD cleanup 2022-05-12 21:40:01 -05:00
Scott Lahteine 38f4d8abfc Add BOARD_CREALITY_V24S1_301F4
Co-Authored-By: Miguel Risco-Castillo <mriscoc@users.noreply.github.com>
2022-05-12 21:18:06 -05:00
Scott Lahteine e039d51d18 🩹 Fix ProUI leveling start message 2022-05-12 20:23:32 -05:00
thinkyhead d1e9f53cb8 [cron] Bump distribution date (2022-05-13) 2022-05-13 00:01:33 +00:00
InsanityAutomation 64ebb78892 Creality CR-10 SmartPro (#24151)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2022-05-12 05:38:05 -05:00
Scott Lahteine f1ab24d0ae 🩹 Fix accel dividend 2022-05-12 04:16:31 -05:00
Scott Lahteine 84b9de9a19 🔨 Fix g++ locator for CI 2022-05-12 02:17:16 -05:00
thinkyhead 30eb2aa869 [cron] Bump distribution date (2022-05-12) 2022-05-12 06:00:54 +00:00
Scott Lahteine 672d0d4448 📝 Refer to 'PROGMEM' as 'flash' 2022-05-11 23:37:40 -05:00
Pauli Jokela 04fe50936e SOUND_ON_DEFAULT option (#24102)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2022-05-11 21:23:16 -05:00
Scott Lahteine 11c701af9b ✏️ Maple warning followup
Followup to #23661
2022-05-11 20:44:11 -05:00
thinkyhead ba95e85e53 [cron] Bump distribution date (2022-05-10) 2022-05-10 00:01:50 +00:00
Scott Lahteine 918a9cf3d1 🧑‍💻 Clarify acceleration factor 2022-05-09 18:50:25 -05:00
Scott Lahteine 8e24b34160 📌 Define RAMPS_SMART EXP headers, AZSMZ_12864
See #23501
2022-05-09 17:35:32 -05:00
Scott Lahteine 9d32bc3153 ✏️ Fix spurious UTF 2022-05-09 17:34:26 -05:00
Scott Lahteine 3bf768f925 🔨 OpenOCD Debug for VSCode 2022-05-09 17:34:26 -05:00
Mike La Spina 726a38712e 🩹 Fix Fan Tail Speed Init (#24076)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-05-09 17:18:47 -05:00
thinkyhead 4a17589496 [cron] Bump distribution date (2022-05-08) 2022-05-08 06:01:02 +00:00
Scott Lahteine 198ef1e474 🎨 Misc. code cleanup 2022-05-07 22:03:19 -05:00
Scott Lahteine 9e43ec9dcd 🔨 Improved mfprep script 2022-05-07 22:03:19 -05:00
Keith Bennett 1a9e8c047b 🔧 Fix Neo RGB sanity check (#24146) 2022-05-07 21:58:57 -05:00
ellensp e43f4207a0 📌 Use ESP3DLib master branch (#24140) 2022-05-07 21:57:13 -05:00
ellensp 5f4ec82544 ✏️Fix Markforged endstops/G38 (#24141) 2022-05-07 21:56:09 -05:00
thinkyhead 2a88cc0fcd [cron] Bump distribution date (2022-05-07) 2022-05-07 00:01:30 +00:00
Scott Lahteine 505ab1bb62 🔨 Use first g++ in path for 'native' targets 2022-05-05 19:36:51 -05:00
Scott Lahteine 659b4172aa 🔨 Prevent build attribute define conflicts 2022-05-05 19:33:50 -05:00
thinkyhead a5b57a09fd [cron] Bump distribution date (2022-05-06) 2022-05-06 00:01:36 +00:00
Scott Lahteine 6e90272783 🩹 Bring G425 report up to date
Followup to #23112
2022-05-05 14:57:29 -05:00
Scott Lahteine 9d6b4a2e97 🔧 Move LASER_COOLANT_FLOW_METER to LASER_FEATURE 2022-05-05 13:41:03 -05:00
Keith Bennett 3cea0a00b1 🐛 Some EEPROM size fixes (#24113)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2022-05-05 02:38:48 -05:00
Stephen Hawes 81a6834876 Add M3426 A<addr> parameter (#24130)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2022-05-05 02:37:47 -05:00
Keith Bennett df40181357 💥 Num Axes and Multi-Stepper based on Driver Types (#24120)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2022-05-04 19:25:02 -05:00
thinkyhead 6237a6a6d3 [cron] Bump distribution date (2022-05-05) 2022-05-05 00:12:10 +00:00
Scott Lahteine 23a26e4033 🌐 Clean up languages 2022-05-04 17:03:25 -05:00
Scott Lahteine 492d91791c 💚 Lock CI testing to PlatformIO 5.2.5 2022-05-04 15:02:00 -05:00
thinkyhead 0a6c58ea71 [cron] Bump distribution date (2022-05-04) 2022-05-04 18:13:21 +00:00
Scott Lahteine 4c8c02f66f 📝 Replace KB with K in pins 2022-05-04 12:47:15 -05:00
thinkyhead b038078541 [cron] Bump distribution date (2022-05-03) 2022-05-03 00:01:42 +00:00
Keith Bennett 43b43491ab 📝 Fix extraneous URL args (#24125) 2022-05-02 18:29:25 -05:00
thinkyhead a1d4942f76 [cron] Bump distribution date (2022-05-01) 2022-05-01 00:01:58 +00:00
Keith Bennett 3bcbd3259f 🔧 Mini LCD followup (#24111) 2022-04-30 00:54:42 -05:00
thinkyhead 60f8287208 [cron] Bump distribution date (2022-04-30) 2022-04-30 00:02:33 +00:00
Scott Lahteine b37d13af72 🔧 Base NUM_AXES on defined DRIVER_TYPEs (#24106) 2022-04-29 15:23:34 -05:00
Keith Bennett 12eb1e0829 📝 Update NEOPIXEL_TYPE comment (#24110) 2022-04-29 15:19:38 -05:00
thinkyhead 5c47476e0c [cron] Bump distribution date (2022-04-29) 2022-04-29 18:14:41 +00:00
tombrazier 60b6df4542 🐛 Fix kinetic ABL mesh after refactor (#24107)
Followup to #23868
2022-04-29 12:54:57 -05:00
thinkyhead e633ef895d [cron] Bump distribution date (2022-04-26) 2022-04-26 06:00:51 +00:00
Giuliano Zaro a0a963fe1d 🩹 Fix "elapsed" text on DOGLCD (#24087) 2022-04-25 22:03:16 -05:00
thinkyhead a8419738be [cron] Bump distribution date (2022-04-24) 2022-04-24 00:01:59 +00:00
Scott Lahteine 7501d253c7 🎨 Tweak NEOPIXEL_LED format 2022-04-23 06:18:56 -05:00
Scott Lahteine d9ccf0a144 📝 Fix 'M150 S' comment 2022-04-23 06:11:03 -05:00
ellensp bd27490adb 🐛 Fix MKS_MINI_12864 build for ESP32 (#24071) 2022-04-23 05:02:13 -05:00
Scott Lahteine ac4fefa49a ♻️ Consolidate DGUSScreenHandler class (#24067) 2022-04-23 05:00:46 -05:00
ellensp 6a05702c20 🐛 Fix BACKLASH_COMPENSATION compile (#24072)
Followup to #23826
2022-04-23 04:16:15 -05:00
thinkyhead 9188f57938 [cron] Bump distribution date (2022-04-23) 2022-04-23 00:01:45 +00:00
ellensp 1a131d17b6 🩹 Fix DGUS_PREHEAT_UI enable with DGUS_LCD_CLASSIC (#24066) 2022-04-22 06:02:47 -05:00
Mateusz Kleina 4a73fa18d8 🐛 Fix ProUI / JyersUI leveling preheat (#24064)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-04-22 05:12:39 -05:00
Scott Lahteine fe745fdef0 🚸 More ExtUI events for ABL / UBL 2022-04-22 04:48:09 -05:00
tombrazier 5b2071448f 🩹 Fix MPC Edit Menu (#24059)
Followup to #23984

Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-04-22 01:50:38 -05:00
thinkyhead 633fb5f941 [cron] Bump distribution date (2022-04-22) 2022-04-22 00:01:30 +00:00
Scott Lahteine 741eb0c3e9 🚸 Home Y before X on belt printers 2022-04-21 09:05:15 -05:00
Scott Lahteine bf38ef23e5 🐛 Prevent BABYSTEP freeze
See #22830, #13300
2022-04-21 08:58:50 -05:00
Scott Lahteine 91cf4eb977 🐛 Home Z to Max after Z_SAFE_HOMING 2022-04-21 08:58:50 -05:00
Scott Lahteine 01bb11b415 🧑‍💻 IS_ULTRA_LCD => HAS_WIRED_LCD 2022-04-21 07:16:57 -05:00
Scott Lahteine 0ff3035f3a 🚸 Prevent accidental button press 2022-04-21 07:10:05 -05:00
Scott Lahteine 2dcfa140e9 🎨 misc. cleanup 2022-04-21 07:10:05 -05:00
ellensp 367c11dfa2 🐛 Fix STM32 Pins Debugging (#22896) 2022-04-21 04:06:22 -05:00
Scott Lahteine d507ea117e 🩹 Fix ESP32 servos, SD_IGNORE_AT_STARTUP
Fixes #24007
Followup to aaf5bf02
2022-04-21 02:26:31 -05:00
Christian Piper 3905234b0d 🩹 Fix PRINTCOUNTER with EXTRUDERS 0 (#24063)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-04-21 02:15:07 -05:00
thinkyhead 6fc284231c [cron] Bump distribution date (2022-04-21) 2022-04-21 00:06:20 +00:00
Scott Lahteine a0d28f1770 🎨 Minimize block->steps.set 2022-04-20 04:29:42 -05:00
Scott Lahteine aca0d3dba5 💚 Use PIO-develop for CI 2022-04-20 04:29:26 -05:00
Scott Lahteine d4fd39f05f 🐛 Update M913, M914 report
Followup to #11248, #11249, #23400
2022-04-20 00:56:52 -05:00
Keith Bennett 42be79b3a2 🐛 Fix JyersUI Preheat Items (#24060) 2022-04-19 19:26:25 -05:00
thinkyhead 5844128a77 [cron] Bump distribution date (2022-04-20) 2022-04-20 00:01:47 +00:00
DerAndere 8aaf64d917 💥 Update Motor Current G-codes for extra axes (#23975) 2022-04-18 22:15:15 -05:00
ellensp 5005c7b64c 🐛 Fix Manual Move cold extrude override (#24045)
Followup to #19606

Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-04-18 22:03:42 -05:00
thinkyhead bb5dbd13a8 [cron] Bump distribution date (2022-04-19) 2022-04-19 00:01:38 +00:00
Scott Lahteine 696ae3cc14 ✏️ Remove extra G29 line
Followup to 85a62bbf
2022-04-18 16:41:16 -05:00
Keith Bennett 9d623160a6 🧑‍💻 Preheat menu improvements (#24017)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-04-18 05:46:58 -05:00
Ludy 3d3898145a 🌐 Update German language, FTDI cleanup (#24047)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-04-18 04:43:34 -05:00
thinkyhead 3b3dbcbeb4 [cron] Bump distribution date (2022-04-18) 2022-04-18 06:00:58 +00:00
Ludy fc87834cc0 🐛 Fix FTDI::get_utf8_char_and_inc compile (#24048) 2022-04-18 00:01:28 -05:00
John Lagonikas c58c5b09ab 🐛 Fix MPC compile (#24049)
Followup to #23984, #23751

Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-04-17 23:56:52 -05:00
DerAndere 2ee39b62f3 🩹 Fix some parameters w/out values (#24051) 2022-04-17 23:03:39 -05:00
Scott Lahteine fd082df077 🧑‍💻 Handle PLR in manage_media 2022-04-17 21:20:34 -05:00
Scott Lahteine aaf5bf0218 🧑‍💻 Add RESET_STEPPERS_ON_MEDIA_INSERT flag 2022-04-17 21:20:34 -05:00
Scott Lahteine fb54d06582 🎨 Flatten manage_media code 2022-04-17 21:20:34 -05:00
thinkyhead 5eeb6e0bca [cron] Bump distribution date (2022-04-16) 2022-04-16 00:02:34 +00:00
Scott Lahteine b0e974e208 🧑‍💻 Simplify BIGTREE_SKR_2_F429 env 2022-04-15 02:05:02 -05:00
thinkyhead d6cc851c67 [cron] Bump distribution date (2022-04-15) 2022-04-15 06:03:40 +00:00
Giuliano Zaro 14603112a4 🩹 Fix MPC_EDIT_DEFS (#24018) 2022-04-14 23:22:08 -05:00
Robby Candra a52dfc0373 🩹 Fix DEBUG_CARDREADER (#24023) 2022-04-14 23:21:12 -05:00
Moritz Wirger 3e1dd0d640 enwi ESPNP board support (#24029) 2022-04-14 21:43:21 -05:00
ellensp 2e121014b0 ✏️ Fix 9-axis Z axis typo (#24036)
Followup to #23112
2022-04-14 21:38:27 -05:00
Scott Lahteine cbf8622670 🎨 Use LEDColor default C-CTOR 2022-04-14 21:34:28 -05:00
Scott Lahteine 80810f1b18 🚨 Fix some compiler warnings 2022-04-14 21:34:06 -05:00
thinkyhead 29d3f6a024 [cron] Bump distribution date (2022-04-12) 2022-04-12 00:01:44 +00:00
Giuliano Zaro 80d09044f7 🌐 Update Italian language (#24019) 2022-04-10 19:23:53 -05:00
thinkyhead 11c41600a3 [cron] Bump distribution date (2022-04-11) 2022-04-11 00:01:51 +00:00
Scott Lahteine 416fb66118 🧑‍💻 Strip #errors in Configurations deployment 2022-04-10 17:53:52 -05:00
Scott Lahteine 2af7657214 🩹 Use LCD_CONTRAST_INIT in pins files 2022-04-10 07:39:50 -05:00
Scott Lahteine f31d3c6749 🩹 Fix ADVANCED_PAUSE_RESUME_PRIME check
Fixes #23824
2022-04-10 06:31:39 -05:00
LPRtypeCN c53af0df0b 🌐 Update Chinese language (#23865) 2022-04-10 06:19:12 -05:00
Scott Lahteine cec7836959 Autoreport Redundant Sensor option (#24014) 2022-04-10 03:58:58 -05:00
Scott Lahteine e4a8c693b0 🎨 Misc. USB flash code cleanup 2022-04-10 03:45:36 -05:00
Scott Lahteine 7ff5e02f6b 🔨 Fix LPC176x debug build
See #23635
2022-04-10 03:45:36 -05:00
Scott Lahteine f7cb1ce3f4 🩹 Fix PID helper functions 2022-04-10 03:19:07 -05:00
Scott Lahteine 577831bf1a 🩹 Apply 100% leveling correction below the bed
See #24002
2022-04-10 01:49:59 -05:00
thinkyhead 6cb1a4a48b [cron] Bump distribution date (2022-04-10) 2022-04-10 06:25:51 +00:00
tombrazier 3da29b4a04 🚸 Improve MPC tuning, add menu items (#23984)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-04-10 01:20:05 -05:00
Robert Brenckman 6ee34331b7 🐛 Fix Tool Change priming (#21142)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-04-10 00:24:07 -05:00
Scott Lahteine e2353be24f 🎨 Misc. cleanup, string optimization 2022-04-09 22:57:28 -05:00
stream2me 46e282bd6d 🐛 Prefer os.replace, fix TFT_LVGL_UI build (#24001) 2022-04-09 19:46:29 -05:00
Robby Candra 6fa930f043 ⚰️ Clean up dead option (#24006) 2022-04-09 19:44:31 -05:00
Robby Candra b19f745659 ♻️ Bilinear refactor followup (#24009)
Followup to #23868
2022-04-09 19:39:04 -05:00
ellensp febf7e54fe 🔨 Preflight check old abl files (#24010) 2022-04-09 19:37:24 -05:00
Keith Bennett 88f36ac82f ✏️ Fix FYSETC Mini Panel neopixel type (#24011) 2022-04-09 19:21:42 -05:00
InsanityAutomation 02f5e2de9c 🩹 Fix and clean up E3V2 draw (#24013) 2022-04-09 19:19:14 -05:00
Scott Lahteine 6567e0e0aa 🎨 Misc. 9-axis cleanup 2022-04-09 19:17:04 -05:00
thinkyhead fc50018b06 [cron] Bump distribution date (2022-04-05) 2022-04-05 00:01:35 +00:00
Scott Lahteine 32e6767b5a DOGM Display Sleep (#23992)
Co-authored-by: borland1 <barryorlando@hotmail.com>
2022-04-04 15:57:03 -05:00
DerAndere f22307a0af 🚸 Better M350, M114 with more axes (#23986)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-04-03 21:43:42 -05:00
Scott Lahteine 877e10205b 🏗️ Axis name arrays
Co-Authored-By: DerAndere <26200979+DerAndere1@users.noreply.github.com>
2022-04-03 21:03:23 -05:00
Scott Lahteine 8b8defeacc 🏗️ Extend AXIS_CHAR to include E
Co-Authored-By: DerAndere <26200979+DerAndere1@users.noreply.github.com>
2022-04-03 21:00:31 -05:00
Scott Lahteine f5daefb09d 🏗️ More 9-axis updates 2022-04-03 20:34:48 -05:00
thinkyhead 1fdad42c5f [cron] Bump distribution date (2022-04-04) 2022-04-04 00:17:29 +00:00
Giuliano Zaro 591fa8b753 🔧 Sanity-check SWITCHING_TOOLHEAD_X_POS (#23985) 2022-04-03 18:49:51 -05:00
John Robertson f7fff4d455 🧑‍💻 Define isr_float_t to assert a non-FPU float (#23969)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-04-03 18:47:55 -05:00
ellensp 283aca50ba 🌐 Update Russian language (#23978) 2022-04-03 18:46:05 -05:00
Giuliano Zaro 1bc9a530bd 🐛 Fix Bed/Chamber PID Autotune with MPCTEMP (#23983) 2022-04-03 18:44:45 -05:00
Scott Lahteine 01797f74dc ✏️ Fix HAS_GCODE_M876 2022-04-03 18:30:49 -05:00
Scott Lahteine ff07c2b375 ✏️ No such pin 2022-04-03 18:07:40 -05:00
Scott Lahteine 90289b0ca0 🌐 Rename "LCD Timeout" string 2022-04-03 16:59:46 -05:00
Scott Lahteine 19838d97be 🎨 Misc. adjustments, spacing 2022-04-03 16:59:43 -05:00
Scott Lahteine c4873a64ec 🧑‍💻 General and Axis-based bitfield flags (#23989) 2022-04-03 16:14:02 -05:00
Keith Bennett 7ce4a7f641 ✏️ Fix NOZZLE_PARK_Y_ONLY sanity-check (#23990) 2022-04-03 16:13:29 -05:00
thinkyhead 4f1967a0a5 [cron] Bump distribution date (2022-04-03) 2022-04-03 00:46:28 +00:00
Giuliano Zaro e4c7c550fc 🐛 Fix PID edit menu for Bed, Chamber (#23987) 2022-04-02 18:29:21 -05:00
thinkyhead d98c61cafb [cron] Bump distribution date (2022-04-02) 2022-04-02 00:01:39 +00:00
Scott Lahteine 931e243116 Draw flags followup 2022-04-01 04:57:41 -05:00
ellensp 0c366d3574 ✏️ Fix E3V2 MarlinUI draw flags (#23979) 2022-04-01 03:01:34 -05:00
tombrazier 72b2e2b2c7 ⚗️ Temperature Model Predictive Control (#23751) 2022-04-01 02:15:20 -05:00
thinkyhead 8fb65211fc [cron] Bump distribution date (2022-04-01) 2022-04-01 06:01:01 +00:00
DerAndere e5b651f407 Support for up to 9 axes (linear, rotary) (#23112)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-04-01 00:10:38 -05:00
Giuliano Zaro 2786592b62 📝 Obsolete freeze comment (#23964)
Followup to #23944
2022-03-31 21:22:26 -05:00
aegelsky 04ab653f5e 🐛 Fix MKS Gen. L - EEB (#23965) 2022-03-31 21:21:10 -05:00
Jon f15b1c16c9 🩹 SKR2 Pins DIAG flag (#23968)
Followup to #23050
2022-03-31 21:18:32 -05:00
Keith Bennett c7f03b820a 📌 SKR Mini V1.1 TMC UART Pins (#23970) 2022-03-31 21:16:11 -05:00
grauerfuchs 108cc4ba16 🐛 Fix MightyBoard Rev. E EX2, extra MOSFETs (#23976) 2022-03-31 21:15:06 -05:00
tombrazier ae53033cea ♻️ Refactor and fix ABL Bilinear (#23868) 2022-03-31 21:13:16 -05:00
Manianac 72a9a02c17 🐛 Use ADC_VREF for Filament Width ADC Vref (#23977) 2022-03-31 19:23:52 -05:00
thinkyhead 2dbb28f5e4 [cron] Bump distribution date (2022-03-30) 2022-03-30 00:26:34 +00:00
InsanityAutomation 49539463b8 🐛 Fix MarlinUI on Ender 3 S1 (#23949) 2022-03-29 04:41:33 -05:00
Scott Lahteine 6015ee2531 🎨 Combine common LPC1768 I2C code 2022-03-29 04:22:04 -05:00
Scott Lahteine 0752082b85 🎨 INI cleanup 2022-03-29 03:48:37 -05:00
Scott Lahteine d6fcae40c4 💥 Rename ExtUI settings methods 2022-03-29 03:40:50 -05:00
Scott Lahteine 4edfb690dd 💚 Lock CI testing to PlatformIO 5.2.5 2022-03-29 03:24:15 -05:00
John Lagonikas 51d4c5abea ✏️ Fix parking extruder compile (#23961)
Followup to d3e3e6a491
2022-03-29 03:13:45 -05:00
thinkyhead 0b669067b9 [cron] Bump distribution date (2022-03-29) 2022-03-29 00:31:43 +00:00
Ludy 59f2f4fd47 🐛 Fix MMU2 buzz (#23950)
Followup to #23943
2022-03-27 20:20:54 -05:00
David Forrest bdc2b2b965 🔨 Fix Makefile GCC warning (#23957) 2022-03-27 20:19:02 -05:00
thinkyhead d806a668e8 [cron] Bump distribution date (2022-03-28) 2022-03-28 00:01:49 +00:00
Scott Lahteine d95dca94b9 🔨 Update TMC26XStepper link 2022-03-26 21:58:19 -05:00
thinkyhead 4a54f8469e [cron] Bump distribution date (2022-03-27) 2022-03-27 00:01:26 +00:00
Giuliano Zaro 692f42ee7d Configurable FREEZE pin state (#23948) 2022-03-26 18:22:41 -05:00
ellensp 20b5615305 Configurable FREEZE pin state (#23944)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-03-25 22:44:22 -05:00
Scott Lahteine b1958a43fc 🐛 Fix pulldown sanity check 2022-03-25 21:16:00 -05:00
Scott Lahteine 959c559c43 🔨 Try out v3 actions 2022-03-25 20:54:01 -05:00
ellensp f1471c1549 🐛 Fix MMU2 buzz (#23943)
Followup to 89a9c3a391
2022-03-25 20:03:43 -05:00
thinkyhead 80c4abc2e1 [cron] Bump distribution date (2022-03-26) 2022-03-26 00:06:22 +00:00
Robby Candra b7ffcd6941 STATUS_MESSAGE_TIMEOUT_SEC (#23135)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-03-25 18:34:20 -05:00
Scott Lahteine fd742616ba 🚸 Clear "heating/cooling" message on temp reached 2022-03-25 18:06:03 -05:00
Scott Lahteine 8dfdf51678 🎨 Format, use status macros 2022-03-25 18:06:03 -05:00
Scott Lahteine 4ff063440d 🐛 Fix status_printf alert level 2022-03-25 18:06:03 -05:00
Scott Lahteine 6b55eec9bb 🩹 Print English to serial out 2022-03-25 18:06:03 -05:00
Scott Lahteine 4a50d89bdb ✏️ Encoder noise followup
Followup to #23925
2022-03-24 20:29:50 -05:00
thinkyhead 867e274172 [cron] Bump distribution date (2022-03-25) 2022-03-25 00:01:44 +00:00
Oleg Belov d189cda616 📌 Custom cable for Mini 12864 V1 + SKR Mini E3 V3.0 (#23936) 2022-03-24 18:12:35 -05:00
Serhiy-K e119d9bae9 🌐 Update Ukrainian language (#23935) 2022-03-24 18:07:58 -05:00
ellensp 0d3f79e6d6 🩹 Wrap endstop_diag.cpp (#23931) 2022-03-24 18:06:28 -05:00
thinkyhead b44357db9d [cron] Bump distribution date (2022-03-24) 2022-03-24 00:01:46 +00:00
Scott Lahteine 0b32c3900f 🧑‍💻 Improve STATUS_BED_X 2022-03-23 00:31:13 -05:00
Scott Lahteine 6b47db3a68 🎨 General cleanup, comments 2022-03-23 00:31:13 -05:00
Scott Lahteine a80a303cbe 🧑‍💻 EXTRUDER_LOOP macro 2022-03-23 00:31:13 -05:00
Scott Lahteine 8ba6e8a74d 🎨 Clean up tool change with tool sensor 2022-03-23 00:31:13 -05:00
Scott Lahteine e458aa41fc 🔨 Fix 'mftest -s' 2022-03-23 00:31:13 -05:00
Scott Lahteine a63205a034 🩹 Fix ADC math overflow 2022-03-23 00:31:13 -05:00
Scott Lahteine 92d3a038c2 🧑‍💻 PIO --silent in build_example 2022-03-23 00:31:13 -05:00
Scott Lahteine 258a2ed112 🎨 Apply _TERN where possible 2022-03-23 00:31:13 -05:00
Scott Lahteine 98dcb9e614 🔨 Suppress MMU2 resume_position warning 2022-03-23 00:31:13 -05:00
Scott Lahteine de8e436110 🧑‍💻 Add neo.set_background_color(rgbw) 2022-03-23 00:31:13 -05:00
Scott Lahteine 58fcaebe76 🔧 Sanity-checks for PULLDOWN, SINGLENOZZLE 2022-03-23 00:31:13 -05:00
Scott Lahteine c47c52c146 🔧 No Switching Nozzle with MMU2 2022-03-23 00:31:13 -05:00
Scott Lahteine d3e3e6a491 🩹 No PE_MAGNET_ON_STATE without PARKING_EXTRUDER 2022-03-23 00:31:13 -05:00
Scott Lahteine ef07c2c8dd 🔨 Allow I2CPE_ENC_n_INVERT set to false 2022-03-23 00:31:13 -05:00
thinkyhead e183e3814d [cron] Bump distribution date (2022-03-23) 2022-03-23 00:01:36 +00:00
Scott Lahteine 2baf49af93 🚸 Allow one servo with cutter on RAMPS 2022-03-22 18:01:42 -05:00
thinkyhead 10ce88f810 [cron] Bump distribution date (2022-03-21) 2022-03-21 06:00:58 +00:00
Fredrik Andersson a8cf2909f7 Encoder button noise filter (#23925) 2022-03-20 20:14:45 -05:00
Scott Lahteine 032e5c9936 ✏️ Misc. cleanup 2022-03-20 19:12:19 -05:00
thinkyhead 3c09cf2e5e [cron] Bump distribution date (2022-03-19) 2022-03-19 00:01:41 +00:00
Mark a02a1def62 📌 PandaPi V2.9 – Standalone mode (#23908) 2022-03-17 23:49:47 -05:00
John Robertson 1f1571f726 ESP32 - Hardware PWM for fan, cutter, servos (#23802) 2022-03-17 22:21:53 -05:00
ellensp 9b2c06045d 🩹 Fix xatc EEPROM debug (#23911) 2022-03-17 22:17:41 -05:00
tombrazier 631e35bfd6 ️ Fix noisy ADC - 16x oversampling with 12-bit ADC (#23867) 2022-03-17 22:15:26 -05:00
Ludy bf7176fba9 🩹 Fix redundant var declaration (#23913) 2022-03-17 20:55:33 -05:00
thinkyhead 99413ae2f4 [cron] Bump distribution date (2022-03-18) 2022-03-18 00:01:51 +00:00
John Robertson 653c847bfb 🐛 MKS TinyBee - 2.5V ADC Vref (#23903) 2022-03-17 14:35:33 -05:00
thinkyhead acade2890a [cron] Bump distribution date (2022-03-14) 2022-03-14 00:28:47 +00:00
Jelmer van der Stel f4b41fcc3f 🩹 Fix DWIN E3V2 display issues by allowing re-init (#23879) 2022-03-13 17:20:30 -05:00
Mrnt 9bc1d05df3 🧑‍💻 Allow DIGIPOT Rsx / Vrefmax override (#23885) 2022-03-13 17:17:35 -05:00
Julien Staub 40ed3c5f89 🐛 Fix STM32F1 HAL build (#23897)
Followup to #23357
2022-03-13 17:11:31 -05:00
Julien Staub de87f5309d 🩹 Fix ExtUI build with Host Keepalive disabled (#23898) 2022-03-13 17:09:32 -05:00
InsanityAutomation a9c30cb9c1 📝 Fix X2_MAX_POS comment (#23873) 2022-03-13 17:00:35 -05:00
Scott Lahteine 4d40764802 📝 Fix DEFAULT_DUAL_X_CARRIAGE_MODE comment 2022-03-13 16:59:43 -05:00
Scott Lahteine 0c0ef9e548 🚸 Test LIN_ADVANCE in a pins file 2022-03-13 16:46:08 -05:00
Mathew Winters a58d35d765 ️ G12 - Only require used axes to be homed (#23422)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-03-12 19:13:41 -06:00
thinkyhead ea3d6ecea9 [cron] Bump distribution date (2022-03-13) 2022-03-13 01:07:44 +00:00
Keith Bennett 2f6a6f3b55 🔨 Drop extraneous build flag (#23862) 2022-03-12 18:23:29 -06:00
Nick 9c9300ff9d 🐛 Fix Chiron new TFT SD print after reset (#23855) 2022-03-12 17:47:47 -06:00
Scott Lahteine e354cd15b2 🩹 Fix FSTR / PSTR usage 2022-03-12 17:44:58 -06:00
Scott Lahteine 89a9c3a391 🧑‍💻 Add standard BUZZ types 2022-03-12 17:44:58 -06:00
Ludy 0bf319c57a 🌐 Fix, add some menu labels (#23895) 2022-03-12 17:36:23 -06:00
Scott Lahteine bff55ea605 🐛 Fix UBL 'G29 Q1' bug 2022-03-12 16:00:48 -06:00
Scott Lahteine 623c6b720b 🧑‍💻 Add ExtUI::onLevelingDone, match DWIN to ExtUI 2022-03-12 16:00:48 -06:00
thinkyhead 5bbb345b55 [cron] Bump distribution date (2022-03-12) 2022-03-12 00:43:48 +00:00
BIGTREETECH 8e87e4cb5e 🧑‍💻 STM32G0Bx : Use PLLQ for USB clock (#23870) 2022-03-11 18:23:18 -06:00
kisslorand 0563626286 🚸 M401 H - Report BLTouch HS State (#23724) 2022-03-11 18:21:08 -06:00
GatCode 2d8ec4fe9e 📌 Fix, extend Index Rev03 Mobo (#23851)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-03-11 17:56:31 -06:00
Giuseppe499 df4e022a48 🚸 Fix, extend X Axis Twist Compensation (#23745)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-03-11 17:12:03 -06:00
tombrazier b123fa763d 🐛 Restore STM32 / STM32F1 12-bit ADC (#23871) 2022-03-11 17:09:04 -06:00
Miguel Risco-Castillo 79b38e0e14 🚸 Update Ender3 V2/S1 Pro UI (#23878) 2022-03-11 14:06:49 -06:00
ellensp bd3ecc3ea0 fix g29 (#23887) 2022-03-11 07:51:25 -07:00
Scott Lahteine f516c9e552 🐛 Fix UI include
Followup to ~2
2022-03-11 02:56:24 -06:00
ellensp b9ef0f486a 📝 Update laser/spindle docs link (#23886) 2022-03-11 02:52:35 -06:00
Scott Lahteine 48b5362cf0 🔧 DWIN_CREALITY_LCD_ENHANCED => DWIN_LCD_PROUI
Followup to #23624
2022-03-10 22:15:35 -06:00
thinkyhead 4e467e98c4 [cron] Bump distribution date (2022-03-11) 2022-03-11 00:28:58 +00:00
Scott Lahteine 813b6af724 🩹 Fix 'hdsl' warning 2022-03-10 17:35:03 -06:00
Scott Lahteine 4b84b28c14 🚸 Improve M422 error messages 2022-03-10 17:28:54 -06:00
Keith Bennett c6a6d35f0d 🚸 TH3D EZBoard V2 TMC slave addresses (#23857) 2022-03-10 17:20:13 -06:00
thinkyhead 323ac9488c [cron] Bump distribution date (2022-03-05) 2022-03-05 00:25:32 +00:00
Scott Lahteine d2c503eea2 ✏️ num-to-string followup 2022-03-04 16:55:01 -06:00
Scott Lahteine 87e19fe5e7 🔧 Mark Thermal Variance Monitor EXPERIMENTAL 2022-03-04 16:07:38 -06:00
Jack Wilsdon 0e1ecf1fe0 🐛 Emergency Parser with STM32 Mass Storage (#23827) 2022-03-04 15:59:38 -06:00
tombrazier 687dc9ad4d 🩹 Improve and apply XATC reset() (#23840) 2022-03-04 15:57:51 -06:00
Scott Lahteine 755c196cfa 🚸 12345.6 num-to-string 2022-03-04 15:28:43 -06:00
thinkyhead 445c3c6514 [cron] Bump distribution date (2022-03-03) 2022-03-03 00:27:06 +00:00
Scott Lahteine 6aee2c755b ️ Use seen_test in M422 2022-03-02 17:58:23 -06:00
Scott Lahteine bb2f100fcd 🚸 Use Z_STEPPER_ALIGN_STEPPER_XY to enable 2022-03-02 17:50:55 -06:00
tombrazier 2e39bc30fd 🚸 Universal X_AXIS_TWIST_COMPENSATION (#23828) 2022-03-02 16:13:46 -06:00
Scott Lahteine b07a34eb6b 🐛 Fix M_State_grbl when G29 calls G28 2022-03-02 16:04:17 -06:00
thinkyhead fd1a5fe366 [cron] Bump distribution date (2022-03-02) 2022-03-02 00:26:24 +00:00
Julien Staub c9fe822920 Weedo 62A Tina2 / Monoprice Cadet (#23817) 2022-03-01 16:42:20 -06:00
InsanityAutomation 9ef01d43bb ️ E3V2 blank bg for S1 compatibility (#23822) 2022-03-01 16:25:30 -06:00
ellensp 7d7439c4b6 🚨 Fix BLTouch 5V pin tolerance checks (#23823) 2022-03-01 16:22:36 -06:00
tombrazier 6b7868d943 🐛 Fix backlash applied steps when config changes (#23826)
Followup to #23814
2022-03-01 16:14:52 -06:00
ellensp 15de14dd89 🔨 Fix 'renamed' env (platform = ststm32) (#23831) 2022-03-01 16:11:26 -06:00
Ludy d09a2ee80a 🌐 Update German language (#23832) 2022-03-01 16:09:11 -06:00
thinkyhead 1aa988c63c [cron] Bump distribution date (2022-02-28) 2022-02-28 06:07:09 +00:00
kisslorand 9ea6a588c3 M21 P / S / U - Select Volume (#23780)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-02-27 20:38:11 -06:00
thinkyhead 4b0e84d9f3 [cron] Bump distribution date (2022-02-27) 2022-02-27 00:25:43 +00:00
M. FURIC Franck 0e7be8e8c4 LCD Backlight Timer (#23768)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-02-26 16:54:04 -06:00
ellensp 12b038dde5 🔧 SHOW_CUSTOM_BOOTSCREEN sanity-check (#23807) 2022-02-26 16:50:17 -06:00
sam c2c257ace7 📺 BTT SKR Mini E3 with Fysetc V2.1 / MKS V3 / BTT V1 Mini 12864 (#23793) 2022-02-26 16:48:59 -06:00
ellensp f7f29c6b5e MKS Robin Nano 3.1 (#23795) 2022-02-26 16:45:33 -06:00
ellensp 358ffddef8 🐛 ESP32 _delay_ms, fix u8g_esp32_spi.cpp (#23810) 2022-02-26 14:34:44 -06:00
tombrazier 87c4cd20e5 🐛 Fix steps-to-mm with backlash (#23814)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-02-26 14:30:33 -06:00
thinkyhead 103b5f1ead [cron] Bump distribution date (2022-02-25) 2022-02-25 06:07:00 +00:00
Scott Lahteine 1420427607 🎨 Move PROPORTIONAL_FONT_RATIO 2022-02-24 18:47:57 -06:00
thinkyhead 22b99a2e38 [cron] Bump distribution date (2022-02-23) 2022-02-23 18:03:44 +00:00
ellensp 28f65301cf 🔨 More renamed.ini envs (#23786) 2022-02-23 10:36:39 -06:00
thinkyhead 432927df01 [cron] Bump distribution date (2022-02-22) 2022-02-22 06:06:52 +00:00
Scott Lahteine 60c89709df 🐛 Ibid. 2022-02-21 23:07:09 -06:00
ellensp f03c367739 🐛 Fix TMC26X CS pins init (#23778) 2022-02-21 21:16:57 -06:00
Scott Lahteine 92f85e877d 🔨 Workspace file with recommendation 2022-02-21 20:54:43 -06:00
Keith Bennett 6b96636b9b 🔧 Warning for MK3_FAN_PINS (#23727) 2022-02-21 20:47:53 -06:00
Scott Lahteine 963049ddc3 Dyze Design PT100 Amplifier Board (#23760) 2022-02-21 19:56:12 -06:00
Scott Lahteine 9530df4816 📝 Update Toolchange FS comments 2022-02-21 19:56:12 -06:00
tombrazier 8f8427ec8f ️ Apply PTC on all probing (#23764)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-02-21 19:15:52 -06:00
ellensp a9682f2e97 📌 Creality RAMPS optional SD_DETECT_PIN (#23740)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-02-21 18:31:44 -06:00
thinkyhead 28ceb1ed0f [cron] Bump distribution date (2022-02-19) 2022-02-19 00:25:05 +00:00
Scott Lahteine 44eff9a233 ♻️ Refactor HAL as singleton (#23357) 2022-02-18 14:38:23 -06:00
GHGiampy fee85b318e ✏️ Fix getLFNName parameter (#23752) 2022-02-17 18:45:42 -06:00
jefflessard cba8d4f401 🚨 Fix TEMP_SENSOR_BOARD warnings (#23754) 2022-02-17 18:44:41 -06:00
ellensp 3ec5bbfb13 🐛 Fix HAS_TMC26X feature path (#23757) 2022-02-17 18:37:22 -06:00
thinkyhead 2ba1153fd8 [cron] Bump distribution date (2022-02-18) 2022-02-18 00:23:00 +00:00
Scott Lahteine 7b25b9ec5b 🐛 Patch Creality RAMPS FET / FAN pins
Improvement for multi-hotend setup by TH3D.
2022-02-17 14:41:56 -06:00
thinkyhead 10c0b9423d [cron] Bump distribution date (2022-02-17) 2022-02-17 00:19:04 +00:00
Simon Pilepich 5439da6775 🧑‍💻 Update MightyBoard FET pins (#23728) 2022-02-15 20:46:09 -06:00
thinkyhead e507aa09c5 [cron] Bump distribution date (2022-02-16) 2022-02-16 00:19:06 +00:00
Scott Lahteine 98a17cd60d ♻️ Rename XATC z_values => z_offset 2022-02-15 15:09:09 -06:00
Giuseppe499 aae08e9b0d 🐛 Fix XATC divide-by-zero (#23743) 2022-02-15 13:21:05 -06:00
thinkyhead cd4c1be641 [cron] Bump distribution date (2022-02-14) 2022-02-14 00:20:02 +00:00
InsanityAutomation 03516f0519 ♻️ No ui.reinit_lcd on any ExtUI (#23722)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-02-13 13:44:24 -06:00
Scott Lahteine e8cc050e90 📝 Update conditionals descriptions 2022-02-13 13:12:44 -06:00
Scott Lahteine cf013a7f3e 🔧 HAS_LCDPRINT conditional 2022-02-13 12:55:26 -06:00
thinkyhead cda4682861 [cron] Bump distribution date (2022-02-12) 2022-02-12 00:21:36 +00:00
John Robertson b4d3e1da34 More Nozzle Park move options (#23158)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-02-11 15:04:47 -06:00
ellensp 26e4f70d7c ✏️ Fix E3V2 display with BTT SKR Mini E3 v3 (#23719) 2022-02-11 13:50:07 -06:00
ellensp fb86b6b3e3 🚸 Align MKS UI heated bed status with HAS_MULTI_HOTEND (#23718) 2022-02-11 13:39:34 -06:00
Scott Lahteine df98bd26b3 💥 Change 'M42 M' to 'M42 T' 2022-02-11 09:36:52 -06:00
thinkyhead be8f4f47f9 [cron] Bump distribution date (2022-02-11) 2022-02-11 00:19:49 +00:00
Scott Lahteine 3d2b2ca790 🎨 Misc. DGUS cleanup 2022-02-10 16:08:04 -06:00
Thomas White f2d1770cee Pxmalion Core i3 (#23711) 2022-02-10 14:02:45 -06:00
Scott Lahteine 267a44c95c 🧑‍💻 Wrap MMU1 pins 2022-02-10 13:58:50 -06:00
espr14 5520aa3a10 🩹 Simplify quick homing feedrate (#23714)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2022-02-10 13:28:38 -06:00
Mads Ynddal 191d25f917 🐛 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:02:31 -06:00
thinkyhead ae96892612 [cron] Bump distribution date (2022-02-10) 2022-02-10 00:20:36 +00:00
MOHAMMAD RASIM a323d6732b 🚸 Fix, Improve Power-Loss Recovery (#22828)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2022-02-09 12:29:34 -06:00
ellensp 0a24f858f3 🚸 Restore active tool after ABL G29 (#23692)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-02-09 10:46:53 -06:00
thinkyhead 1e18ce6e5d [cron] Bump distribution date (2022-02-09) 2022-02-09 00:23:37 +00:00
Scott Lahteine 2d04e5733a 🧑‍💻 Drop hostui.flag 2022-02-08 18:02:28 -06:00
Taylor Talkington 7763f9385d Optional HOST_STATUS_NOTIFICATIONS (#22833) 2022-02-08 17:36:06 -06:00
Scott Lahteine f84eb27c4c 🔧 Update MIXING_EXTRUDER sanity checks
Fixing #23693
2022-02-08 17:03:38 -06:00
thinkyhead 067faaceb1 [cron] Bump distribution date (2022-02-08) 2022-02-08 00:29:22 +00:00
InsanityAutomation c2fa7e5942 PLR accessors for Ext UI (#23687) 2022-02-07 16:24:46 -06:00
InsanityAutomation 3e93def08e 🩹 Fix Maple HAL compile errors (#23685) 2022-02-07 16:22:18 -06:00
ellensp 569f867ea9 🚨 Cleaner errors for renamed envs (#23690) 2022-02-07 14:50:08 -06:00
InsanityAutomation a8f95e3252 🧑‍💻 Generic Maple STM32F103RC envs for devs (#23686) 2022-02-07 14:40:14 -06:00
thinkyhead 029ff158bc [cron] Bump distribution date (2022-02-07) 2022-02-07 00:19:00 +00:00
Bob Kuhn d987e23d5b 🐛 Fix init of delta safe height (for G29, G33, etc.) (#23622) 2022-02-06 08:35:18 -06:00
thinkyhead dd4f93f90b [cron] Bump distribution date (2022-02-06) 2022-02-06 00:23:02 +00:00
ellensp a8f3810f39 🐛 Fix missing u8g_esp32_spi (#23562) 2022-02-05 10:52:18 -06:00
Scott Lahteine 0564cb188f 🚸 Enhanced UI => Professional UI - with updates (#23624) 2022-02-05 10:30:17 -06:00
GHGiampy 6af5cb295c 🔨 Clean up upload.py (#23679) 2022-02-05 10:23:44 -06:00
John Lagonikas 57cee04c89 🐛 Fix dual MAX31865 initialization issues (#23496) 2022-02-04 19:10:59 -06:00
Bob Kuhn 668020777f 🩹 Prevent Z error with UBL + Park unscaled E move (#23568) 2022-02-04 19:00:35 -06:00
ellensp 385b0c0106 🚨 Deprecate Maple build (#23661) 2022-02-04 18:51:00 -06:00
GHGiampy 5439a34c4b 🩹 Init brightness/contrast later (#23645) 2022-02-04 18:44:21 -06:00
Stephen Hawes 1be3b8df4a 🐛 Fix Index Mobo Rev03 upload (#23676) 2022-02-04 18:42:15 -06:00
Kelroy f61f8e3022 SAMD51 Bricolemon / Bricolemon Lite boards (#23658) 2022-02-04 18:40:35 -06:00
thinkyhead f2973ebd5f [cron] Bump distribution date (2022-02-05) 2022-02-05 00:15:43 +00:00
Bruno Henrique de Paula d99d0c8a10 📌 Distinct BOARD_CREALITY_V422 (#23674) 2022-02-04 15:57:43 -06:00
Bones 076d8e83ea Add ZRIB v53, patch G35 Z drop, related issues (#23636) 2022-02-04 15:52:57 -06:00
Scott Lahteine a1ffd59931 🧑‍💻 Relocate a variant 2022-02-04 15:49:39 -06:00
Bob Kuhn 7ef9e6df98 🐛 Fix RUMBA + MKS Mini12864 Neopixel pin (#23646) 2022-02-04 13:34:48 -06:00
Mike La Spina 71d54dab3c 🍻 STM32 set_pwm_duty "on/off" for digital pins (#23665) 2022-02-04 13:33:52 -06:00
Scott Lahteine f2a83bc245 💡 Comment variant timers 2022-02-04 12:40:26 -06:00
thinkyhead d5d3f28bfe [cron] Bump distribution date (2022-02-04) 2022-02-04 18:04:39 +00:00
Mike La Spina 8e8409ed67 🔧 Sanity-check AVR D9 Fan PWM / SPEAKER Timer2 (#23672) 2022-02-04 10:45:34 -06:00
ellensp 1636325b72 🐛 Creality v4 cleanup, pin correction (#23666) 2022-02-04 10:24:38 -06:00
thinkyhead e4658c321f [cron] Bump distribution date (2022-02-02) 2022-02-02 00:20:21 +00:00
GHGiampy f07fc7e96f 🚸 Case Light, LED menus for E3V2 DWIN Enhanced UI (#23590) 2022-02-01 17:35:38 -06:00
Scott Lahteine 1d35bb5d33 🔧 Board temp sensor check 2022-02-01 17:28:29 -06:00
Maeyanie b637617deb 🐛 Fix M852 report (#23660) 2022-02-01 17:27:14 -06:00
thinkyhead c61a692e7f [cron] Bump distribution date (2022-02-01) 2022-02-01 00:19:16 +00:00
Timothy Hoogland 59dbf27385 🐛 Fix EZBoard V2 Environment for OpenBLT (#23659) 2022-01-31 14:02:07 -06:00
thinkyhead a1cfb15e40 [cron] Bump distribution date (2022-01-30) 2022-01-30 12:26:01 +00:00
ellensp 69c7b8c1de 🐛 Fix FYSETC S6, S6 V2 Serial RX pins (#23642) 2022-01-30 05:34:03 -06:00
Mike La Spina 127a3ad831 🐛 Fix AVR 644/1284 Timer / PWM conflicts (#23629) 2022-01-30 05:31:56 -06:00
Timothy Hoogland 566b26a72e 🐛 Fix EZBoard V2 timer conflict (#23648) 2022-01-30 05:26:37 -06:00
thinkyhead 79fea49868 [cron] Bump distribution date (2022-01-28) 2022-01-28 00:18:24 +00:00
Scott Lahteine afdaa17964 🧑‍💻 Simplify Fast PWM timer macros 2022-01-27 07:05:26 -06:00
thinkyhead 7b12f985d3 [cron] Bump distribution date (2022-01-27) 2022-01-27 00:18:30 +00:00
Mike La Spina 7fb65309aa 🐛 Fix SPI DMA and default mode (#23627)
Followup to #23464
2022-01-26 14:01:22 -06:00
Scott Lahteine 9c1eaafe88 📝 Update Creality 4.2.2 driver warning 2022-01-26 13:40:29 -06:00
Keith Bennett 5b35f3a955 🚸 Better "Bed Tramming Done" dialog (#23616)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2022-01-26 12:33:10 -06:00
thinkyhead 9eab577765 [cron] Bump distribution date (2022-01-26) 2022-01-26 02:01:35 +00:00
Scott Lahteine 91c7db027f BOARD_CREALITY_V24S1_301 (#23620)
Co-Authored-By: Miguel Risco-Castillo <mriscoc@users.noreply.github.com>
2022-01-25 18:33:30 -06:00
ellensp b44263eb5b FYSETC TFT81050 CI Test (#23604) 2022-01-25 18:08:15 -06:00
Scott Lahteine 7af8e23254 ✏️ Fix MKS enum 2022-01-25 17:22:16 -06:00
Scott Lahteine ab46b7e2f2 🧑‍💻 HAS_MARLINUI_MENU, HAS_MANUAL_MOVE_MENU 2022-01-25 15:47:37 -06:00
thinkyhead 231150ab77 [cron] Bump distribution date (2022-01-25) 2022-01-25 12:11:56 +00:00
Timofey Titovets 5b9afdfb25 ️ Tuned Thermistor 66 (T-D500) (#23585) 2022-01-25 03:36:09 -06:00
Lars 8badf2d71f 🐛 Fix DGUS_Reloaded G-code execution (#23592) 2022-01-25 03:30:45 -06:00
Keith Bennett 7f97ba9cdb 🐛 Fix Creality DWIN LCD with SKR Mini E3 V3 (#23593) 2022-01-25 03:25:19 -06:00
DejitaruJin 539a893694 🩹 Fix DWIN float debugging (#23601) 2022-01-25 02:52:23 -06:00
Keith Bennett f6ea8d1185 🔨 Creality RCT6 (256K) variants (#23599)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-01-25 02:09:53 -06:00
thinkyhead 02b01c773e [cron] Bump distribution date (2022-01-22) 2022-01-22 18:04:48 +00:00
Scott Lahteine 8169253a7d 🧑‍💻 Fix up some AUX / EXP pins (#23577) 2022-01-22 10:19:26 -06:00
Mike La Spina f6e8622360 🐛 Fix LCD contrast/brightness init (#23567)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-01-22 10:16:41 -06:00
Scott Lahteine d5f2334140 ♻️ Adjust LCD init, contrast default, settings load 2022-01-22 10:14:47 -06:00
thinkyhead 37ee9a47ab [cron] Bump distribution date (2022-01-21) 2022-01-21 00:17:50 +00:00
John Lagonikas 7415c38790 🩹 Fix power.h compile (#23573) 2022-01-20 05:58:36 -06:00
Scott Lahteine 900bcbeeca 🩹 BOARD_INIT followup 2022-01-19 18:33:56 -06:00
thinkyhead 56f065db05 [cron] Bump distribution date (2022-01-20) 2022-01-19 18:33:56 -06:00
Scott Lahteine 4686dc4c81 🧑‍💻 Add chmod to mfprep 2022-01-19 05:12:03 -06:00
Scott Lahteine a963c5f9f3 🩹 Fix Robin Nano BOARD_INIT 2022-01-19 05:11:18 -06:00
Scott Lahteine 0f2ba5b92b 📝 Tweak G26 Q description 2022-01-19 03:31:36 -06:00
Scott Lahteine 5179f55bf9 🎨 LCD_SCREEN_ROT_* => LCD_SCREEN_ROTATE 2022-01-19 03:28:19 -06:00
Scott Lahteine fd595aa01b 🎨 Misc. style and cleanup 2022-01-19 02:20:32 -06:00
John Lagonikas 0aea3ae058 🐛 Fix conditional M81 suicide (#23549) 2022-01-19 02:13:47 -06:00
thinkyhead 383afd79bc [cron] Bump distribution date (2022-01-19) 2022-01-19 00:18:14 +00:00
Scott Lahteine 18e1128f70 📌 RAMPS AUX 1-2 headers (#23544) 2022-01-18 03:18:37 -06:00
Fahad Alduraibi e9ef609b07 🐛 Fix RAMPS 1.4 Plus EXP headers (#23523) 2022-01-18 03:16:39 -06:00
Salvatore Bramante df69d72273 🐛 Fix Octopus v1.x probe pin (#23548) 2022-01-18 03:09:06 -06:00
Scott Lahteine e2446dc561 💥 Generalize extra debugging 2022-01-18 03:01:09 -06:00
Keith Bennett 8c83ddd201 🔨 Suppressible CONFIGURATION_EMBEDDING warning (#23545) 2022-01-18 02:30:52 -06:00
GHGiampy 1e246d65ad Long filename open/create/write (#23526)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2022-01-18 00:56:11 -06:00
thinkyhead 0c0ba6db7d [cron] Bump distribution date (2022-01-18) 2022-01-18 00:21:03 +00:00
Taylor Talkington d8f73997b6 💄 Improve Ender3 v2 DWIN MarlinUI (#23369)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-01-17 07:07:45 -06:00
John Lagonikas 830d728ec1 🚸 Suppressible pin warnings (#23530)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-01-17 06:56:25 -06:00
thinkyhead b9eef9ffb4 [cron] Bump distribution date (2022-01-17) 2022-01-17 12:13:17 +00:00
zerkix 9285b6b9ed 🐛 Finish and organize temp sensors (#23519)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-01-17 00:14:35 -06:00
Anson Liu af93dbfb4f 🐛 Fix Ultimain 2 E-autofan pin mapping (#23466) 2022-01-16 23:39:09 -06:00
Miguel Risco-Castillo 6cfa011c10 🐛 Fix PLR for E3V2 Enhanced UI (#23543) 2022-01-16 23:36:03 -06:00
Taylor Talkington 3315ff8856 💄 MarlinUI+DOGM leveled bed bitmaps (#23539) 2022-01-16 23:34:50 -06:00
Scott Lahteine 9778b67e84 🩹 Fan speed followup 2022-01-15 23:17:39 -06:00
A. Herlas cc87695ae7 Z Offset Wizard for TFT_LVGL_UI (English) (#23489) 2022-01-15 23:08:31 -06:00
Sola c79174e862 ️ SPI+DMA+interrupt method (STM32 / MKS UI) (#23464) 2022-01-15 23:07:37 -06:00
Mike La Spina 09909512d7 🐛 Fix, improve PWM on AVR (#23520) 2022-01-15 23:05:53 -06:00
thinkyhead 213b5d0d38 [cron] Bump distribution date (2022-01-16) 2022-01-16 01:11:43 +00:00
thinkyhead da8e21f1a6 [cron] Bump distribution date (2022-01-15) 2022-01-15 01:06:49 +00:00
Scott Lahteine 80e978ec8a 🔧 Skip unused axis names 2022-01-14 06:16:14 -06:00
George Fu d225445ab1 🔨 Set upload_command for CHEETAH v20 (#23515) 2022-01-14 04:10:35 -06:00
Scott Lahteine 7bc9d15514 🩹 Followup to extra axes 2022-01-14 03:43:14 -06:00
Scott Lahteine 40481947fc 🧑‍💻 Misc. updates for extra axes (#23521) 2022-01-14 03:14:13 -06:00
thinkyhead 70d3607f56 [cron] Bump distribution date (2022-01-14) 2022-01-14 01:09:42 +00:00
thinkyhead 498b4b3440 [cron] Bump distribution date (2022-01-13) 2022-01-13 01:10:52 +00:00
Mike La Spina 2cfde39eca 🐛 Fix, improve PWM on AVR (#23463) 2022-01-12 17:28:53 -06:00
Keith Bennett 3e2a38b653 📝 KHz => kHz (#23512) 2022-01-12 10:24:56 -06:00
Lefteris Garyfalakis 9086082c1f 🚸 Fix E3V2 Enhanced UI time labels (#23502) 2022-01-12 10:22:00 -06:00
Jim Watson e16813d713 🐛 Fix SHOW_REMAINING_TIME compile (#23503) 2022-01-12 10:13:21 -06:00
ellensp 3d79b55c15 🚑️ Fix M105 regression (#23505)
Fixes #23504
2022-01-12 09:57:36 -06:00
ellensp a058a8a8b2 🐛 Fix Arduino build issues (#23510) 2022-01-12 09:53:36 -06:00
Scott Lahteine 84ed749954 🧑‍💻 Move PB0 init for MKS_ROBIN_NANO 2022-01-12 09:47:44 -06:00
Scott Lahteine 24d1d3eb5c 💡 Misc. cleanup, comments 2022-01-12 09:47:44 -06:00
thinkyhead 89f1391306 [cron] Bump distribution date (2022-01-12) 2022-01-12 01:07:56 +00:00
Scott Lahteine ab797a0995 🎨 Misc. spindle/laser adjustments 2022-01-10 20:29:09 -06:00
Scott Lahteine 07bffdf4bc 🧑‍💻 Adjust FastIO AVR timer enums, macros 2022-01-10 20:28:12 -06:00
Scott Lahteine 02b29c0fec 📝 kHz => KHz 2022-01-10 19:49:03 -06:00
thinkyhead 476028d476 [cron] Bump distribution date (2022-01-11) 2022-01-11 01:09:12 +00:00
mistic100 2ded50ba3f 🚸 Wait for cooldown in MarlinUI power-off (#23476) 2022-01-10 07:08:41 -06:00
Scott Lahteine 224b6e5af9 🩹 Fix some logical axis usage 2022-01-10 05:51:16 -06:00
Scott Lahteine 08b6597471 🎨 Followup to #23462 2022-01-10 04:49:03 -06:00
Scott Lahteine 9665a4434c 🧑‍💻 Fewer string macros 2022-01-10 02:51:50 -06:00
DerAndere a719020348 🚸 Include extra axes in position report (#23490) 2022-01-10 02:44:16 -06:00
thinkyhead 0dfc17ca60 [cron] Bump distribution date (2022-01-10) 2022-01-10 01:06:10 +00:00
Scott Lahteine 80128ae456 🌐 Update auto home axis strings 2022-01-09 04:39:15 -06:00
David Ross Smith 13adcd5c08 🚑️ Fix preheat target bug
Fixes Jyers/Marlin#1651
2022-01-09 04:07:19 -06:00
Roman Moravčík 797859cf55 🌐 Update Slovak language (#23475) 2022-01-09 03:51:16 -06:00
Tanguy Pruvot 27d252c80b 📌 Improve Longer3D fan PWM (#23477) 2022-01-09 03:49:39 -06:00
Scott Lahteine 75d1f975a8 🔨 Rename (not copy) with board_build.rename 2022-01-09 03:48:17 -06:00
Miguel Risco-Castillo 6ce0c682bb 🚸 BLTouch HS menu item for DWIN Enhanced UI (#23480) 2022-01-09 02:37:09 -06:00
Miguel Risco-Castillo e0d19f9f41 🐛 Fix EEPROM_INIT_NOW build hash test (#23479) 2022-01-09 01:29:36 -06:00
Miguel Risco-Castillo 0026430835 🩹 Reset DWIN CrealityUI print progress on start (#23481) 2022-01-09 01:24:56 -06:00
GHGiampy 1363b43946 Firmware Upload via Binary Transfer (#23462) 2022-01-09 01:14:03 -06:00
Scott Lahteine 54f218e348 🔨 Get FIRMWARE_BIN from env 2022-01-09 01:06:19 -06:00
thinkyhead 5a9755e5bb [cron] Bump distribution date (2022-01-09) 2022-01-09 01:10:43 +00:00
ClockeNessMnstr 3949142214 🚸 Do G34 "Z Backoff" at full current 2022-01-08 14:09:25 -06:00
thinkyhead 9564d68484 [cron] Bump distribution date (2022-01-08) 2022-01-08 01:06:56 +00:00
thinkyhead 3eb794d6d5 [cron] Bump distribution date (2022-01-07) 2022-01-07 01:13:26 +00:00
jdegenstein 73624133c9 📌 LCD_FOR_MELZI for BTT E3 RRF (#23453) 2022-01-06 19:03:02 -06:00
Lefteris Garyfalakis 4d28c9d12b 🌐 Localize E3V2 Enhanced UI (#23424) 2022-01-06 05:30:41 -06:00
Anson Liu e99d95b770 📺 Tune ULTI_CONTROLLER encoder, enable PCA9632 (#23461) 2022-01-06 05:26:12 -06:00
Scott Lahteine 1bd921d6a6 🎨 Misc. cleanup, comments 2022-01-06 05:10:56 -06:00
Kyle Hu 8e490e84be 🐛 Fix Artillery Ruby (startup code, build flags) (#23446) 2022-01-06 01:54:04 -06:00
thinkyhead 15936d32f5 [cron] Bump distribution date (2022-01-06) 2022-01-06 01:13:30 +00:00
Scott Lahteine 9140016e02 🐛 Fix X2_HOME_TO_* 2022-01-05 11:50:53 -06:00
Mike La Spina 4ceba981b1 🐛 Define required endstop enums (#23425) 2022-01-05 06:14:40 -06:00
John Lagonikas 1fe07bf365 🩹 Fix M80, 1s delay (#23455) 2022-01-05 05:57:32 -06:00
Scott Lahteine c55b66bece 🔨 Strip CR in mftest > awk 2022-01-05 01:52:34 -06:00
Scott Lahteine cc919ae899 🐛 Fix strlen_P parameter error
Fixes #23447
2022-01-05 01:52:34 -06:00
thinkyhead e379a46639 [cron] Bump distribution date (2022-01-05) 2022-01-05 01:09:13 +00:00
thinkyhead e1ab7f3b75 [cron] Bump distribution date (2022-01-04) 2022-01-04 01:07:15 +00:00
John Lagonikas 9a194826e3 M81 D / S - Power-off Delay (#23396) 2022-01-03 10:11:39 -06:00
Scott Lahteine b8a376a28a 🩹 Fix RADDS+RRD encoder button 2022-01-03 09:18:10 -06:00
hwmland 90fc120182 🩹 RAMPS FET order overridable, E + Laser (#23428) 2022-01-02 23:54:12 -06:00
Jason Smith 554a2fc84a ⬆️ Assert newer GCC in PIO via atmelavr@~3.4 (#23432) 2022-01-02 23:27:22 -06:00
Jason Smith 6fd48a9881 💚 Fix Teensy CI test (#23433) 2022-01-02 21:17:19 -06:00
thinkyhead 397c751d55 [cron] Bump distribution date (2022-01-03) 2022-01-03 01:06:21 +00:00
Scott Lahteine e65c12cf96 🧑‍💻 Apply axis conditionals 2022-01-02 09:26:34 -06:00
Scott Lahteine 91909163ee 🚨 Fix M906 warning 2022-01-02 09:22:28 -06:00
Mike La Spina d007c1b835 🔧 Normal FET layout with Spindle/Laser (#23409) 2022-01-02 02:23:55 -06:00
Jason Smith e37fe85667 🔧 Update deprecated auto_build.py (#23427) 2022-01-02 02:19:10 -06:00
Johannes Hörmann cb96f9d6c0 🔨 Upload to Optiboot at 115200 (#23403) 2022-01-01 23:46:55 -06:00
Scott Lahteine 6fbfeb6801 M919 : Chopper Timing (#23400) 2022-01-01 22:57:26 -06:00
Scott Lahteine 09ccaa5051 🔨 Add .vscode/extensions.json 2022-01-01 22:57:26 -06:00
thinkyhead 08aacb822a [cron] Bump distribution date (2022-01-02) 2022-01-02 01:09:36 +00:00
John Lagonikas 63f71d85f2 Temperature variance monitor (#23373) 2022-01-01 18:18:07 -06:00
thinkyhead 4de84031d8 [cron] Bump distribution date (2022-01-01) 2022-01-01 01:08:17 +00:00
Jason Smith 6182849255 Do not warn about CONFIGURATION_EMBEDDING if it wasn't enabled (#23408)
Warnings.cpp was warning about `CONFIGURATION_EMBEDDING` on AVR boards even if it wasn't enabled. Check the status of the feature before auto-disabling and warning about it.
2021-12-31 12:32:28 -08:00
Scott Lahteine b07887687e 🚑️ Fix thermal conditionals, structure 2021-12-31 08:04:31 -06:00
Robby Candra ead693b1a4 🔧 DWIN_MARLINUI sanity checks (#23399) 2021-12-31 02:22:49 -06:00
Scott Lahteine ff46d7cae2 🐛 Fix "no T param" handling 2021-12-31 02:03:33 -06:00
thinkyhead c1410020ab [cron] Bump distribution date (2021-12-31) 2021-12-31 01:07:37 +00:00
ellensp 67521bdd01 🐛 Fix RRW Keypad & Zonestar buttons (#23388) 2021-12-30 01:35:22 -06:00
GHGiampy 6e8c671511 🩹 Fix Enhanced UI max E speed (#23387) 2021-12-29 22:37:07 -06:00
thinkyhead 9edddd18ad [cron] Bump distribution date (2021-12-30) 2021-12-30 01:05:16 +00:00
Scott Lahteine 88a6e5b691 🩺 Assert FAN_SOFT_PWM where required (#23383) 2021-12-29 04:17:41 -06:00
Scott Lahteine 755c10d303 🎨 Simplify some debug echos 2021-12-29 03:41:28 -06:00
Lefteris Garyfalakis 16a1a55cea 🎨 E3V2 corner leveling => tramming (#23375) 2021-12-28 21:22:01 -06:00
thinkyhead 6d1eaa0efa [cron] Bump distribution date (2021-12-29) 2021-12-29 01:05:01 +00:00
Scott Lahteine f3b8b0b5b9 🚚 Rename L6470 G-code file 2021-12-28 18:29:05 -06:00
Scott Lahteine 6fb2d8a25f 🧑‍💻 Remove extraneous 'inline' hints 2021-12-28 06:07:55 -06:00
Scott Lahteine 33fa3aba10 🩺 Check some axis-parameter collisions 2021-12-28 06:07:14 -06:00
Scott Lahteine 13ce5aa1ed 🎨 Misc. cleanup 2021-12-28 06:03:12 -06:00
Scott Lahteine 02b4e48c6d 🚸 Refine stepper-driver-related G-codes (#23372) 2021-12-28 05:43:10 -06:00
Scott Lahteine 2351b0df84 🧑‍💻 Add AXIS_COLLISION to catch broken parameters 2021-12-28 05:02:50 -06:00
Miguel Risco-Castillo d58daaa42c 🚸 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
2021-12-27 23:23:50 -06:00
Scott Lahteine 761b1b93c6 📝 Consistent pin header orientation 2021-12-27 20:52:43 -06:00
thinkyhead c5b74319e7 [cron] Bump distribution date (2021-12-28) 2021-12-28 01:05:31 +00:00
Scott Lahteine c160a57397 📌 Define MKS Monster8 pins for MKS_MINI_12864
Fixes #23324
2021-12-27 17:40:53 -06:00
Ave6683 d557db8425 MagLev V4 probe by MDD (#23192) 2021-12-27 15:28:27 -06:00
Scott Lahteine 3f6147fe85 🐛 Fix mffp usage 2021-12-27 14:30:15 -06:00
Scott Lahteine 9345eedb64 🎨 Clean up ST Eval 3DP001 V1 pins 2021-12-27 14:30:01 -06:00
thinkyhead 7d462915b3 [cron] Bump distribution date (2021-12-27) 2021-12-27 01:05:53 +00:00
Scott Lahteine 56ac681727 🎨 Pins and SDIO cleanup 2021-12-26 03:33:14 -06:00
EvilGremlin 7762df7251 🔧 Check Chiron LCD requirements (#23353)
Co-Authored-By: EvilGremlin <22657714+EvilGremlin@users.noreply.github.com>
2021-12-26 00:46:13 -06:00
Scott Lahteine 6a8b9274a3 ️ Refactor still needs work
Reverting #23295
2021-12-25 23:15:17 -06:00
Scott Lahteine 00e6e90648 🐛 Fix adc_start for AVR, native
Followup to #23295
2021-12-25 22:10:47 -06:00
Keith Bennett 555c749fe2 🐛 Fix MKS Robin E3 NeoPixel pin default (#23350) 2021-12-25 21:41:01 -06:00
Robby Candra a47f559db1 🐛 HAL refactor followup (#23354) 2021-12-25 21:36:09 -06:00
Scott Lahteine 57315f02cb 🐛 Fix missing ADC method 2021-12-25 21:27:28 -06:00
kaidegit d7af619936 🐛 Fix open for bin rename (#23351) 2021-12-25 20:12:20 -06:00
Scott Lahteine 4f0932e5c1 🐛 Fix freeMemory endless loop
Followup to #23295
2021-12-25 20:00:48 -06:00
thinkyhead bdb071688e [cron] Bump distribution date (2021-12-26) 2021-12-26 01:09:46 +00:00
Scott Lahteine fca6d12093 🔧 Move MOTHERBOARD closer to top 2021-12-25 03:27:45 -06:00
fflosi c74161c011 Per-axis TMC hold multiplier (#23345) 2021-12-25 02:57:07 -06:00
Scott Lahteine a941cd33e2 🔨 Configurable firmware bin filename
Configuration.h > FIRMWARE_BIN
2021-12-24 23:47:52 -06:00
Scott Lahteine e211ff148c ♻️ Refactor HAL as singleton (#23295) 2021-12-24 21:33:59 -06:00
Scott Lahteine 532f21f96f 🔨 Ignore sublime workspace file 2021-12-24 21:32:00 -06:00
Scott Lahteine cd1920b350 🔨 Ignore cmake generated build folder 2021-12-24 21:00:32 -06:00
thinkyhead 6d09d1d7fb [cron] Bump distribution date (2021-12-25) 2021-12-25 01:04:01 +00:00
Scott Lahteine d5dff1948d 🔧 Sanity check MMU2_MENUS 2021-12-24 01:46:51 -06:00
Sola 21cd715506 MKS TinyBee board support (#23340)
Co-Authored-By: Sola <42537573+solawc@users.noreply.github.com>
2021-12-24 00:03:32 -06:00
Attila BODY 80a537cd13 🐛 Fix Robin Nano v3 filament runout pins (#23344)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-12-23 23:57:20 -06:00
thinkyhead ca0215ba64 [cron] Bump distribution date (2021-12-24) 2021-12-24 01:04:40 +00:00
MrAlvin df9eb566c7 🚸 Show mm'ss during first hour (#23335)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-12-23 03:47:52 -06:00
Robby Candra 3e737cbc91 🔧 Group FAST_PWM_FAN.options (#23331)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-12-23 02:19:39 -06:00
Tanguy Pruvot da67deb621 ✏️ Fix missing brace (#23337)
Followup to #22916

Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-12-23 01:32:27 -06:00
Tanguy Pruvot 1b876c170f 🩹 Fix settings G21 report (#23338) 2021-12-23 00:49:15 -06:00
thinkyhead c80ef71c6b [cron] Bump distribution date (2021-12-23) 2021-12-23 01:05:31 +00:00
InsanityAutomation 2893048e29 BLTouch High Speed mode runtime configuration (#22916)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-12-21 22:09:55 -06:00
ellensp c1dba3d028 Option to reset EEPROM on first run (#23276)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-12-21 20:44:04 -06:00
thinkyhead fdd37a84a2 [cron] Bump distribution date (2021-12-22) 2021-12-22 01:07:10 +00:00
ellensp 9cee626812 🐛 Fix Chitu Z_STOP_PIN (#23330) 2021-12-21 18:48:38 -06:00
Mike La Spina f374fa0eb8 🚑️ FAST_PWM_FAN default 1KHz base freq. (#23326)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-12-21 01:26:31 -06:00
thinkyhead b06f871dd0 [cron] Bump distribution date (2021-12-21) 2021-12-21 01:08:00 +00:00
GHGiampy ba32391454 🧑‍💻 Option allowing > 127 Neopixels (#23322) 2021-12-20 02:44:43 -06:00
Scott Lahteine 9d42755068 🎨 Update SKR V2 pins 2021-12-19 21:47:50 -06:00
thinkyhead a055898870 [cron] Bump distribution date (2021-12-20) 2021-12-20 01:06:18 +00:00
Spencer Owen ecaebe4363 Creality3D V4.2.3 / Ender-2 Pro board (#23307) 2021-12-18 19:58:46 -06:00
thinkyhead 14ceccdbc6 [cron] Bump distribution date (2021-12-19) 2021-12-19 01:26:05 +00:00
Scott Lahteine daec6c6bb9 📝 Fix a config comment 2021-12-18 17:38:29 -06:00
Robby Candra b4727411d5 🐛 Fix loud_kill heater disable (#23314) 2021-12-18 16:33:21 -06:00
thinkyhead b16b1d1fc7 [cron] Bump distribution date (2021-12-18) 2021-12-18 01:07:50 +00:00
John Lagonikas 504e6fd786 🔧 Warning for IGNORE_THERMOCOUPLE_ERRORS (#23312) 2021-12-17 17:31:10 -06:00
Scott Lahteine 9d2441f951 ✏️ cleanup 2021-12-17 15:57:16 -06:00
thinkyhead a994a318ba [cron] Bump distribution date (2021-12-17) 2021-12-17 01:06:28 +00:00
Robby Candra 6dc056f771 🐛 Fix UTF-8 errror in configuration embed and retrieve (#23303)
The feature added in commit b464a4b1a4 introduced a UTF-8 encoding error for all users where UTF-8 is not the default codepage.
2021-12-15 21:04:32 -08:00
thinkyhead 5f9140cccd [cron] Bump distribution date (2021-12-16) 2021-12-16 01:03:49 +00:00
thinkyhead 2175d8aaee [cron] Bump distribution date (2021-12-15) 2021-12-15 01:03:24 +00:00
Robby Candra e57b7d043c 🚸 Change "SD" to "Media" or "SD/FD" (#23297) 2021-12-14 18:51:19 -06:00
ellensp a4678d9e27 🐛 Fix LCD_BED_LEVELING compile (#23298) 2021-12-14 00:25:28 -06:00
X-Ryl669 b464a4b1a4 Configurations embed and retrieve (#21321) 2021-12-14 00:22:06 -06:00
thinkyhead bf21bc9ee5 [cron] Bump distribution date (2021-12-14) 2021-12-14 01:25:36 +00:00
Giuliano Zaro 1dd9adbfe4 🚸 Use M600 for disabled MMU (#21865) 2021-12-13 18:47:57 -06:00
Tanguy Pruvot 8277f3ca0d 🐛 Fix TFT_COLOR_UI Release Media issue (#23123) 2021-12-13 18:41:21 -06:00
ellensp eef9e04690 M115 flag EXTENDED_M20 (#22941) 2021-12-13 18:18:24 -06:00
ellensp dff18e2230 ✏️ Clean up duplicate defs (#23182) 2021-12-13 18:13:34 -06:00
Robby Candra 26689e1d85 🩹 Init fan speed at boot (#23181)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-12-13 18:11:52 -06:00
Scott Lahteine afce7d6dd5 🔧 Fix unknown board test 2021-12-13 16:15:46 -06:00
Robby Candra 9eb2a5f62c 🩹 Use EXTRUDER_AUTO_FAN_SPEED for _AUTOFAN_SPEED (#23180) 2021-12-13 16:07:44 -06:00
thinkyhead 82d569faa0 [cron] Bump distribution date (2021-12-13) 2021-12-13 01:04:05 +00:00
Scott Lahteine 1cff4fdb36 🩹 SD abort requires open file
See #22566
2021-12-12 16:22:14 -06:00
thinkyhead 60717927ac [cron] Bump distribution date (2021-12-12) 2021-12-12 01:06:58 +00:00
ellensp 5528927d71 🐛 Fix MARLIN_F103Rx variant SCK / MOSI pins (#23282) 2021-12-11 16:06:45 -06:00
thinkyhead aebf70cdae [cron] Bump distribution date (2021-12-11) 2021-12-11 01:03:00 +00:00
BigTreeTech 0077d982cd BigTreeTech SKR mini E3 V3.0 (STM32G0B1RET6) (#23283) 2021-12-10 13:38:03 -06:00
thinkyhead 1e637a8de2 [cron] Bump distribution date (2021-12-10) 2021-12-10 01:04:24 +00:00
Scott Alfter c3af6bd8ce Fix Endstops::report_states (#23280)
Fix regression 4d45fdf0eb
2021-12-09 01:20:10 -06:00
thinkyhead 1ccaad7a9b [cron] Bump distribution date (2021-12-09) 2021-12-09 01:03:55 +00:00
Scott Lahteine 4d45fdf0eb 🎨 Misc. probe / endstop cleanup 2021-12-08 18:57:28 -06:00
Sola 135683010a 🐛 Fix MKS LVGL UI retraction (#23267) 2021-12-08 13:37:45 -06:00
Robby Candra dfa1c26471 🩹 Coerce pin_t in set_pwm_duty macros (#23273) 2021-12-08 13:15:31 -06:00
Jason Smith 65e52c1150 🐛 Fix ACTION_ITEM with nullptr (#23195)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-12-08 13:10:37 -06:00
Robby Candra a84e0404e0 🚸 Onboard SD for SKR 2.0 / SKR PRO (#23274) 2021-12-08 12:57:50 -06:00
John Lagonikas 9e6ded3cdf 🐛 Fix and improve MAX31865 (#23215)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-12-08 12:55:09 -06:00
Scott Lahteine 0a64209305 🎨 Rename MAX31865 elements 2021-12-08 12:40:23 -06:00
thinkyhead 5d45aba550 [cron] Bump distribution date (2021-12-08) 2021-12-08 01:05:41 +00:00
Scott Lahteine 63d73bfafc ✏️ MAX31856 => MAX31865 2021-12-06 20:18:50 -06:00
Giuseppe499 a16a059312 X Twist Compensation & Calibration (#23238) 2021-12-06 19:53:51 -06:00
thinkyhead c67f7fb4df [cron] Bump distribution date (2021-12-07) 2021-12-07 01:06:09 +00:00
Mike La Spina ea0d0e8e8b 🩹 Fix non-PWM cutter compile (#23169) 2021-12-06 15:52:18 -06:00
Stuart Pittaway 6580e655fb 🐛 Fix TWIBus Wire.begin call (#23183) 2021-12-06 15:40:18 -06:00
thinkyhead ecd1ac7092 [cron] Bump distribution date (2021-12-06) 2021-12-06 01:04:44 +00:00
Chris Pepper a010c4d1c8 🐛 HAL_reboot for native HAL (#23246) 2021-12-05 16:18:02 -06:00
tommywienert fcb48598e2 🐛 Fix env:chitu_f103 (#23225) 2021-12-05 16:16:23 -06:00
ellensp 4d0880c74d 📌 More Longer3D LKx Pro serial tests (#23260) 2021-12-05 15:42:56 -06:00
ladismrkolj 97400e54b9 🔧 Chamber Fan index option (#23262) 2021-12-05 15:41:39 -06:00
thinkyhead d6b332f4c7 [cron] Bump distribution date (2021-12-05) 2021-12-05 01:07:50 +00:00
Stuart Pittaway 363a17ac46 M3426 to read i2c MCP3426 ADC (#23184) 2021-12-04 17:47:08 -06:00
Scott Lahteine e6bbdd89b4 🔧 Cutter pins for SKR 2.0 2021-12-04 17:47:08 -06:00
Robby Candra 7daa76382f 🚸 Park nozzle on "loud kill" (#23172) 2021-12-04 17:47:08 -06:00
ellensp bfead67544 BigTree SKR 2 with F429 (#23177) 2021-12-04 16:10:29 -06:00
thinkyhead 36a04190a0 [cron] Bump distribution date (2021-12-04) 2021-12-04 01:02:04 +00:00
ellensp e949b4439b 🐛 Fix TIMER_TONE for ZM3E4 (#23212) 2021-12-03 14:48:54 -06:00
Mike La Spina 4411af655e 🏗️ Fix Maple HAL/STM32F1 PWM (#23211) 2021-12-03 12:48:48 -06:00
Tanguy Pruvot 2a1facf853 🏗️ Rework STM32 timer frequency protection (#23187) 2021-12-03 12:31:48 -06:00
thinkyhead e3d7274c84 [cron] Bump distribution date (2021-12-03) 2021-12-03 01:02:06 +00:00
thinkyhead b9ee84e8dc [cron] Bump distribution date (2021-12-02) 2021-12-02 01:02:43 +00:00
thinkyhead f46c76f360 [cron] Bump distribution date (2021-12-01) 2021-12-01 01:05:56 +00:00
Scott Lahteine c09641c7c0 🐛 Fix STM32 FastPWM 2021-11-30 15:04:05 -06:00
Jiri Jirus 1f5eaf29b9 🩹 Assume 4K EEPROM for RUMBA32 BTT (#23205) 2021-11-30 14:46:48 -06:00
Scott Lahteine 7ffada64ce 🐛 Fix STM32 FastPWM 2021-11-30 13:03:31 -06:00
thinkyhead 9e71f9baf9 [cron] Bump distribution date (2021-11-30) 2021-11-30 01:01:54 +00:00
thinkyhead a276c088e3 [cron] Bump distribution date (2021-11-29) 2021-11-29 01:01:36 +00:00
thinkyhead 1874787b6b [cron] Bump distribution date (2021-11-28) 2021-11-28 01:02:49 +00:00
Scott Lahteine 0539e870de 🎨 Rename HAL timer elements 2021-11-27 18:33:32 -06:00
Keith Bennett 09ee63caf1 ✏️ Fix Unicode (#23186) 2021-11-27 16:59:32 -06:00
Anson Liu 6fa278b741 🩹 UM2 extruder cooling fan on PJ6 (#23194) 2021-11-27 16:58:05 -06:00
Jason Smith 1861f780de 🩹 Handle nullptr in CardReader::printLongPath (#23197) 2021-11-27 15:54:39 -06:00
George Fu a3c4a5eca6 FYSETC Spider v2.2 (#23208) 2021-11-27 13:26:53 -06:00
Keith Bennett 716d741315 🐛 Swap BTT002 Tachometer Pins (#23199)
Followup to #23086
2021-11-27 13:23:23 -06:00
thinkyhead 47d3468251 [cron] Bump distribution date (2021-11-27) 2021-11-27 00:59:57 +00:00
thinkyhead 981ad44ded [cron] Bump distribution date (2021-11-26) 2021-11-26 01:00:27 +00:00
thinkyhead 9e7b9d01a1 [cron] Bump distribution date (2021-11-25) 2021-11-25 01:02:19 +00:00
Scott Lahteine a7549aac5c 🎨 Misc. issue review patches 2021-11-24 11:38:34 -06:00
thinkyhead b6a8cc06fa [cron] Bump distribution date (2021-11-24) 2021-11-24 01:01:07 +00:00
Keith Bennett f0e48ce104 📌 Biqu BX temporary framework workaround (#23131) 2021-11-23 15:54:31 -06:00
schmttc d4c78edfe3 EasyThreeD ET4000+ board and UI (#23080)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-11-23 15:52:18 -06:00
Giuliano Zaro 203047f859 🩹 Fix include path (#23150) 2021-11-23 15:33:33 -06:00
lukrow80 7bc18a7075 🐛 Fix homing current for extra axes (#23152)
Followup to #19112
2021-11-23 15:30:13 -06:00
John Robertson e5154ec281 MarkForged YX kinematics (#23163) 2021-11-23 15:24:24 -06:00
Robby Candra de398b4fd2 🐛 Fix serial_data_available (#23160) 2021-11-23 15:19:32 -06:00
Mike La Spina 5387ceba74 🐛 Fix STM32 set_pwm_duty (#23125) 2021-11-23 14:05:50 -06:00
Giuliano Zaro 7110d11c9d Fan tachometer support (#23086)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-11-23 14:01:53 -06:00
thinkyhead 430a4aec34 [cron] Bump distribution date (2021-11-23) 2021-11-23 01:01:29 +00:00
thinkyhead 0fbecf4aaf [cron] Bump distribution date (2021-11-22) 2021-11-22 01:05:17 +00:00
Keith Bennett 6ac0d4727c BigTreeTech Mini 12864 V1.0 (#23130)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-11-21 13:25:06 -06:00
Tanguy Pruvot f33396c2c3 🐛 Fix TFT backlight sleep/wake (#23153) 2021-11-21 13:13:01 -06:00
thinkyhead 2955061b05 [cron] Bump distribution date (2021-11-21) 2021-11-21 01:04:01 +00:00
Tanguy Pruvot 1c31366bf3 ️ Reduce calls to set fan PWM (#23149) 2021-11-19 19:44:53 -06:00
thinkyhead 0293a83408 [cron] Bump distribution date (2021-11-20) 2021-11-20 01:00:26 +00:00
thinkyhead 8e7f2f4483 [cron] Bump distribution date (2021-11-19) 2021-11-19 01:01:40 +00:00
thinkyhead e34ca749b1 [cron] Bump distribution date (2021-11-18) 2021-11-18 01:01:47 +00:00
Scott Lahteine f1af475253 🎨 Misc formatting 2021-11-17 13:02:04 -06:00
BigTreeTech 2edda4c582 🐛 Init PROBE_ENABLE_PIN (#23133) 2021-11-17 11:35:28 -06:00
Keith Bennett e3d777cf8f 📌 Overridable probe-related pins (#23107) 2021-11-17 11:33:42 -06:00
luzpaz b7be62ad36 🎨 Fix misspelling (#23137) 2021-11-17 11:09:01 -06:00
espr14 44d8c2f5bf 🏗️ Planner::busy() (#23145) 2021-11-17 11:07:11 -06:00
thinkyhead 3e14f06f80 [cron] Bump distribution date (2021-11-17) 2021-11-17 01:01:01 +00:00
Scott Lahteine 36173fb259 🐛 Fix fast PWM WGM code
Followup to #23102
2021-11-16 14:11:29 -06:00
Scott Lahteine 89fe5f6d74 🔨 Bring Makefile up to date 2021-11-16 12:49:25 -06:00
EvilGremlin eb8392edd4 🔨 Ignore sim flashdrive file (#23129) 2021-11-16 10:32:43 -06:00
Luc Van Daele 629498f8d4 🐛 Fix G33, Delta radii, reachable (#22795) 2021-11-16 09:24:53 -06:00
Scott Lahteine 2aa36af557 🔧 SOUND_MENU_ITEM for E3V2 2021-11-16 08:59:32 -06:00
thinkyhead f0b1ce8749 [cron] Bump distribution date (2021-11-16) 2021-11-16 01:01:41 +00:00
Mikhail Basov 36b2650f65 🚸 LCD_SHOW_E_TOTAL for TFT_COLOR_UI (#23127) 2021-11-14 22:46:34 -06:00
thinkyhead 125310dca0 [cron] Bump distribution date (2021-11-15) 2021-11-15 01:01:02 +00:00
Scott Lahteine 33c89d1f3f 🐛 Fix SENSORLESS_HOMING for 6-axis 2021-11-14 17:19:57 -06:00
EvilGremlin 8b952d9d11 🚸 Simplify touchscreen calibration for SimUI (#23124) 2021-11-14 17:15:26 -06:00
Mike La Spina 8ee368b718 ️ Controller Fan software PWM (etc.) (#23102)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-11-14 05:55:31 -06:00
thinkyhead 5fa4631e37 [cron] Bump distribution date (2021-11-14) 2021-11-14 01:03:14 +00:00
thinkyhead d89f472a4f [cron] Bump distribution date (2021-11-13) 2021-11-13 00:59:50 +00:00
Tanguy Pruvot 4aa2c6628f 🎨 MPX ARM Mini pins cleanup (#23113) 2021-11-12 14:26:19 -06:00
Mike La Spina 649c7685bf 🐛 [LCP1768] Init PWM in set_pwm_duty (#23110) 2021-11-12 12:14:28 -06:00
Skruppy 4a840e15e1 🩹 Fix RGB case light compile (#23108) 2021-11-12 08:57:24 -06:00
thinkyhead 72de764488 [cron] Bump distribution date (2021-11-12) 2021-11-12 01:02:28 +00:00
thinkyhead ecd4cdb298 [cron] Bump distribution date (2021-11-11) 2021-11-11 01:01:59 +00:00
Miguel Risco-Castillo 589a6d7f6b 🚸 Fix up E3V2 Enhanced (#23100) 2021-11-10 10:55:20 -06:00
Miguel Risco-Castillo b4b16b63ff 🚸 Expose sub-options for E3V2 Enhanced (#23099) 2021-11-10 10:31:35 -06:00
George Fu 99df0b86fb 🐛 Fix FYSETC Cheetah 2.0 pins for production (#23104) 2021-11-10 09:58:20 -06:00
BigTreeTech 07befb545b Support for BIQU B1-SE-Plus strain gauge probe (#23101)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-11-10 09:56:10 -06:00
thinkyhead e776fa1e93 [cron] Bump distribution date (2021-11-10) 2021-11-10 01:01:08 +00:00
Keith Bennett cee50552ab ️ BTT002 (STM32F407VET6) variant, MK3_FAN_PINS flag (#23093) 2021-11-09 10:30:02 -06:00
thinkyhead 467e883e17 [cron] Bump distribution date (2021-11-09) 2021-11-09 01:01:17 +00:00
thinkyhead fa5bfca367 [cron] Bump distribution date (2021-11-08) 2021-11-08 01:01:19 +00:00
Scott Lahteine 030b66eb27 🎨 Misc. code cleanup 2021-11-07 01:11:51 -06:00
Keith Bennett e15f9fdcd9 🚸 Indicate Preheating for probe / leveling (#23088) 2021-11-07 01:09:15 -05:00
Evgeniy Zhabotinskiy dc972990f3 🩹 Fix M503 report (#23084) 2021-11-06 23:16:18 -05:00
Jin 27220f0944 🍻 Preliminary fix for Max31865 SPI (#22682)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-11-06 22:53:36 -05:00
dwzg 30a69f76a3 🐛 Fix JyersUI scrolling filename, etc. (#23082)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-11-06 22:48:00 -05:00
ellensp c07aa875bc 🐛 Fix DGUS Reloaded status message (#23090) 2021-11-06 21:27:53 -05:00
thinkyhead dfdffca2bd [cron] Bump distribution date (2021-11-07) 2021-11-07 01:06:43 +00:00
thinkyhead f5284715fb [cron] Bump distribution date (2021-11-06) 2021-11-06 00:58:50 +00:00
thinkyhead 3e8cdef36b [cron] Bump distribution date (2021-11-05) 2021-11-05 01:00:14 +00:00
Scott Lahteine f6147e038b 🍻 Get/clear reset source earlier
Followup to #23075
2021-11-04 12:20:19 -05:00
Skruppy f53d627750 🐛 Prevent AVR watchdogpile (#23075) 2021-11-04 12:11:57 -05:00
Tanguy Pruvot a9dc737624 🐛 Fix TFT backlight [STM32] (#23062) 2021-11-04 12:04:04 -05:00
BigTreeTech 7b79201470 🐛 Fix Octopus-Pro Max31865 / SPI (#23072) 2021-11-04 05:54:38 -05:00
Robby Candra 4483b8aaf0 🔨 Fix IntelliSense / PIO conflicts (#23058)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-11-04 05:28:42 -05:00
ellensp 399faa91b9 📌 'STOP' auto-assign, some Chitu V9 pins (#22889)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-11-03 20:05:13 -05:00
thinkyhead fef96bb556 [cron] Bump distribution date (2021-11-04) 2021-11-04 01:00:55 +00:00
Scott Lahteine 02b6fb8025 🔨 Script 'mfprep' finds pending commits 2021-11-03 07:08:10 -05:00
Scott Lahteine cac42e24a5 🔨 Update git helper scripts 2021-11-03 07:02:21 -05:00
thinkyhead 627b67e27a [cron] Bump distribution date (2021-11-03) 2021-11-03 01:00:15 +00:00
Scott Lahteine f632b72e8c 🔨 Support ABM in mf scripts 2021-11-02 01:28:00 -05:00
Keith Bennett 0db9f9a828 📌 Default NeoPixel pin for MKS Robin E3/E3D (#23060) 2021-11-02 01:15:29 -05:00
Sebastien BLAISOT 95357c33fb 🐛 Fix NEOPIXEL2_SEPARATE default color (#23057) 2021-11-02 00:49:21 -05:00
Andrei M da830e6ced ⚗️ Use pwm_set_duty over analogWrite to set PWM (#23048)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-11-02 00:47:16 -05:00
Keith Bennett 767a15d468 🔧 Endstop / DIAG homing conflict warning (#23050) 2021-11-02 00:43:40 -05:00
Keith Bennett a57355ee06 Allow Low EJERK with LA, optional (#23054) 2021-11-01 23:23:54 -05:00
Robby Candra 4989379674 🎨 Fix redefine warnings (#23061) 2021-11-01 22:29:23 -05:00
Keith Bennett 7942f71d26 Artillery Ruby (STM32F401RCT6) (#23029) 2021-11-01 22:23:24 -05:00
thinkyhead 6af344c193 [cron] Bump distribution date (2021-11-02) 2021-11-02 01:02:55 +00:00
ellensp 40477e031f 🐛 Fix Y_SERIAL_RX_PIN for FYSETC S6 (#23055) 2021-11-01 18:36:22 -05:00
ellensp 36e475b8be 🩹 Fill gaps in pinsDebug_list (#23051) 2021-11-01 18:34:53 -05:00
tombrazier 296a6137cd 🚸 More flexible Probe Temperature Compensation (#23033) 2021-11-01 18:03:50 -05:00
thinkyhead 5e9b5bb448 [cron] Bump distribution date (2021-11-01) 2021-11-01 01:03:28 +00:00
Scott Lahteine 9176dcea6e 📝 Tweak EXP comments 2021-10-30 23:50:48 -05:00
Scott Lahteine efe2e79ac8 🔨 Help for GDB remote debugging 2021-10-30 23:50:48 -05:00
Scott Lahteine ba0b772d84 🩹 Fix linker error (transfer_port_index) 2021-10-30 23:46:22 -05:00
thinkyhead b88612f976 [cron] Bump distribution date (2021-10-31) 2021-10-31 01:03:08 +00:00
Scott Lahteine 4dd1f09286 💚 Update Ender-3 V2 config path
MarlinFirmware/Configurations#600
2021-10-30 04:16:37 -05:00
Scott Lahteine be412e3e2b 🎨 Adjust Ender-3 V2 DWIN options 2021-10-30 01:39:33 -05:00
aalku 75e0b7f8ff Shutdown Host Action (#22908)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-10-30 00:17:20 -05:00
Scott Lahteine aa4e32555d "Rutilea" ESP32 board (#22880) 2021-10-29 20:46:55 -05:00
Scott Lahteine 18a924d4e2 🔧 Configuration version 02000903 2021-10-29 20:42:52 -05:00
thinkyhead 67b075fd39 [cron] Bump distribution date (2021-10-30) 2021-10-30 00:58:37 +00:00
Scott Lahteine 70e31bff45 🎨 Standard 'cooldown' method 2021-10-29 19:18:35 -05:00
Scott Lahteine b09038fcc7 🎨 Standard material presets behavior 2021-10-29 19:18:35 -05:00
Scott Lahteine 1d80464ba7 🎨 Define HAS_PREHEAT conditional 2021-10-29 19:18:35 -05:00
tome9111991 3b9bea6f80 🐛 Fix E3V2 (CrealityUI) Tune/Prepare > Zoffset (#23040) 2021-10-29 17:49:12 -05:00
thinkyhead 2c8dce69e1 [cron] Bump distribution date (2021-10-29) 2021-10-29 00:58:40 +00:00
Scott Lahteine 5d04c7496c 🐛 Fix EZBoard V2 board name 2021-10-28 19:24:58 -05:00
Keith Bennett a1c4aad147 🐛 Fix MKS Robin E3/E3D Z Stop/Probe pins (#23034) 2021-10-28 05:26:05 -05:00
Scott Lahteine aa2c6387e9 🎨 Apply HAS_MULTI_HOTEND conditional 2021-10-28 05:17:44 -05:00
thinkyhead fbc125b06c [cron] Bump distribution date (2021-10-28) 2021-10-28 01:00:14 +00:00
Zlopi c0337da633 🚸 Scroll long filename on MKS TFT (#23031) 2021-10-27 15:10:46 -05:00
ellensp 11f1335efb 🩹 Retain LCD pins with motor expansion (#23024) 2021-10-27 15:06:06 -05:00
somehibs 3f6c8d5dc5 🐛 Fix serial PORT_RESTORE (and BUFFER_MONITORING) (#23022) 2021-10-27 15:00:02 -05:00
tome9111991 2199ae77c8 🐛 Fix E3V2 (CrealityUI) position display (#23023)
Followup to #23005, #22778
2021-10-27 14:58:32 -05:00
thinkyhead de6dfc9abc [cron] Bump distribution date (2021-10-27) 2021-10-27 01:02:46 +00:00
Scott Lahteine 65dfc407a5 🚸 Tweaks to UBL G29 Q 2021-10-26 19:36:16 -05:00
woisy00 9338b7f06e 🐛 Fix AUTOTEMP bug (thermal runaway) (#23025)
Regression from 9823a37
2021-10-26 18:05:34 -05:00
thinkyhead 79626062d0 [cron] Bump distribution date (2021-10-26) 2021-10-26 00:59:45 +00:00
tombrazier 73875cf9cc 🚸 Default T0 for M569, M906, M913 (#23020) 2021-10-25 16:29:40 -05:00
ellensp 930cb7c317 ️ Add'l PCINTs for Mega Extended (#23019) 2021-10-25 16:02:29 -05:00
Keith Bennett 90716eb7ce Octopus Pro V1.0 with STM32F429ZGT6 (#23008) 2021-10-25 15:53:37 -05:00
ellensp b619a71844 🐛 Fix børken E_DUAL_STEPPER_DRIVERS (#23017) 2021-10-25 15:53:37 -05:00
Miguel Risco-Castillo 70863058cd 🐛 Fix Ender-3 V2 Enhanced SetFlow (#23016) 2021-10-25 15:53:32 -05:00
Lefteris Garyfalakis 5ef0468251 🚸 E3V2 Enhanced cosmetic fixes (#23009) 2021-10-25 01:06:13 -05:00
InsanityAutomation d79ea20dcd Creality v2.4.S1 (Ender 7) board (#23010) 2021-10-25 00:39:48 -05:00
Dennis f6c7fbd1ab 🐛 Fix JyersUI current positions (scaling) (#23005) 2021-10-25 00:35:11 -05:00
tombrazier 444f27dfa0 🐛 Add USE_TEMP_EXT_COMPENSATION options (#23007) 2021-10-25 00:33:40 -05:00
Scott Lahteine f8968ed13c 🐛 More explicit allocation of solenoids
In reference to #22887
2021-10-24 23:43:28 -05:00
Scott Lahteine 6a6bf0fd1b 🔧 Fewer alerts about Z_SAFE_HOMING 2021-10-24 23:43:28 -05:00
thinkyhead 22d3a993e7 [cron] Bump distribution date (2021-10-25) 2021-10-25 01:03:57 +00:00
thinkyhead e5e872c2e2 [cron] Bump distribution date (2021-10-24) 2021-10-24 01:02:51 +00:00
thinkyhead 3ec0213dbc [cron] Bump distribution date (2021-10-23) 2021-10-23 01:04:09 +00:00
tombrazier 9c055621a0 🐛 Fix probe temp compensation maths (#23004) 2021-10-22 15:56:05 -05:00
tome9111991 de3c563a99 🐛 Fix SHOW_REMAINING_TIME option for JyersUI (#22999) 2021-10-22 11:16:07 -05:00
Keith Bennett 9a19ea50d8 BigTreeTech TFT35 SPI V1.0 (#22986) 2021-10-22 10:52:31 -05:00
ellensp f62890d889 🐛 Fix E3V2 width/height defines (#22994) 2021-10-21 23:57:30 -05:00
thinkyhead a309a9535d [cron] Bump distribution date (2021-10-22) 2021-10-22 01:12:18 +00:00
thinkyhead 566ce56a2d [cron] Bump distribution date (2021-10-21) 2021-10-21 01:08:58 +00:00
thinkyhead a05b66a950 [cron] Bump distribution date (2021-10-20) 2021-10-20 01:05:51 +00:00
Augusto Zanellato a6a838084d Eryone Ery32 mini (STM32F103VET6) board (#22956) 2021-10-19 10:24:22 -05:00
Mike La Spina 52edc543bd 🩹 Fix pragma ignored for older GCC (#22978) 2021-10-19 06:05:23 -05:00
Scott Lahteine 5f7c92dfbb 🎨 Refactor MOSFET pins layout (#22983) 2021-10-19 05:59:48 -05:00
Scott Lahteine b69971f06a 🔨 Fix older GCC CXXFLAGS warning 2021-10-19 05:53:52 -05:00
Scott Lahteine 1f3f9cb68c 🎨 Pragma GCC cleanup 2021-10-19 05:52:41 -05:00
Scott Lahteine e77df72300 🎨 Fix pinsDebug_list warnings 2021-10-19 05:51:49 -05:00
Scott Lahteine f8ec8e5bf6 💡 Sub-include pins labels 2021-10-19 04:03:44 -05:00
Scott Lahteine 6cf6c4cd85 🔨 Delete after encrypt. Lerdge encrypt only once 2021-10-19 03:58:00 -05:00
Scott Lahteine c91451d215 🔨 Update 'pio vscode init' detection 2021-10-19 03:58:00 -05:00
thinkyhead 3a77894efd [cron] Bump distribution date (2021-10-19) 2021-10-19 01:06:11 +00:00
Jason Smith 357fb8d984 🐛 Fix max chamber fan speed (#22977) 2021-10-18 03:11:16 -05:00
Keith Bennett 7bab1c92e7 🐛 Fix I2C EEPROM SDA/SCL aliases with SKR Mini E3 V2 (#22955) 2021-10-18 02:57:54 -05:00
ellensp ec57879c59 🐛 Fix MMU1 compile (#22965) 2021-10-18 02:54:20 -05:00
Keith Bennett d3a84bc584 BTT Octopus Pro V1.0 (STM32F446ZET6) (#22971) 2021-10-18 02:51:01 -05:00
Mike La Spina 28e2c358d1 🎨 Suppress type warning (#22976) 2021-10-18 02:40:47 -05:00
Scott Lahteine 2e0bde37d7 🎨 Add MKS UI goto_previous_ui 2021-10-18 02:05:13 -05:00
Scott Lahteine ad4a8a68c2 Warn about dummy thermistors 2021-10-18 01:54:51 -05:00
InsanityAutomation b93c3301f2 Fix JyersUI ZOffset Multiplication (#22975) 2021-10-18 00:03:01 -06:00
InsanityAutomation d2b0939118 Fix Tool Change Park (#22968) 2021-10-18 00:01:28 -06:00
Scott Lahteine 741e70541d 🚸 Tweak MKS UI G-code console 2021-10-17 22:08:45 -05:00
Scott Lahteine d685cbd5c3 🎨 Fix up MKS UI defines 2021-10-17 20:24:53 -05:00
Scott Lahteine 7d16f0cadf 🔨 Improve 'mftest' error message 2021-10-17 20:24:53 -05:00
thinkyhead cd0ee8c34d [cron] Bump distribution date (2021-10-18) 2021-10-18 01:06:10 +00:00
Scott Lahteine bc567e7b49 🔧 Safety feature warnings 2021-10-17 16:56:01 -05:00
thinkyhead 3c94f2f1c3 [cron] Bump distribution date (2021-10-17) 2021-10-17 01:02:43 +00:00
thinkyhead babb3d7b4c [cron] Bump distribution date (2021-10-16) 2021-10-16 01:07:57 +00:00
Scott Lahteine 9d72cbf84b 💡 Update old gnu.org links 2021-10-15 15:07:47 -05:00
InsanityAutomation 95662d3aed Add option EVENT_GCODE_TOOLCHANGE_ALWAYS_RUN (#22960) 2021-10-15 14:56:59 -05:00
Scott Lahteine ee28a14e8e 🎨 Refactor Host Actions as singleton 2021-10-15 00:24:08 -05:00
ellensp de5aefd09e 🔧 Add, update TFT sanity checks (#22928) 2021-10-14 20:38:03 -05:00
thinkyhead 1143535664 [cron] Bump distribution date (2021-10-15) 2021-10-15 01:05:59 +00:00
thinkyhead 5d665d5e1e [cron] Bump distribution date (2021-10-14) 2021-10-14 01:01:39 +00:00
InsanityAutomation 8e4953514c ️ Formbot ST7920 delays, intentional X2 pins (#22915)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-10-12 22:19:05 -05:00
Dmytro bf91bd5eee 🎨 Update MKS UI for no bed, extruder (#22938)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-10-12 21:45:00 -05:00
Keith Bennett f58934c4ef 🐛 Fix MKS Robin Pro 1.0 LCD reset pin (#22937) 2021-10-12 21:06:39 -05:00
Keith Bennett 8ce2254aa6 🔧 Remove obsolete G34 sanity check (#22929) 2021-10-12 21:05:37 -05:00
George Fu 0d41667bc2 🐛 Fix FYSETC Cheetah v2.0 build (#22926) 2021-10-12 20:32:54 -05:00
ellensp 02dc7a6387 🐛 Fix G33 homing current (#22909) 2021-10-12 20:28:45 -05:00
Keith Bennett 3f9ff2421f 🐛 Fix SKR Mini E3 V2 I2C-based EEPROM (#22919)
Followup to #20609
2021-10-12 20:26:42 -05:00
thinkyhead 332ef9939c [cron] Bump distribution date (2021-10-13) 2021-10-13 01:07:25 +00:00
mks-viva a7519ecca9 MKS Eagle (STM32F407VET6) board (#22897) 2021-10-12 20:01:18 -05:00
InsanityAutomation 15ebe45f36 🐛 Fix IDEX + DISABLE_INACTIVE_EXTRUDER (#22925) 2021-10-12 18:40:56 -05:00
thinkyhead 769948bb4d [cron] Bump distribution date (2021-10-12) 2021-10-12 01:05:49 +00:00
Stuart Pittaway ad14b5052c M261 S I2C output format (#22890)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-10-11 17:42:29 -05:00
thinkyhead 90fa48ffd5 [cron] Bump distribution date (2021-10-11) 2021-10-11 01:03:10 +00:00
thinkyhead 0c86cc89f0 [cron] Bump distribution date (2021-10-10) 2021-10-10 01:03:22 +00:00
InsanityAutomation b3fd0a5050 🐛 Fix IDEX Duplication Mode Positioning (#22914)
Fixing #22538
2021-10-09 18:13:19 -05:00
Minims 33809ae000 🩹 Adjust GTR 1.0 ST7920 display delay (#22904) 2021-10-09 18:10:21 -05:00
Tanguy Pruvot 886c59dc10 🐛 Queue string followup (#22900) 2021-10-09 18:05:24 -05:00
Pyro-Fox 13bb2393e1 🐛 LCD string followup (#22892) 2021-10-09 17:09:50 -05:00
thinkyhead bd6a1a2898 [cron] Bump distribution date (2021-10-09) 2021-10-09 00:59:22 +00:00
thinkyhead 1ec399c6ab [cron] Bump distribution date (2021-10-08) 2021-10-08 01:05:32 +00:00
thinkyhead 1f41437052 [cron] Bump distribution date (2021-10-07) 2021-10-07 01:03:32 +00:00
ellensp f79d1f114c 🎨 Define Octopus allocated endstop pins (#22882)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-10-06 15:42:59 -05:00
Scott Lahteine 9922410a73 🔨 Port libsdl2_net required for macOS simulator 2021-10-05 23:05:22 -05:00
Scott Lahteine 149cbe795d 🎨 Tweak FORCE_INLINE 2021-10-05 23:05:22 -05:00
Scott Lahteine e52c30d43a 🐛 Followup to F() in config_line
Followup to 1dafd1887e
2021-10-05 23:05:22 -05:00
thinkyhead ca7ab6e13f [cron] Bump distribution date (2021-10-06) 2021-10-06 01:02:35 +00:00
Mark 4e9ae9449f ESP32 Panda_ZHU and Panda_M4 (#22644) 2021-10-04 23:23:02 -05:00
Scott Lahteine f395198e14 🔨 Move Creality 4.2.2 warning 2021-10-04 22:17:59 -05:00
Scott Lahteine e8459ae63c 🐛 ExtUI F() followups
Followup to 12b5d997a2
2021-10-04 22:00:00 -05:00
thinkyhead d5cb30524e [cron] Bump distribution date (2021-10-05) 2021-10-05 01:01:31 +00:00
Scott Lahteine f5b085157a 🔨 Add 'opt_find' to find matching options 2021-10-04 19:11:39 -05:00
ellensp b919bdbf0b 🩹 Fix EXTRUDER 0 compile warning (#22868) 2021-10-04 01:12:19 -05:00
Sebastien Andrivet 2d08afe456 🐛 Fix ExtUI Pause messages (#22874) 2021-10-04 01:06:49 -05:00
Scott Lahteine 65b950a489 🎨 Apply F() to kill / sendinfoscreen 2021-10-04 00:26:29 -05:00
Scott Lahteine d1938d54ed 🎨 Apply F() to MKS UI errors, assets 2021-10-04 00:26:29 -05:00
Scott Lahteine 1dafd1887e 🎨 Apply F() to various reports 2021-10-04 00:26:29 -05:00
Scott Lahteine d7fede3a63 🎨 Apply F() to G-code report header 2021-10-04 00:26:29 -05:00
Scott Lahteine eeffac697c 🎨 Apply F() to UTF-8/MMU2 string put 2021-10-04 00:26:29 -05:00
Scott Lahteine 12b5d997a2 🎨 Apply F() to some ExtUI functions 2021-10-04 00:26:29 -05:00
Scott Lahteine 008bf1bcae 🎨 Apply F() to Host Actions strings 2021-10-04 00:26:29 -05:00
Scott Lahteine 7f1286a11f 🎨 Apply F() to status message 2021-10-04 00:26:29 -05:00
Scott Lahteine 520b97083e 🎨 Apply F() to serial macros 2021-10-04 00:26:29 -05:00
Scott Lahteine 417e2530eb 🎨 Apply F() to G-code suite and queue 2021-10-04 00:26:29 -05:00
Scott Lahteine 64a919da2a 🎨 Apply F() to E3V2 titles, popups 2021-10-04 00:26:29 -05:00
Scott Lahteine 59dac3a7e4 🎨 Apply F() to G-code subcommands 2021-10-04 00:26:29 -05:00
Scott Lahteine 23f10563e0 🎨 Update F string declarations 2021-10-04 00:26:29 -05:00
ellensp cb9fafd4f3 🐛 Fix Arduino IDE compile error (#22877) 2021-10-04 00:25:45 -05:00
Scott Lahteine 54d400608d 🎨 Axis name string interpolation, with examples (#22879) 2021-10-04 00:24:41 -05:00
Scott Lahteine eb784d6e55 🎨 Rename MarlinUI::zoffset_overlay 2021-10-03 22:31:54 -05:00
thinkyhead 97295c552d [cron] Bump distribution date (2021-10-04) 2021-10-04 01:05:57 +00:00
VragVideo 9bb562f40a WYH L12864 LCD (Alfawise Ex8) (#22863) 2021-10-02 22:12:51 -05:00
thinkyhead e4d8290be3 [cron] Bump distribution date (2021-10-03) 2021-10-03 01:06:58 +00:00
thinkyhead e27b1e5d58 [cron] Bump distribution date (2021-10-02) 2021-10-02 01:00:08 +00:00
thinkyhead ea0169f2bc [cron] Bump distribution date (2021-10-01) 2021-10-01 01:05:30 +00:00
thinkyhead d3ed21b10e [cron] Bump distribution date (2021-09-30) 2021-09-30 01:05:47 +00:00
Steven Haigh c6ceac9067 🚑️ Fix DWIN_CompletedLeveling (#22851)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-09-29 11:22:46 -05:00
Malderin 732e59b412 🐛 E3V2 Mesh Viewer followup (#22850) 2021-09-28 20:20:03 -05:00
thinkyhead 90b0e16ec0 [cron] Bump distribution date (2021-09-29) 2021-09-29 00:58:41 +00:00
Scott Lahteine f2ba845dad 🎨 Condense reverse-protection code 2021-09-28 06:47:49 -05:00
Scott Lahteine 33e0855e2c ️ Handle shared enable pins (#22824) 2021-09-28 01:07:51 -05:00
thinkyhead eda8e9c8dd [cron] Bump distribution date (2021-09-28) 2021-09-28 01:01:32 +00:00
Miguel Risco-Castillo 8ab02df63a E3V2 (Enhanced) Mesh Viewer (#22844) 2021-09-27 14:47:47 -05:00
Malderin 8f9e56afb9 🚸 MKS UI LVGL bed preheat presets (#22842) 2021-09-27 14:13:38 -05:00
Sola 5dce8d0a84 🚸 Fix MKS LVGL UI temperature set interface (#22848) 2021-09-27 14:08:29 -05:00
espr14 228eb9c404 🎨 steps_to_mm => mm_per_step (#22847) 2021-09-27 14:05:52 -05:00
Tanguy Pruvot f73175d826 🚸 TFT backlight PWM / brightness (#22841) 2021-09-27 14:01:47 -05:00
ellensp 942b76082c 🔧 Sanity-check BLTOUCH_SET_5V_MODE on 5V pins (#22840)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-09-27 10:17:00 -05:00
thinkyhead 3329e07bd9 [cron] Bump distribution date (2021-09-27) 2021-09-27 01:00:10 +00:00
Giuliano Zaro 8fd5a4037a 🩹 Fix M412_report formatting (#22834) 2021-09-25 21:59:29 -05:00
thinkyhead 031fec7a02 [cron] Bump distribution date (2021-09-26) 2021-09-26 01:02:25 +00:00
Miguel Risco-Castillo 1ac7a56a82 🐛 E3V2 Brightness followup (#22821)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-09-25 05:59:43 -05:00
Scott Lahteine a7fdaabd54 🎨 Updated string macros 2021-09-25 02:30:18 -05:00
Steve Wills e1ac3ede0d 🐛 Add 'static' to fix 'duplicates' (#22826) 2021-09-24 21:12:43 -05:00
Manuel McLure 86a6b9316e 🐛 Fix M420 / M851 reports (#22829)
Followup to 79c72ed821
2021-09-24 21:08:07 -05:00
thinkyhead 849b86afb6 [cron] Bump distribution date (2021-09-25) 2021-09-25 00:59:33 +00:00
thinkyhead e85f622505 [cron] Bump distribution date (2021-09-24) 2021-09-24 01:01:22 +00:00
Scott Lahteine 35ad3b0d3b 🐛 Fix reset_hotend_offsets 2021-09-23 11:09:43 -05:00
Scott Lahteine dc5bef62ba 🎨 Various multi-axis patches (#22823) 2021-09-23 10:01:37 -05:00
Sola 9c208a008d ️ Improve LVGL touch driver (#22817) 2021-09-23 02:53:48 -05:00
ellensp 7c5727e0ec 🐛 Fix anycubic_i3mega_lcd debug macros (#22820) 2021-09-23 01:58:52 -05:00
Scott Lahteine 1835f8fb25 🩹 Add MarlinSPI to more HALs 2021-09-23 00:51:35 -05:00
thinkyhead 64c6475434 [cron] Bump distribution date (2021-09-23) 2021-09-23 01:04:29 +00:00
Scott Lahteine 11ceea25ce 🎨 Less use of undef for RAMPS pins 2021-09-22 00:19:26 -05:00
thinkyhead 0387f94632 [cron] Bump distribution date (2021-09-22) 2021-09-22 01:02:28 +00:00
Scott Lahteine b88117d636 🎨 Fix L64xx enable, clean up conditionals 2021-09-21 06:28:58 -05:00
Scott Lahteine 58adb849d3 🔨 Improve pins_set script 2021-09-21 02:42:01 -05:00
thinkyhead 5b934e02fa [cron] Bump distribution date (2021-09-21) 2021-09-21 01:01:29 +00:00
Scott Lahteine 58301837e0 🩹 Remove extra #include, misc. style 2021-09-20 18:46:25 -05:00
Dan Royer 3344071f24 Polargraph / Makelangelo kinematics (#22790) 2021-09-20 15:45:00 -05:00
thinkyhead f3864a1ae7 [cron] Bump distribution date (2021-09-20) 2021-09-20 01:03:16 +00:00
Lefteris Garyfalakis e60e4b8f57 🌐 Update Greek language (#22799) 2021-09-19 19:26:46 -05:00
Scott Lahteine 216a66b42c 🌐 Skip non-essential translations 2021-09-19 19:25:01 -05:00
Scott Lahteine 008284934c 🔨 Case-insensitive tests list 2021-09-19 18:58:12 -05:00
Scott Lahteine c1d7e234e1 🌐 Reduce language file sizes 2021-09-19 18:40:56 -05:00
Tanguy Pruvot 10fda222ea 🐛 STM32 ADC followup (#22798) 2021-09-18 22:16:29 -05:00
thinkyhead a6b69ab6d5 [cron] Bump distribution date (2021-09-19) 2021-09-19 01:01:05 +00:00
Tanguy Pruvot 89125cd32e 🚸 Wake up TFT for some events (#22788) 2021-09-18 18:27:58 -05:00
Scott Lahteine c88e85c939 🎨 Replace some infrequently-used macros 2021-09-18 18:24:39 -05:00
Scott Lahteine f367a3987d 📝 Update some pins comments 2021-09-18 18:22:15 -05:00
Steven Haigh d7e597f3df 🐛 STM32 ADC Resolution = 12 bit (or ADC_RESOLUTION) (#22789) 2021-09-18 01:33:18 -05:00
Scott Lahteine f46e05fcb1 🚸 Move fade item up 2021-09-18 01:18:32 -05:00
Scott Lahteine ad38699c11 🚸 Better bed position 2021-09-18 01:18:32 -05:00
Scott Lahteine fede20fbe6 💬 Add non-translated STR_DONE 2021-09-18 01:13:10 -05:00
thinkyhead 11fce69781 [cron] Bump distribution date (2021-09-18) 2021-09-18 00:58:51 +00:00
thinkyhead 46dfc7ba34 [cron] Bump distribution date (2021-09-17) 2021-09-17 01:06:26 +00:00
Sola 8df3e62c89 🚸 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-09-16 06:48:24 -05:00
Scott Lahteine 323b38ee88 💡 Adjust headers, formatting 2021-09-16 04:39:43 -05:00
InsanityAutomation 08a40c4375 Improve pause/filament change for ExtUI (#22655) 2021-09-16 02:46:16 -05:00
Scott Lahteine 02ae11ed72 🔧 Add MANUAL_FEEDRATE sanity-check 2021-09-16 01:15:14 -05:00
thinkyhead 0cc17b920a [cron] Bump distribution date (2021-09-16) 2021-09-16 01:15:14 -05:00
Scott Lahteine e31d52184b 🎨 Handle more pre-defined pins in pins_postprocess (#22771) 2021-09-16 01:15:14 -05:00
Scott Lahteine 5b5a8798f8 🎨 Consolidate Ender-3 V2 DWIN common code (#22778) 2021-09-15 19:48:29 -05:00
Keith Bennett cca3250c3f ✏️ Fix TFT field names (#22776) 2021-09-15 15:51:52 -05:00
mks-viva a1e1555ea1 🐛 Fix MKS Monster8 EEPROM issue (serial timer) (#22777) 2021-09-15 14:47:23 -05:00
Miguel Risco-Castillo 8235ae9cc0 🩹 Fix DWIN Enhanced Tune menu during homing (#22773)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-09-15 01:44:28 -05:00
thinkyhead 9c8ad57f62 [cron] Bump distribution date (2021-09-15) 2021-09-15 00:59:31 +00:00
Dakkaron 21e8f99500 M282 - Detach Servo (#22760) 2021-09-14 19:00:48 -05:00
Tanguy Pruvot c2e4b1626f TFT Screen/Backlight Sleep (#22617) 2021-09-13 21:07:08 -05:00
thinkyhead ae22a92017 [cron] Bump distribution date (2021-09-14) 2021-09-14 01:17:33 +00:00
Scott Lahteine 5a04cf0514 🔖 Configurations version 02000902 2021-09-13 18:46:30 -05:00
Desuuuu 23d10ceccb 🎨 Use ExtUI API where applicable 2021-09-13 17:27:54 -05:00
Roman Moravčík 370ea116f4 🌐 Update Slovak language (#22752) 2021-09-13 17:10:30 -05:00
Scott Lahteine 3587ef2e8f 🐛 Fix old spindle/laser options 2021-09-13 16:39:11 -05:00
Scott Lahteine 798a8a7a08 🔧 SPINDLE_LASER_PWM => SPINDLE_LASER_USE_PWM 2021-09-13 16:39:01 -05:00
Scott Lahteine 000d412da6 🐛 Fix CUSTOM_MENU_MAIN_SCRIPT_DONE
Fix #22762
2021-09-12 21:41:39 -05:00
Vert d69c053225 🐛 Fix ENABLED => EITHER typo (#22756) 2021-09-12 21:39:52 -05:00
mks-viva 24460052d2 MKS Robin Nano V1.3 (STM32F407VET6) (#22749) 2021-09-12 21:30:09 -05:00
Scott Lahteine ea7e777cb1 🎨 Tweak custom menu item code 2021-09-12 21:21:35 -05:00
thinkyhead 84f66627c4 [cron] Bump distribution date (2021-09-13) 2021-09-13 01:39:56 +00:00
Scott Lahteine 29d3996a55 📌 Creality 4.3.1 board variants (#22704)
Co-authored-by: Chico <jjjm6000@gmail.com>
2021-09-12 19:37:33 -05:00
Luc Van Daele 37c488fda1 🚸 G33 R and O options (#22707) 2021-09-12 19:35:37 -05:00
ellensp c9d54bc3f3 🐛 Fix Trigorilla Pro HAL/STM32 build offset (#22761) 2021-09-12 18:03:24 -05:00
tome9111991 3a457c9d13 🐛 Fix JyersUI for LPC176x (#22745)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-09-12 14:56:40 -05:00
thinkyhead afe4cb7fee [cron] Bump distribution date (2021-09-12) 2021-09-12 01:02:08 +00:00
Scott Lahteine 08e581d5d7 🎨 Apply more HAS_DELTA_SENSORLESS_PROBING 2021-09-11 15:41:56 -05:00
Scott Lahteine 011329fe55 🐛 No probe enum for DELTA + SENSORLESS_PROBING
Fix #22729
2021-09-11 02:49:20 -05:00
Scott Lahteine 6b9b2c5d73 🩹 Warn about user feedback requirement 2021-09-11 02:48:20 -05:00
Scott Lahteine 453e60958a 🐛 Followup to JyersUI
Fix #22735, #22736
2021-09-11 01:52:19 -05:00
Scott Lahteine 953d283e53 🐛 Followup to E3V2 Enhanced
Fix #22741
2021-09-11 01:13:02 -05:00
Scott Lahteine 0a1211fe3f 🐛 Fix LPC1768 SD-based EEPROM debug
Fixes #22746
2021-09-11 00:48:20 -05:00
Marcio T 209dca1089 🚸 Enhance FTDI Eve Touch UI file select dialog (#22742) 2021-09-10 20:03:46 -05:00
thinkyhead 69ab2bc40f [cron] Bump distribution date (2021-09-11) 2021-09-11 00:58:31 +00:00
Scott Lahteine ce6d622501 🩹 Fix TOUCH_UI_FTDI_EVE warnings 2021-09-10 19:47:03 -05:00
Scott Lahteine 67d82ff228 🐛 Followup to JyersUI 2021-09-10 18:49:57 -05:00
thinkyhead bcfaf3990a [cron] Bump distribution date (2021-09-10) 2021-09-10 01:02:43 +00:00
Miguel Risco-Castillo 392a4a6f85 🐛 Fix, improve E3V2 Enhanced UI (#22733) 2021-09-09 16:40:10 -05:00
Scott Lahteine 754b31918a 🎨 Fewer serial macros 2021-09-09 05:41:58 -05:00
Scott Lahteine 79c72ed821 🎨 Standardize G-code reporting 2021-09-09 05:41:58 -05:00
ellensp 650e73af27 🩹 Fix Enhanced E3V2 Advanced Pause (#22728) 2021-09-09 01:13:01 -05:00
thinkyhead 7a4f1c410f [cron] Bump distribution date (2021-09-09) 2021-09-09 01:01:56 +00:00
thinkyhead 7a2515bcac [cron] Bump distribution date (2021-09-08) 2021-09-08 00:57:48 +00:00
Miguel Risco-Castillo 0f61d9e4dd Ender-3 V2 CrealityUI Enhanced (#21942)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-09-07 02:15:24 -05:00
Jyers 43a9c71ef7 Ender-3 V2 with Jyers UI (#22422) 2021-09-06 23:06:27 -05:00
thinkyhead ed0c5aefd8 [cron] Bump distribution date (2021-09-07) 2021-09-07 00:57:25 +00:00
mrv96 b0e798330d Add DGUS_LCD_UI_RELOADED (#21931) 2021-09-06 19:51:04 -05:00
Scott Lahteine 853eebc3f2 🚸 Show ExtUI message for PID_STARTED 2021-09-06 17:38:47 -05:00
Scott Lahteine 83a1d3a46b 🎨 Misc. code cleanup 2021-09-06 16:38:25 -05:00
Scott Lahteine 845d42ef40 🎨 Misc. Spindle/Laser (etc.) cleanup 2021-09-06 15:34:12 -05:00
Scott Lahteine dc6b86065e 🚸 Per-hotend Watch items 2021-09-05 21:24:40 -05:00
Scott Lahteine ba62f24717 ️ Clean up Info Menu 2021-09-05 21:14:33 -05:00
Scott Lahteine 521fda0235 🎨 MarlinUI for E3V2 tweaks 2021-09-05 20:39:19 -05:00
Scott Lahteine b0a91073b2 🔧 Sanity checks for Ender 3 V2 2021-09-05 20:39:19 -05:00
thinkyhead 6098150a85 [cron] Bump distribution date (2021-09-06) 2021-09-06 01:05:05 +00:00
dotdash32 c881fab128 🎨 Use largest default ST9720 delays (#22713)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-09-05 19:21:25 -05:00
Dan 51c66881c2 Protoneer CNC-Shield 3.00 (#22715) 2021-09-05 15:32:09 -05:00
Justin Nesselrotte 76fb131f14 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-09-05 15:21:45 -05:00
thinkyhead 73bc817397 [cron] Bump distribution date (2021-09-05) 2021-09-05 01:01:15 +00:00
thinkyhead 88fc449c7b [cron] Bump distribution date (2021-09-04) 2021-09-04 00:58:22 +00:00
Tanguy Pruvot a3557e63bf 🌐 Update "Homing" for some languages (#22706) 2021-09-03 18:20:32 -05:00
Scott Lahteine 5dbb155395 🩹 Fix 'ms' warning 2021-09-03 17:26:36 -05:00
Thomas White 18d82c1988 Homing submenu option (#22692) 2021-09-02 23:30:24 -05:00
Elliott Indiran e1056378f1 📝 Update PID_PARAMS_PER_HOTEND comment (#22694)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-09-02 22:41:41 -05:00
Tanguy Pruvot ff95a93ecc 🐛 Fix Mixing code typos (#22697) 2021-09-02 22:08:40 -05:00
thinkyhead 4313511483 [cron] Bump distribution date (2021-09-03) 2021-09-03 00:58:08 +00:00
thinkyhead 682d6c99c7 [cron] Bump distribution date (2021-09-02) 2021-09-02 01:03:55 +00:00
DvoraNoob 3a2eb574e2 🚸 MKS UI extrusion speed/steps config (#22656) 2021-09-01 19:29:20 -05:00
Tanguy Pruvot 71a2a95885 🔨 Enhance Lerdge pins, TFTs, and variants (#22658) 2021-09-01 18:55:36 -05:00
Tanguy Pruvot 9a9d55ceb0 🩹 Allow M42 S0/1 analogWrite on PWM pins (STM32) (#22631) 2021-09-01 18:45:17 -05:00
ellensp 01d1192a44 🐛 BTT Octopus X MAX pin for IDEX (#22654) 2021-09-01 05:33:24 -05:00
thinkyhead fc22f1f843 [cron] Bump distribution date (2021-09-01) 2021-09-01 01:03:17 +00:00
Vert bad4679649 GT2560 V4.x A20 (#22664) 2021-08-31 02:37:20 -05:00
Scott Lahteine fb29135c74 Creality3D CR-30 PrintMill 2021-08-31 02:31:44 -05:00
Scott Lahteine e33e101850 🎨 Tweak pins, comment formatting 2021-08-31 02:31:44 -05:00
Scott Lahteine ba10816c51 💄 Extended Info Menu 2021-08-31 02:31:44 -05:00
Scott Lahteine f55a28b015 🌐 Tweak language selection 2021-08-31 02:31:44 -05:00
Scott Lahteine eccd82b7c1 ️ Add PROBE_PT_LAST_STOW 2021-08-31 02:31:44 -05:00
ellensp 1f5eacac09 🔧 Set Z_PROBE_OFFSET_RANGE_MIN/MAX for MBL (#22663) 2021-08-31 02:26:12 -05:00
Scott Lahteine 2c5daa0722 🩹 Clean up BTT_SKR_CR6
Fixes #22665
2021-08-31 02:23:49 -05:00
Jason Smith 485a186467 🚸 Improve Tramming Wizard usability (#22672) 2021-08-31 02:00:59 -05:00
ellensp 66ded801b7 ️ Revert MAX31865 recent changes (#22660) 2021-08-30 22:40:49 -05:00
thinkyhead ef2d0b8d53 [cron] Bump distribution date (2021-08-31) 2021-08-31 00:59:16 +00:00
Christian Schuster 7378e7c2db 🩹 Fix LPC176x M43 formatting (#22680) 2021-08-30 19:32:02 -05:00
Zs.Antal fff1ed3369 🌐 Update Hungarian language (#22678) 2021-08-30 19:30:14 -05:00
Giuliano Zaro 6ff2be329e 🌐 Update Italian language (#22645) 2021-08-30 17:05:11 -05:00
Scott Lahteine efb9ea92b8 🔨 Fix HAL/STM32 F103Zx builds (#22610) 2021-08-30 17:03:22 -05:00
Scott Lahteine 90cd1ca68d 🎨 screws_tilt_adjust_pos => tramming_points 2021-08-29 23:10:00 -05:00
Scott Lahteine d95d452b29 🌐 MSG_PROBING_MESH => MSG_PROBING_POINT 2021-08-29 23:03:02 -05:00
Scott Lahteine 8f57a21176 🔨 Three columns in mftest menu 2021-08-29 20:04:51 -05:00
thinkyhead 4d5f6b2a78 [cron] Bump distribution date (2021-08-30) 2021-08-30 00:57:24 +00:00
Marcio T 6e40dbe0d3 ️ Fix, enhance FTDI Eve Touch UI (#22619) 2021-08-29 17:05:30 -05:00
Marcio T ab03c9a560 ️ Enhance and fix FTDI Eve Touch UI file select (#22651) 2021-08-29 17:03:10 -05:00
Scott Lahteine f721c44c22 🐛 Fix SDSUPPORT for SKR CR-6 (#22668)
Co-authored-by: Sebastiaan Dammann <sebastiaandammann@outlook.com>
2021-08-29 15:15:53 -05:00
Scott Lahteine 4b4de71304 ️ Improve G2/G3 arc handling (#22599) 2021-08-29 14:34:48 -05:00
Scott Lahteine 09a83d565e 🩹 Sensorless homing tweak 2021-08-29 13:55:20 -05:00
Scott Lahteine 6d3dec8b63 🎨 Update more EXP Headers 2021-08-29 13:55:20 -05:00
thinkyhead d6501a93ec [cron] Bump distribution date (2021-08-29) 2021-08-29 01:00:17 +00:00
Scott Lahteine d818a019c5 🎨 EXP headers, ST7920 delays (#22641) 2021-08-28 15:27:52 -05:00
thinkyhead 3a8c509a9f [cron] Bump distribution date (2021-08-28) 2021-08-28 00:54:18 +00:00
Scott Lahteine f6dc56d979 📝 AlephObjects => LulzBot 2021-08-27 17:23:08 -05:00
Tanguy Pruvot 36e40b68c9 🔨 Set Longer3D timers in variant (#22632) 2021-08-27 16:06:45 -05:00
thinkyhead 0c4085da01 [cron] Bump distribution date (2021-08-27) 2021-08-27 01:01:36 +00:00
thinkyhead 51160ee987 [cron] Bump distribution date (2021-08-26) 2021-08-26 00:55:12 +00:00
Tanguy Pruvot 8889e68088 🩹 Tweak startup message (#22633) 2021-08-25 18:08:27 -05:00
DerAndere 88816548b6 🔨 Melzi with OptiBoot build (#22630) 2021-08-25 18:05:06 -05:00
Jin 181530db76 🩹 Use <SoftwareSPI.h> in MAX31865 lib (#22618) 2021-08-25 17:33:08 -05:00
Ryan V1 71c96db932 🐛 Fix Multi-Endstop stepping (#22625) 2021-08-24 22:34:10 -05:00
thinkyhead 7dec5c2674 [cron] Bump distribution date (2021-08-25) 2021-08-25 00:57:08 +00:00
Scott Lahteine 4f35858c9e 🎨 EXP1/2 headers and pins cleanup (#22628) 2021-08-24 18:07:41 -05:00
Scott Lahteine 8cf7dc960f New board TH3D_EZBOARD_LITE_V2 (#22621) 2021-08-24 14:55:12 -05:00
Scott Lahteine 7974dcd2aa 🎨 Define FYSETC S6 and TH3D EZBoard EXP1/2 pins 2021-08-23 20:12:53 -05:00
thinkyhead 9c51cf3491 [cron] Bump distribution date (2021-08-24) 2021-08-24 00:56:33 +00:00
thinkyhead 2c45ac3c1b [cron] Bump distribution date (2021-08-23) 2021-08-23 00:53:22 +00:00
Chris Pepper 104de60d0b 🐛 Fix LPC176x M43 Pins Debugging (#22611) 2021-08-22 16:47:37 -05:00
Scott Lahteine 7d416bd055 MarlinUI for Ender 3 v2 DWIN LCD (#22594)
Co-Authored-By: Taylor Talkington <taylor.talkington@gmail.com>
2021-08-22 05:53:43 -05:00
ellensp 34e6940aab BOARD_RUMBA32_BTT (#22607) 2021-08-21 20:30:12 -05:00
Scott Lahteine 536cf287a6 🎨 Misc code and spacing cleanup 2021-08-21 20:30:12 -05:00
Scott Lahteine 2e3b131331 🎨 Tweak TMC software serial pins 2021-08-21 15:08:07 -05:00
Keith Bennett 104acd9e59 ⬆️ TMCStepper 0.7.3 (#22608) 2021-08-21 14:19:02 -05:00
thinkyhead 0d854d332d [cron] Bump distribution date (2021-08-21) 2021-08-21 00:55:55 +00:00
Fjederhaek 1903cc23c6 🐛 Update H-bot / Core for 6-axis (#22600)
Followup to #19112
2021-08-20 17:45:05 -05:00
Scott Lahteine 9046254a14 🌐 Update menu titles, add more IJK (#22605)
Followup to #19112
2021-08-20 17:38:00 -05:00
Scott Lahteine 193205a40d Followup to CrealityUI cleanup
Followup to #22586
2021-08-19 21:11:10 -05:00
thinkyhead 9db5805c8f [cron] Bump distribution date (2021-08-20) 2021-08-20 00:56:15 +00:00
Scott Lahteine 737d2dd564 Followup to CrealityUI cleanup
Followup to #22586
2021-08-19 19:16:46 -05:00
Scott Lahteine 033e65ec85 🐛 Show bed size as 'work:' in M115
Fixes #22598
2021-08-19 17:38:05 -05:00
thinkyhead 368a12a8ac [cron] Bump distribution date (2021-08-19) 2021-08-19 00:51:33 +00:00
Scott Lahteine e2297d82f2 📌 Disregard TMCStepper 0.7.2 2021-08-18 18:23:20 -05:00
Scott Lahteine 11e8cd9db9 🩹 Followup to CrealityUI cleanup
- Followup to #22586 fixing `Draw_Menu_Line` with `GET_TEXT_F`.
- More number drawing convenience functions.
- Return on `ENCODER_DIFF_NO` to reduce indent.
- Put Main Menu buttons closer to the top.
- Move status message up slightly.
- Fix some indentation.
2021-08-18 02:33:25 -05:00
Tanguy Pruvot 6a8385624f 🐛 Fix STM32 delay, double reset in FSMC TFT init (#22584) 2021-08-17 22:39:08 -05:00
Tanguy Pruvot f8c67c4810 🐛 Fix Longer3D PWM/timer pins (#22583) 2021-08-17 22:37:27 -05:00
Jason Smith c05de6cbf8 ️ Simplify PROBING_STEPPERS_OFF (#22581) 2021-08-17 22:35:12 -05:00
Keith Bennett 6464601411 ️ Revert ABL G29 feedrate (#22574)
Reverts 9130f58
2021-08-17 22:27:21 -05:00
thinkyhead ab8e212c2d [cron] Bump distribution date (2021-08-18) 2021-08-18 00:58:27 +00:00
Scott Lahteine 09af42e1af Clean up CrealityUI and MarlinUI (#22586) 2021-08-17 06:18:19 -05:00
thinkyhead 3e0d8e16aa [cron] Bump distribution date (2021-08-17) 2021-08-17 00:57:07 +00:00
Scott Lahteine 510f8d3e0c 💚 Update STM32F103RET6_creality test path 2021-08-15 21:31:00 -05:00
thinkyhead d586340655 [cron] Bump distribution date (2021-08-16) 2021-08-16 00:57:32 +00:00
Scott Lahteine af0cd400be 🐛 Fix LCD_COL_X_RJ
Followup to #22471
2021-08-15 19:27:47 -05:00
thinkyhead a307348b89 [cron] Bump distribution date (2021-08-15) 2021-08-15 00:57:42 +00:00
thinkyhead 8fe84fcf87 [cron] Bump distribution date (2021-08-14) 2021-08-14 00:54:13 +00:00
Scott Lahteine fc817feee3 🎨 Update HAL/STM32 wrappers
Followup to #22537
2021-08-13 18:50:12 -05:00
Scott Lahteine c161a46112 🎨 Update MKSPWC, some other pins (#22557) 2021-08-13 16:32:25 -05:00
BigTreeTech feb6d2887e 🐛 Fix some BTT SKR2 pins (#22558) 2021-08-12 23:26:26 -05:00
Tanguy Pruvot 1555db237e 🚸 Fewer CRs in settings report (#22560) 2021-08-12 22:40:52 -05:00
thinkyhead b028df4228 [cron] Bump distribution date (2021-08-13) 2021-08-13 00:58:12 +00:00
Miguel Risco-Castillo 59324a411f 🐛 Fix Ender-3 v2 language init (#22550) 2021-08-11 21:00:47 -05:00
thinkyhead 534da44e1f [cron] Bump distribution date (2021-08-12) 2021-08-12 00:57:35 +00:00
Scott Lahteine 4d3cb95bd8 🔨 Use zip link for MarlinSimUI 2021-08-11 18:20:42 -05:00
Scott Lahteine bf9cd90cc4 🎨 Tweak M73 condition 2021-08-11 18:20:29 -05:00
ellensp 5c610b2c18 🚸 Better error for MOTHERBOARD not defined (#22551) 2021-08-11 18:06:09 -05:00
Tanguy Pruvot c657fe2112 🐛 Fix M575 port index output (#22553) 2021-08-11 17:58:28 -05:00
thinkyhead cad142ab1b [cron] Bump distribution date (2021-08-11) 2021-08-11 00:59:26 +00:00
Scott Lahteine 25d5d2ab50 🚸 Set M122 interval only with S0 or Pn 2021-08-10 04:01:45 -05:00
Scott Lahteine 13e4e24e21 🐛 Use delete [] for new [] 2021-08-10 04:01:33 -05:00
thinkyhead 1ed59fef93 [cron] Bump distribution date (2021-08-10) 2021-08-10 01:01:05 +00:00
Scott Lahteine cc109c1802 🐛 Fix CoreXY plus extra axes
See #22490
2021-08-09 16:07:15 -05:00
Tanguy Pruvot ae846c2cb2 🚑️ Init FastIO before anything else (#22508) 2021-08-08 21:37:27 -05:00
Scott Lahteine 76c10b3e02 🏗️ Define HAL_STM32 for HAL/STM32 (#22537) 2021-08-08 21:31:10 -05:00
Jason Smith 331cc5fd6a 🐛 Fix some Simulator on Windows issues (#22516) 2021-08-08 21:25:17 -05:00
thinkyhead 47281012d9 [cron] Bump distribution date (2021-08-09) 2021-08-09 00:59:01 +00:00
1760 changed files with 161818 additions and 52712 deletions
+5 -1
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
+178
View File
@@ -0,0 +1,178 @@
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/bugfix-2.1.x/.github/code_of_conduct.md). You are expected to comply with it, including treating everyone with respect.
- Test with the [`bugfix-2.1.x` branch](https://github.com/MarlinFirmware/Marlin/archive/bugfix-2.1.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/bugfix-2.1.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.1.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.1.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.
When pasting formatted text don't forget to put ` ``` ` (on its own line) before and after to make it readable.
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: Bed Leveling
description: What kind of bed leveling compensation are you using?
options:
- UBL Bilinear mesh
- ABL Bilinear mesh
- ABL Linear grid
- ABL 3-point
- MBL Manual Bed Leveling
- No Bed Leveling
- 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: |
# Attachments
- type: checkboxes
attributes:
label: Don't forget to include
options:
- label: A ZIP file containing your `Configuration.h` and `Configuration_adv.h`.
required: true
- type: markdown
attributes:
value: |
### Optional items to include:
- '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.
- type: textarea
attributes:
label: Additional information & file uploads
description: >-
If you've made any other modifications to the firmware, please describe them in detail.
When pasting formatted text don't forget to put ` ``` ` (on its own line) before and after to make it readable.
+20
View File
@@ -0,0 +1,20 @@
blank_issues_enabled: false
contact_links:
- name: 📖 Marlin Documentation
url: https://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: https://reprap.org/forum/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!
@@ -0,0 +1,44 @@
name: ✨ Request a feature
description: Request a new Marlin Firmware feature
title: "[FR] (feature summary)"
labels: 'T: Feature Request'
body:
- type: markdown
attributes:
value: >
Do you want to ask a question? Are you looking for support? Please use one of the [support links](https://github.com/MarlinFirmware/Marlin/issues/new/choose).
- type: markdown
attributes:
value: >
**Thank you for requesting a new Marlin Firmware feature!**
## Before Requesting a Feature
- Read and understand Marlin's [Code of Conduct](https://github.com/MarlinFirmware/Marlin/blob/master/.github/code_of_conduct.md). You are expected to comply with it, including treating everyone with respect.
- Check the latest [`bugfix-2.1.x` branch](https://github.com/MarlinFirmware/Marlin/archive/bugfix-2.1.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.
+10 -7
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.1.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.
-35
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.
+16 -6
View File
@@ -1,23 +1,33 @@
### Requirements
<!--
* Filling out this template is required. Pull Requests without a clear description may be closed at the maintainers' discretion.
Submitting a Pull Request
- Please fill out all sections of this form. You can delete the helpful comments.
- Pull Requests without clear information will take longer and may even be rejected.
- We get a high volume of submissions so please be patient during review.
-->
### Description
<!--
We must be able to understand your proposed change from this description. If we can't understand what the code will do from this description, the Pull Request may be closed at the maintainers' discretion. Keep in mind that the maintainer reviewing this PR may not be familiar with or have worked with the code recently, so please walk us through the concepts.
Clearly describe the submitted changes with lots of details. Include images where helpful. Initial reviewers may not be familiar with the subject, so be as thorough as possible. You can use MarkDown syntax to improve readability with bullet lists, code blocks, and so on. PREVIEW and fix up formatting before submitting.
-->
### Requirements
<!-- Does this PR require a specific board, LCD, etc.? -->
### Benefits
<!-- What does this fix or improve? -->
<!-- What does this PR fix or improve? -->
### Configurations
<!-- Attach any Configuration.h, Configuration_adv.h, or platformio.ini files needed to compile/test your Pull Request. -->
<!-- Attach Configurations ZIP and any other files needed to test this PR. -->
### Related Issues
<!-- Whether this fixes a bug or fulfills a feature request, please list any related Issues here. -->
<!-- Does this PR fix a bug or fulfill a Feature Request? Link related Issues here. -->
+59
View File
@@ -0,0 +1,59 @@
#
# bump-date.yml
# Bump the distribution date once per day
#
name: Bump Distribution Date
on:
schedule:
- cron: '0 */6 * * *'
jobs:
bump_date:
name: Bump Distribution Date
if: github.repository == 'MarlinFirmware/Marlin'
runs-on: ubuntu-latest
steps:
- name: Check out bugfix-2.1.x
uses: actions/checkout@v2
with:
ref: bugfix-2.1.x
- name: Bump Date (bugfix-2.0.x)
run: |
# Inline Bump Script
if [[ ! "$( git log -1 --pretty=%B )" =~ ^\[cron\] ]]; then
DIST=$( date +"%Y-%m-%d" )
eval "sed -E -i 's/(#define +STRING_DISTRIBUTION_DATE) .*$/\1 \"$DIST\"/g' Marlin/src/inc/Version.h" && \
eval "sed -E -i 's/(#define +STRING_DISTRIBUTION_DATE) .*$/\1 \"$DIST\"/g' Marlin/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
fi
exit 0
- name: Check out bugfix-2.1.x
uses: actions/checkout@v2
with:
ref: bugfix-2.1.x
- name: Bump Date (bugfix-2.1.x)
run: |
# Inline Bump Script
if [[ ! "$( git log -1 --pretty=%B )" =~ ^\[cron\] ]]; then
DIST=$( date +"%Y-%m-%d" )
eval "sed -E -i 's/(#define +STRING_DISTRIBUTION_DATE) .*$/\1 \"$DIST\"/g' Marlin/src/inc/Version.h" && \
eval "sed -E -i 's/(#define +STRING_DISTRIBUTION_DATE) .*$/\1 \"$DIST\"/g' Marlin/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
fi
exit 0
+34
View File
@@ -0,0 +1,34 @@
#
# check-pr.yml
# Close PRs directed at release branches
#
name: PR Bad Target
on:
pull_request_target:
types: [opened]
branches:
- 1.0.x
- 1.1.x
- 2.0.x
- 2.1.x
jobs:
bad_target:
name: PR Bad Target
if: github.repository == 'MarlinFirmware/Marlin'
runs-on: ubuntu-latest
steps:
- uses: superbrothers/close-pull-request@v3
with:
comment: >
Thanks for your contribution! Unfortunately we can't accept PRs directed at release branches. We make patches to the bugfix branches and only later do we push them out as releases.
Please redo this PR starting with the `bugfix-2.1.x` branch and be careful to target `bugfix-2.1.x` when resubmitting the PR. Patches may also target `bugfix-2.0.x` if they are specifically for 2.0.9.x.
It may help to set your fork's default branch to `bugfix-2.0.x`.
See [this page](https://marlinfw.org/docs/development/getting_started_pull_requests.html) for full instructions.
+39
View File
@@ -0,0 +1,39 @@
#
# clean-closed.yml
# Remove obsolete labels when an Issue or PR is closed
#
name: Clean Closed
on:
pull_request:
types: [closed]
issues:
types: [closed]
jobs:
remove_label:
runs-on: ubuntu-latest
strategy:
matrix:
label:
- "S: Don't Merge"
- "S: Hold for 2.1"
- "S: Please Merge"
- "S: Please Test"
- "help wanted"
- "Needs: Discussion"
- "Needs: Documentation"
- "Needs: More Data"
- "Needs: Patch"
- "Needs: Testing"
- "Needs: Work"
steps:
- uses: actions/checkout@v2
- name: Remove Labels
uses: actions-ecosystem/action-remove-labels@v1
with:
github_token: ${{ github.token }}
labels: ${{ matrix.label }}
+28
View File
@@ -0,0 +1,28 @@
#
# close-stale.yml
# Close open issues after a period of inactivity
#
name: Close Stale Issues
on:
schedule:
- cron: "22 1 * * *"
jobs:
stale:
name: Close Stale Issues
if: github.repository == 'MarlinFirmware/Marlin'
runs-on: ubuntu-latest
steps:
- uses: actions/stale@v3
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
stale-issue-message: 'This issue has had no activity in the last 60 days. Please add a reply if you want to keep this issue active, otherwise it will be automatically closed within 10 days.'
days-before-stale: 60
days-before-close: 10
stale-issue-label: 'stale-closing-soon'
exempt-all-assignees: true
exempt-issue-labels: 'Bug: Confirmed !,T: Feature Request,Needs: More Data,Needs: Discussion,Needs: Documentation,Needs: Patch,Needs: Work,Needs: Testing,help wanted,no-locking'
+32
View File
@@ -0,0 +1,32 @@
#
# lock-closed.yml
# Lock closed issues after a period of inactivity
#
name: Lock Closed Issues
on:
schedule:
- cron: '0 1/13 * * *'
jobs:
lock:
name: Lock Closed Issues
if: github.repository == 'MarlinFirmware/Marlin'
runs-on: ubuntu-latest
steps:
- uses: dessant/lock-threads@v2
with:
github-token: ${{ github.token }}
process-only: 'issues'
issue-lock-inactive-days: '60'
issue-exclude-created-before: ''
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: ''
+22 -14
View File
@@ -8,7 +8,7 @@ name: CI
on:
pull_request:
branches:
- bugfix-2.0.x
- bugfix-2.1.x
paths-ignore:
- config/**
- data/**
@@ -16,7 +16,7 @@ on:
- '**/*.md'
push:
branches:
- bugfix-2.0.x
- bugfix-2.1.x
paths-ignore:
- config/**
- data/**
@@ -45,6 +45,7 @@ jobs:
- teensy35
- teensy41
- SAMD51_grandcentral_m4
- PANDA_PI_V29
# Extended AVR Environments
@@ -59,14 +60,14 @@ jobs:
#- STM32F103RC_btt_maple
- STM32F103RC_btt_USB_maple
- STM32F103RC_fysetc_maple
- STM32F103RC_meeb
- 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
#- STM32F103RET6_creality_maple
#- mks_robin_nano_v1v2_maple
#- STM32F103RE_creality_maple
- STM32F103VE_ZM3E4V2_USB_maple
# STM32 (ST) Environments
@@ -75,10 +76,10 @@ jobs:
#- STM32F103RC_btt_USB
- STM32F103RE_btt
- STM32F103RE_btt_USB
- STM32F103RET6_creality
- STM32F103RE_creality
- STM32F401RC_creality
- STM32F103VE_longer
- STM32F407VE_black
- STM32F401VE_STEVAL
- BIGTREE_BTT002
- BIGTREE_SKR_PRO
- BIGTREE_GTR_V1_0
@@ -92,11 +93,17 @@ jobs:
- rumba32
- LERDGEX
- LERDGEK
- mks_robin_nano35
- mks_robin_nano_v1v2
#- mks_robin_nano_v1v2_usbmod
#- mks_robin_nano_v1_3_f4_usbmod
- NUCLEO_F767ZI
- REMRAM_V1
- BTT_SKR_SE_BX
- chitu_f103
- Opulo_Lumen_REV3
# ESP32 environments
- mks_tinybee
# Put lengthy tests last
@@ -112,10 +119,10 @@ jobs:
steps:
- name: Check out the PR
uses: actions/checkout@v2
uses: actions/checkout@v3
- name: Cache pip
uses: actions/cache@v2
uses: actions/cache@v3
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }}
@@ -123,21 +130,22 @@ jobs:
${{ runner.os }}-pip-
- name: Cache PlatformIO
uses: actions/cache@v2
uses: actions/cache@v3
with:
path: ~/.platformio
key: ${{ runner.os }}-${{ hashFiles('**/lockfiles') }}
- name: Select Python 3.7
uses: actions/setup-python@v2
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
pip install -U platformio
pio upgrade --dev
pio pkg update --global
- name: Run ${{ matrix.test-platform }} Tests
run: |
+22
View File
@@ -0,0 +1,22 @@
#
# unlock-reopened.yml
# Unlock an issue whenever it is re-opened
#
name: "Unlock reopened issue"
on:
issues:
types: [reopened]
jobs:
unlock:
name: Unlock Reopened
if: github.repository == 'MarlinFirmware/Marlin'
runs-on: ubuntu-latest
steps:
- uses: OSDKDev/unlock-issues@v1.1
with:
repo-token: "${{ secrets.GITHUB_TOKEN }}"
+10 -11
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,20 +140,20 @@ __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
#Simulation
imgui.ini
eeprom.dat
spi_flash.bin
fs.img
#cmake
CMakeLists.txt
src/CMakeLists.txt
CMakeListsPrivate.txt
build/
# CLion
cmake-build-*
@@ -167,7 +170,3 @@ __pycache__
# IOLogger logs
*_log.csv
# Simulation / Native
eeprom.dat
imgui.ini
+11
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"
]
}
+678 -248
View File
File diff suppressed because it is too large Load Diff
+835 -694
View File
File diff suppressed because it is too large Load Diff
+93 -55
View File
@@ -109,7 +109,7 @@ 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)
# 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
@@ -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
+2 -2
View File
@@ -28,7 +28,7 @@
/**
* Marlin release version identifier
*/
//#define SHORT_BUILD_VERSION "bugfix-2.0.x"
//#define SHORT_BUILD_VERSION "bugfix-2.1.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-08-08"
//#define STRING_DISTRIBUTION_DATE "2022-10-12"
/**
* Defines a generic printer name to be output to the LCD after booting Marlin.
+211
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
+93 -15
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
+139 -79
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;
@@ -129,59 +143,15 @@ 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)
@@ -195,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);
};
+13 -12
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);
@@ -21,7 +21,6 @@
*/
#pragma once
#define WDT_TIMEOUT 4000000 // 4 second timeout
#include <SPI.h>
void watchdog_init();
void HAL_watchdog_refresh();
using MarlinSPI = SPIClass;
+2 -2
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) {
+4 -4
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; }
+102 -92
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
}
+46
View File
@@ -213,6 +213,51 @@ void setup_endstop_interrupts() {
pciSetup(K_MIN_PIN);
#endif
#endif
#if HAS_U_MAX
#if (digitalPinToInterrupt(U_MAX_PIN) != NOT_AN_INTERRUPT)
_ATTACH(U_MAX_PIN);
#else
static_assert(digitalPinHasPCICR(U_MAX_PIN), "U_MAX_PIN is not interrupt-capable");
pciSetup(U_MAX_PIN);
#endif
#elif HAS_U_MIN
#if (digitalPinToInterrupt(U_MIN_PIN) != NOT_AN_INTERRUPT)
_ATTACH(U_MIN_PIN);
#else
static_assert(digitalPinHasPCICR(U_MIN_PIN), "U_MIN_PIN is not interrupt-capable");
pciSetup(U_MIN_PIN);
#endif
#endif
#if HAS_V_MAX
#if (digitalPinToInterrupt(V_MAX_PIN) != NOT_AN_INTERRUPT)
_ATTACH(V_MAX_PIN);
#else
static_assert(digitalPinHasPCICR(V_MAX_PIN), "V_MAX_PIN is not interrupt-capable");
pciSetup(V_MAX_PIN);
#endif
#elif HAS_V_MIN
#if (digitalPinToInterrupt(V_MIN_PIN) != NOT_AN_INTERRUPT)
_ATTACH(V_MIN_PIN);
#else
static_assert(digitalPinHasPCICR(V_MIN_PIN), "V_MIN_PIN is not interrupt-capable");
pciSetup(V_MIN_PIN);
#endif
#endif
#if HAS_W_MAX
#if (digitalPinToInterrupt(W_MAX_PIN) != NOT_AN_INTERRUPT)
_ATTACH(W_MAX_PIN);
#else
static_assert(digitalPinHasPCICR(W_MAX_PIN), "W_MAX_PIN is not interrupt-capable");
pciSetup(W_MAX_PIN);
#endif
#elif HAS_W_MIN
#if (digitalPinToInterrupt(W_MIN_PIN) != NOT_AN_INTERRUPT)
_ATTACH(W_MIN_PIN);
#else
static_assert(digitalPinHasPCICR(W_MIN_PIN), "W_MIN_PIN is not interrupt-capable");
pciSetup(W_MIN_PIN);
#endif
#endif
#if HAS_X2_MAX
#if (digitalPinToInterrupt(X2_MAX_PIN) != NOT_AN_INTERRUPT)
_ATTACH(X2_MAX_PIN);
@@ -301,5 +346,6 @@ void setup_endstop_interrupts() {
pciSetup(Z_MIN_PROBE_PIN);
#endif
#endif
// If we arrive here without raising an assertion, each pin has either an EXT-interrupt or a PCI.
}
+135 -195
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__
+8 -8
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);
+21 -44
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)
+49 -5
View File
@@ -25,25 +25,65 @@
* 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 \
|| BTN_EN1 == N || BTN_EN2 == N \
)
#if CONF_SERIAL_IS(0)
// D0-D1. No known conflicts.
#endif
#if NOT_TARGET(__AVR_ATmega644P__, __AVR_ATmega1284P__)
#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
#else
#if CONF_SERIAL_IS(1) && (CHECK_SERIAL_PIN(10) || CHECK_SERIAL_PIN(11))
#error "Serial Port 1 pin D10 and/or D11 conflicts with another pin on the board."
#endif
#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 +103,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
+2 -2
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__ (
+35 -30
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
@@ -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
@@ -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
+3
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
+22 -22
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
@@ -64,8 +64,8 @@
#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));
-70
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__
+110 -33
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);
+93 -48
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;
@@ -97,55 +100,38 @@ extern DefaultSerial4 MSerial3;
#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
@@ -154,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" {
@@ -186,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);
}
};
+8 -14
View File
@@ -31,8 +31,6 @@
/**
* HAL for Arduino Due and compatible (SAM3X8E)
*
* For ARDUINO_ARCH_SAM
*/
#ifdef ARDUINO_ARCH_SAM
@@ -249,12 +247,12 @@
b <<= 1; // little setup time
WRITE(SD_SCK_PIN, HIGH);
DELAY_NS(spiDelayNS);
DELAY_NS_VAR(spiDelayNS);
b |= (READ(SD_MISO_PIN) != 0);
WRITE(SD_SCK_PIN, LOW);
DELAY_NS(spiDelayNS);
DELAY_NS_VAR(spiDelayNS);
} while (--bits);
return b;
}
@@ -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);
+1 -1
View File
@@ -41,7 +41,7 @@
practice, we need alignment to 256 bytes to make this work in all
cases */
__attribute__ ((aligned(256)))
static DeviceVectors ram_tab = { nullptr };
static DeviceVectors ram_tab[61] = { nullptr };
/**
* This function checks if the exception/interrupt table is already in SRAM or not.
@@ -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;
+2 -2
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)) {
+1 -1
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; }
+1 -1
View File
@@ -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;
@@ -25,7 +25,7 @@
#if ENABLED(POSTMORTEM_DEBUGGING)
#include "../shared/HAL_MinSerial.h"
#include "../shared/MinSerial.h"
#include <stdarg.h>
+68 -64
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
+1 -1
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
+4 -4
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--;
@@ -20,7 +20,6 @@
*
*/
/**
* Based on u8g_com_msp430_hw_spi.c
*
@@ -57,7 +57,7 @@
#include "../../../inc/MarlinConfigPre.h"
#if ENABLED(U8GLIB_ST7920)
#if IS_U8GLIB_ST7920
#include "../../../inc/MarlinConfig.h"
#include "../../shared/Delay.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
@@ -57,7 +57,7 @@
#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"
@@ -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
+17 -29
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);
+6
View File
@@ -70,4 +70,10 @@ void setup_endstop_interrupts() {
TERN_(HAS_J_MIN, _ATTACH(J_MIN_PIN));
TERN_(HAS_K_MAX, _ATTACH(K_MAX_PIN));
TERN_(HAS_K_MIN, _ATTACH(K_MIN_PIN));
TERN_(HAS_U_MAX, _ATTACH(U_MAX_PIN));
TERN_(HAS_U_MIN, _ATTACH(U_MIN_PIN));
TERN_(HAS_V_MAX, _ATTACH(V_MAX_PIN));
TERN_(HAS_V_MIN, _ATTACH(V_MIN_PIN));
TERN_(HAS_W_MAX, _ATTACH(W_MAX_PIN));
TERN_(HAS_W_MIN, _ATTACH(W_MIN_PIN));
}
+1 -1
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
+28
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
+7 -4
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,9 +67,10 @@
#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)
#define VALID_PIN(pin) (pin >= 0 && pin < int8_t(NUMBER_PINS_TOTAL))
#define DIGITAL_PIN_TO_ANALOG_PIN(p) int(p - analogInputToDigitalPin(0))
#define IS_ANALOG(P) WITHIN(P, char(analogInputToDigitalPin(0)), char(analogInputToDigitalPin(NUM_ANALOG_INPUTS - 1)))
#define pwm_status(pin) (((g_pinStatus[pin] & 0xF) == PIN_STATUS_PWM) && \
@@ -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);
}
}
+17 -10
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);
}
+27 -26
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
+10 -9
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"
)
+1 -1
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;
}
}
+1 -1
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
+1 -1
View File
@@ -62,7 +62,7 @@ void usb_task_idle(void) {
// Attend SD card access from the USB MSD -- Prioritize access to improve speed
int delay = 2;
while (main_b_msc_enable && --delay > 0) {
if (udi_msc_process_trans()) delay = 10000;
if (udi_msc_process_trans()) delay = 20;
// Reset the watchdog, just to be sure
REG_WDT_CR = WDT_CR_WDRSTT | WDT_CR_KEY(0xA5);
-114
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
+193 -47
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
+120 -58
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);
};
+2 -4
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) {
@@ -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;
+8 -10
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) {
+1 -2
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();
+4 -4
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--;
@@ -65,4 +65,10 @@ void setup_endstop_interrupts() {
TERN_(HAS_J_MIN, _ATTACH(J_MIN_PIN));
TERN_(HAS_K_MAX, _ATTACH(K_MAX_PIN));
TERN_(HAS_K_MIN, _ATTACH(K_MIN_PIN));
TERN_(HAS_U_MAX, _ATTACH(U_MAX_PIN));
TERN_(HAS_U_MIN, _ATTACH(U_MIN_PIN));
TERN_(HAS_V_MAX, _ATTACH(V_MAX_PIN));
TERN_(HAS_V_MIN, _ATTACH(V_MIN_PIN));
TERN_(HAS_W_MAX, _ATTACH(W_MAX_PIN));
TERN_(HAS_W_MIN, _ATTACH(W_MIN_PIN));
}
+6
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
+12 -6
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
+62 -23
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) {
@@ -140,22 +139,40 @@ static void IRAM_ATTR i2s_intr_handler_default(void *arg) {
}
void stepperTask(void *parameter) {
uint32_t remaining = 0;
uint32_t nextMainISR = 0;
#if ENABLED(LIN_ADVANCE)
uint32_t nextAdvanceISR = Stepper::LA_ADV_NEVER;
#endif
while (1) {
for (;;) {
xQueueReceive(dma.queue, &dma.current, portMAX_DELAY);
dma.rw_pos = 0;
while (dma.rw_pos < DMA_SAMPLE_COUNT) {
// Fill with the port data post pulse_phase until the next step
if (remaining) {
if (nextMainISR && TERN1(LIN_ADVANCE, nextAdvanceISR))
i2s_push_sample();
remaining--;
}
else {
// i2s_push_sample() is also called from Stepper::pulse_phase_isr() and Stepper::advance_isr()
// in a rare case where both are called, we need to double decrement the counters
const uint8_t push_count = 1 + (!nextMainISR && TERN0(LIN_ADVANCE, !nextAdvanceISR));
#if ENABLED(LIN_ADVANCE)
if (!nextAdvanceISR) {
Stepper::advance_isr();
nextAdvanceISR = Stepper::la_interval;
}
else if (nextAdvanceISR == Stepper::LA_ADV_NEVER)
nextAdvanceISR = Stepper::la_interval;
#endif
if (!nextMainISR) {
Stepper::pulse_phase_isr();
remaining = Stepper::block_phase_isr();
nextMainISR = Stepper::block_phase_isr();
}
nextMainISR -= push_count;
TERN_(LIN_ADVANCE, nextAdvanceISR -= push_count);
}
}
}
@@ -254,13 +271,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 +322,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 +355,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
@@ -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
+18 -2
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,19 @@
#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 BOTH(I2S_STEPPER_STREAM, BABYSTEPPING) && DISABLED(INTEGRATED_BABYSTEPPING)
#error "BABYSTEPPING on I2S stream requires INTEGRATED_BABYSTEPPING."
#endif
#if USING_PULLDOWNS
#error "PULLDOWN pin mode is not available on ESP32 boards."
#endif
#if BOTH(I2S_STEPPER_STREAM, LIN_ADVANCE) && DISABLED(EXPERIMENTAL_I2S_LA)
#error "I2S stream is currently incompatible with LIN_ADVANCE."
#endif
+3
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
+10 -10
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);
}
+19 -19
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
+106
View File
@@ -0,0 +1,106 @@
/**
* 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"
#if ENABLED(SDSUPPORT)
#include "../../sd/cardreader.h"
#if ENABLED(ESP3D_WIFISUPPORT)
#include "sd_ESP32.h"
#endif
#endif
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 ENABLED(PAUSE_LCD_FOR_BUSY_SD)
if (card.flag.saving || card.flag.logging || TERN0(ESP3D_WIFISUPPORT, sd_busy_lock == true)) return 0;
#endif
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
+1 -1
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
+1 -4
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());
}
+10 -27
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__
+100 -50
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) {}
};
@@ -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;
+1 -3
View File
@@ -31,9 +31,7 @@ void cli() { } // Disable
void sei() { } // Enable
// Time functions
void _delay_ms(const int delay_ms) {
delay(delay_ms);
}
void _delay_ms(const int ms) { delay(ms); }
uint32_t millis() {
return (uint32_t)Clock::millis();
+8 -8
View File
@@ -69,12 +69,12 @@ bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, ui
std::size_t bytes_written = 0;
for (std::size_t i = 0; i < size; i++) {
buffer[pos+i] = value[i];
bytes_written ++;
buffer[pos + i] = value[i];
bytes_written++;
}
crc16(crc, value, size);
pos = pos + size;
pos += size;
return (bytes_written != size); // return true for any error
}
@@ -82,21 +82,21 @@ bool PersistentStore::read_data(int &pos, uint8_t *value, const size_t size, uin
std::size_t bytes_read = 0;
if (writing) {
for (std::size_t i = 0; i < size; i++) {
value[i] = buffer[pos+i];
bytes_read ++;
value[i] = buffer[pos + i];
bytes_read++;
}
crc16(crc, value, size);
}
else {
uint8_t temp[size];
for (std::size_t i = 0; i < size; i++) {
temp[i] = buffer[pos+i];
bytes_read ++;
temp[i] = buffer[pos + i];
bytes_read++;
}
crc16(crc, temp, size);
}
pos = pos + size;
pos += size;
return bytes_read != size; // return true for any error
}
+2 -2
View File
@@ -26,8 +26,8 @@
struct LowpassFilter {
uint64_t data_delay = 0;
uint16_t update(uint16_t value) {
data_delay = data_delay - (data_delay >> 6) + value;
return (uint16_t)(data_delay >> 6);
data_delay += value - (data_delay >> 6);
return uint16_t(data_delay >> 6);
}
};
+1 -1
View File
@@ -26,7 +26,7 @@
*/
// Emulating RAMPS
#if ENABLED(SPINDLE_LASER_PWM) && !(SPINDLE_LASER_PWM_PIN == 4 || SPINDLE_LASER_PWM_PIN == 6 || SPINDLE_LASER_PWM_PIN == 11)
#if ENABLED(SPINDLE_LASER_USE_PWM) && !(SPINDLE_LASER_PWM_PIN == 4 || SPINDLE_LASER_PWM_PIN == 6 || SPINDLE_LASER_PWM_PIN == 11)
#error "SPINDLE_LASER_PWM_PIN must use SERVO0, SERVO1 or SERVO3 connector"
#endif
+3 -4
View File
@@ -59,10 +59,9 @@ typedef uint8_t byte;
#endif
#define sq(v) ((v) * (v))
#define square(v) sq(v)
#define constrain(value, arg_min, arg_max) ((value) < (arg_min) ? (arg_min) :((value) > (arg_max) ? (arg_max) : (value)))
//Interrupts
// Interrupts
void cli(); // Disable
void sei(); // Enable
void attachInterrupt(uint32_t pin, void (*callback)(), uint32_t mode);
@@ -74,8 +73,8 @@ extern "C" {
}
// Time functions
extern "C" void delay(const int milis);
void _delay_ms(const int delay);
extern "C" void delay(const int ms);
void _delay_ms(const int ms);
void delayMicroseconds(unsigned long);
uint32_t millis();
+4
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
@@ -16,6 +19,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
*/
#ifdef __PLAT_LINUX__
//#define GPIO_LOGGING // Full GPIO and Positional Logging
+4
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
@@ -34,6 +37,7 @@
#define GET_ARRAY_PIN(p) pin_array[p].pin
#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("%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)
#define MULTI_NAME_PAD 16 // space needed to be pretty if not first name assigned to a pin
// active ADC function/mode/code values for PINSEL registers
+13 -14
View File
@@ -37,14 +37,14 @@ typedef uint32_t hal_timer_t;
#define HAL_TIMER_RATE ((SystemCoreClock) / 4) // frequency of timers peripherals
#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
#define TEMP_TIMER_RATE 1000000
@@ -58,12 +58,12 @@ typedef uint32_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_STEP_TIMER_ISR
#define HAL_STEP_TIMER_ISR() extern "C" void TIMER0_IRQHandler()
@@ -77,7 +77,6 @@ typedef uint32_t hal_timer_t;
#define HAL_PWM_TIMER_ISR() extern "C" void TIMER3_IRQHandler()
#define HAL_PWM_TIMER_IRQn
void HAL_timer_init();
void HAL_timer_start(const uint8_t timer_num, const uint32_t frequency);
@@ -93,5 +92,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
-37
View File
@@ -1,37 +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 __PLAT_LINUX__
#include "../../inc/MarlinConfig.h"
#if ENABLED(USE_WATCHDOG)
#include "watchdog.h"
#define WDT_TIMEOUT_US TERN(WATCHDOG_DURATION_8S, 8000000, 4000000) // 4 or 8 second timeout
void watchdog_init() {}
void HAL_watchdog_refresh() {}
#endif
#endif // __PLAT_LINUX__
+66 -28
View File
@@ -25,13 +25,9 @@
#include "../shared/Delay.h"
#include "../../../gcode/parser.h"
#if ENABLED(USE_WATCHDOG)
#include "watchdog.h"
#endif
DefaultSerial1 USBSerial(false, UsbSerial);
uint32_t HAL_adc_reading = 0;
uint32_t MarlinHAL::adc_result = 0;
// U8glib required functions
extern "C" {
@@ -41,8 +37,6 @@ extern "C" {
void u8g_Delay(uint16_t val) { delay(val); }
}
//************************//
// return free heap space
int freeMemory() {
char stack_end;
@@ -54,7 +48,71 @@ int freeMemory() {
return result;
}
// scan command line for code
void MarlinHAL::reboot() { NVIC_SystemReset(); }
uint8_t MarlinHAL::get_reset_source() {
#if ENABLED(USE_WATCHDOG)
if (watchdog_timed_out()) return RST_WATCHDOG;
#endif
return RST_POWER_ON;
}
void MarlinHAL::clear_reset_source() { watchdog_clear_timeout_flag(); }
void flashFirmware(const int16_t) {
delay(500); // Give OS time to disconnect
USB_Connect(false); // USB clear connection
delay(1000); // Give OS time to notice
hal.reboot();
}
#if ENABLED(USE_WATCHDOG)
#include <lpc17xx_wdt.h>
#define WDT_TIMEOUT_US TERN(WATCHDOG_DURATION_8S, 8000000, 4000000) // 4 or 8 second timeout
void MarlinHAL::watchdog_init() {
#if ENABLED(WATCHDOG_RESET_MANUAL)
// We enable the watchdog timer, but only for the interrupt.
// Configure WDT to only trigger an 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();
// Configure WDT to only trigger an interrupt
// Initialize WDT with the given parameters
WDT_Init(WDT_CLKSRC_IRC, WDT_MODE_INT_ONLY);
// 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
WDT_Init(WDT_CLKSRC_IRC, WDT_MODE_RESET);
#endif
WDT_Start(WDT_TIMEOUT_US);
}
void MarlinHAL::watchdog_refresh() {
WDT_Feed();
#if DISABLED(PINS_DEBUGGING) && PIN_EXISTS(LED)
TOGGLE(LED_PIN); // heartbeat indicator
#endif
}
// Timeout state
bool MarlinHAL::watchdog_timed_out() { return TEST(WDT_ReadTimeOutFlag(), 0); }
void MarlinHAL::watchdog_clear_timeout_flag() { WDT_ClrTimeOutFlag(); }
#endif // USE_WATCHDOG
// For M42/M43, scan command line for pin code
// return index into pin map array if found and the pin is valid.
// return dval if not found or not a valid pin.
int16_t PARSED_PIN_INDEX(const char code, const int16_t dval) {
@@ -63,24 +121,4 @@ int16_t PARSED_PIN_INDEX(const char code, const int16_t dval) {
return ind > -1 ? ind : dval;
}
void flashFirmware(const int16_t) {
delay(500); // Give OS time to disconnect
USB_Connect(false); // USB clear connection
delay(1000); // Give OS time to notice
HAL_reboot();
}
void HAL_clear_reset_source(void) {
TERN_(USE_WATCHDOG, watchdog_clear_timeout_flag());
}
uint8_t HAL_get_reset_source(void) {
#if ENABLED(USE_WATCHDOG)
if (watchdog_timed_out()) return RST_WATCHDOG;
#endif
return RST_POWER_ON;
}
void HAL_reboot() { NVIC_SystemReset(); }
#endif // TARGET_LPC1768
+106 -70
View File
@@ -28,8 +28,6 @@
#define CPU_32_BIT
void HAL_init();
#include <stdint.h>
#include <stdarg.h>
#include <algorithm>
@@ -40,25 +38,15 @@ extern "C" volatile uint32_t _millis;
#include "../shared/math_32bit.h"
#include "../shared/HAL_SPI.h"
#include "fastio.h"
#include "watchdog.h"
#include "MarlinSerial.h"
#include <adc.h>
#include <pinmapping.h>
#include <CDCSerial.h>
//
// Default graphical display delays
//
#ifndef ST7920_DELAY_1
#define ST7920_DELAY_1 DELAY_NS(600)
#endif
#ifndef ST7920_DELAY_2
#define ST7920_DELAY_2 DELAY_NS(750)
#endif
#ifndef ST7920_DELAY_3
#define ST7920_DELAY_3 DELAY_NS(750)
#endif
// ------------------------
// Serial ports
// ------------------------
typedef ForwardSerial1Class< decltype(UsbSerial) > DefaultSerial1;
extern DefaultSerial1 USBSerial;
@@ -113,35 +101,19 @@ extern DefaultSerial1 USBSerial;
#error "LCD_SERIAL_PORT must be from 0 to 3. You can also use -1 if the board supports Native USB."
#endif
#if HAS_DGUS_LCD
#define SERIAL_GET_TX_BUFFER_FREE() MSerial0.available()
#define SERIAL_GET_TX_BUFFER_FREE() LCD_SERIAL.available()
#endif
#endif
//
// 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 CRITICAL_SECTION_START() const bool irqon = !__get_PRIMASK(); __disable_irq()
#define CRITICAL_SECTION_END() if (irqon) __enable_irq()
//
// Utility functions
//
#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
//
// ADC API
// ADC
//
#define ADC_MEDIAN_FILTER_SIZE (23) // Higher values increase step delay (phase shift),
@@ -160,20 +132,9 @@ int freeMemory();
#define HAL_ADC_RESOLUTION 12 // 15 bit maximum, raw temperature is stored as int16_t
#define HAL_ADC_FILTERED // Disable oversampling done in Marlin as ADC values already filtered in HAL
using FilteredADC = LPC176x::ADC<ADC_LOWPASS_K_VALUE, ADC_MEDIAN_FILTER_SIZE>;
extern uint32_t HAL_adc_reading;
[[gnu::always_inline]] inline void HAL_start_adc(const pin_t pin) {
HAL_adc_reading = FilteredADC::read(pin) >> (16 - HAL_ADC_RESOLUTION); // returns 16bit value, reduce to required bits
}
[[gnu::always_inline]] inline uint16_t HAL_read_adc() {
return HAL_adc_reading;
}
#define HAL_adc_init()
#define HAL_ANALOG_SELECT(pin) FilteredADC::enable_channel(pin)
#define HAL_START_ADC(pin) HAL_start_adc(pin)
#define HAL_READ_ADC() HAL_read_adc()
#define HAL_ADC_READY() (true)
//
// Pin Mapping for M42, M43, M226
//
// Test whether the pin is valid
constexpr bool VALID_PIN(const pin_t pin) {
@@ -200,32 +161,107 @@ int16_t PARSED_PIN_INDEX(const char code, const int16_t dval);
// P0.6 thru P0.9 are for the onboard SD card
#define HAL_SENSITIVE_PINS P0_06, P0_07, P0_08, P0_09,
#define HAL_IDLETASK 1
void HAL_idletask();
// ------------------------
// Defines
// ------------------------
#define PLATFORM_M997_SUPPORT
void flashFirmware(const int16_t);
#define HAL_CAN_SET_PWM_FREQ // This HAL supports PWM Frequency adjustment
/**
* set_pwm_frequency
* Set the frequency of the timer corresponding to the provided pin
* All Hardware PWM pins run at the same frequency and all
* Software PWM pins run at the same frequency
*/
void set_pwm_frequency(const pin_t pin, int f_desired);
// Default graphical display delays
#define CPU_ST7920_DELAY_1 600
#define CPU_ST7920_DELAY_2 750
#define CPU_ST7920_DELAY_3 750
/**
* set_pwm_duty
* Set 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);
// ------------------------
// Free Memory Accessor
// ------------------------
// Reset source
void HAL_clear_reset_source(void);
uint8_t HAL_get_reset_source(void);
#pragma GCC diagnostic push
#if GCC_VERSION <= 50000
#pragma GCC diagnostic ignored "-Wunused-function"
#endif
void HAL_reboot();
int freeMemory();
#pragma GCC diagnostic pop
// ------------------------
// MarlinHAL Class
// ------------------------
class MarlinHAL {
public:
// Earliest possible init, before setup()
MarlinHAL() {}
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 !__get_PRIMASK(); }
static void isr_on() { __enable_irq(); }
static void isr_off() { __disable_irq(); }
static void delay_ms(const int ms) { _delay_ms(ms); }
// Watchdog
static void watchdog_init() IF_DISABLED(USE_WATCHDOG, {});
static void watchdog_refresh() IF_DISABLED(USE_WATCHDOG, {});
static bool watchdog_timed_out() IF_DISABLED(USE_WATCHDOG, { return false; });
static void watchdog_clear_timeout_flag() IF_DISABLED(USE_WATCHDOG, {});
// 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
//
using FilteredADC = LPC176x::ADC<ADC_LOWPASS_K_VALUE, ADC_MEDIAN_FILTER_SIZE>;
// 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) {
FilteredADC::enable_channel(pin);
}
// Begin ADC sampling on the given pin. Called from Temperature::isr!
static uint32_t adc_result;
static void adc_start(const pin_t pin) {
adc_result = FilteredADC::read(pin) >> (16 - HAL_ADC_RESOLUTION); // returns 16bit value, reduce to required bits
}
// 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 uint16_t(adc_result); }
/**
* 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 corresponding to the provided pin
* All Hardware PWM pins will run at the same frequency and
* All Software PWM pins will run at the same frequency
*/
static void set_pwm_frequency(const pin_t pin, const uint16_t f_desired);
};

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