Compare commits

..

336 Commits

Author SHA1 Message Date
InsanityAutomation 1549a256d2 Add FatBoy config 2024-01-06 13:35:08 -05:00
InsanityAutomation 832e1ca0e7 Merge branch 'bugfix-2.1.x' of https://github.com/MarlinFirmware/Marlin into bugfix-2.1.x 2024-01-01 14:03:46 -05:00
Scott Lahteine 3b6f1bff8b 🧑‍💻 Update pinsformat 2024-01-01 00:57:02 -06:00
Scott Lahteine 1d615717e8 🧑‍💻 Python version of pins formatting script 2024-01-01 00:22:38 -06:00
thinkyhead 99c570212d [cron] Bump distribution date (2024-01-01) 2024-01-01 00:24:20 +00:00
nagubash 13e82fa44a 🔨 Fix formatting issue in Makefile (#26599) 2023-12-31 15:03:04 -06:00
narno2202 95878df30d 🐛 Fix homing with FT_MOTION (#26595) 2023-12-31 15:00:57 -06:00
ellensp 5d1ede08aa CTC_A10S_A13 (#26514) 2023-12-31 03:54:26 -06:00
thinkyhead 2203505182 [cron] Bump distribution date (2023-12-31) 2023-12-31 00:23:28 +00:00
ellensp 06dc7f4f52 🔧 Fix, extend FAN / AUTOFAN confict check (#26591)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2023-12-30 05:18:42 -06:00
Scott Lahteine e6f1b074df 🩹 Restore usleep for native / sim 2023-12-30 05:08:32 -06:00
thinkyhead f605c045e3 [cron] Bump distribution date (2023-12-30) 2023-12-30 00:20:29 +00:00
Keith Bennett 2d97f082e5 BigTreeTech Manta M8P V2.0 (STM32H723ZE) (#26578) 2023-12-28 22:50:52 -06:00
narno2202 ba91fa09b7 ️ Optimize FT_MOTION (#26557) 2023-12-28 22:41:34 -06:00
Keith Bennett 1aeee2cd1f 🔧 TriGorilla Pro default to ONBOARD_SDIO (#26586) 2023-12-28 20:10:45 -06:00
thinkyhead 4e23e52a89 [cron] Bump distribution date (2023-12-29) 2023-12-29 00:17:32 +00:00
Keith Bennett 88cf3cb1e0 📌 Specify U8glib-HAL@0.5.4 (#26582) 2023-12-28 18:07:52 -06:00
Keith Bennett 59d26e463a 🔨 Newer Platform & Toolchain for STM32G0 (#26585) 2023-12-28 17:38:19 -06:00
thinkyhead cc641d796d [cron] Bump distribution date (2023-12-28) 2023-12-28 00:21:10 +00:00
Scott Lahteine 9d324f7b1f 🎨 Remove unused usleep 2023-12-27 15:16:58 -06:00
Scott Lahteine 654e7a84ff 🩹 Minor MKS UI fix 2023-12-27 15:16:21 -06:00
Scott Lahteine d903a5ef43 Initial support for HC32 U8G LCD (#26568)
Co-authored-by: Chris <52449218+shadow578@users.noreply.github.com>
2023-12-27 01:27:43 -06:00
Scott Lahteine 15f26b4021 🧑‍💻 AS_CHAR => C (#26569) 2023-12-27 01:25:51 -06:00
Taylor Talkington 10d80eb894 📝 Docs: Binary File Transfer (BFT) Protocol (#26570) 2023-12-27 01:24:16 -06:00
Scott Lahteine 858954baad 🧑‍💻 Update Uncrustify config 2023-12-27 01:17:14 -06:00
thinkyhead 3840663410 [cron] Bump distribution date (2023-12-27) 2023-12-27 00:28:24 +00:00
Scott Lahteine bd36644d85 🧑‍💻 Move U8G defines to HALs 2023-12-26 17:53:49 -06:00
Keith Bennett c485f513d7 BigTreeTech Kraken V1.0 (STM32H723ZG) (#26565)
Co-authored-by: bigtreetech <38851044+bigtreetech@users.noreply.github.com>
2023-12-26 17:45:42 -06:00
Keith Bennett 06b9e40042 🧑‍💻 Use MAX31865 flag (#26574)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2023-12-26 17:43:06 -06:00
Scott Lahteine 7603023928 🔨 Apply signature.py help 2023-12-25 20:58:38 -06:00
thinkyhead dbf81f40de [cron] Bump distribution date (2023-12-26) 2023-12-26 00:20:41 +00:00
Dennis bb557e5195 🩹 Fix string buffer warning (#26550)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2023-12-24 21:40:20 -06:00
Keith Bennett 89fdfcfaf9 🩹 Fix MARKFORGED_INVERSE typos (#26558)
Followup to #26516
2023-12-24 21:37:20 -06:00
Scott Lahteine d9a388bab8 🩹 Fix some serial chars 2023-12-24 21:31:54 -06:00
thinkyhead b44e68e2ab [cron] Bump distribution date (2023-12-25) 2023-12-25 00:21:58 +00:00
Scott Lahteine 0f09554929 🧑‍💻 DWIN icon updates, etc. 2023-12-24 15:25:43 -06:00
ellensp 18b0dbb501 🐛 Creality Free Runs fixups (#26562)
Followup to #25636, #26533

Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2023-12-24 12:07:00 -06:00
thinkyhead fa8d2bd108 [cron] Bump distribution date (2023-12-24) 2023-12-24 00:23:04 +00:00
Scott Lahteine d1ebaba71d 🔨 Remove signature.py debug 2023-12-23 16:27:13 -06:00
Skopus 71e0275a4c Orca 3D Modular Controller (#26534) 2023-12-23 04:24:19 -06:00
Scott Lahteine 205b0a679e 🎨 Whitespace in the rightplace 2023-12-23 04:19:23 -06:00
Mihai 3029a6b1aa 🩹 Jerk correction for LIN_ADVANCE + CLASSIC_JERK (#26551)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2023-12-23 01:45:37 -06:00
thinkyhead 342048b1df [cron] Bump distribution date (2023-12-23) 2023-12-23 00:20:19 +00:00
Scott Lahteine ec060f979f 📝 Clean up variant labels 2023-12-22 17:47:29 -06:00
Andrew 56ac5d03ed 🚸 Update ProUI Plot graph (#26539) 2023-12-22 12:57:06 -06:00
Scott Lahteine ec7ab5a277 🔨 Build flag tweaks 2023-12-21 22:35:51 -06:00
Scott Lahteine 2c5468ce33 🎨 Planner indent 2023-12-21 22:34:19 -06:00
thinkyhead dbdb2ecdf7 [cron] Bump distribution date (2023-12-22) 2023-12-22 00:21:13 +00:00
Scott Lahteine c18294d83c 🔧 Optional FAN_INVERTING 2023-12-21 15:30:03 -06:00
Scott Lahteine 401ba6613b 🔧 Up to 12 PWM fans 2023-12-21 15:25:48 -06:00
thinkyhead 19617b79db [cron] Bump distribution date (2023-12-21) 2023-12-21 06:06:34 +00:00
Scott Lahteine eeacf76cfd 🔧 config.ini / JSON dump by @section (#26556) 2023-12-20 22:07:59 -06:00
thinkyhead 738584d342 [cron] Bump distribution date (2023-12-20) 2023-12-20 06:06:01 +00:00
Scott Lahteine f69effd2eb 🚸 Just "warn" on SD fail 2023-12-19 20:57:32 -06:00
narno2202 67d7562609 🐛️ FT_MOTION improvements (#26074)
Co-Authored-By: Scott Lahteine <thinkyhead@users.noreply.github.com>
2023-12-19 20:01:11 -06:00
thinkyhead 0ede16cd5a [cron] Bump distribution date (2023-12-18) 2023-12-18 00:22:22 +00:00
geijt 4a89ef6273 Fix Creality E3 "Free-runs" (#26533)
Followup to #25636
2023-12-17 16:33:46 -06:00
thinkyhead 145ab7b1ec [cron] Bump distribution date (2023-12-16) 2023-12-16 06:05:48 +00:00
Scott Lahteine 3f9c2f89fc 🔧 Fix IDEX home check
Followup to #25780
2023-12-15 23:40:26 -06:00
Scott Lahteine 00298e6681 🔧 Update fan 0 conflict check
Followup to #25568
2023-12-15 20:23:59 -06:00
thinkyhead 68ab7f6bb7 [cron] Bump distribution date (2023-12-15) 2023-12-15 00:21:58 +00:00
Bob Kuhn 7ab63cde62 Creality E3 Free-runs Silent Motherboard (#25636) 2023-12-14 17:37:40 -06:00
Mihai b90133813a 🐛 Fix planner jerk limits (#26529)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2023-12-14 14:16:15 -06:00
Scott Lahteine 75da3555ee 🔧 Update CLASSIC_JERK conditionals 2023-12-14 10:06:14 -06:00
thinkyhead 8bce9dec90 [cron] Bump distribution date (2023-12-14) 2023-12-14 00:21:11 +00:00
jesterhead82 fef74398e4 MARKFORGED_INVERSE (#26516) 2023-12-13 01:44:11 -06:00
thinkyhead 775c6bb20e [cron] Bump distribution date (2023-12-13) 2023-12-13 06:12:17 +00:00
Andrew 06710e54de EDITABLE_DISPLAY_TIMEOUT (#26517)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2023-12-12 23:33:03 -06:00
thinkyhead 81cfa23882 [cron] Bump distribution date (2023-12-12) 2023-12-12 06:09:34 +00:00
ellensp f3fd9e28f5 🐛 Fix MKS TS35 with BTT SKR 1.3/1.4 (#26176) 2023-12-11 19:30:28 -06:00
rondlh b94a335493 SERIAL_DMA (for some STM32Fx) (#26328) 2023-12-11 18:48:02 -06:00
thinkyhead 01aa87c307 [cron] Bump distribution date (2023-12-10) 2023-12-10 00:23:34 +00:00
mikemerryguy 473817f2f4 🚸 Adjust Progress / Completion (#26466)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2023-12-09 01:38:31 -06:00
David Buezas a1c3a2b03a 🚸 Encoder improvements (#26501) 2023-12-09 00:48:57 -06:00
Scott Lahteine bdfe4a108c 🩹 Fix UBL debug output 2023-12-08 23:18:53 -06:00
thinkyhead 10fe229aad [cron] Bump distribution date (2023-12-09) 2023-12-09 00:20:55 +00:00
Scott Lahteine dfec58e5dc ️ Use strlcpy with buffer size (#26513) 2023-12-08 00:47:18 -06:00
thinkyhead 6c04cf40f4 [cron] Bump distribution date (2023-12-08) 2023-12-08 06:06:47 +00:00
Keith Bennett fe7203ee55 🔨 Use PIO versioning (including HC32) (#26512) 2023-12-07 22:35:34 -06:00
thinkyhead 483b8dcc05 [cron] Bump distribution date (2023-12-06) 2023-12-06 06:06:45 +00:00
Andrew a41e16ffee Voxelab Aquila N32 (via Maple) (#26470)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2023-12-05 23:11:41 -06:00
studiodyne 425af4240b 🐛 Fix tool-change E prime (#26494)
Followup to #17248
2023-12-05 23:05:48 -06:00
thinkyhead 4a4c1db606 [cron] Bump distribution date (2023-12-05) 2023-12-05 06:06:24 +00:00
ellensp 2b1375c8ea 🐛 Fix thermistor 14 & 60 constexprness (#26499) 2023-12-04 23:27:58 -06:00
Alexander Gavrilenko 065440891b 🚸 UI refresh for some events (#26487) 2023-12-04 22:46:39 -06:00
ellensp d58168a03f 🩹 Fix a NeoPixel override (#26492) 2023-12-04 22:19:02 -06:00
ellensp 8cf936ccb1 🩹 Fix ftostrX3sign (#26497) 2023-12-04 21:35:12 -06:00
David Buezas d5d45e85e4 DOUBLE_LCD_FRAMERATE (#26500) 2023-12-04 21:31:34 -06:00
thinkyhead 0d4f41fb6d [cron] Bump distribution date (2023-12-04) 2023-12-04 00:22:06 +00:00
Scott Lahteine 1c1c473910 Fix auto-label action comments 2023-12-03 01:22:14 -06:00
Scott Lahteine dde878db04 Use actions/github-script@v7 2023-12-03 00:32:28 -06:00
Keith Bennett 1a42c38e0e 🩹 Replace more DEBUG_ECHOF (#26495)
Followup to #25928
2023-12-03 00:03:46 -06:00
thinkyhead e695c473af [cron] Bump distribution date (2023-12-03) 2023-12-03 00:23:05 +00:00
Scott Lahteine bd6eb83250 🩹 Fix some minor issues 2023-12-01 21:47:25 -06:00
Andrew c484228c56 Fix some action labels (#26490)
Co-authored-by: thisiskeithb <13375512+thisiskeithb@users.noreply.github.com>
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2023-12-01 21:18:24 -06:00
thinkyhead f265fb5943 [cron] Bump distribution date (2023-12-02) 2023-12-02 00:20:23 +00:00
ellensp b17d3d3e9c 🧑‍💻 More num-to-string digits / precisions (#26343)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2023-12-01 09:25:57 -06:00
Scott Lahteine c53844ff91 Temporary CI Tests for 2.1.x 2023-12-01 04:45:55 -06:00
Scott Lahteine e393c7fa0e Temporarily allow PR against 2.1.x 2023-11-30 20:51:55 -06:00
thinkyhead b55678a7d0 [cron] Bump distribution date (2023-12-01) 2023-12-01 00:23:41 +00:00
Erkan Ozgur Yilmaz fe8266b591 🚸 Fix BLTouch HSMode deploy (#26311) 2023-11-30 16:52:11 -06:00
Scott Lahteine 3d8e3c3c9a 🐛 Touch fixes (#26455) 2023-11-30 16:25:11 -06:00
thinkyhead 61349dc6d3 [cron] Bump distribution date (2023-11-30) 2023-11-30 00:21:18 +00:00
Scott Lahteine 95821b07b1 Auto-label older open [BUG] issues 2023-11-29 16:46:58 -06:00
Scott Lahteine d62ee95d28 🔨 Update config/schema scripts (#26483) 2023-11-29 14:24:20 -06:00
Scott Lahteine b962014087 Label bug reports 2023-11-29 14:19:30 -06:00
Scott Lahteine 921198e81c 🧑‍💻 More SAMD51 ADCs 2023-11-28 21:13:29 -06:00
thinkyhead 3457952854 [cron] Bump distribution date (2023-11-29) 2023-11-29 00:27:28 +00:00
mikemerryguy f4228cc4c1 XY_AFTER_HOMING, EVENT_GCODE_AFTER_HOMING (#26469)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2023-11-28 17:55:21 -06:00
ellensp dabcd65903 🚸 Fix ProUI hostui.notify('finished') (#26478) 2023-11-28 16:23:18 -06:00
thinkyhead 8fa4f5a40f [cron] Bump distribution date (2023-11-28) 2023-11-28 12:08:12 +00:00
Keith Bennett b95aa36b01 📝 Community Reporting redux (#26368) 2023-11-28 00:46:21 -06:00
I3DBeeTech 7a96a082b7 BlackBeezMini 3D by I3DBEE (#26406)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
Co-authored-by: thisiskeithb <13375512+thisiskeithb@users.noreply.github.com>
2023-11-28 00:43:17 -06:00
Andrew b78f0012e9 📝 Fix comment dates (#26472) 2023-11-28 00:10:18 -06:00
thinkyhead e958b6da9e [cron] Bump distribution date (2023-11-27) 2023-11-27 00:23:10 +00:00
Chris 86338ca835 HAL for HC32F460 (#26414) 2023-11-26 17:58:56 -06:00
Scott Lahteine 8a110b80bf Use Python 3.9 for CI 2023-11-26 14:39:43 -06:00
Scott Lahteine 9a12f06f19 🎨 Update file headers
Marlin is collectively © by the Organization, with individual contributors having © on their original work as documented in the commit history.
2023-11-26 12:52:17 -06:00
ellensp 7d334775d0 Update MinSerial.cpp
Add missing commas
2023-11-26 23:05:50 +13:00
David Buezas 0a86a5f39c MAX Thermocouples for Heated Bed (#26441)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2023-11-25 19:55:51 -06:00
thinkyhead e7cf0e12ea [cron] Bump distribution date (2023-11-26) 2023-11-26 00:27:32 +00:00
ellensp e41df97c42 🔧 Pins for FYSETC Spider King 4.07 (#26461) 2023-11-25 17:15:38 -06:00
Andrew 20a26d5053 🧑‍💻 Use ftpl for item strings (#26462) 2023-11-25 16:46:42 -06:00
Keith Bennett 924d7769ec BD_SENSOR_PROBE_NO_STOP (#26353) 2023-11-25 16:31:53 -06:00
Jason Smith 8ff937c7d8 🐛 Fix PANDA ZHU missing #endif (#26460) 2023-11-24 23:26:02 -08:00
ellensp ae695e8309 👽️ Update Teensy 4.0/4.1 Serial (#26457) 2023-11-24 21:27:55 -06:00
thinkyhead e98e307d17 [cron] Bump distribution date (2023-11-25) 2023-11-25 00:20:09 +00:00
Vovodroid bd872a7a98 🔧 Configurable FR/Flow edit ranges (#26446)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2023-11-24 13:03:06 -06:00
thinkyhead fd3de02a37 [cron] Bump distribution date (2023-11-24) 2023-11-24 00:20:39 +00:00
Jason Smith 1bee537a09 🧑‍💻 Add sim launch example for Windows (#26456) 2023-11-23 10:17:41 -08:00
Scott Lahteine ded942a4e4 🐛 Fix expand_u8str_P string substitution
Fixes #26424
2023-11-22 22:18:53 -06:00
Scott Lahteine bf61e52390 ️ Tiny string optimization 2023-11-22 21:06:47 -06:00
Erkan Ozgur Yilmaz 2d9262cc5a ️ Fix MMU2 sscanf bug, optimize (#26449)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2023-11-22 20:39:40 -06:00
thinkyhead 993cc9463e [cron] Bump distribution date (2023-11-23) 2023-11-23 00:21:17 +00:00
Andrew c2376d62e2 🩹 Fix JyersUI/ProUI narrowing (#26453)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2023-11-22 02:40:50 -06:00
Andrew f3473495d0 🚸 Fixes for ProUI popup, abort (#26308) 2023-11-22 02:19:29 -06:00
Andrew c5b267162c 🌐 Regenerate Russian font data (#26428) 2023-11-22 02:07:44 -06:00
Scott Lahteine 8322848c35 Smarter use_example_configs 2023-11-22 01:35:46 -06:00
thinkyhead 61cb98dc0f [cron] Bump distribution date (2023-11-22) 2023-11-22 00:21:52 +00:00
Scott Lahteine 2b1666fcb0 ✏️ GT2560_V41b followup 2023-11-21 14:07:39 -06:00
ellensp 6ae2cde663 🐛Fix GT2560_V41b Z2 pin (#26370)
* Update pins_GT2560_V41b.h

Fix Z2_STOP_PIN

* use mega2560ext

when board has pins > D69

* Allow overrides, consistent with other pins in this file

---------

Co-authored-by: Jason Smith <jason.inet@gmail.com>
2023-11-21 09:43:08 -08:00
Andrew cc8f7c83da 🚸 Fix, clean up ProUI (#26434)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2023-11-21 03:57:31 -06:00
Jason Smith 20445b8e83 🧑‍💻 Update pins formatter script (#26450) 2023-11-21 03:42:44 -06:00
thinkyhead 12881d5576 [cron] Bump distribution date (2023-11-21) 2023-11-21 00:21:26 +00:00
Keith Bennett b88cb86069 BTT Octopus Pro V1.0.1 (STM32H723ZE) (#26159) 2023-11-20 11:55:27 -08:00
Scott Lahteine 3d3be15665 🔨 Fix Ender-5 S1 env 2023-11-20 02:18:53 -06:00
Keith Bennett 0142783836 🚸 Fix more MarlinUI title centering (#26440)
Followup to #26339
2023-11-20 01:24:32 -06:00
Andrew 006768ab58 🚸 Fix MarlinUI axis move / UBL strings (#26439)
Followup to #26344
2023-11-20 01:23:07 -06:00
Scott Lahteine 376673df28 🚸 Minor touch calibration improvement (#26445) 2023-11-20 00:53:35 -06:00
thinkyhead f830756356 [cron] Bump distribution date (2023-11-20) 2023-11-20 00:21:38 +00:00
Keith Bennett 1fceb7c580 🔥 Remove VAkE 403D part deux (#26443)
Followup to #25969
2023-11-19 15:57:03 -06:00
Jason Smith 5287cfbb59 🐛 Fix rotational AxisFlags (#26444)
Followup to #26438
2023-11-19 15:23:20 -06:00
Scott Lahteine f345f60f73 🔨 Similar board name errors 2023-11-18 23:49:59 -06:00
thinkyhead e2c8015199 [cron] Bump distribution date (2023-11-19) 2023-11-19 00:22:58 +00:00
Scott Lahteine aed577271f 🔨 Rotational move items (#26438) 2023-11-17 22:39:00 -06:00
thinkyhead f50ca52c57 [cron] Bump distribution date (2023-11-18) 2023-11-18 00:20:36 +00:00
ellensp 36e66bdd9f 🔧 Define MarlinUI axis moves with lists (#26344)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2023-11-17 14:11:59 -06:00
EvilGremlin 19869d3a7d 🔨 Creality STM32F401RC w/out bootloader (#26373) 2023-11-16 19:57:00 -06:00
thinkyhead c8118c3a58 [cron] Bump distribution date (2023-11-17) 2023-11-17 00:20:53 +00:00
Scott Lahteine 7fe07dc4ce 🩹 Fix runout state in menu (#26394)
Fixes #26386
2023-11-16 16:05:31 -06:00
thinkyhead 3e8a5b6151 [cron] Bump distribution date (2023-11-15) 2023-11-15 00:20:46 +00:00
ellensp 28bc19720a 🐛 Put I2C init ahead of LCD init (#26409) 2023-11-14 02:33:15 -06:00
ellensp a8cb89b3da 🐛 Fix BTT SKR Mini E3 pins (#26410) 2023-11-14 02:31:13 -06:00
Keith Bennett df2251e23e 🔨 Fix PINS_DEBUGGING for some STM32H7 (#26416) 2023-11-14 02:29:07 -06:00
Andrew 31154278b3 🔨 Fix legacy auto_build.py (#26427) 2023-11-14 02:27:05 -06:00
Keith Bennett 613b4105a2 🔨 Fix updated build script (#26423)
Followup to #26265

Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2023-11-14 01:52:22 -06:00
Scott Lahteine 10e06e1970 🧑‍💻 Prevent mixed bitmap encoding
Followup to #26419
2023-11-14 01:23:46 -06:00
Andrew c751dcfcf9 🎨 Python ; cleanup (#26426) 2023-11-13 23:48:01 -06:00
Scott Lahteine 178938d957 ️ Extend bitmap compression
Followup to #26419
2023-11-13 23:43:57 -06:00
thinkyhead a8313c3b7e [cron] Bump distribution date (2023-11-14) 2023-11-14 00:20:32 +00:00
Scott Lahteine dc26531207 COMPACT_CUSTOM_BOOTSCREEN (#26419) 2023-11-13 17:24:15 -06:00
Scott Lahteine c74e6ad868 🔨 Use classic ld on macOS 2023-11-13 04:29:01 -06:00
thinkyhead a62eec4ae3 [cron] Bump distribution date (2023-11-13) 2023-11-13 00:21:11 +00:00
ellensp 235ad4dd9d 🚸 Fix DOGM centering (#26415) 2023-11-12 00:25:51 -06:00
thinkyhead d06923d0e7 [cron] Bump distribution date (2023-11-12) 2023-11-12 06:05:50 +00:00
Luiz Eduardo Carneiro 7f59b65fc8 MINGDA D2 D301 v1.0 (#26340) 2023-11-11 20:44:45 -06:00
Vovodroid 884a3249fe BED_ANNEALING_GCODE (#26341)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2023-11-11 20:40:49 -06:00
Vladimir Sitnikov d159ec5c90 🔨 Specific package versions (#26265)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2023-11-11 20:13:23 -06:00
Scott Lahteine 7c43f4e696 Fix opt_add in tests 2023-11-11 20:10:11 -06:00
ellensp 7c8ea8e0e0 🧑‍💻 Fix M808 debug (#26367) 2023-11-11 20:02:53 -06:00
thinkyhead 573eae8d95 [cron] Bump distribution date (2023-11-11) 2023-11-11 00:19:53 +00:00
ellensp bf0acc9611 🐛 SKR Pro boards have DIAG pins (#26399)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2023-11-09 20:30:41 -06:00
thinkyhead ddc310fc4b [cron] Bump distribution date (2023-11-10) 2023-11-10 00:20:21 +00:00
Keith Bennett 10782c770d 🩹 Probe XY Offset followup (#26397)
Followup to #26267
2023-11-09 17:44:02 -06:00
Andrew b2758208c7 G27 P3 / P4 (#26401)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2023-11-09 16:34:48 -06:00
Scott Lahteine bf5612c0ed 🧑‍💻 Use __FLT_MAX__ for HUGE_VALF 2023-11-09 16:05:11 -06:00
InsanityAutomation 83bdfeb5cb Merge branch 'bugfix-2.1.x' of https://github.com/MarlinFirmware/Marlin into bugfix-2.1.x 2023-11-08 09:39:42 -05:00
thinkyhead 9a6c2635ee [cron] Bump distribution date (2023-11-07) 2023-11-07 00:20:29 +00:00
Scott Lahteine 3341683db2 🧑‍💻 Use FLT_MAX for HUGE_VALF 2023-11-05 21:30:04 -06:00
thinkyhead 0bdbf52bc6 [cron] Bump distribution date (2023-11-06) 2023-11-06 00:21:03 +00:00
Scott Lahteine e4e85e39b3 Get LCD/Controller in bug report 2023-11-05 15:01:12 -06:00
Scott Lahteine 0621594442 Update stale / close durations 2023-11-05 14:55:06 -06:00
Scott Lahteine dba613fadd 🔨 Fix test of env['PROGNAME']
Fixes #26386
2023-11-05 12:30:02 -06:00
thinkyhead 5ac4ebad78 [cron] Bump distribution date (2023-11-05) 2023-11-05 12:06:43 +00:00
Vladimir Sitnikov cb044d989c Probe XY Offset value limits (#26267)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2023-11-05 01:46:57 -05:00
thinkyhead 0d42196d11 [cron] Bump distribution date (2023-11-04) 2023-11-04 06:05:47 +00:00
tombrazier cac742009c 🐛 Fix Backlash Compensation layer shift (#26392) 2023-11-03 23:12:33 -05:00
Scott Lahteine 76f938309e 🔨 Minor schema.py updates 2023-11-01 15:36:26 -05:00
thinkyhead 24cf29b6a8 [cron] Bump distribution date (2023-11-01) 2023-11-01 01:19:48 +00:00
Chris 41a6f2bc8d 🧑‍💻 Improve POSTMORTEM_DEBUGGING (#26374)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2023-10-31 19:10:37 -05:00
Giuliano Zaro e0767f8675 🌐 Fix long Italian string (#26378) 2023-10-31 19:03:28 -05:00
Giuliano Zaro 5523c12cfd 🩹 Fix MarlinUI UTF-8 chars (#26381) 2023-10-31 19:02:11 -05:00
thinkyhead a6c8afc5a9 [cron] Bump distribution date (2023-10-29) 2023-10-29 00:21:30 +00:00
Vladimir Sitnikov cb8df74a9c 🚸 Move Debug menu down (#26266) 2023-10-27 20:01:04 -05:00
Vladimir Sitnikov 050439ccba 🧑‍💻 Update .editorconfig settings (#26264)
Fixes #26219
2023-10-27 19:46:09 -05:00
thinkyhead 6907df0bd6 [cron] Bump distribution date (2023-10-28) 2023-10-28 00:18:59 +00:00
Giuliano Zaro 5a259a7266 🌐 Update Italian language (#26208) 2023-10-27 17:18:15 -05:00
ellensp b082f1a2b8 ️ Faster COMPACT_MARLIN_BOOT_LOGO (rle16) (#26153) 2023-10-27 17:15:23 -05:00
tombrazier c666b492c4 🔥 Automatic minimum planner junction speed (#26198) 2023-10-27 17:06:04 -05:00
tombrazier aa0671fb32 🩹 Fix Input Shaping max_isr_rate with Distinct E factors (#26167) 2023-10-27 16:10:02 -05:00
thinkyhead f82d0109e4 [cron] Bump distribution date (2023-10-27) 2023-10-27 00:19:27 +00:00
Scott Lahteine 2a88e76002 🧑‍💻 Misc. LCD / string updates 2023-10-25 19:41:32 -05:00
thinkyhead b25f523aca [cron] Bump distribution date (2023-10-26) 2023-10-26 00:23:31 +00:00
Scott Lahteine 046439a5a1 🧑‍💻 Echo by default in dev mode 2023-10-25 14:27:22 -05:00
thinkyhead bcd07c2c91 [cron] Bump distribution date (2023-10-24) 2023-10-24 00:19:54 +00:00
Scott Lahteine e9b04ada1d 🩹 Fix PLR debug with NO_VOLUMETRICS 2023-10-23 19:00:44 -05:00
Scott Lahteine ff5eb5de29 🩹 No GET_TEXT with DGUS_TFT
Followup to #26164
2023-10-23 19:00:44 -05:00
Scott Lahteine fd62c42faa 🩹 No GET_TEXT with DGUS_TFT
Followup to #26164
2023-10-23 17:07:04 -05:00
thinkyhead 089d075c8f [cron] Bump distribution date (2023-10-23) 2023-10-23 00:20:43 +00:00
Scott Lahteine 45a6e9614e 📝 Community Reporting 2023-10-22 18:39:22 -05:00
Marcio T 9e6d0ea610 🩹 Fix FTDI Eve Touch UI meshGetter, etc. (#26342)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2023-10-22 17:22:16 -05:00
Keith Bennett c345087b41 🔨 Add MKS Eagle FD Envs (#26346) 2023-10-22 15:46:34 -05:00
Keith Bennett 8de007021a 🧑‍💻 Don't Recommend DevContainer (#26348) 2023-10-22 15:44:29 -05:00
Scott Lahteine f72588595b 🚸 SD refresh UI update with NO_SD_DETECT (#26366)
Co-authored-by: Sascha <k.puligheddu@alice.it>
2023-10-22 15:17:30 -05:00
Keith Bennett 797ea5efa7 🚸 Fix MarlinUI expanded label alignment (#26339)
Co-authored-by: ellensp <530024+ellensp@users.noreply.github.com>
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2023-10-22 15:15:38 -05:00
ellensp 156e7c1c54 🐛 Fix TFT compile, K8400 pins (#26359) 2023-10-22 14:25:28 -05:00
thinkyhead b8b1aa345c [cron] Bump distribution date (2023-10-21) 2023-10-21 00:19:15 +00:00
Scott Lahteine b0ece8f8df 🧑‍💻 MarlinUI menu tweaks
Changes in prep for #26339
2023-10-20 17:25:47 -05:00
studiodyne 4b0b00c8da Tool Migration-specific settings (#26244)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2023-10-19 20:23:23 -05:00
Andrew 6d3122d4e8 🚸 Misc. JyersUI tweaks (#26228)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2023-10-19 20:22:04 -05:00
ellensp 0f27e38eb9 🎨 Update GT2560 V41b (#26351) 2023-10-19 19:34:22 -05:00
thinkyhead 6156050024 [cron] Bump distribution date (2023-10-20) 2023-10-20 00:20:00 +00:00
Andrew cacbe005b5 🩹 Fix ProUI G-code preview (#26213) 2023-10-19 18:01:43 -05:00
thinkyhead caca5636ce [cron] Bump distribution date (2023-10-15) 2023-10-15 06:05:56 +00:00
Marcio T 6a35ab6557 Z_PROBE_ERROR_TOLERANCE (expose) (#26229)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2023-10-14 23:54:54 -05:00
thinkyhead 87de4c134b [cron] Bump distribution date (2023-10-13) 2023-10-13 18:06:12 +00:00
Scott Lahteine 7944628400 🧑‍💻 IA Creality optional code 2023-10-13 09:48:14 -05:00
thinkyhead 251a84b741 [cron] Bump distribution date (2023-10-12) 2023-10-12 18:20:54 +00:00
Scott Lahteine d695e5f7bc 🔧 Misc. probe opts 2023-10-12 13:03:02 -05:00
Scott Lahteine 4744997c16 📝 GCode => G-Code 2023-10-12 12:14:57 -05:00
Scott Lahteine 5bd39ba73f 🧑‍💻 FxdTiCtrl => FTMotion redux 2023-10-12 12:14:53 -05:00
Marcio T 7f887f2342 🚸 Update FTDI Eve / CocoaPress UI (#26233) 2023-10-12 11:14:58 -05:00
Scott Lahteine e7e77d9612 🧑‍💻 FxdTiCtrl => FTMotion 2023-10-12 10:12:35 -05:00
Scott Lahteine a7a3abb9bf 📝 Macro comments 2023-10-12 09:21:00 -05:00
thinkyhead 6f68da5be4 [cron] Bump distribution date (2023-10-11) 2023-10-11 06:06:33 +00:00
Andrew Bortz e9b9d634c4 Nonlinear Extrusion Control (M592) (#26127) 2023-10-10 22:24:48 -05:00
thinkyhead 6d301a282e [cron] Bump distribution date (2023-10-10) 2023-10-10 00:19:51 +00:00
studiodyne 61591fd233 🐛 Fix tool-change E prime (#26237)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2023-10-09 17:50:09 -05:00
Marcella Cavalcanti e97d82f77b FYSETC Cheetah v3.0 (#26314) 2023-10-09 16:55:44 -05:00
Keith Bennett b58d5dabf8 🔧 BTT_MINI_12864_V1 => BTT_MINI_12864 (#26160) 2023-10-08 20:07:09 -05:00
Dipl.-Ing. Raoul Rubien, BSc 047bce0cdd 🔧 More angles for 2x Servo Switching Nozzle (#26303)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2023-10-08 19:22:40 -05:00
thinkyhead c81e217334 [cron] Bump distribution date (2023-10-09) 2023-10-09 00:20:31 +00:00
Scott Lahteine 9cd341c2c3 🩹 Patches for MSC SD (#26332) 2023-10-08 18:09:49 -05:00
Scott Lahteine f0ad1e9b70 🧑‍💻 Update dev scripts 2023-10-08 16:49:18 -05:00
Scott Lahteine 414b1f8327 🩹 Serial warning followup
Followup to #26306
2023-10-08 16:49:18 -05:00
Erkan Ozgur Yilmaz e68320ee2b 🐛 Fix MMU late init (#26331) 2023-10-08 15:39:46 -05:00
ellensp 7fa643a11e 🔨 Specify LPC toolchain 1.100301.220327 (#26249) 2023-10-08 15:16:28 -05:00
thinkyhead 375e724dee [cron] Bump distribution date (2023-10-08) 2023-10-08 00:21:49 +00:00
Keith Bennett 6c0f4bbafd CI test for STM32G0 (#26327) 2023-10-07 01:21:41 -05:00
Orel 4cab75115f 🩹 Fix G33 output (#26299)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2023-10-07 01:10:22 -05:00
Scott Lahteine 014609ad87 🔧 Move some config options 2023-10-07 00:29:34 -05:00
Bob Kuhn f7a3172c20 🐛 Fix DELTA Z when not using probe for homing (#26297) 2023-10-06 23:53:52 -05:00
Bob Kuhn b799f7d1f3 🔧 Forbid UBL Hilbert Curve on DELTA (#26296) 2023-10-06 23:45:32 -05:00
Vladimir Sitnikov f3851408fe 🔧 No TMC_HOME_PHASE on tandem steppers (#26310)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2023-10-06 23:44:27 -05:00
Scott Lahteine 03cf2b577b misc. formatting, grid condition 2023-10-06 21:55:57 -05:00
Vovodroid b3b6f23320 🧑‍💻 Tweak an 'if' block (#26300) 2023-10-06 20:03:02 -05:00
Piotr Piatkowski 821ba43131 🩹 Fix Endstop Test debug menu (#26326) 2023-10-06 19:56:10 -05:00
thinkyhead 31bf73b89b [cron] Bump distribution date (2023-10-07) 2023-10-07 00:19:28 +00:00
Scott Lahteine 229ea71421 📝 Update dgus_e3s1pro comment 2023-10-06 19:02:34 -05:00
Scott Lahteine f085e2ca93 🩹 Remove extraneous 'inline'
See #26085
2023-10-06 17:20:08 -05:00
Keith Bennett db98f06110 🚸 Warning alerts for non-fatal errors (#26306)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2023-10-06 17:09:58 -05:00
Scott Lahteine bbb5aacc48 📝 Update config sections 2023-10-06 16:12:23 -05:00
Scott Lahteine 91ab18d1d2 📝 Some settings units 2023-10-06 16:08:30 -05:00
thinkyhead 273cbc6871 [cron] Bump distribution date (2023-10-05) 2023-10-05 06:06:14 +00:00
EvilGremlin 596d1ff104 🩹 Fix TFT string code (#26292) 2023-10-04 23:47:23 -05:00
thinkyhead 896492442c [cron] Bump distribution date (2023-10-04) 2023-10-04 00:36:20 +00:00
Keith Bennett b9e58cd3ea 🔧 BigTreeTech Manta M4P is v2.1 (#26226) 2023-10-03 15:23:40 -05:00
ellensp d961dbae8d 🔧 Fix SanityCheck typo (#26223) 2023-10-03 15:21:53 -05:00
Scott Lahteine be031e1850 📝 More ExtUI documentation 2023-10-03 15:20:35 -05:00
Scott Lahteine 15dfbabc9c 🔧 Temp report precision option (#26253) 2023-10-03 14:52:04 -05:00
kisslorand 102de7dac3 🚸 More precision in G30 output (#26255) 2023-10-03 14:50:33 -05:00
kisslorand 7338a2fec8 🚸 Use SERIAL_FLOAT_PRECISION for SERIAL_ECHO(float) (#26254) 2023-10-03 14:48:52 -05:00
thinkyhead d56136f06c [cron] Bump distribution date (2023-09-30) 2023-09-30 00:19:06 +00:00
ellensp 34a0c9d143 📝 Update BTT SKR Mini E3 v3.0 comments (#26318) 2023-09-29 18:12:29 -05:00
thinkyhead 11f98adcce [cron] Bump distribution date (2023-08-26) 2023-08-26 00:22:53 +00:00
jaysuk 209fadd2e6 Mellow Fly E3 V2 (STM32F407VG) (#26081) 2023-08-25 18:43:57 -05:00
Andrew 8fa6a4da2e 🚸 Fixes for ProUI, JyersUI, backlight, etc. (#26086)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2023-08-25 18:33:49 -05:00
Scott Lahteine 4613f85bb7 🧑‍💻 Encapsulate ProUI G-code preview 2023-08-25 13:33:33 -05:00
thinkyhead e1121a4cd0 [cron] Bump distribution date (2023-08-25) 2023-08-25 00:19:03 +00:00
lukasradek 20fec98f70 🧑‍💻 Adjust LCD string draw (#26154) 2023-08-24 12:41:30 -05:00
thinkyhead adfc787a45 [cron] Bump distribution date (2023-08-24) 2023-08-24 00:18:43 +00:00
Scott Lahteine 86be9a85d0 📝 Thermistor info updates (#26202) 2023-08-23 13:44:40 -05:00
thinkyhead f6de698fc8 [cron] Bump distribution date (2023-08-23) 2023-08-23 00:25:27 +00:00
Anson Liu edc7379546 G-code 'T' report current tool (#26151)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2023-08-22 19:21:41 -05:00
Scott Lahteine ab8af7fa9c 🔧 Allow arbitrary BLOCK_BUFFER_SIZE 2023-08-22 19:16:35 -05:00
Keith Bennett fb74caebb5 🔧 Fix Linear Leveling grid size sanity check (#26199) 2023-08-22 18:40:59 -05:00
Scott Lahteine 88cdf487b4 🚸 Avoid LCD messages starting with "Error:" (#26164) 2023-08-22 17:36:53 -05:00
narno2202 be91eaed2c 🩹 Fix FT Motion menu Back item (#26175) 2023-08-22 17:13:53 -05:00
thinkyhead b5a08c2518 [cron] Bump distribution date (2023-08-22) 2023-08-22 00:18:52 +00:00
Scott Lahteine b02ea02dbb Fix unused test 2023-08-21 16:52:26 -05:00
Yuri D'Elia d69ce77503 🐛 Fixes for G2/G3 arcs (#26170) 2023-08-21 14:39:49 -05:00
thinkyhead d1803ec044 [cron] Bump distribution date (2023-08-21) 2023-08-21 00:19:10 +00:00
Scott Lahteine f2665e597f 🎨 FTDI cleanup 2023-08-20 13:47:43 -05:00
thinkyhead db5ead4230 [cron] Bump distribution date (2023-08-20) 2023-08-20 00:19:51 +00:00
GHGiampy f7d5188b2f 🐛 Fixes for ProUI, build rename (#26177)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2023-08-19 15:53:45 -05:00
thinkyhead 1d17c34e12 [cron] Bump distribution date (2023-08-18) 2023-08-18 00:18:38 +00:00
Vovodroid 49ead19d00 🔧 Reversible file alpha sorting (#26130)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2023-08-17 18:13:10 -05:00
thinkyhead 7e7dcb8692 [cron] Bump distribution date (2023-08-16) 2023-08-16 06:08:59 +00:00
Scott Lahteine cf50240e82 📝 Update INO (c) 2023-08-15 21:03:42 -05:00
thinkyhead 79f6d9bdac [cron] Bump distribution date (2023-08-14) 2023-08-14 00:19:27 +00:00
Martin Turski 6af6060aa0 🔧 Configurable SD card retry/timeout (#25340)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2023-08-13 15:57:38 -05:00
thinkyhead 2bac7835e8 [cron] Bump distribution date (2023-08-08) 2023-08-08 00:22:24 +00:00
EvilGremlin fd41757aef 🐛 Fix MKS Robin Mini servo timer (#26150) 2023-08-07 16:54:27 -05:00
Giuliano Zaro f338f65bdf 🚸 Adjust ColorUI chamber bmp (#26149) 2023-08-07 16:51:22 -05:00
Miguel Risco-Castillo 867f5e9069 🚸 UI Sound off/on with M300 E<0|1> (#26142) 2023-08-07 16:16:33 -05:00
Miguel Risco-Castillo 88f5e2c639 🐛 Fix UBL probe_entire_mesh skips points (#26141)
Fixes #26132
2023-08-07 16:11:12 -05:00
Keith Bennett ca0209b868 🔨 Fix USB FD env names (#26131) 2023-08-07 16:00:50 -05:00
Ari-SSO 4f691e622f 🩹 PROBING_TOOL followup (#26122)
Followup to #24411

Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2023-08-07 04:35:22 -05:00
Scott Lahteine fecadaca82 🔧 Clarify WIFISUPPORT (#26097) 2023-08-07 04:24:04 -05:00
Aleks 709def5e7b 🩹 Fix M3 uninitialized warning (#26091) 2023-08-07 04:09:26 -05:00
narno2202 a5e4b4bd7d 🚸 FT_MOTION menu updates (#26083) 2023-08-07 03:30:24 -05:00
thinkyhead a817794444 [cron] Bump distribution date (2023-08-07) 2023-08-07 06:51:07 +00:00
Mark ffef8f1b29 🚸 BD Sensor Z axis stop height (#26015) 2023-08-06 23:33:20 -05:00
Bart Meijer 205a679959 ️ SAMD21 LCD uses HW SPI with media (#26012) 2023-08-06 23:12:30 -05:00
lukasradek b956001d81 🚸 Update LCD Manual Leveling display (#26088) 2023-08-06 22:08:35 -05:00
Keith Bennett 1dd3c9e73f 📝 STM32G0B0 SKR Mini E3 V3.0 / Manta M4P (#26087) 2023-08-06 22:04:11 -05:00
Scott Lahteine 8d74a63e4b 📝 Update a config comment 2023-08-06 21:04:40 -05:00
thinkyhead 27fd97a8bb [cron] Bump distribution date (2023-08-06) 2023-08-06 00:21:12 +00:00
magicmaker3 4d89db5209 MM-JOKER (ESP32) board (#25897) 2023-08-05 18:10:49 -05:00
Pagliarulo Onofrio f66323ecfb Geeetech GT2560 V4.1B board (#25888) 2023-08-05 00:03:10 -05:00
Giuliano Zaro 863198a73f VOLUMETRIC_EXTRUDER_LIMIT_MAX (#25884) 2023-08-04 23:56:40 -05:00
Scott Lahteine ad112b4d3d 🐛 Fix case TRRunaway 2023-08-04 23:49:38 -05:00
thinkyhead c088081c00 [cron] Bump distribution date (2023-08-05) 2023-08-05 00:54:22 +00:00
Alexey D. Filimonov 06d46a0ef9 AUTO_POWER_SPINDLE_LASER (#25739) 2023-08-04 19:07:56 -05:00
Scott Lahteine 27e68a61fa 🧑‍💻 Update some SDSUPPORT 2023-08-04 18:29:52 -05:00
Dmitry Pogrebnyak 4e31fa66e2 STATUS_HEAT_POWER (#25268) 2023-08-04 14:59:17 -05:00
910 changed files with 29847 additions and 26165 deletions
+8 -2
View File
@@ -1,12 +1,14 @@
# editorconfig.org
root = true
[*]
trim_trailing_whitespace = true
insert_final_newline = true
[{*.patch,syntax_test_*}]
trim_trailing_whitespace = false
[{*.c,*.cpp,*.h,*.ino,*.py,Makefile}]
trim_trailing_whitespace = true
insert_final_newline = true
end_of_line = lf
[{*.c,*.cpp,*.h,*.ino}]
@@ -18,6 +20,10 @@ indent_size = 2
indent_style = tab
indent_size = 2
[*.md]
# Two spaces at the end of the line means newline in Markdown
trim_trailing_whitespace = false
[{*.py}]
indent_style = space
indent_size = 4
+8 -2
View File
@@ -1,6 +1,7 @@
name: 🪲 Report a bug
description: Create a bug report to help improve Marlin Firmware
title: "[BUG] (bug summary)"
labels: ["Bug: Potential ?"]
body:
- type: markdown
attributes:
@@ -109,8 +110,13 @@ body:
- type: input
attributes:
label: Add-ons
description: Please list any hardware add-ons that could be involved.
label: LCD/Controller
description: Some Marlin behaviors are determined by the controller. Describe your LCD/Controller model and version.
- type: input
attributes:
label: Other add-ons
description: Please list any other hardware add-ons that could be involved.
- type: dropdown
attributes:
+1 -1
View File
@@ -1,7 +1,7 @@
name: ✨ Request a feature
description: Request a new Marlin Firmware feature
title: "[FR] (feature summary)"
labels: 'T: Feature Request'
labels: ["T: Feature Request"]
body:
- type: markdown
attributes:
+1 -7
View File
@@ -28,15 +28,9 @@ Project maintainers are responsible for clarifying the standards of acceptable b
Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.
## Scope
This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at [marlinfirmware@github.com](mailto:marlinfirmware@github.com). All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by following GitHub's [reporting abuse or spam article](https://docs.github.com/en/communities/maintaining-your-safety-on-github/reporting-abuse-or-spam). All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances.
## Attribution
+5 -3
View File
@@ -26,11 +26,12 @@ The following is a set of guidelines for contributing to Marlin, hosted by the [
## Code of Conduct
This project and everyone participating in it is governed by the [Marlin Code of Conduct](code_of_conduct.md). By participating, you are expected to uphold this code. Please report unacceptable behavior to [marlinfirmware@github.com](mailto:marlinfirmware@github.com).
This project and everyone participating in it is governed by the [Marlin Code of Conduct](code_of_conduct.md). By participating, you are expected to uphold this code. Please report unacceptable behavior by following GitHub's [reporting abuse or spam article](https://docs.github.com/en/communities/maintaining-your-safety-on-github/reporting-abuse-or-spam).
## I don't want to read this whole thing I just have a question!!!
> **Note:** Please don't file an issue to ask a question. You'll get faster results by using the resources below.
> [!NOTE]
> Please don't file an issue to ask a question. You'll get faster results by using the resources below.
We have a Message Board and a Facebook group where our knowledgable user community can provide helpful advice if you have questions.
@@ -55,7 +56,8 @@ This section guides you through submitting a Bug Report for Marlin. Following th
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.
> [!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?
+41
View File
@@ -0,0 +1,41 @@
#
# auto-label.yml
# - Find all open issues without a label and a title containing "[BUG]".
# - Apply the label "Bug: Potential ?" to these issues.
#
name: Label Old Bugs
on:
schedule:
- cron: "30 8 * * *"
jobs:
autolabel:
name: Auto Label
if: github.repository == 'MarlinFirmware/Marlin'
runs-on: ubuntu-latest
steps:
- name: Auto Label for [BUG]
uses: actions/github-script@v7
with:
script: |
// Get all open issues in this repository
const issueList = await github.rest.issues.listForRepo({
owner: context.repo.owner,
repo: context.repo.repo,
state: 'open'
});
// Filter issues without labels that have a title containing '[BUG]'.
const matchingIssues = issueList.data.filter(
issue => issue.title.includes('[BUG]') && issue.labels.length === 0
);
// Process the first 50
for (const issue of matchingIssues.slice(0, 50)) {
await github.rest.issues.addLabels({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: issue.number,
labels: ['Bug: Potential ?']
});
}
-1
View File
@@ -12,7 +12,6 @@ on:
- 1.0.x
- 1.1.x
- 2.0.x
- 2.1.x
jobs:
bad_target:
+1
View File
@@ -23,6 +23,7 @@ jobs:
- "S: Please Merge"
- "S: Please Test"
- "help wanted"
- "Bug: Potential ?"
- "Needs: Discussion"
- "Needs: Documentation"
- "Needs: More Data"
+16 -4
View File
@@ -17,12 +17,24 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/stale@v3
- uses: actions/stale@v8
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-message: |
Greetings from the Marlin AutoBot!
This issue has had no activity for the last 90 days.
Do you still see this issue with the latest `bugfix-2.1.x` code?
Please add a reply within 14 days or this issue will be automatically closed.
To keep a confirmed issue open we can also add a "Bug: Confirmed" tag.
Disclaimer: This is an open community project with lots of activity and limited
resources. The main project contributors will do a bug sweep ahead of the next
release, but any skilled member of the community may jump in at any time to fix
this issue. That can take a while depending on our busy lives so please be patient,
and take advantage of other resources such as the MarlinFirmware Discord to help
solve the issue.
days-before-stale: 90
days-before-close: 14
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'
+14 -5
View File
@@ -9,6 +9,7 @@ on:
pull_request:
branches:
- bugfix-2.1.x
- 2.1.x
paths-ignore:
- config/**
- data/**
@@ -17,6 +18,7 @@ on:
push:
branches:
- bugfix-2.1.x
- 2.1.x
paths-ignore:
- config/**
- data/**
@@ -118,6 +120,7 @@ jobs:
# STM32H7
- BTT_SKR_SE_BX
- STM32H743VI_btt
# STM32F1 (Maple)
- jgaurora_a5s_a1_maple
@@ -133,6 +136,12 @@ jobs:
#- STM32F103RC_btt_maple
#- STM32F103RE_creality_maple
# STM32G0
- STM32G0B1RE_btt
# HC32
- HC32F460C_aquila_101
# LPC176x - Lengthy tests
- LPC1768
- LPC1769
@@ -140,7 +149,7 @@ jobs:
steps:
- name: Check out the PR
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Cache pip
uses: actions/cache@v3
@@ -156,11 +165,11 @@ jobs:
path: ~/.platformio
key: ${{ runner.os }}-${{ hashFiles('**/lockfiles') }}
- name: Select Python 3.7
uses: actions/setup-python@v3
- name: Select Python 3.9
uses: actions/setup-python@v4
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
python-version: '3.9'
architecture: 'x64'
- name: Install PlatformIO
run: |
+1
View File
@@ -6,6 +6,7 @@
"platformio.platformio-ide"
],
"unwantedRecommendations": [
"ms-vscode-remote.remote-containers",
"ms-vscode.cpptools-extension-pack"
]
}
Binary file not shown.
Binary file not shown.
+10
View File
@@ -5,6 +5,7 @@ CONTAINER_IMAGE := marlin-dev
help:
@echo "Tasks for local development:"
@echo "* format-pins: Reformat all pins files"
@echo "* tests-single-ci: Run a single test from inside the CI"
@echo "* tests-single-local: Run a single test locally"
@echo "* tests-single-local-docker: Run a single test locally, using docker"
@@ -57,3 +58,12 @@ tests-all-local-docker:
setup-local-docker:
$(CONTAINER_RT_BIN) build -t $(CONTAINER_IMAGE) -f docker/Dockerfile .
.PHONY: setup-local-docker
PINS := $(shell find Marlin/src/pins -mindepth 2 -name '*.h')
.PHONY: $(PINS)
$(PINS): %:
@echo "Formatting $@" && node buildroot/share/scripts/pinsformat.js $@
format-pins: $(PINS)
+396 -1891
View File
File diff suppressed because it is too large Load Diff
+362 -454
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -2,7 +2,7 @@
Marlin Firmware
(c) 2011-2020 MarlinFirmware
(c) 2011-2023 MarlinFirmware
Portions of Marlin are (c) by their respective authors.
All code complies with GPLv2 and/or GPLv3
+10 -164
View File
@@ -16,7 +16,7 @@
* 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 <http://www.gnu.org/licenses/>.
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
*/
#pragma once
@@ -28,179 +28,25 @@
/**
* Marlin release version identifier
*/
#define SHORT_BUILD_VERSION "DW7.4.9"
//#define SHORT_BUILD_VERSION "bugfix-2.1.x"
/**
* Verbose version identifier which should contain a reference to the location
* from where the binary was downloaded or the source code was compiled.
*/
#if(ENABLED(MachineMini))
#define VerChar1 "M"
#elif(ENABLED(MachineEnder2))
#define VerChar1 "E2"
#elif(ENABLED(MachineEnder2Pro))
#define VerChar1 "E2P"
#elif(ENABLED(MachineEnder3))
#define VerChar1 "E3"
#elif ENABLED(MachineEnder3V2)
#define VerChar1 "E3V2"
#elif ENABLED(MachineEnder3S1)
#define VerChar1 "E3S1"
#elif ENABLED(MachineEnder3Max)
#define VerChar1 "E3M"
#elif(ENABLED(MachineEnder4))
#define VerChar1 "E4"
#elif(ENABLED(MachineEnder5))
#define VerChar1 "E5"
#elif(ENABLED(MachineEnder6))
#define VerChar1 "E6"
#elif(ENABLED(MachineEnder7))
#define VerChar1 "E7"
#elif(ENABLED(MachineSermoonD1))
#define VerChar1 "D1"
#elif(ENABLED(MachineEnder5Plus))
#define VerChar1 "E5P"
#elif(ENABLED(MachineCR20))
#define VerChar1 "2"
#elif(ENABLED(MachineCR10Orig))
#define VerChar1 "O"
#elif(ENABLED(MachineCR10Std))
#define VerChar1 "S"
#elif(ENABLED(MachineCRX))
#define VerChar1 "X"
#elif(ENABLED(MachineCR6))
#define VerChar1 "CR6"
#elif(ENABLED(MachineCR5))
#define VerChar1 "CR5"
#elif(ENABLED(MachineCR6Max))
#define VerChar1 "CR6M"
#elif(ENABLED(MachineS4))
#define VerChar1 "4"
#elif(ENABLED(MachineS5) || ENABLED(MachineCR10Max))
#define VerChar1 "5"
#elif ENABLED(MachineCR2020)
#define VerChar1 "20"
#elif(ENABLED(MachineCR30))
#define VerChar1 "CR30"
#endif
#if(ENABLED(HotendStock))
#define VerChar2 "S"
#elif(ENABLED(HotendE3D))
#define VerChar2 "E"
#elif ENABLED(HotendMosquito)
#define VerChar2 "M"
#endif
#if(ENABLED(HotendAllMetal))
#define VerChar3 "M"
#else
#define VerChar3 "S"
#endif
#if(ENABLED(BedAC))
#define VerChar4 "A"
#elif(ENABLED(BedDC))
#define VerChar4 "D"
#else
#define VerChar4 "N"
#endif
#if(ENABLED(ABL_EZABL))
#define VerChar5 "A"
#elif(ENABLED(ABL_BLTOUCH))
#define VerChar5 "B"
#else
#define VerChar5 "N"
#endif
#if(ENABLED(ABL_UBL))
#define VerChar6 "U"
#elif(ENABLED(ABL_BI))
#define VerChar6 "B"
#else
#define VerChar6 "N"
#endif
#define DETAILED_BUILD_VERSION SHORT_BUILD_VERSION " FL " VerChar1 VerChar2 VerChar3 VerChar4 VerChar5 VerChar6
//#define DETAILED_BUILD_VERSION SHORT_BUILD_VERSION
/**
* The STRING_DISTRIBUTION_DATE represents when the binary file was built,
* here we define this default string as the date where the latest release
* version was tagged.
*/
#define STRING_DISTRIBUTION_DATE "2023-08-04"
//#define STRING_DISTRIBUTION_DATE "2024-01-01"
/**
* Defines a generic printer name to be output to the LCD after booting Marlin.
*/
#if ENABLED(MACHINE_PRO)
#define MACHINEPRO " Pro"
#else
#define MACHINEPRO ""
#endif
#if(ENABLED(MachineMini))
#define CUSTOM_MACHINE_NAME "Mini SuPeR"
#elif(ENABLED(MachineCR10Smart))
#define CUSTOM_MACHINE_NAME "CR10Smart"
#elif(ENABLED(MachineCR10SmartPro))
#define CUSTOM_MACHINE_NAME "CR10SmartPro"
#elif(ENABLED(MachineEnder2))
#define CUSTOM_MACHINE_NAME "Ender2"
#elif(ENABLED(MachineEnder2Pro))
#define CUSTOM_MACHINE_NAME "Ender2 Pro"
#elif(ENABLED(MachineEnder3))
#define CUSTOM_MACHINE_NAME "Ender3" MACHINEPRO
#elif(ENABLED(MachineEnder3Max))
#define CUSTOM_MACHINE_NAME "E3Max"
#elif(ENABLED(MachineEnder6))
#define CUSTOM_MACHINE_NAME "Ender6"
#elif(ENABLED(MachineEnder7))
#define CUSTOM_MACHINE_NAME "Ender7"
#elif(ENABLED(MachineEnder3V2))
#define CUSTOM_MACHINE_NAME "Ender3V2"
#elif(ENABLED(MachineEnder3S1))
#define CUSTOM_MACHINE_NAME "Ender3S1"
#elif(ENABLED(MachineEnder4))
#define CUSTOM_MACHINE_NAME "Ender4"
#elif(ENABLED(MachineEnder5))
#define CUSTOM_MACHINE_NAME "Ender5" MACHINEPRO
#elif(ENABLED(MachineEnder5Plus))
#define CUSTOM_MACHINE_NAME "E5 Plus"
#elif(ENABLED(MachineCR20))
#define CUSTOM_MACHINE_NAME "CR-20"
#elif(ENABLED(MachineCR10Orig))
#define CUSTOM_MACHINE_NAME "CR-10"
#elif(ENABLED(MachineCRX))
#define CUSTOM_MACHINE_NAME "CR-X"
#elif ENABLED(MachineCR10SProV2)
#define CUSTOM_MACHINE_NAME "10SProV2"
#elif(ENABLED(MachineCR10SPro))
#define CUSTOM_MACHINE_NAME "10S Pro"
#elif(ENABLED(MachineCR10Max))
#define CUSTOM_MACHINE_NAME "CR10Max"
#elif(ENABLED(MachineCR10SV3))
#define CUSTOM_MACHINE_NAME "CR10V3"
#elif(ENABLED(MachineCR10SV2))
#define CUSTOM_MACHINE_NAME "CR10V2"
#elif(ENABLED(MachineCR10Std))
#define CUSTOM_MACHINE_NAME "CR10300"
#elif(ENABLED(MachineS4))
#define CUSTOM_MACHINE_NAME "CR10400"
#elif(ENABLED(MachineS5))
#define CUSTOM_MACHINE_NAME "CR10500"
#elif ENABLED(MachineCR2020)
#define CUSTOM_MACHINE_NAME "CR2020"
#elif ENABLED(MachineSermoonD1)
#define CUSTOM_MACHINE_NAME "SermoonD1"
#elif ENABLED(MachineCR5)
#define CUSTOM_MACHINE_NAME "CR5 Pro"
#elif ENABLED(MachineCR30)
#define CUSTOM_MACHINE_NAME "CR30 Printmill"
#endif
//#define MACHINE_NAME "3D Printer"
/**
* The SOURCE_CODE_URL is the location where users will find the Marlin Source
@@ -208,7 +54,7 @@
* has a distinct Github fork— the Source Code URL should just be the main
* Marlin repository.
*/
#define SOURCE_CODE_URL "https://github.com/InsanityAutomation/Marlin/tree/CrealityDwin_2.0"
//#define SOURCE_CODE_URL "github.com/MarlinFirmware/Marlin"
/**
* Default generic printer UUID.
@@ -219,12 +65,12 @@
* The WEBSITE_URL is the location where users can get more information such as
* documentation about a specific Marlin release.
*/
#define WEBSITE_URL "https://www.amazon.com/s?k=F1RST+LAYER"
//#define WEBSITE_URL "marlinfw.org"
/**
* Set the vendor info the serial USB interface, if changable
* Currently only supported by DUE platform
*/
//#define USB_DEVICE_VENDOR_ID 0x0000
//#define USB_DEVICE_PRODUCT_ID 0x0000
//#define USB_DEVICE_MANUFACTURE_NAME WEBSITE_URL
//#define USB_DEVICE_VENDOR_ID 0x0000
//#define USB_DEVICE_PRODUCT_ID 0x0000
//#define USB_DEVICE_MANUFACTURE_NAME WEBSITE_URL
-93
View File
@@ -1,93 +0,0 @@
/**
* Marlin 3D Printer Firmware
* Copyright (C) 2016 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 <http://www.gnu.org/licenses/>.
*
*/
/**
* Custom Bitmap for splashscreen
*
* You may use one of the following tools to generate the C++ bitmap array from
* a black and white image:
*
* - http://www.marlinfw.org/tools/u8glib/converter.html
* - http://www.digole.com/tools/PicturetoC_Hex_converter.php
*/
#define CUSTOM_BOOTSCREEN_TIMEOUT 2500
#define CUSTOM_BOOTSCREEN_BMPWIDTH 128
#define CUSTOM_BOOTSCREEN_INVERTED
const unsigned char custom_start_bmp[] PROGMEM = {
B11111101,B01010101,B01010101,B01010101,B01010101,B01010101,B01011111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,
B11111110,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,
B11111101,B00000000,B00000000,B00000111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,
B11111110,B00000111,B11000000,B00000101,B01010101,B01010101,B01010101,B01010101,B01010101,B01011111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,
B11111100,B00001010,B00100000,B00000110,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,
B11111110,B00010100,B00010000,B00000101,B00000000,B00000000,B00000111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,
B11111100,B00101000,B00001000,B00000110,B00000111,B11000000,B00000101,B01010101,B01010101,B01010101,B01010101,B01010101,B01011111,B11111111,B11111111,B11111111,
B11111110,B01010100,B00000100,B00000100,B00001010,B00100000,B00000110,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11111111,B11111111,B11111111,
B11111100,B01100000,B00000100,B00000110,B00010100,B00010000,B00000101,B00000000,B00000000,B00000111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,
B11111110,B01010000,B00000100,B00000100,B00101000,B00001000,B00000110,B00000111,B11000000,B00000101,B01010101,B01010101,B01010101,B01010101,B01010101,B01011111,
B11111100,B01100000,B00000100,B00000110,B01010100,B00000100,B00000100,B00001010,B00100000,B00000110,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,
B11111110,B01010100,B00000100,B00011100,B01100000,B00000100,B00000110,B00010100,B00010000,B00000101,B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,
B11111100,B00101000,B00001000,B00101110,B01010000,B00000100,B00000100,B00101000,B00001000,B00000110,B00000111,B11000000,B00000000,B00000001,B11110000,B00111111,
B11111110,B00010100,B00010000,B01010100,B01100000,B00000100,B00000110,B01010100,B00000100,B00000100,B00001010,B00100000,B00000000,B00000010,B00001000,B00011111,
B11111100,B00001010,B00100000,B01100110,B01010100,B00000100,B00011100,B01100000,B00000100,B00000110,B00010100,B00010000,B00000000,B00000101,B00000100,B00111111,
B11111110,B00000111,B11000000,B01010100,B00101000,B00001000,B00101110,B01010000,B00000100,B00000100,B00101000,B00001000,B00000000,B00001010,B00000010,B00011111,
B11111100,B00000000,B00000000,B00101110,B00010100,B00010000,B01010100,B01100000,B00000100,B00000110,B01010100,B00000100,B00000000,B00010101,B00000001,B00111111,
B11111110,B00000000,B00000000,B00011100,B00001010,B00100000,B01100110,B01010100,B00000100,B00011100,B01100000,B00000100,B00000000,B00011000,B00000001,B00011111,
B11111100,B00000000,B00000000,B00000110,B00000111,B11000000,B01010100,B00101000,B00001000,B00101110,B01010000,B00000100,B00000000,B00010100,B00000001,B00111111,
B11111110,B00000000,B00000000,B00000100,B00000000,B00000000,B00101110,B00010100,B00010000,B01010100,B01100000,B00000100,B00000000,B00011000,B00000001,B00011111,
B11111100,B11111111,B11111111,B11111110,B00000000,B00000000,B00011100,B00001010,B00100000,B01100110,B01010100,B00000100,B00011100,B00010101,B00000001,B00111111,
B11111110,B11010101,B01010101,B01010100,B00000000,B00000000,B00000110,B00000111,B11000000,B01010100,B00101000,B00001000,B00101010,B00001010,B00000010,B00011111,
B11111100,B10000100,B00010000,B01000110,B00000000,B00000000,B00000100,B00000000,B00000000,B00101110,B00010100,B00010000,B01010001,B00000101,B00000100,B00111111,
B11111110,B11000100,B00010000,B01000100,B11111111,B11111111,B11111110,B00000000,B00000000,B00011100,B00001010,B00100000,B01100001,B00000010,B10001000,B00011111,
B11111100,B10000100,B00010000,B01000110,B11010101,B01010101,B01010100,B00000000,B00000000,B00000110,B00000111,B11000000,B01010001,B00000001,B11110000,B00111111,
B11111110,B10000100,B00010000,B01000100,B10000100,B00010000,B01000110,B00000000,B00000000,B00000100,B00000000,B00000000,B00101010,B00000000,B00000000,B00011111,
B11111100,B11000100,B00010000,B01000110,B11000100,B00010000,B01000100,B11111111,B11111111,B11111110,B00000000,B00000000,B00011100,B00000000,B00000000,B00111111,
B11111110,B10000100,B00010000,B01000100,B10000100,B00010000,B01000110,B11010101,B01010101,B01010100,B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,
B11111100,B11010101,B01010101,B01010110,B10000100,B00010000,B01000100,B10000100,B00010000,B01000110,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,
B11111100,B11111111,B11111111,B11111100,B11000100,B00010000,B01000110,B11000100,B00010000,B01000100,B11111111,B11111111,B11111111,B11111111,B11111111,B10011111,
B11111110,B00000000,B00000000,B00000110,B10000100,B00010000,B01000100,B10000100,B00010000,B01000110,B11010101,B01010101,B01010101,B01010101,B01010101,B10111111,
B11111101,B01010101,B01010101,B01010100,B11010101,B01010101,B01010110,B10000100,B00010000,B01000100,B10000100,B00010000,B01000001,B00000100,B00010000,B10011111,
B11111111,B11111111,B11111111,B11111100,B11111111,B11111111,B11111100,B11000100,B00010000,B01000110,B11000100,B00010000,B01000001,B00000100,B00010001,B10111111,
B11111111,B11111111,B11111111,B11111110,B00000000,B00000000,B00000110,B10000100,B00010000,B01000100,B10000100,B00010000,B01000001,B00000100,B00010000,B10011111,
B11111111,B11111111,B11111111,B11111101,B01010101,B01010101,B01010100,B11010101,B01010101,B01010110,B10000100,B00010000,B01000001,B00000100,B00010000,B10011111,
B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111100,B11111111,B11111111,B11111100,B11000100,B00010000,B01000001,B00000100,B00010001,B10111111,
B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111110,B00000000,B00000000,B00000110,B10000100,B00010000,B01000001,B00000100,B00010000,B10011111,
B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111101,B01010101,B01010101,B01010100,B11010101,B01010101,B01010101,B01010101,B01010101,B10111111,
B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111100,B11111111,B11111111,B11111111,B11111111,B11111111,B10011111,
B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111110,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,
B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111101,B01010101,B01010101,B01010101,B01010101,B01010101,B01011111,
B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,
B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,
B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,
B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,
B11100000,B00101110,B11111011,B01111101,B11111011,B11111011,B11001111,B11000001,B11011111,B10111011,B00111110,B11000000,B11100001,B11111110,B00111100,B00011111,
B11111101,B11101110,B01111011,B00111001,B11111001,B11110011,B11001111,B10011110,B11011111,B10111011,B00111110,B11011111,B11011110,B11111100,B11011101,B11100111,
B11111101,B11101110,B00111011,B10111011,B11111001,B11101011,B11010111,B10111111,B01011111,B10111011,B01011110,B11011111,B11011110,B11111101,B11101101,B11110111,
B11111101,B11101110,B10111011,B11010011,B11111010,B11101011,B10110111,B00111111,B11011111,B10111011,B01001110,B11011111,B11011111,B11111111,B11001101,B11110011,
B11111101,B11101110,B11011011,B11000111,B11111010,B11101011,B10111011,B01111111,B11000000,B00111011,B01101110,B11000000,B11100011,B11111111,B00011101,B11110011,
B11111101,B11101110,B11001011,B11101111,B11111010,B11011011,B10111011,B01111111,B11011111,B10111011,B01100110,B11011111,B11111000,B11111111,B11001101,B11110011,
B11111101,B11101110,B11101011,B11101111,B11111011,B01011011,B00000011,B00111111,B01011111,B10111011,B01110110,B11011111,B11111110,B01111111,B11101101,B11110011,
B11111101,B11101110,B11110011,B11101111,B11111011,B01011011,B01111001,B10111110,B11011111,B10111011,B01111010,B11011111,B11011110,B01111101,B11101101,B11110111,
B11111101,B11101110,B11110011,B11101111,B11111011,B10111010,B11111101,B10011110,B11011111,B10111011,B01111100,B11011111,B11011110,B11111101,B11001101,B11100111,
B11111101,B11101110,B11111011,B11101111,B11111011,B10111010,B11111101,B11000001,B11011111,B10111011,B01111110,B11000000,B11100000,B11111110,B00011100,B00011111
};
-74
View File
@@ -1,74 +0,0 @@
/**
* Marlin 3D Printer Firmware
* Copyright (C) 2016 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 <http://www.gnu.org/licenses/>.
*
*/
/**
* Custom Status Screen bitmap
*
* Place this file in the root with your configuration files
* and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h.
*
* Use the Marlin Bitmap Converter to make your own:
* http://marlinfw.org/tools/u8glib/converter.html
*/
//
// Status Screen Logo bitmap
//
#define STATUS_LOGO_Y 3
#define STATUS_LOGO_WIDTH 24
const unsigned char status_logo_bmp[] PROGMEM = {
B11111111,B11111111,B11111111,
B10000000,B00000000,B00000001,
B10001110,B00000000,B11100001,
B10011111,B00000001,B11110001,
B10010011,B10000001,B00111001,
B10011111,B10000001,B11111001,
B10011111,B10000001,B11111001,
B10011111,B10111001,B11111001,
B10001111,B00101000,B11110001,
B10000000,B00111000,B00000001,
B10000000,B00000000,B00000001,
B10011111,B11111111,B11111001,
B10010001,B01110100,B10011001,
B10011011,B00000110,B10101001,
B10011011,B01010100,B10101001,
B10011011,B01010110,B10101001,
B10011011,B01010100,B10011001,
B10011111,B11111111,B11111001,
B11111111,B11111111,B11111111
};
//
// Use default bitmaps
//
#define STATUS_HOTEND_ANIM
#define STATUS_BED_ANIM
#if HOTENDS < 2
#define STATUS_LOGO_X 8
#define STATUS_HEATERS_X 40
#define STATUS_BED_X 72
#else
#define STATUS_LOGO_X 0
#define STATUS_HEATERS_X 32
#define STATUS_BED_X 80
#endif
+40
View File
@@ -3,10 +3,50 @@
# config.ini - Options to apply before the build
#
[config:base]
#
# ini_use_config - A comma-separated list of actions to apply to the Configuration files.
# The actions will be applied in the listed order.
# - none
# Ignore this file and don't apply any configuration options
#
# - base
# Just apply the options in config:base to the configuration
#
# - minimal
# Just apply the options in config:minimal to the configuration
#
# - all
# Apply all 'config:*' sections in this file to the configuration
#
# - another.ini
# Load another INI file with a path relative to this config.ini file (i.e., within Marlin/)
#
# - https://me.myserver.com/path/to/configs
# Fetch configurations from any URL.
#
# - example/Creality/Ender-5 Plus @ bugfix-2.1.x
# Fetch example configuration files from the MarlinFirmware/Configurations repository
# https://raw.githubusercontent.com/MarlinFirmware/Configurations/bugfix-2.1.x/config/examples/Creality/Ender-5%20Plus/
#
# - example/default @ release-2.0.9.7
# Fetch default configuration files from the MarlinFirmware/Configurations repository
# https://raw.githubusercontent.com/MarlinFirmware/Configurations/release-2.0.9.7/config/default/
#
# - [disable]
# Comment out all #defines in both Configuration.h and Configuration_adv.h. This is useful
# to start with a clean slate before applying any config: options, so only the options explicitly
# set in config.ini will be enabled in the configuration.
#
# - [flatten] (Not yet implemented)
# Produce a flattened set of Configuration.h and Configuration_adv.h files with only the enabled
# #defines and no comments. A clean look, but context-free.
#
ini_use_config = none
# Load all config: sections in this file
;ini_use_config = all
# Disable everything and apply subsequent config:base options
;ini_use_config = [disable], base
# Load config file relative to Marlin/
;ini_use_config = another.ini
# Download configurations from GitHub
+5 -3
View File
@@ -1,7 +1,9 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2016 Bob Cousins bobcousins42@googlemail.com
*
* 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
@@ -139,8 +141,8 @@ typedef Servo hal_servo_t;
#error "LCD_SERIAL_PORT must be from 0 to 3."
#endif
#define LCD_SERIAL lcdSerial
#if HAS_DGUS_LCD || ENABLED(DGUS_LCD_UI_CREALITY_TOUCH) || ENABLED(EXTENSIBLE_UI)
#define SERIAL_GET_TX_BUFFER_FREE() LCD_SERIAL.get_tx_buffer_free()
#if HAS_DGUS_LCD
#define LCD_SERIAL_TX_BUFFER_FREE() LCD_SERIAL.get_tx_buffer_free()
#endif
#endif
+1 -1
View File
@@ -629,7 +629,7 @@ MSerialT1 customizedSerial1(MSerialT1::HasEmergencyParser);
template class MarlinSerial< LCDSerialCfg<LCD_SERIAL_PORT> >;
MSerialLCD lcdSerial(MSerialLCD::HasEmergencyParser);
#if HAS_DGUS_LCD || ENABLED(DGUS_LCD_UI_CREALITY_TOUCH) || ENABLED(EXTENSIBLE_UI)
#if HAS_DGUS_LCD
template<typename Cfg>
typename MarlinSerial<Cfg>::ring_buffer_pos_t MarlinSerial<Cfg>::get_tx_buffer_free() {
const ring_buffer_pos_t t = tx_buffer.tail, // next byte to send.
+2 -6
View File
@@ -37,10 +37,6 @@
#include "../../core/types.h"
#include "../../core/serial_hook.h"
#ifndef SERIAL_PORT
#define SERIAL_PORT 0
#endif
#ifndef USBCON
// The presence of the UBRRH register is used to detect a UART.
@@ -209,7 +205,7 @@
static ring_buffer_pos_t available();
static void write(const uint8_t c);
static void flushTX();
#if HAS_DGUS_LCD || ENABLED(DGUS_LCD_UI_CREALITY_TOUCH) || ENABLED(EXTENSIBLE_UI)
#if HAS_DGUS_LCD
static ring_buffer_pos_t get_tx_buffer_free();
#endif
@@ -280,7 +276,7 @@
static constexpr bool DROPPED_RX = false;
static constexpr bool RX_FRAMING_ERRORS = false;
static constexpr bool MAX_RX_QUEUED = false;
static constexpr bool RX_OVERRUNS = (ANY(HAS_DGUS_LCD, SERIAL_STATS_RX_BUFFER_OVERRUNS) || ENABLED(DWINOS_4));
static constexpr bool RX_OVERRUNS = ALL(HAS_DGUS_LCD, SERIAL_STATS_RX_BUFFER_OVERRUNS);
};
typedef Serial1Class< MarlinSerial< LCDSerialCfg<LCD_SERIAL_PORT> > > MSerialLCD;
@@ -20,3 +20,7 @@
*
*/
#pragma once
#ifndef SERIAL_PORT
#define SERIAL_PORT 0
#endif
+3 -1
View File
@@ -1,7 +1,9 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2016 Bob Cousins bobcousins42@googlemail.com
*
* 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
+29
View File
@@ -0,0 +1,29 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
*/
#pragma once
/**
* AVR LCD-specific defines
*/
uint8_t u8g_com_HAL_AVR_sw_sp_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr);
#define U8G_COM_HAL_SW_SPI_FN u8g_com_HAL_AVR_sw_sp_fn
+3 -1
View File
@@ -1,7 +1,9 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2016 Bob Cousins bobcousins42@googlemail.com
*
* 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
+3 -3
View File
@@ -1,9 +1,9 @@
/**
* Marlin 3D Printer Firmware
*
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2016 Bob Cousins bobcousins42@googlemail.com
* Copyright (c) 2015-2016 Nico Tonnhofer wurstnase.reprap@gmail.com
*
* 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
+3 -4
View File
@@ -1,10 +1,9 @@
/**
* Marlin 3D Printer Firmware
*
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2016 Bob Cousins bobcousins42@googlemail.com
* Copyright (c) 2015-2016 Nico Tonnhofer wurstnase.reprap@gmail.com
* Copyright (c) 2016 Victor Perez victor_pv@hotmail.com
*
* 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
+3 -4
View File
@@ -1,10 +1,9 @@
/**
* Marlin 3D Printer Firmware
*
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2016 Bob Cousins bobcousins42@googlemail.com
* Copyright (c) 2015-2016 Nico Tonnhofer wurstnase.reprap@gmail.com
* Copyright (c) 2016 Victor Perez victor_pv@hotmail.com
*
* 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
+3 -3
View File
@@ -1,9 +1,9 @@
/**
* Marlin 3D Printer Firmware
*
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2016 Bob Cousins bobcousins42@googlemail.com
* Copyright (c) 2015-2016 Nico Tonnhofer wurstnase.reprap@gmail.com
*
* 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
+3 -2
View File
@@ -1,8 +1,9 @@
/**
* Marlin 3D Printer Firmware
*
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2016 Bob Cousins bobcousins42@googlemail.com
*
* 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
+34
View File
@@ -0,0 +1,34 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
*/
#pragma once
/**
* DUE (SAM3X8E) LCD-specific defines
*/
uint8_t u8g_com_HAL_DUE_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr);
uint8_t u8g_com_HAL_DUE_shared_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr);
uint8_t u8g_com_HAL_DUE_ST7920_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr);
#define U8G_COM_HAL_SW_SPI_FN u8g_com_HAL_DUE_sw_spi_fn
#define U8G_COM_HAL_HW_SPI_FN u8g_com_HAL_DUE_shared_hw_spi_fn
#define U8G_COM_ST7920_HAL_SW_SPI u8g_com_HAL_DUE_ST7920_sw_spi_fn
+1 -1
View File
@@ -175,7 +175,7 @@ uint8_t MarlinHAL::get_reset_source() { return rtc_get_reset_reason(1); }
void MarlinHAL::reboot() { ESP.restart(); }
void _delay_ms(int delay_ms) { delay(delay_ms); }
void _delay_ms(const int ms) { delay(ms); }
// return free memory between end of heap (or end bss) and whatever is current
int MarlinHAL::freeMemory() { return ESP.getFreeHeap(); }
+3 -1
View File
@@ -1,7 +1,9 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2016 Bob Cousins bobcousins42@googlemail.com
*
* 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
-1
View File
@@ -4,7 +4,6 @@
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
* Copyright (c) 2017 Victor Perez
*
* 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
@@ -20,3 +20,7 @@
*
*/
#pragma once
#if ANY(MKS_MINI_12864, FYSETC_MINI_12864_2_1)
#define U8G_HW_SPI_ESP32 1
#endif
+3 -1
View File
@@ -1,7 +1,9 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2016 Bob Cousins bobcousins42@googlemail.com
*
* 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
+3 -1
View File
@@ -1,7 +1,9 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2016 Bob Cousins bobcousins42@googlemail.com
*
* 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
+29
View File
@@ -0,0 +1,29 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
*/
#pragma once
/**
* ESP32 LCD-specific defines
*/
uint8_t u8g_esp32_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr);
#define U8G_COM_HAL_HW_SPI_FN u8g_esp32_hw_spi_fn
+3 -5
View File
@@ -25,7 +25,7 @@
#include "../../inc/MarlinConfig.h"
#if ANY(MKS_MINI_12864, FYSETC_MINI_12864_2_1)
#if U8G_HW_SPI_ESP32
#include <U8glib-HAL.h>
#include "../shared/HAL_SPI.h"
@@ -41,7 +41,6 @@
static SPISettings spiConfig;
#ifndef LCD_SPI_SPEED
#ifdef SD_SPI_SPEED
#define LCD_SPI_SPEED SD_SPI_SPEED // Assume SPI speed shared with SD
@@ -50,7 +49,7 @@ static SPISettings spiConfig;
#endif
#endif
uint8_t u8g_eps_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) {
uint8_t u8g_esp32_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)
@@ -101,6 +100,5 @@ uint8_t u8g_eps_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_pt
return 1;
}
#endif // MKS_MINI_12864 || FYSETC_MINI_12864_2_1
#endif // U8G_HW_SPI_ESP32
#endif // ARDUINO_ARCH_ESP32
+56
View File
@@ -0,0 +1,56 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2023 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_HC32
#include "HAL.h"
#include <core_hooks.h>
#include <drivers/panic/panic.h>
//
// Emergency Parser
//
#if ENABLED(EMERGENCY_PARSER)
extern "C" void core_hook_usart_rx_irq(uint8_t ch, uint8_t usart) {
// Only handle receive on host serial ports
if (false
#ifdef SERIAL_PORT
|| usart != SERIAL_PORT
#endif
#ifdef SERIAL_PORT_2
|| usart != SERIAL_PORT_2
#endif
#ifdef SERIAL_PORT_3
|| usart != SERIAL_PORT_3
#endif
) {
return;
}
// Submit character to emergency parser
if (MYSERIAL1.emergency_parser_enabled())
emergency_parser.update(MYSERIAL1.emergency_state, ch);
}
#endif // EMERGENCY_PARSER
#endif // ARDUINO_ARCH_HC32
+154
View File
@@ -0,0 +1,154 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2023 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/>.
*
*/
/**
* HAL for HC32F460 based boards
*
* Note: MarlinHAL class is in MarlinHAL.h/cpp
*/
#define CPU_32_BIT
#include "../../inc/MarlinConfig.h"
#include "../../core/macros.h"
#include "../shared/Marduino.h"
#include "../shared/math_32bit.h"
#include "../shared/HAL_SPI.h"
#include "fastio.h"
#include "timers.h"
#include "MarlinSerial.h"
#include <stdint.h>
//
// Serial Ports
//
#define _MSERIAL(X) MSerial##X
#define MSERIAL(X) _MSERIAL(X)
#define NUM_UARTS 4
#if SERIAL_PORT == -1
#error "USB Serial is not supported on HC32F460"
#elif WITHIN(SERIAL_PORT, 1, NUM_UARTS)
#define MYSERIAL1 MSERIAL(SERIAL_PORT)
#else
#define MYSERIAL1 MSERIAL(1) // Dummy port
static_assert(false, "SERIAL_PORT must be from 1 to " STRINGIFY(NUM_UARTS) ".")
#endif
#ifdef SERIAL_PORT_2
#if SERIAL_PORT_2 == -1
#error "USB Serial is not supported on HC32F460"
#elif WITHIN(SERIAL_PORT_2, 1, NUM_UARTS)
#define MYSERIAL2 MSERIAL(SERIAL_PORT_2)
#else
#define MYSERIAL2 MSERIAL(1) // Dummy port
static_assert(false, "SERIAL_PORT_2 must be from 1 to " STRINGIFY(NUM_UARTS) ".")
#endif
#endif
#ifdef SERIAL_PORT_3
#if SERIAL_PORT_3 == -1
#error "USB Serial is not supported on HC32F460"
#elif WITHIN(SERIAL_PORT_3, 1, NUM_UARTS)
#define MYSERIAL3 MSERIAL(SERIAL_PORT_3)
#else
#define MYSERIAL3 MSERIAL(1) // Dummy port
static_assert(false, "SERIAL_PORT_3 must be from 1 to " STRINGIFY(NUM_UARTS) ".")
#endif
#endif
#ifdef LCD_SERIAL_PORT
#if LCD_SERIAL_PORT == -1
#error "USB Serial is not supported on HC32F460"
#elif WITHIN(LCD_SERIAL_PORT, 1, NUM_UARTS)
#define LCD_SERIAL MSERIAL(LCD_SERIAL_PORT)
#else
#define LCD_SERIAL MSERIAL(1) // Dummy port
static_assert(false, "LCD_SERIAL_PORT must be from 1 to " STRINGIFY(NUM_UARTS) ".")
#endif
#if HAS_DGUS_LCD
#define LCD_SERIAL_TX_BUFFER_FREE() LCD_SERIAL.availableForWrite()
#endif
#endif
//
// Emergency Parser
//
#if ENABLED(EMERGENCY_PARSER)
extern "C" void usart_rx_irq_hook(uint8_t ch, uint8_t usart);
#endif
//
// Misc. Defines
//
#define square(x) ((x) * (x))
#ifndef strncpy_P
#define strncpy_P(dest, src, num) strncpy((dest), (src), (num))
#endif
//
// Misc. Functions
//
#ifndef analogInputToDigitalPin
#define analogInputToDigitalPin(p) (p)
#endif
#define CRITICAL_SECTION_START \
uint32_t primask = __get_PRIMASK(); \
(void)__iCliRetVal()
#define CRITICAL_SECTION_END \
if (!primask) \
(void)__iSeiRetVal()
// Disable interrupts
#define cli() noInterrupts()
// Enable interrupts
#define sei() interrupts()
// bss_end alias
#define __bss_end __bss_end__
// Fix bug in pgm_read_ptr
#undef pgm_read_ptr
#define pgm_read_ptr(addr) (*(addr))
//
// ADC
//
#define HAL_ADC_VREF_MV 3300
#define HAL_ADC_RESOLUTION 10
#define GET_PIN_MAP_PIN(index) index
#define GET_PIN_MAP_INDEX(pin) pin
#define PARSED_PIN_INDEX(code, dval) parser.intval(code, dval)
//
// MarlinHAL implementation
//
#include "MarlinHAL.h"
+278
View File
@@ -0,0 +1,278 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2023 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/>.
*
*/
/**
* HAL for HC32F460, based heavily on the legacy implementation and STM32F1
*/
#ifdef ARDUINO_ARCH_HC32
#include "../../inc/MarlinConfig.h"
#include "HAL.h" // Includes MarlinHAL.h
#include <IWatchdog.h>
#include <AsyncAnalogRead.h>
#if TEMP_SENSOR_SOC
#include <OnChipTemperature.h>
#endif
extern "C" char *_sbrk(int incr);
#if ENABLED(POSTMORTEM_DEBUGGING)
// From MinSerial.cpp
extern void install_min_serial();
#endif
#if ENABLED(MARLIN_DEV_MODE)
inline void HAL_clock_frequencies_dump() {
// 1. dump all clock frequencies
update_system_clock_frequencies();
SERIAL_ECHOPGM(
"-- clocks dump -- \nSYS=", SYSTEM_CLOCK_FREQUENCIES.system,
"\nHCLK=", SYSTEM_CLOCK_FREQUENCIES.hclk,
"\nPCLK0=", SYSTEM_CLOCK_FREQUENCIES.pclk0,
"\nPCLK1=", SYSTEM_CLOCK_FREQUENCIES.pclk1,
"\nPCLK2=", SYSTEM_CLOCK_FREQUENCIES.pclk2,
"\nPCLK3=", SYSTEM_CLOCK_FREQUENCIES.pclk3,
"\nPCLK4=", SYSTEM_CLOCK_FREQUENCIES.pclk4,
"\nEXCLK=", SYSTEM_CLOCK_FREQUENCIES.exclk,
"\nF_CPU=", F_CPU
);
// 2. dump current system clock source
en_clk_sys_source_t clkSrc = CLK_GetSysClkSource();
SERIAL_ECHOPGM("\nSYSCLK=");
switch (clkSrc) {
case ClkSysSrcHRC: SERIAL_ECHOPGM("HRC"); break;
case ClkSysSrcMRC: SERIAL_ECHOPGM("MRC"); break;
case ClkSysSrcLRC: SERIAL_ECHOPGM("LRC"); break;
case ClkSysSrcXTAL: SERIAL_ECHOPGM("XTAL"); break;
case ClkSysSrcXTAL32: SERIAL_ECHOPGM("XTAL32"); break;
case CLKSysSrcMPLL: SERIAL_ECHOPGM("MPLL");
// 3. if MPLL is used, dump MPLL settings:
// (derived from CLK_SetPllSource and CLK_MpllConfig)
// source
switch (M4_SYSREG->CMU_PLLCFGR_f.PLLSRC) {
case ClkPllSrcXTAL: SERIAL_ECHOPGM(",XTAL"); break;
case ClkPllSrcHRC: SERIAL_ECHOPGM(",HRC"); break;
default: break;
}
// PLL multipliers and dividers
SERIAL_ECHOPGM(
"\nP=", M4_SYSREG->CMU_PLLCFGR_f.MPLLP + 1UL,
"\nQ=", M4_SYSREG->CMU_PLLCFGR_f.MPLLQ + 1UL,
"\nR=", M4_SYSREG->CMU_PLLCFGR_f.MPLLR + 1UL,
"\nN=", M4_SYSREG->CMU_PLLCFGR_f.MPLLN + 1UL,
"\nM=", M4_SYSREG->CMU_PLLCFGR_f.MPLLM + 1UL
);
break;
default: break;
}
// Done
SERIAL_ECHOPGM("\n--\n");
}
#endif // MARLIN_DEV_MODE
//
// MarlinHAL class implementation
//
pin_t MarlinHAL::last_adc_pin;
#if TEMP_SENSOR_SOC
float MarlinHAL::soc_temp = 0;
#endif
MarlinHAL::MarlinHAL() {}
void MarlinHAL::watchdog_init() {
TERN_(USE_WATCHDOG, WDT.begin(5000)); // Reset on 5 second timeout
}
void MarlinHAL::watchdog_refresh() {
TERN_(USE_WATCHDOG, WDT.reload());
}
void MarlinHAL::init() {
NVIC_SetPriorityGrouping(0x3);
// Print clock frequencies to host serial
TERN_(MARLIN_DEV_MODE, HAL_clock_frequencies_dump());
// Register min serial
TERN_(POSTMORTEM_DEBUGGING, install_min_serial());
}
void MarlinHAL::init_board() {}
void MarlinHAL::reboot() {
NVIC_SystemReset();
}
bool MarlinHAL::isr_state() {
return !__get_PRIMASK();
}
void MarlinHAL::isr_on() {
__enable_irq();
}
void MarlinHAL::isr_off() {
__disable_irq();
}
void MarlinHAL::delay_ms(const int ms) {
delay(ms);
}
void MarlinHAL::idletask() {}
uint8_t MarlinHAL::get_reset_source() {
// Query reset cause from RMU
stc_rmu_rstcause_t rstCause;
RMU_GetResetCause(&rstCause);
// Map reset cause code to those expected by Marlin
// - Reset causes are flags, so multiple can be set
TERN_(MARLIN_DEV_MODE, printf("-- Reset Cause -- \n"));
uint8_t cause = 0;
#define MAP_CAUSE(from, to) \
if (rstCause.from == Set) { \
TERN_(MARLIN_DEV_MODE, printf(" - " STRINGIFY(from) "\n")); \
cause |= to; \
}
// Power on
MAP_CAUSE(enPowerOn, RST_POWER_ON) // Power on reset
// External
MAP_CAUSE(enRstPin, RST_EXTERNAL) // Reset pin
MAP_CAUSE(enPvd1, RST_EXTERNAL) // Program voltage detection reset
MAP_CAUSE(enPvd2, RST_EXTERNAL) // "
// Brown out
MAP_CAUSE(enBrownOut, RST_BROWN_OUT) // Brown out reset
// Wdt
MAP_CAUSE(enWdt, RST_WATCHDOG) // Watchdog reset
MAP_CAUSE(enSwdt, RST_WATCHDOG) // Special WDT reset
// Software
MAP_CAUSE(enPowerDown, RST_SOFTWARE) // MCU power down (?)
MAP_CAUSE(enSoftware, RST_SOFTWARE) // Software reset (e.g. NVIC_SystemReset())
// Misc.
MAP_CAUSE(enMpuErr, RST_BACKUP) // MPU error
MAP_CAUSE(enRamParityErr, RST_BACKUP) // RAM parity error
MAP_CAUSE(enRamEcc, RST_BACKUP) // RAM ecc error
MAP_CAUSE(enClkFreqErr, RST_BACKUP) // Clock frequency failure
MAP_CAUSE(enXtalErr, RST_BACKUP) // XTAL failure
#undef MAP_CAUSE
return cause;
}
void MarlinHAL::clear_reset_source() {
RMU_ClrResetFlag();
}
int MarlinHAL::freeMemory() {
volatile char top;
return &top - _sbrk(0);
}
void MarlinHAL::adc_init() {}
void MarlinHAL::adc_enable(const pin_t pin) {
#if TEMP_SENSOR_SOC
if (pin == TEMP_SOC_PIN) {
// Start OTS, min. 1s between reads
ChipTemperature.begin();
ChipTemperature.setMinimumReadDeltaMillis(1000);
return;
}
#endif
// Just set pin mode to analog
pinMode(pin, INPUT_ANALOG);
}
void MarlinHAL::adc_start(const pin_t pin) {
MarlinHAL::last_adc_pin = pin;
#if TEMP_SENSOR_SOC
if (pin == TEMP_SOC_PIN) {
// Read OTS
float temp;
if (ChipTemperature.read(temp))
MarlinHAL::soc_temp = temp;
return;
}
#endif
CORE_ASSERT(IS_GPIO_PIN(pin), "adc_start: invalid pin")
analogReadAsync(pin);
}
bool MarlinHAL::adc_ready() {
#if TEMP_SENSOR_SOC
if (MarlinHAL::last_adc_pin == TEMP_SOC_PIN) return true;
#endif
CORE_ASSERT(IS_GPIO_PIN(MarlinHAL::last_adc_pin), "adc_ready: invalid pin")
return getAnalogReadComplete(MarlinHAL::last_adc_pin);
}
uint16_t MarlinHAL::adc_value() {
#if TEMP_SENSOR_SOC
if (MarlinHAL::last_adc_pin == TEMP_SOC_PIN)
return OTS_FLOAT_TO_ADC_READING(MarlinHAL::soc_temp);
#endif
// Read conversion result
CORE_ASSERT(IS_GPIO_PIN(MarlinHAL::last_adc_pin), "adc_value: invalid pin")
return getAnalogReadValue(MarlinHAL::last_adc_pin);
}
void MarlinHAL::set_pwm_duty(const pin_t pin, const uint16_t value, const uint16_t scale, const bool invert) {
// Invert value if requested
const uint16_t val = invert ? scale - value : value;
// AnalogWrite the value, core handles the rest
// Pin mode should be set by Marlin by calling SET_PWM() before calling this function
analogWriteScaled(pin, val, scale);
}
void MarlinHAL::set_pwm_frequency(const pin_t pin, const uint16_t f_desired) {
// TODO set_pwm_frequency is not implemented yet
panic("set_pwm_frequency is not implemented yet\n");
}
void flashFirmware(const int16_t) { MarlinHAL::reboot(); }
#endif // ARDUINO_ARCH_HC32
+133
View File
@@ -0,0 +1,133 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
*/
#pragma once
#include <core_types.h>
#include <stdint.h>
typedef gpio_pin_t pin_t;
#if TEMP_SENSOR_SOC
/**
* Convert ots measurement float to uint16_t for adc_value()
*
* @note returns float as integer in degrees C * 10, if T > 0
*/
#define OTS_FLOAT_TO_ADC_READING(T) ((T) > 0 ? ((uint16_t)((T) * 10.0f)) : 0)
/**
* Convert adc_value() uint16_t to ots measurement float
*
* @note see OTS_FLOAT_TO_ADC_READING for inverse
*
* @note RAW is oversampled by OVERSAMPLENR, so we need to divide first
*/
#define TEMP_SOC_SENSOR(RAW) ((float)(((RAW) / OVERSAMPLENR) / 10))
#endif
/**
* HAL class for Marlin on HC32F460
*/
class MarlinHAL {
public:
// Earliest possible init, before setup()
MarlinHAL();
// Watchdog
static void watchdog_init();
static void watchdog_refresh();
static void init(); // Called early in setup()
static void init_board(); // Called less early in setup()
static void reboot(); // Restart the firmware from 0x0
// Interrupts
static bool isr_state();
static void isr_on();
static void isr_off();
static void delay_ms(const int 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();
//
// ADC Methods
//
// 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();
// The current value of the ADC register
static uint16_t adc_value();
/**
* Set the PWM duty cycle for the pin to the given value.
* Optionally invert the duty cycle [default = false]
* Optionally change the maximum size of the provided value to enable finer PWM duty control [default = 255]
* The timer must be pre-configured with set_pwm_frequency() if the default frequency is not desired.
*/
static void set_pwm_duty(const pin_t pin, const uint16_t value, const uint16_t scale = 255, const bool invert = false);
/**
* Set the frequency of the timer for the given pin.
* All Timer PWM pins run at the same frequency.
*/
static void set_pwm_frequency(const pin_t pin, const uint16_t f_desired);
private:
/**
* Pin number of the last pin that was used with adc_start()
*/
static pin_t last_adc_pin;
#if TEMP_SENSOR_SOC
/**
* On-chip temperature sensor value
*/
static float soc_temp;
#endif
};
// M997: Trigger a firmware update from SD card (after upload).
// On HC32F460, a reboot is enough to do this.
#ifndef PLATFORM_M997_SUPPORT
#define PLATFORM_M997_SUPPORT
#endif
void flashFirmware(const int16_t);
+142
View File
@@ -0,0 +1,142 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2023 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_HC32
#include "../../inc/MarlinConfig.h"
#include "MarlinSerial.h"
#include <drivers/usart/Usart.h>
/**
* Not every MarlinSerial instance should handle emergency parsing, as
* it would not make sense to parse GCode from TMC responses
*/
constexpr bool serial_handles_emergency(int port) {
return false
#ifdef SERIAL_PORT
|| (SERIAL_PORT) == port
#endif
#ifdef SERIAL_PORT_2
|| (SERIAL_PORT_2) == port
#endif
#ifdef LCD_SERIAL_PORT
|| (LCD_SERIAL_PORT) == port
#endif
;
}
//
// Define serial ports
//
#define DEFINE_HWSERIAL_MARLIN(name, n) \
MSerialT name(serial_handles_emergency(n), \
&USART##n##_config, \
BOARD_USART##n##_TX_PIN, \
BOARD_USART##n##_RX_PIN);
DEFINE_HWSERIAL_MARLIN(MSerial1, 1);
DEFINE_HWSERIAL_MARLIN(MSerial2, 2);
//
// Serial port assertions
//
// Check the type of each serial port by passing it to a template function.
// HardwareSerial is known to sometimes hang the controller when an error occurs,
// so this case will fail the static assert. All other classes are assumed to be ok.
template <typename T>
constexpr bool IsSerialClassAllowed(const T &) { return true; }
constexpr bool IsSerialClassAllowed(const HardwareSerial &) { return false; }
constexpr bool IsSerialClassAllowed(const Usart &) { return false; }
// If you encounter this error, replace SerialX with MSerialX, for example MSerial3.
#define CHECK_CFG_SERIAL(A) static_assert(IsSerialClassAllowed(A), STRINGIFY(A) " is defined incorrectly");
#define CHECK_AXIS_SERIAL(A) static_assert(IsSerialClassAllowed(A##_HARDWARE_SERIAL), STRINGIFY(A) "_HARDWARE_SERIAL must be defined in the form MSerial1, rather than Serial1");
// Non-TMC ports were already validated in HAL.h, so do not require verbose error messages.
#ifdef MYSERIAL1
CHECK_CFG_SERIAL(MYSERIAL1);
#endif
#ifdef MYSERIAL2
CHECK_CFG_SERIAL(MYSERIAL2);
#endif
#ifdef LCD_SERIAL
CHECK_CFG_SERIAL(LCD_SERIAL);
#endif
#if AXIS_HAS_HW_SERIAL(X)
CHECK_AXIS_SERIAL(X);
#endif
#if AXIS_HAS_HW_SERIAL(X2)
CHECK_AXIS_SERIAL(X2);
#endif
#if AXIS_HAS_HW_SERIAL(Y)
CHECK_AXIS_SERIAL(Y);
#endif
#if AXIS_HAS_HW_SERIAL(Y2)
CHECK_AXIS_SERIAL(Y2);
#endif
#if AXIS_HAS_HW_SERIAL(Z)
CHECK_AXIS_SERIAL(Z);
#endif
#if AXIS_HAS_HW_SERIAL(Z2)
CHECK_AXIS_SERIAL(Z2);
#endif
#if AXIS_HAS_HW_SERIAL(Z3)
CHECK_AXIS_SERIAL(Z3);
#endif
#if AXIS_HAS_HW_SERIAL(Z4)
CHECK_AXIS_SERIAL(Z4);
#endif
#if AXIS_HAS_HW_SERIAL(I)
CHECK_AXIS_SERIAL(I);
#endif
#if AXIS_HAS_HW_SERIAL(J)
CHECK_AXIS_SERIAL(J);
#endif
#if AXIS_HAS_HW_SERIAL(K)
CHECK_AXIS_SERIAL(K);
#endif
#if AXIS_HAS_HW_SERIAL(E0)
CHECK_AXIS_SERIAL(E0);
#endif
#if AXIS_HAS_HW_SERIAL(E1)
CHECK_AXIS_SERIAL(E1);
#endif
#if AXIS_HAS_HW_SERIAL(E2)
CHECK_AXIS_SERIAL(E2);
#endif
#if AXIS_HAS_HW_SERIAL(E3)
CHECK_AXIS_SERIAL(E3);
#endif
#if AXIS_HAS_HW_SERIAL(E4)
CHECK_AXIS_SERIAL(E4);
#endif
#if AXIS_HAS_HW_SERIAL(E5)
CHECK_AXIS_SERIAL(E5);
#endif
#if AXIS_HAS_HW_SERIAL(E6)
CHECK_AXIS_SERIAL(E6);
#endif
#if AXIS_HAS_HW_SERIAL(E7)
CHECK_AXIS_SERIAL(E7);
#endif
#endif // ARDUINO_ARCH_HC32
+56
View File
@@ -0,0 +1,56 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
*/
#pragma once
#include "../../core/serial_hook.h"
#include <drivers/usart/Usart.h>
// Optionally set uart IRQ priority to reduce overflow errors
// #define UART_IRQ_PRIO 1
struct MarlinSerial : public Usart {
MarlinSerial(struct usart_config_t *usart_device, gpio_pin_t tx_pin, gpio_pin_t rx_pin) : Usart(usart_device, tx_pin, rx_pin) {}
#ifdef UART_IRQ_PRIO
void setPriority() {
NVIC_SetPriority(c_dev()->interrupts.rx_data_available.interrupt_number, UART_IRQ_PRIO);
NVIC_SetPriority(c_dev()->interrupts.rx_error.interrupt_number, UART_IRQ_PRIO);
NVIC_SetPriority(c_dev()->interrupts.tx_buffer_empty.interrupt_number, UART_IRQ_PRIO);
NVIC_SetPriority(c_dev()->interrupts.tx_complete.interrupt_number, UART_IRQ_PRIO);
}
void begin(uint32_t baud) {
Usart::begin(baud);
setPriority();
}
void begin(uint32_t baud, uint8_t config) {
Usart::begin(baud, config);
setPriority();
}
#endif
};
typedef Serial1Class<MarlinSerial> MSerialT;
extern MSerialT MSerial1;
extern MSerialT MSerial2;
+151
View File
@@ -0,0 +1,151 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2023 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_HC32
#include "../../inc/MarlinConfig.h"
#include <drivers/panic/panic.h>
#if ANY(POSTMORTEM_DEBUGGING, PANIC_ENABLE)
#include <drivers/usart/usart_sync.h>
//
// Shared by both panic and PostMortem debugging
//
static void minserial_begin() {
#if !WITHIN(SERIAL_PORT, 1, 3)
#warning "MinSerial requires a physical UART port for output."
#warning "Disabling MinSerial because the used serial port is not a HW port."
#else
// Prepare usart_sync configuration
const stc_usart_uart_init_t usart_config = {
.enClkMode = UsartIntClkCkNoOutput,
.enClkDiv = UsartClkDiv_1,
.enDataLength = UsartDataBits8,
.enDirection = UsartDataLsbFirst,
.enStopBit = UsartOneStopBit,
.enParity = UsartParityNone,
.enSampleMode = UsartSampleBit8,
.enDetectMode = UsartStartBitFallEdge,
.enHwFlow = UsartRtsEnable,
};
// Initializes usart_sync driver
#define __USART_SYNC_INIT(port_no, baud, config) \
usart_sync_init(M4_USART##port_no, \
BOARD_USART##port_no##_TX_PIN, \
baud, \
config);
#define USART_SYNC_INIT(port_no, baud, config) __USART_SYNC_INIT(port_no, baud, config)
// This will reset the baudrate to what is defined in Configuration.h,
// ignoring any changes made with e.g. M575.
// keeping the dynamic baudrate would require re-calculating the baudrate
// using the register values, which is a pain...
// TODO: retain dynamic baudrate in MinSerial init
// -> see USART_SetBaudrate(), needs to be inverted
USART_SYNC_INIT(SERIAL_PORT, BAUDRATE, &usart_config);
#undef USART_SYNC_INIT
#undef __USART_SYNC_INIT
#endif
}
static void minserial_putc(char c) {
#if WITHIN(SERIAL_PORT, 1, 3)
#define __USART_SYNC_PUTC(port_no, ch) usart_sync_putc(M4_USART##port_no, ch);
#define USART_SYNC_PUTC(port_no, ch) __USART_SYNC_PUTC(port_no, ch)
USART_SYNC_PUTC(SERIAL_PORT, c);
#undef USART_SYNC_PUTC
#undef __USART_SYNC_PUTC
#endif
}
//
// Panic only
//
#ifdef PANIC_ENABLE
void panic_begin() {
minserial_begin();
panic_puts("\n\nPANIC:\n");
}
void panic_puts(const char *str) {
while (*str) minserial_putc(*str++);
}
#endif // PANIC_ENABLE
//
// PostMortem debugging only
//
#if ENABLED(POSTMORTEM_DEBUGGING)
#include "../shared/MinSerial.h"
#include <drivers/panic/fault_handlers.h>
void fault_handlers_init() {
// Enable cpu traps:
// - Divide by zero
// - Unaligned access
SCB->CCR |= SCB_CCR_DIV_0_TRP_Msk; //| SCB_CCR_UNALIGN_TRP_Msk;
}
void install_min_serial() {
HAL_min_serial_init = &minserial_begin;
HAL_min_serial_out = &minserial_putc;
}
extern "C" {
__attribute__((naked)) void JumpHandler_ASM() {
__asm__ __volatile__(
"b CommonHandler_ASM\n");
}
void __attribute__((naked, alias("JumpHandler_ASM"), nothrow)) HardFault_Handler();
void __attribute__((naked, alias("JumpHandler_ASM"), nothrow)) BusFault_Handler();
void __attribute__((naked, alias("JumpHandler_ASM"), nothrow)) UsageFault_Handler();
void __attribute__((naked, alias("JumpHandler_ASM"), nothrow)) MemManage_Handler();
void __attribute__((naked, alias("JumpHandler_ASM"), nothrow)) NMI_Handler();
}
#endif // POSTMORTEM_DEBUGGING
#endif // POSTMORTEM_DEBUGGING || PANIC_ENABLE
//
// Panic_end is always required to print the '!!' to the host
//
void panic_end() {
// Print '!!' to signal error to host
// Do it 10x so it's not missed
for (uint_fast8_t i = 10; i--;) panic_printf("\n!!\n");
// Then, reset the board
NVIC_SystemReset();
}
#endif // ARDUINO_ARCH_HC32
+110
View File
@@ -0,0 +1,110 @@
# HC32F460 HAL
This document provides notes on the HAL for the HC32F460 MCU.
## Adding support for a new board
The HC32F460 HAL is designed to be generic enough for any HC32F460-based board. Adding support for a new HC32F460-based board will require the following steps:
1. Follow [the usual instructions](https://marlinfw.org/docs/development/boards.html#adding-a-new-board) to add a new board to Marlin. (i.e., Add a pins file, edit `boards.h` and `pins.h`, etc.)
2. Determine the flash size your board uses:
- Examine the board's main processor. (Refer the naming key in `hc32.ini`.)
- Extend the `HC32F460C_common` base env for 256K, or `HC32F460E_common` for 512K.
3. Determine your board's application start address (see [below](#finding-the-application-start-address))
4. Set `board_build.ld_args.flash_start` to the app start address once you've found it. If your board doesn't use a bootloader, you may be able to use the "ICSP" header or DFU. This document will be updated once we have more information about flashing without a bootloader.
### Finding the application start address
If the board contains a bootloader you'll need to find the application address. This is the address the bootloader jumps to after it's done. You can find this address in a few different ways:
#### 1. Using log messages
If you're lucky, the bootloader may print the app start address on the serial output during boot. To check for this, use your favorite serial monitor to observe the serial output when you power on the board. Look for a message like "Jumping to 0xC000" or "GotoApp->addr=0xC000". This line would be printed before Marlin's "start" message.
Example:
```
[...]
version 1.2
sdio init success!
Disk init
Tips ------ None Firmware file
GotoApp->addr=0xC000
start
[...]
```
#### 2. Using published source code
If the vendor has published Marlin source code that includes the bootloader, you can search the bootloader source code for the address. Begin your search with the following steps:
1. Find the code that sets the vector table offset
The vector table offset is usually set using a line like this:
```c
SCB->VTOR = ((uint32_t) APP_START_ADDRESS & SCB_VTOR_TBLOFF_Msk);
```
Just searching for `SCB->VTOR` should yield some results. From there, you just need to look at the value that's assigned to it. The example uses `APP_START_ADDRESS`.
> [!NOTE]
> Some vendors publish incomplete source code. But they sometimes leave version control related files in the repo, which can contain previous version of files that were removed. Find these by including folders like `.git` or `.svn` in your search.
> [!NOTE]
> The example is based on the [Voxelab-64/Aquila_X2](https://github.com/Voxelab-64/Aquila_X2/blob/d1f23adf96920996b979bc31023d1dce236d05db/firmware/Sources/.svn/pristine/ec/ec82bcb480b511906bc3e6658450e3a803ab9813.svn-base#L96) which actually includes deleted files in its repo.
2. Using a linker script
If the repository contains a linker script, look at the memory regions, specifically a region named `FLASH` or similar. The `ORIGIN` of that region will be the application start address.
**Example:**
```ld
MEMORY
{
FLASH (rx): ORIGIN = 0x0000C000, LENGTH = 512K
OTP (rx): ORIGIN = 0x03000C00, LENGTH = 1020
RAM (rwx): ORIGIN = 0x1FFF8000, LENGTH = 188K
RET_RAM (rwx): ORIGIN = 0x200F0000, LENGTH = 4K
}
```
> [!NOTE]
> This example is based on [Voxelab-64/Aquila_X2](https://github.com/Voxelab-64/Aquila_X2/blob/d1f23adf96920996b979bc31023d1dce236d05db/firmware/Sources/main/hdsc32core/hc32f46x_flash.ld#L55)
## Documentation on the HC32F460
Due to uncertain licensing (w/r/t STMicro), documentation for the HC32F460 is only available upon request. Documentation includes the following:
- Datasheet, user manual, reference manual
- Application notes for the DDL
- DDL source code
- IDE support packages (Keil, IAR, ...) including .svd files
- Programming software
- Emulator / debugger drivers
- Development board documentation and schematics
- Errata documents
- (Limited) sales information
- Full Voxelab firmware source code
- Documents in Chinese or English (machine translated)
Contact me on Discord (@shadow578) if you need it.
## Dependencies
This HAL depends on the following projects:
- [shadow578/platform-hc32f46x](https://github.com/shadow578/platform-hc32f46x) (PlatformIO platform for HC32F46x)
- [shadow578/framework-arduino-hc32f46x](https://github.com/shadow578/framework-arduino-hc32f46x) (Arduino framework for HC32F46x)
- [shadow578/framework-hc32f46x-ddl](https://github.com/shadow578/framework-hc32f46x-ddl) (HC32F46x DDL framework)
## Credits
This HAL wouldn't be possible without the following projects:
- [Voxelab-64/Aquila_X2](https://github.com/Voxelab-64/Aquila_X2) (original implementation)
- [alexqzd/Marlin-H32](https://github.com/alexqzd/Marlin-H32) (misc. fixes to the original implementation)
- [kgoveas/Arduino-Core-Template](https://github.com/kgoveas/Arduino-Core-Template) (template for Arduino headers)
- [stm32duino/Arduino_Core_STM32](https://github.com/stm32duino/Arduino_Core_STM32) (misc. Arduino functions)
+84
View File
@@ -0,0 +1,84 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2023 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_HC32
#include "../../inc/MarlinConfig.h"
#if HAS_SERVOS
#include "Servo.h"
static uint8_t servoCount = 0;
static MarlinServo *servos[NUM_SERVOS] = {0};
constexpr uint32_t servoDelays[] = SERVO_DELAY;
static_assert(COUNT(servoDelays) == NUM_SERVOS, "SERVO_DELAY must be an array NUM_SERVOS long.");
//
// MarlinServo impl
//
MarlinServo::MarlinServo() {
this->channel = servoCount++;
servos[this->channel] = this;
}
int8_t MarlinServo::attach(const pin_t apin) {
// Use last pin if pin not given
if (apin >= 0) this->pin = apin;
// If attached, do nothing but no fail
if (this->servo.attached()) return 0;
// Attach
const uint8_t rc = this->servo.attach(this->pin);
return rc == INVALID_SERVO ? -1 : rc;
}
void MarlinServo::detach() {
this->servo.detach();
}
bool MarlinServo::attached() {
return this->servo.attached();
}
void MarlinServo::write(servo_angle_t angle) {
this->angle = angle;
this->servo.write(angle);
}
void MarlinServo::move(servo_angle_t angle) {
// Attach with pin=-1 to use last pin attach() was called with
if (attach(-1) < 0) return; // Attach failed
write(angle);
safe_delay(servoDelays[this->channel]);
TERN_(DEACTIVATE_SERVOS_AFTER_MOVE, detach());
}
servo_angle_t MarlinServo::read() {
return TERN(OPTIMISTIC_SERVO_READ, this->angle, this->servo.read());
}
#endif // HAS_SERVOS
#endif // ARDUINO_ARCH_HC32
+97
View File
@@ -0,0 +1,97 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
*/
#include "../../inc/MarlinConfigPre.h"
#include <Servo.h>
/**
* return last written value in servo.read instead of calculated value
*/
#define OPTIMISTIC_SERVO_READ
/**
* @brief servo lib wrapper for marlin
*/
class MarlinServo {
public:
MarlinServo();
/**
* @brief attach the pin to the servo, set pin mode, return channel number
* @param pin pin to attach to
* @return channel number, -1 if failed
*/
int8_t attach(const pin_t apin);
/**
* @brief detach servo
*/
void detach();
/**
* @brief is servo attached?
*/
bool attached();
/**
* @brief set servo angle
* @param angle new angle
*/
void write(servo_angle_t angle);
/**
* @brief attach servo, move to angle, delay then detach
* @param angle angle to move to
*/
void move(servo_angle_t angle);
/**
* @brief read current angle
* @return current angle betwwne 0 and 180 degrees
*/
servo_angle_t read();
private:
/**
* @brief internal servo object, provided by arduino core
*/
Servo servo;
/**
* @brief virtual servo channel
*/
uint8_t channel;
/**
* @brief pin the servo attached to last
*/
pin_t pin;
/**
* @brief last known servo angle
*/
servo_angle_t angle;
};
// Alias for marlin HAL
typedef MarlinServo hal_servo_t;
+92
View File
@@ -0,0 +1,92 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2023 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/>.
*
*/
/**
* PersistentStore for Arduino-style EEPROM interface
* with simple implementations supplied by Marlin.
*/
#ifdef ARDUINO_ARCH_HC32
#include "../../inc/MarlinConfig.h"
#if ENABLED(IIC_BL24CXX_EEPROM)
#include "../shared/eeprom_api.h"
#include "../shared/eeprom_if.h"
#ifndef MARLIN_EEPROM_SIZE
#error "MARLIN_EEPROM_SIZE is required for IIC_BL24CXX_EEPROM."
#endif
size_t PersistentStore::capacity() { return MARLIN_EEPROM_SIZE; }
bool PersistentStore::access_start() {
eeprom_init();
return true;
}
bool PersistentStore::access_finish() { return true; }
bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, uint16_t *crc) {
while (size--) {
uint8_t v = *value;
uint8_t *const p = (uint8_t *const)pos;
// EEPROM has only ~100,000 write cycles,
// so only write bytes that have changed!
if (v != eeprom_read_byte(p)) {
eeprom_write_byte(p, v);
delay(2);
if (eeprom_read_byte(p) != v) {
SERIAL_ECHO_MSG(STR_ERR_EEPROM_WRITE);
return true;
}
}
crc16(crc, &v, 1);
pos++;
value++;
}
return false;
}
bool PersistentStore::read_data(int &pos, uint8_t *value, size_t size,
uint16_t *crc, const bool writing /*=true*/) {
do {
uint8_t *const p = (uint8_t *const)pos;
uint8_t c = eeprom_read_byte(p);
if (writing)
{
*value = c;
}
crc16(crc, &c, 1);
pos++;
value++;
} while (--size);
return false;
}
#endif // IIC_BL24CXX_EEPROM
#endif // ARDUINO_ARCH_HC32
+51
View File
@@ -0,0 +1,51 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
*/
/**
* Platform-independent Arduino functions for I2C EEPROM.
* Enable USE_SHARED_EEPROM if not supplied by the framework.
*/
#ifdef ARDUINO_ARCH_HC32
#include "../../inc/MarlinConfig.h"
#if ENABLED(IIC_BL24CXX_EEPROM)
#include "../../libs/BL24CXX.h"
#include "../shared/eeprom_if.h"
void eeprom_init() {
BL24CXX::init();
}
void eeprom_write_byte(uint8_t *pos, unsigned char value) {
const unsigned eeprom_address = (unsigned)pos;
return BL24CXX::writeOneByte(eeprom_address, value);
}
uint8_t eeprom_read_byte(uint8_t *pos) {
const unsigned eeprom_address = (unsigned)pos;
return BL24CXX::readOneByte(eeprom_address);
}
#endif // IIC_BL24CXX_EEPROM
#endif // ARDUINO_ARCH_HC32
+98
View File
@@ -0,0 +1,98 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2023 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/>.
*
*/
/**
* Implementation of EEPROM settings in SD Card
*/
#ifdef ARDUINO_ARCH_HC32
#include "../../inc/MarlinConfig.h"
#if ENABLED(SDCARD_EEPROM_EMULATION)
#include "../shared/eeprom_api.h"
#include "../../sd/cardreader.h"
#define EEPROM_FILENAME "eeprom.dat"
#ifndef MARLIN_EEPROM_SIZE
#define MARLIN_EEPROM_SIZE 0x1000 // 4KB
#endif
size_t PersistentStore::capacity() {
return MARLIN_EEPROM_SIZE;
}
#define _ALIGN(x) __attribute__((aligned(x)))
static char _ALIGN(4) HAL_eeprom_data[MARLIN_EEPROM_SIZE];
bool PersistentStore::access_start() {
if (!card.isMounted()) return false;
MediaFile file, root = card.getroot();
if (!file.open(&root, EEPROM_FILENAME, O_RDONLY))
return true; // False aborts the save
int bytes_read = file.read(HAL_eeprom_data, MARLIN_EEPROM_SIZE);
if (bytes_read < 0) return false;
for (; bytes_read < MARLIN_EEPROM_SIZE; bytes_read++)
HAL_eeprom_data[bytes_read] = 0xFF;
file.close();
return true;
}
bool PersistentStore::access_finish() {
if (!card.isMounted()) return false;
MediaFile file, root = card.getroot();
int bytes_written = 0;
if (file.open(&root, EEPROM_FILENAME, O_CREAT | O_WRITE | O_TRUNC)) {
bytes_written = file.write(HAL_eeprom_data, MARLIN_EEPROM_SIZE);
file.close();
}
return (bytes_written == MARLIN_EEPROM_SIZE);
}
bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, uint16_t *crc) {
for (size_t i = 0; i < size; i++) HAL_eeprom_data[pos + i] = value[i];
crc16(crc, value, size);
pos += size;
return false;
}
bool PersistentStore::read_data(int &pos, uint8_t *value, const size_t size, uint16_t *crc, const bool writing /*=true*/) {
for (size_t i = 0; i < size; i++) {
uint8_t c = HAL_eeprom_data[pos + i];
if (writing) value[i] = c;
crc16(crc, &c, 1);
}
pos += size;
return false;
}
#endif // SDCARD_EEPROM_EMULATION
#endif // ARDUINO_ARCH_HC32
+94
View File
@@ -0,0 +1,94 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* 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_HC32
#include "../../inc/MarlinConfig.h"
#if USE_WIRED_EEPROM
#warning "SPI / I2C EEPROM has not been tested on HC32F460."
/**
* PersistentStore for Arduino-style EEPROM interface
* with simple implementations supplied by Marlin.
*/
#include "../shared/eeprom_if.h"
#include "../shared/eeprom_api.h"
#ifndef MARLIN_EEPROM_SIZE
#error "MARLIN_EEPROM_SIZE is required for I2C / SPI EEPROM."
#endif
size_t PersistentStore::capacity() { return MARLIN_EEPROM_SIZE; }
bool PersistentStore::access_finish() { return true; }
bool PersistentStore::access_start() {
eeprom_init();
#if ENABLED(SPI_EEPROM)
#if SPI_CHAN_EEPROM1 == 1
SET_OUTPUT(BOARD_SPI1_SCK_PIN);
SET_OUTPUT(BOARD_SPI1_MOSI_PIN);
SET_INPUT(BOARD_SPI1_MISO_PIN);
SET_OUTPUT(SPI_EEPROM1_CS);
#endif
spiInit(0);
#endif
return true;
}
bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, uint16_t *crc) {
while (size--) {
uint8_t *const p = (uint8_t *const)pos;
uint8_t v = *value;
// EEPROM has only ~100,000 write cycles,
// so only write bytes that have changed!
if (v != eeprom_read_byte(p)) {
eeprom_write_byte(p, v);
if (eeprom_read_byte(p) != v) {
SERIAL_ECHO_MSG(STR_ERR_EEPROM_WRITE);
return true;
}
}
crc16(crc, &v, 1);
pos++;
value++;
}
return false;
}
bool PersistentStore::read_data(int &pos, uint8_t *value, size_t size, uint16_t *crc, const bool writing /*=true*/) {
do {
uint8_t c = eeprom_read_byte((uint8_t *)pos);
if (writing && value) {
*value = c;
}
crc16(crc, &c, 1);
pos++;
value++;
} while (--size);
return false;
}
#endif // USE_WIRED_EEPROM
#endif // ARDUINO_ARCH_HC32
@@ -0,0 +1,98 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2023 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_HC32
#include "endstop_interrupts.h"
#include "../../module/endstops.h"
#include <Arduino.h>
#define ENDSTOP_IRQ_PRIORITY DDL_IRQ_PRIORITY_06
//
// IRQ handler
//
void endstopIRQHandler() {
bool flag = false;
// Check all irq flags
#define CHECK(name) TERN_(USE_##name, flag |= checkIRQFlag(name##_PIN, /*clear*/ true))
CHECK(X_MAX);
CHECK(X_MIN);
CHECK(Y_MAX);
CHECK(Y_MIN);
CHECK(Z_MAX);
CHECK(Z_MIN);
CHECK(Z2_MAX);
CHECK(Z2_MIN);
CHECK(Z3_MAX);
CHECK(Z3_MIN);
CHECK(Z_MIN_PROBE);
// Update endstops
if (flag) endstops.update();
#undef CHECK
}
//
// HAL functions
//
void setup_endstop_interrupts() {
#define SETUP(name) TERN_(USE_##name, attachInterrupt(name##_PIN, endstopIRQHandler, CHANGE); setInterruptPriority(name##_PIN, ENDSTOP_IRQ_PRIORITY))
SETUP(X_MAX);
SETUP(X_MIN);
SETUP(Y_MAX);
SETUP(Y_MIN);
SETUP(Z_MAX);
SETUP(Z_MIN);
SETUP(Z2_MAX);
SETUP(Z2_MIN);
SETUP(Z3_MAX);
SETUP(Z3_MIN);
SETUP(Z_MIN_PROBE);
#undef SETUP
}
// Ensure 1 - 10 IRQs are registered
// Disable some endstops if you encounter this error
#define ENDSTOPS_INTERRUPTS_COUNT COUNT_ENABLED(USE_X_MAX, USE_X_MIN, USE_Y_MAX, USE_Y_MIN, USE_Z_MAX, USE_Z_MIN, USE_Z2_MAX, USE_Z2_MIN, USE_Z3_MAX, USE_Z3_MIN, USE_Z_MIN_PROBE)
#if ENDSTOPS_INTERRUPTS_COUNT > 10
#error "Too many endstop interrupts! HC32F460 only supports 10 endstop interrupts."
#elif ENDSTOPS_INTERRUPTS_COUNT == 0
#error "No endstop interrupts are enabled! Comment out this line to continue."
#endif
#endif // ARDUINO_ARCH_HC32
+48
View File
@@ -0,0 +1,48 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
*/
#pragma once
/**
* Endstop interrupts for HC32F460 based targets.
*
* On HC32F460, all pins support external interrupt capability, with some restrictions.
* See the documentation of WInterrupts#attachInterrupt() for details.
*
* TL;DR
* any 16 pins can be used, but only one pin per EXTI line (so PA0 and PB0 are no-good).
*/
/**
* Endstop Interrupts
*
* Without endstop interrupts the endstop pins must be polled continually in
* the temperature-ISR via endstops.update(), most of the time finding no change.
* With this feature endstops.update() is called only when we know that at
* least one endstop has changed state, saving valuable CPU cycles.
*
* This feature only works when all used endstop pins can generate an 'external interrupt'.
*
* Test whether pins issue interrupts on your board by flashing 'pin_interrupt_test.ino'.
* (Located in Marlin/buildroot/share/pin_interrupt_test/pin_interrupt_test.ino)
*/
void setup_endstop_interrupts();
+69
View File
@@ -0,0 +1,69 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
*/
#pragma once
/**
* Fast I/O interfaces for HC32F460
* These use GPIO functions instead of Direct Port Manipulation.
*/
#include <wiring_digital.h>
#include <wiring_analog.h>
#include <drivers/gpio/gpio.h>
#define READ(IO) (GPIO_GetBit(IO) ? HIGH : LOW)
#define WRITE(IO, V) (((V) > 0) ? GPIO_SetBits(IO) : GPIO_ResetBits(IO))
#define TOGGLE(IO) (GPIO_Toggle(IO))
#define _GET_MODE(IO) getPinMode(IO)
#define _SET_MODE(IO, M) pinMode(IO, M)
#define _SET_OUTPUT(IO) _SET_MODE(IO, OUTPUT)
#define OUT_WRITE(IO, V) \
do { \
_SET_OUTPUT(IO); \
WRITE(IO, V); \
} while (0)
#define SET_INPUT(IO) _SET_MODE(IO, INPUT_FLOATING)
#define SET_INPUT_PULLUP(IO) _SET_MODE(IO, INPUT_PULLUP)
#define SET_INPUT_PULLDOWN(IO) _SET_MODE(IO, INPUT_PULLDOWN)
#define SET_OUTPUT(IO) OUT_WRITE(IO, LOW)
#define SET_PWM(IO) _SET_MODE(IO, OUTPUT_PWM)
#define IS_INPUT(IO) ( \
_GET_MODE(IO) == INPUT || \
_GET_MODE(IO) == INPUT_FLOATING || \
_GET_MODE(IO) == INPUT_ANALOG || \
_GET_MODE(IO) == INPUT_PULLUP || \
_GET_MODE(IO) == INPUT_PULLDOWN)
#define IS_OUTPUT(IO) ( \
_GET_MODE(IO) == OUTPUT || \
_GET_MODE(IO) == OUTPUT_PWM || \
_GET_MODE(IO) == OUTPUT_OPEN_DRAIN)
#define PWM_PIN(IO) isAnalogWritePin(IO)
#define extDigitalRead(IO) digitalRead(IO)
#define extDigitalWrite(IO, V) digitalWrite(IO, V)
#define NO_COMPILE_TIME_PWM // Can't check for PWM at compile time
@@ -0,0 +1,26 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
*/
#pragma once
#if ALL(HAS_MARLINUI_U8GLIB, FORCE_SOFT_SPI)
#define U8G_SW_SPI_HC32 1
#endif
@@ -0,0 +1,26 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
*/
#pragma once
#ifndef TEMP_SOC_PIN
#define TEMP_SOC_PIN 0xFF // Dummy that is not a valid GPIO, HAL checks for this
#endif
@@ -0,0 +1,34 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
*/
#pragma once
// If no real EEPROM, Flash emulation, or SRAM emulation is available fall back to SD emulation
#if USE_FALLBACK_EEPROM
#define SDCARD_EEPROM_EMULATION
#elif ANY(I2C_EEPROM, SPI_EEPROM)
#define USE_SHARED_EEPROM 1
#endif
// Allow SD support to be disabled
#if !HAS_MEDIA
#undef ONBOARD_SDIO
#endif
+78
View File
@@ -0,0 +1,78 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
*/
#pragma once
#ifndef BOARD_XTAL_FREQUENCY
#error "BOARD_XTAL_FREQUENCY is required for HC32F460."
#endif
#if ENABLED(FAST_PWM_FAN)
#error "FAST_PWM_FAN is not yet implemented for this platform."
#endif
#if !defined(HAVE_SW_SERIAL) && HAS_TMC_SW_SERIAL
#error "Missing SoftwareSerial implementation."
#endif
#if ENABLED(SDCARD_EEPROM_EMULATION) && !HAS_MEDIA
#undef SDCARD_EEPROM_EMULATION // Avoid additional error noise
#if USE_FALLBACK_EEPROM
#warning "EEPROM type not specified. Fallback is SDCARD_EEPROM_EMULATION."
#endif
#error "SDCARD_EEPROM_EMULATION requires SDSUPPORT. Enable SDSUPPORT or choose another EEPROM emulation."
#endif
#if ENABLED(SERIAL_STATS_MAX_RX_QUEUED)
#error "SERIAL_STATS_MAX_RX_QUEUED is not supported on this platform."
#elif ENABLED(SERIAL_STATS_DROPPED_RX)
#error "SERIAL_STATS_DROPPED_RX is not supported on this platform."
#endif
#if ENABLED(NEOPIXEL_LED) && DISABLED(MKS_MINI_12864_V3)
#error "NEOPIXEL_LED (Adafruit NeoPixel) is not supported for HC32F460. Comment out this line to proceed at your own risk!"
#endif
// Emergency Parser needs at least one serial with HardwareSerial.
#if ENABLED(EMERGENCY_PARSER) && ((SERIAL_PORT == -1 && !defined(SERIAL_PORT_2)) || (SERIAL_PORT_2 == -1 && !defined(SERIAL_PORT)))
#error "EMERGENCY_PARSER is only supported by HardwareSerial on HC32F460."
#endif
#if TEMP_SENSOR_SOC
#if !defined(TEMP_SOC_PIN)
#error "TEMP_SOC_PIN must be defined to use TEMP_SENSOR_SOC."
#endif
#if defined(TEMP_SOC_PIN) && IS_GPIO_PIN(TEMP_SOC_PIN)
#error "TEMP_SOC_PIN must not be a valid GPIO pin to avoid conflicts."
#endif
#endif
#if ENABLED(POSTMORTEM_DEBUGGING) && !defined(CORE_DISABLE_FAULT_HANDLER)
#error "POSTMORTEM_DEBUGGING requires CORE_DISABLE_FAULT_HANDLER to be set."
#endif
#if defined(PANIC_ENABLE)
#if defined(PANIC_USART1_TX_PIN) || defined(PANIC_USART2_TX_PIN) || defined(PANIC_USART3_TX_PIN) || defined(PANIC_USART3_TX_PIN)
#error "HC32 HAL uses a custom panic handler. Do not define PANIC_USARTx_TX_PIN."
#endif
#endif
+174
View File
@@ -0,0 +1,174 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
*/
#pragma once
#include "../../inc/MarlinConfig.h"
#include "fastio.h"
#include <drivers/timera/timera_pwm.h>
//
// Translation of routines & variables used by pinsDebug.h
//
#ifndef BOARD_NR_GPIO_PINS
#error "Expected BOARD_NR_GPIO_PINS not found."
#endif
#define NUM_DIGITAL_PINS BOARD_NR_GPIO_PINS
#define NUMBER_PINS_TOTAL BOARD_NR_GPIO_PINS
#define VALID_PIN(pin) IS_GPIO_PIN(pin)
// Note: pin_array is defined in `Marlin/src/pins/pinsDebug.h`, and since this file is included
// after it, it is available in this file as well.
#define GET_ARRAY_PIN(p) pin_t(pin_array[p].pin)
#define digitalRead_mod(p) extDigitalRead(p)
#define PRINT_PIN(p) \
do { \
sprintf_P(buffer, PSTR("%3hd "), int16_t(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 PRINT_PORT(p) 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 MULTI_NAME_PAD 21 // Space needed to be pretty if not first name assigned to a pin
//
// Pins that will cause a hang / reset / disconnect in M43 Toggle and Watch utils
//
#ifndef M43_NEVER_TOUCH
// Don't touch any of the following pins:
// - Host serial pins, and
// - Pins that could be connected to oscillators (see datasheet, Table 2.1):
// - XTAL = PH0, PH1
// - XTAL32 = PC14, PC15
#define IS_HOST_USART_PIN(Q) (Q == BOARD_USART2_TX_PIN || Q == BOARD_USART2_RX_PIN)
#define IS_OSC_PIN(Q) (Q == PH0 || Q == PH1 || Q == PC14 || Q == PC15)
#define M43_NEVER_TOUCH(Q) (IS_HOST_USART_PIN(Q) || IS_OSC_PIN(Q))
#endif
static pin_t DIGITAL_PIN_TO_ANALOG_PIN(pin_t pin) {
if (!VALID_PIN(pin)) return -1;
const int8_t adc_channel = int8_t(PIN_MAP[pin].adc_info.channel);
return pin_t(adc_channel);
}
static bool IS_ANALOG(pin_t pin) {
if (!VALID_PIN(pin)) return false;
if (PIN_MAP[pin].adc_info.channel != ADC_PIN_INVALID)
return _GET_MODE(pin) == INPUT_ANALOG && !M43_NEVER_TOUCH(pin);
return false;
}
static bool GET_PINMODE(const pin_t pin) {
return VALID_PIN(pin) && !IS_INPUT(pin);
}
static bool GET_ARRAY_IS_DIGITAL(const int16_t array_pin) {
const pin_t pin = GET_ARRAY_PIN(array_pin);
return (!IS_ANALOG(pin));
}
/**
* @brief print pin PWM status
* @return true if pin is currently a PWM pin, false otherwise
*/
bool pwm_status(const pin_t pin) {
// Get timer assignment for pin
timera_config_t *unit;
en_timera_channel_t channel;
en_port_func_t port_function;
if (!timera_get_assignment(pin, unit, channel, port_function) || unit == nullptr) {
// No pwm pin or no unit assigned
return false;
}
// A pin that is PWM output is:
// - Assigned to a timerA unit (tested above)
// - Unit is initialized
// - Channel is active
// - PinMode is OUTPUT_PWM
return timera_is_unit_initialized(unit) && timera_is_channel_active(unit, channel) && getPinMode(pin) == OUTPUT_PWM;
}
void pwm_details(const pin_t pin) {
// Get timer assignment for pin
timera_config_t *unit;
en_timera_channel_t channel;
en_port_func_t port_function;
if (!timera_get_assignment(pin, unit, channel, port_function) || unit == nullptr)
return; // No pwm pin or no unit assigned
// Print timer assignment of pin, eg. "TimerA1Ch2 Func4"
SERIAL_ECHOPGM("TimerA", TIMERA_REG_TO_X(unit->peripheral.register_base),
"Ch", TIMERA_CHANNEL_TO_X(channel),
" Func", int(port_function));
SERIAL_ECHO_SP(3); // 3 spaces
// Print timer unit state, eg. "1/16 PERAR=1234" OR "N/A"
if (timera_is_unit_initialized(unit)) {
// Unit initialized, print
// - Timer clock divider
// - Timer period value (PERAR)
const uint8_t clock_divider = timera_clk_div_to_n(unit->state.base_init->enClkDiv);
const uint16_t period = TIMERA_GetPeriodValue(unit->peripheral.register_base);
SERIAL_ECHOPGM("1/", clock_divider, " PERAR=", period);
}
else {
// Unit not initialized
SERIAL_ECHOPGM("N/A");
return;
}
SERIAL_ECHO_SP(3); // 3 spaces
// Print timer channel state, e.g. "CMPAR=1234" OR "N/A"
if (timera_is_channel_active(unit, channel)) {
// Channel active, print
// - Channel compare value
const uint16_t compare = TIMERA_GetCompareValue(unit->peripheral.register_base, channel);
SERIAL_ECHOPGM("CMPAR=", compare);
}
else {
// Channel inactive
SERIAL_ECHOPGM("N/A");
}
}
void print_port(pin_t pin) {
const char port = 'A' + char(pin >> 4); // Pin div 16
const int16_t gbit = PIN_MAP[pin].bit_pos;
char buffer[8];
sprintf_P(buffer, PSTR("P%c%hd "), port, gbit);
if (gbit < 10) {
SERIAL_CHAR(' ');
}
SERIAL_ECHO(buffer);
}
+55
View File
@@ -0,0 +1,55 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2023 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_HC32
#ifdef REDIRECT_PRINTF_TO_SERIAL
#if !defined(__GNUC__)
#error "only GCC is supported"
#endif
#include "../../inc/MarlinConfig.h"
/**
* @brief implementation of _write that redirects everything to the host serial(s)
* @param file file descriptor. don't care
* @param ptr pointer to the data to write
* @param len length of the data to write
* @return number of bytes written
*/
extern "C" int _write(int file, char *ptr, int len) {
//SERIAL_ECHO_START(); // echo:
for (int i = 0; i < len; i++) SERIAL_CHAR(ptr[i]);
return len;
}
/**
* @brief implementation of _isatty that always returns 1
* @param file file descriptor. don't care
* @return everything is a tty. there are no files to be had
*/
extern "C" int _isatty(int file) {
return 1;
}
#endif // REDIRECT_PRINTF_TO_SERIAL
#endif // ARDUINO_ARCH_HC32
+137
View File
@@ -0,0 +1,137 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2023 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_HC32
#include "sdio.h"
#include <gpio/gpio.h>
#include <sd_card.h>
//
// SDIO configuration
//
#define SDIO_PERIPHERAL M4_SDIOC1
// Use DMA2 channel 0
#define SDIO_DMA_PERIPHERAL M4_DMA2
#define SDIO_DMA_CHANNEL DmaCh0
// SDIO read/write operation retries and timeouts
#define SDIO_READ_RETRIES 3
#define SDIO_READ_TIMEOUT 100 // ms
#define SDIO_WRITE_RETRIES 1
#define SDIO_WRITE_TIMEOUT 100 // ms
//
// HAL functions
//
#define WITH_RETRY(retries, fn) \
for (int retry = 0; retry < (retries); retry++) { \
MarlinHAL::watchdog_refresh(); \
yield(); \
fn \
}
stc_sd_handle_t *handle;
bool SDIO_Init() {
// Configure SDIO pins
GPIO_SetFunc(BOARD_SDIO_D0, Func_Sdio);
GPIO_SetFunc(BOARD_SDIO_D1, Func_Sdio);
GPIO_SetFunc(BOARD_SDIO_D2, Func_Sdio);
GPIO_SetFunc(BOARD_SDIO_D3, Func_Sdio);
GPIO_SetFunc(BOARD_SDIO_CLK, Func_Sdio);
GPIO_SetFunc(BOARD_SDIO_CMD, Func_Sdio);
GPIO_SetFunc(BOARD_SDIO_DET, Func_Sdio);
// Create DMA configuration
stc_sdcard_dma_init_t *dmaConf = new stc_sdcard_dma_init_t;
dmaConf->DMAx = SDIO_DMA_PERIPHERAL;
dmaConf->enDmaCh = SDIO_DMA_CHANNEL;
// Create handle in DMA mode
handle = new stc_sd_handle_t;
handle->SDIOCx = SDIO_PERIPHERAL;
handle->enDevMode = SdCardDmaMode;
handle->pstcDmaInitCfg = dmaConf;
// Create card configuration
// This should be a fairly safe configuration for most cards
stc_sdcard_init_t cardConf = {
.enBusWidth = SdiocBusWidth4Bit,
.enClkFreq = SdiocClk400K,
.enSpeedMode = SdiocNormalSpeedMode,
//.pstcInitCfg = NULL,
};
// Initialize sd card
en_result_t rc = SDCARD_Init(handle, &cardConf);
if (rc != Ok) printf("SDIO_Init() error (rc=%u)\n", rc);
return rc == Ok;
}
bool SDIO_ReadBlock(uint32_t block, uint8_t *dst) {
CORE_ASSERT(handle != NULL, "SDIO not initialized");
CORE_ASSERT(dst != NULL, "SDIO_ReadBlock dst is NULL");
WITH_RETRY(SDIO_READ_RETRIES, {
en_result_t rc = SDCARD_ReadBlocks(handle, block, 1, dst, SDIO_READ_TIMEOUT);
if (rc == Ok) return true;
printf("SDIO_ReadBlock error (rc=%u; ErrorCode=%lu)\n", rc, handle->u32ErrorCode);
})
return false;
}
bool SDIO_WriteBlock(uint32_t block, const uint8_t *src) {
CORE_ASSERT(handle != NULL, "SDIO not initialized");
CORE_ASSERT(src != NULL, "SDIO_WriteBlock src is NULL");
WITH_RETRY(SDIO_WRITE_RETRIES, {
en_result_t rc = SDCARD_WriteBlocks(handle, block, 1, (uint8_t *)src, SDIO_WRITE_TIMEOUT);
if (rc == Ok) return true;
printf("SDIO_WriteBlock error (rc=%u; ErrorCode=%lu)\n", rc, handle->u32ErrorCode);
})
return false;
}
bool SDIO_IsReady() {
CORE_ASSERT(handle != NULL, "SDIO not initialized");
return bool(handle->stcCardStatus.READY_FOR_DATA);
}
uint32_t SDIO_GetCardSize() {
CORE_ASSERT(handle != NULL, "SDIO not initialized");
// Multiply number of blocks with block size to get size in bytes
const uint64_t cardSizeBytes = uint64_t(handle->stcSdCardInfo.u32LogBlockNbr) * uint64_t(handle->stcSdCardInfo.u32LogBlockSize);
// If the card is bigger than ~4Gb (maximum a 32bit integer can hold), clamp to the maximum value of a 32 bit integer
return _MAX(cardSizeBytes, UINT32_MAX);
}
#endif // ARDUINO_ARCH_HC32
+28
View File
@@ -0,0 +1,28 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2016 Bob Cousins bobcousins42@googlemail.com
* Copyright (c) 2017 Victor Perez
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
*/
#pragma once
#include "../../inc/MarlinConfig.h"
bool SDIO_Init();
bool SDIO_ReadBlock(uint32_t block, uint8_t *dst);
bool SDIO_WriteBlock(uint32_t block, const uint8_t *src);
bool SDIO_IsReady();
uint32_t SDIO_GetCardSize();
+19
View File
@@ -0,0 +1,19 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
*/
#pragma once
+124
View File
@@ -0,0 +1,124 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2023 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/>.
*
*/
/**
* HC32f460 system clock configuration
*/
#ifdef ARDUINO_ARCH_HC32
// Get BOARD_XTAL_FREQUENCY from configuration / pins
#include "../../inc/MarlinConfig.h"
#include <core_hooks.h>
#include <drivers/sysclock/sysclock_util.h>
void core_hook_sysclock_init() {
// Set wait cycles, as we are about to switch to 200 MHz HCLK
sysclock_configure_flash_wait_cycles();
sysclock_configure_sram_wait_cycles();
// Configure MPLLp to 200 MHz output, with different settings depending on XTAL availability
#if BOARD_XTAL_FREQUENCY == 8000000 // 8 MHz XTAL
// - M = 1 => 8 MHz / 1 = 8 MHz
// - N = 50 => 8 MHz * 50 = 400 MHz
// - P = 2 => 400 MHz / 2 = 200 MHz (sysclk)
// - Q,R = 4 => 400 MHz / 4 = 100 MHz (dont care)
stc_clk_mpll_cfg_t pllConf = {
.PllpDiv = 2u, // P
.PllqDiv = 4u, // Q
.PllrDiv = 4u, // R
.plln = 50u, // N
.pllmDiv = 1u, // M
};
sysclock_configure_xtal();
sysclock_configure_mpll(ClkPllSrcXTAL, &pllConf);
#elif BOARD_XTAL_FREQUENCY == 16000000 // 16 MHz XTAL
// - M = 1 => 16 MHz / 1 = 16 MHz
// - N = 50 => 16 MHz * 25 = 400 MHz
// - P = 2 => 400 MHz / 2 = 200 MHz (sysclk)
// - Q,R = 4 => 400 MHz / 4 = 100 MHz (dont care)
stc_clk_mpll_cfg_t pllConf = {
.PllpDiv = 2u, // P
.PllqDiv = 4u, // Q
.PllrDiv = 4u, // R
.plln = 50u, // N
.pllmDiv = 1u, // M
};
sysclock_configure_xtal();
sysclock_configure_mpll(ClkPllSrcXTAL, &pllConf);
#warning "HC32F460 with 16 MHz XTAL has not been tested."
#else // HRC (16 MHz)
// - M = 1 => 16 MHz / 1 = 16 MHz
// - N = 25 => 16 MHz * 25 = 400 MHz
// - P = 2 => 400 MHz / 2 = 200 MHz (sysclk)
// - Q,R = 4 => 400 MHz / 4 = 100 MHz (dont care)
stc_clk_mpll_cfg_t pllConf = {
.PllpDiv = 2u, // P
.PllqDiv = 4u, // Q
.PllrDiv = 4u, // R
.plln = 25u, // N
.pllmDiv = 1u, // M
};
sysclock_configure_hrc();
sysclock_configure_mpll(ClkPllSrcHRC, &pllConf);
// HRC could have been configured by ICG to 20 MHz
// TODO: handle gracefully if HRC is not 16 MHz
if (1UL != (HRC_FREQ_MON() & 1UL)) {
panic("HRC is not 16 MHz");
}
#ifdef BOARD_XTAL_FREQUENCY
#warning "No valid XTAL frequency defined, falling back to HRC."
#endif
#endif
// Setup clock divisors for sysclk = 200 MHz:
// Note: PCLK1 is used for step+temp timers, and need to be kept at 50 MHz (until there is a better solution)
stc_clk_sysclk_cfg_t sysClkConf = {
.enHclkDiv = ClkSysclkDiv1, // HCLK = 200 MHz (CPU)
.enExclkDiv = ClkSysclkDiv2, // EXCLK = 100 MHz (SDIO)
.enPclk0Div = ClkSysclkDiv1, // PCLK0 = 200 MHz (Timer6 (not used))
.enPclk1Div = ClkSysclkDiv4, // PCLK1 = 50 MHz (USART, SPI, I2S, Timer0 (step+temp), TimerA (Servo))
.enPclk2Div = ClkSysclkDiv4, // PCLK2 = 50 MHz (ADC)
.enPclk3Div = ClkSysclkDiv4, // PCLK3 = 50 MHz (I2C, WDT)
.enPclk4Div = ClkSysclkDiv2, // PCLK4 = 100 MHz (ADC ctl)
};
sysclock_set_clock_dividers(&sysClkConf);
// Set power mode
#define POWER_MODE_SYSTEM_CLOCK 200000000 // 200 MHz
power_mode_update_pre(POWER_MODE_SYSTEM_CLOCK);
// Switch to MPLL as sysclk source
CLK_SetSysClkSource(CLKSysSrcMPLL);
// Set power mode
power_mode_update_post(POWER_MODE_SYSTEM_CLOCK);
#undef POWER_MODE_SYSTEM_CLOCK
}
#endif // ARDUINO_ARCH_HC32
+54
View File
@@ -0,0 +1,54 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2023 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_HC32
#include "timers.h"
#include <core_debug.h>
/**
* Timer0 Unit 2 Channel A is used for Temperature interrupts
*/
Timer0 temp_timer(&TIMER02A_config, &Temp_Handler);
/**
* Timer0 Unit 2 Channel B is used for Step interrupts
*/
Timer0 step_timer(&TIMER02B_config, &Step_Handler);
void HAL_timer_start(const timer_channel_t timer_num, const uint32_t frequency) {
if (timer_num == TEMP_TIMER_NUM) {
CORE_DEBUG_PRINTF("HAL_timer_start: temp timer, f=%ld\n", long(frequency));
timer_num->start(frequency, TEMP_TIMER_PRESCALE);
timer_num->setCallbackPriority(TEMP_TIMER_PRIORITY);
}
else if (timer_num == STEP_TIMER_NUM) {
CORE_DEBUG_PRINTF("HAL_timer_start: step timer, f=%ld\n", long(frequency));
timer_num->start(frequency, STEPPER_TIMER_PRESCALE);
timer_num->setCallbackPriority(STEP_TIMER_PRIORITY);
}
else {
CORE_ASSERT_FAIL("HAL_timer_start: invalid timer_num")
}
}
#endif // ARDUINO_ARCH_HC32
+135
View File
@@ -0,0 +1,135 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2016 Bob Cousins bobcousins42@googlemail.com
* Copyright (c) 2017 Victor Perez
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
#pragma once
#include <stdint.h>
#include <Timer0.h>
//
// Timer Types
//
typedef Timer0 *timer_channel_t;
typedef uint16_t hal_timer_t;
#define HAL_TIMER_TYPE_MAX 0xFFFF
//
// Timer instances
//
extern Timer0 temp_timer;
extern Timer0 step_timer;
//
// Timer Configurations
//
// TODO: some calculations (step irq min_step_rate) require the timer rate to be known at compile time
// this is not possible with the HC32F460, as the timer rate depends on PCLK1
// as a workaround, PCLK1 = 50MHz is assumed (check with clock dump in MarlinHAL::init())
#define HAL_TIMER_RATE 50000000 // 50MHz
// #define HAL_TIMER_RATE TIMER0_BASE_FREQUENCY
// TODO: CYCLES_PER_MICROSECOND seems to be used by Marlin to calculate the number of cycles per microsecond in the timer ISRs
// by default, it uses F_CPU, but since that is not known at compile time for HC32, we overwrite it here
#undef CYCLES_PER_MICROSECOND
#define CYCLES_PER_MICROSECOND (HAL_TIMER_RATE / 1000000UL)
// Temperature timer
#define TEMP_TIMER_NUM (&temp_timer)
#define TEMP_TIMER_PRIORITY DDL_IRQ_PRIORITY_02
#define TEMP_TIMER_PRESCALE 16ul
#define TEMP_TIMER_RATE 1000 // 1kHz
#define TEMP_TIMER_FREQUENCY TEMP_TIMER_RATE // Alias for Marlin
// Stepper timer
#define STEP_TIMER_NUM (&step_timer)
#define STEP_TIMER_PRIORITY DDL_IRQ_PRIORITY_01
#define STEPPER_TIMER_PRESCALE 16ul
// TODO: STEPPER_TIMER_RATE seems to work fine like this, but requires further testing...
#define STEPPER_TIMER_RATE (HAL_TIMER_RATE / STEPPER_TIMER_PRESCALE) // 50MHz / 16 = 3.125MHz
#define STEPPER_TIMER_TICKS_PER_US (STEPPER_TIMER_RATE / 1000000)
// Pulse timer (== stepper timer)
#define PULSE_TIMER_NUM STEP_TIMER_NUM
#define PULSE_TIMER_PRESCALE STEPPER_TIMER_PRESCALE
#define PULSE_TIMER_TICKS_PER_US STEPPER_TIMER_TICKS_PER_US
//
// Channel aliases
//
#define MF_TIMER_TEMP TEMP_TIMER_NUM
#define MF_TIMER_STEP STEP_TIMER_NUM
#define MF_TIMER_PULSE PULSE_TIMER_NUM
//
// HAL functions
//
void HAL_timer_start(const timer_channel_t timer_num, const uint32_t frequency);
// Inlined since they are somewhat critical
#define MARLIN_HAL_TIMER_INLINE_ATTR __attribute__((always_inline)) inline
MARLIN_HAL_TIMER_INLINE_ATTR void HAL_timer_enable_interrupt(const timer_channel_t timer_num) {
timer_num->resume();
}
MARLIN_HAL_TIMER_INLINE_ATTR void HAL_timer_disable_interrupt(const timer_channel_t timer_num) {
timer_num->pause();
}
MARLIN_HAL_TIMER_INLINE_ATTR bool HAL_timer_interrupt_enabled(const timer_channel_t timer_num) {
return timer_num->isPaused();
}
MARLIN_HAL_TIMER_INLINE_ATTR void HAL_timer_set_compare(const timer_channel_t timer_num, const hal_timer_t compare) {
timer_num->setCompareValue(compare);
}
MARLIN_HAL_TIMER_INLINE_ATTR hal_timer_t HAL_timer_get_count(const timer_channel_t timer_num) {
return timer_num->getCount();
}
MARLIN_HAL_TIMER_INLINE_ATTR void HAL_timer_isr_prologue(const timer_channel_t timer_num) {
timer_num->clearInterruptFlag();
}
MARLIN_HAL_TIMER_INLINE_ATTR void HAL_timer_isr_epilogue(const timer_channel_t timer_num) {}
//
// HAL function aliases
//
#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_TEMPERATURE_INTERRUPT() HAL_timer_enable_interrupt(TEMP_TIMER_NUM)
#define DISABLE_TEMPERATURE_INTERRUPT() HAL_timer_disable_interrupt(TEMP_TIMER_NUM);
//
// HAL ISR callbacks
//
void Step_Handler();
void Temp_Handler();
#ifndef HAL_STEP_TIMER_ISR
#define HAL_STEP_TIMER_ISR() void Step_Handler()
#endif
#ifndef HAL_TEMP_TIMER_ISR
#define HAL_TEMP_TIMER_ISR() void Temp_Handler()
#endif
+29
View File
@@ -0,0 +1,29 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
*/
#pragma once
/**
* HC32 LCD-specific defines
*/
uint8_t u8g_com_HAL_HC32_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr);
#define U8G_COM_HAL_SW_SPI_FN u8g_com_HAL_HC32_sw_spi_fn
@@ -0,0 +1,163 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2023 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_HC32
#include "../../../inc/MarlinConfig.h"
#if U8G_SW_SPI_HC32
#warning "Software SPI for U8Glib is experimental on HC32F460. Please share your experiences at https://github.com/shadow578/Marlin-H32/issues/35"
#include <U8glib-HAL.h>
#include "../../shared/HAL_SPI.h"
#ifndef LCD_SPI_SPEED
#define LCD_SPI_SPEED SPI_FULL_SPEED // Fastest
//#define LCD_SPI_SPEED SPI_QUARTER_SPEED // Slower
#endif
static uint8_t SPI_speed = LCD_SPI_SPEED;
static inline uint8_t swSpiTransfer_mode_0(uint8_t b, const uint8_t spi_speed, const pin_t miso_pin=-1) {
for (i = 0; i < 8; ++i) {
if (spi_speed == 0) {
WRITE(DOGLCD_MOSI, !!(b & 0x80));
WRITE(DOGLCD_SCK, HIGH);
b <<= 1;
if (miso_pin >= 0 && READ(miso_pin)) b |= 1;
WRITE(DOGLCD_SCK, LOW);
}
else {
const uint8_t state = (b & 0x80) ? HIGH : LOW;
for (j = 0; j < spi_speed; ++j) WRITE(DOGLCD_MOSI, state);
for (j = 0; j < spi_speed + (miso_pin >= 0 ? 0 : 1; ++j)) WRITE(DOGLCD_SCK, HIGH);
b <<= 1;
if (miso_pin >= 0 && READ(miso_pin)) b |= 1;
for (j = 0; j < spi_speed; ++j) WRITE(DOGLCD_SCK, LOW);
}
}
return b;
}
static inline uint8_t swSpiTransfer_mode_3(uint8_t b, const uint8_t spi_speed, const pin_t miso_pin=-1) {
for (i = 0; i < 8; ++i) {
const uint8_t state = (b & 0x80) ? HIGH : LOW;
if (spi_speed == 0) {
WRITE(DOGLCD_SCK, LOW);
WRITE(DOGLCD_MOSI, state);
WRITE(DOGLCD_MOSI, state); // need some setup time
WRITE(DOGLCD_SCK, HIGH);
}
else {
for (j = 0; j < spi_speed + (miso_pin >= 0 ? 0 : 1); ++j) WRITE(DOGLCD_SCK, LOW);
for (j = 0; j < spi_speed; ++j) WRITE(DOGLCD_MOSI, state);
for (j = 0; j < spi_speed; ++j) WRITE(DOGLCD_SCK, HIGH);
}
b <<= 1;
if (miso_pin >= 0 && READ(miso_pin)) b |= 1;
}
return b;
}
static void u8g_sw_spi_shift_out(uint8_t val) {
#if ANY(FYSETC_MINI_12864, MKS_MINI_12864)
swSpiTransfer_mode_3(val, SPI_speed);
#else
swSpiTransfer_mode_0(val, SPI_speed);
#endif
}
static uint8_t swSpiInit(const uint8_t spi_speed) {
#if PIN_EXISTS(LCD_RESET)
SET_OUTPUT(LCD_RESET_PIN);
#endif
SET_OUTPUT(DOGLCD_A0);
OUT_WRITE(DOGLCD_SCK, LOW);
OUT_WRITE(DOGLCD_MOSI, LOW);
OUT_WRITE(DOGLCD_CS, HIGH);
return spi_speed;
}
uint8_t u8g_com_HAL_HC32_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) {
switch (msg) {
case U8G_COM_MSG_INIT:
SPI_speed = swSpiInit(LCD_SPI_SPEED);
break;
case U8G_COM_MSG_STOP:
break;
case U8G_COM_MSG_RESET:
#if PIN_EXISTS(LCD_RESET)
WRITE(LCD_RESET_PIN, arg_val);
#endif
break;
case U8G_COM_MSG_CHIP_SELECT:
#if ANY(FYSETC_MINI_12864, MKS_MINI_12864) // This LCD SPI is running mode 3 while SD card is running mode 0
if (arg_val) { // SCK idle state needs to be set to the proper idle state before
// the next chip select goes active
WRITE(DOGLCD_SCK, HIGH); // Set SCK to mode 3 idle state before CS goes active
WRITE(DOGLCD_CS, LOW);
}
else {
WRITE(DOGLCD_CS, HIGH);
WRITE(DOGLCD_SCK, LOW); // Set SCK to mode 0 idle state after CS goes inactive
}
#else
WRITE(DOGLCD_CS, !arg_val);
#endif
break;
case U8G_COM_MSG_WRITE_BYTE:
u8g_sw_spi_shift_out(arg_val);
break;
case U8G_COM_MSG_WRITE_SEQ: {
uint8_t *ptr = (uint8_t *)arg_ptr;
while (arg_val > 0) {
u8g_sw_spi_shift_out(*ptr++);
arg_val--;
}
} break;
case U8G_COM_MSG_WRITE_SEQ_P: {
uint8_t *ptr = (uint8_t *)arg_ptr;
while (arg_val > 0) {
u8g_sw_spi_shift_out(u8g_pgm_read(ptr));
ptr++;
arg_val--;
}
} break;
case U8G_COM_MSG_ADDRESS: /* define cmd (arg_val = 0) or data mode (arg_val = 1) */
WRITE(DOGLCD_A0, arg_val);
break;
}
return 1;
}
#endif // U8G_SW_SPI_HC32
#endif // ARDUINO_ARCH_HC32
+3 -3
View File
@@ -1,9 +1,9 @@
/**
* Marlin 3D Printer Firmware
*
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2016 Bob Cousins bobcousins42@googlemail.com
* Copyright (c) 2015-2016 Nico Tonnhofer wurstnase.reprap@gmail.com
*
* 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
+3
View File
@@ -28,6 +28,9 @@
#include <pinmapping.h>
#define strlcpy(A, B, C) strncpy(A, B, (C) - 1)
#define strlcpy_P(A, B, C) strncpy_P(A, B, (C) - 1)
#define HIGH 0x01
#define LOW 0x00
+3 -3
View File
@@ -1,9 +1,9 @@
/**
* Marlin 3D Printer Firmware
*
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2016 Bob Cousins bobcousins42@googlemail.com
* Copyright (c) 2015-2016 Nico Tonnhofer wurstnase.reprap@gmail.com
*
* 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
+3 -2
View File
@@ -1,8 +1,9 @@
/**
* Marlin 3D Printer Firmware
*
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2016 Bob Cousins bobcousins42@googlemail.com
*
* 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
+26
View File
@@ -0,0 +1,26 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
*/
#pragma once
/**
* Linux LCD-specific defines
*/
+4 -4
View File
@@ -1,9 +1,9 @@
/**
* Marlin 3D Printer Firmware
*
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2016 Bob Cousins bobcousins42@googlemail.com
* Copyright (c) 2015-2016 Nico Tonnhofer wurstnase.reprap@gmail.com
*
* 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
@@ -100,7 +100,7 @@ extern DefaultSerial1 USBSerial;
#else
#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 || ENABLED(DWINOS_4)
#if HAS_DGUS_LCD
#define LCD_SERIAL_TX_BUFFER_FREE() LCD_SERIAL.available()
#endif
#endif
-10
View File
@@ -30,16 +30,6 @@
#endif
#include "../../core/serial_hook.h"
#ifndef SERIAL_PORT
#define SERIAL_PORT 0
#endif
#ifndef RX_BUFFER_SIZE
#define RX_BUFFER_SIZE 128
#endif
#ifndef TX_BUFFER_SIZE
#define TX_BUFFER_SIZE 32
#endif
class MarlinSerial : public HardwareSerial<RX_BUFFER_SIZE, TX_BUFFER_SIZE> {
public:
MarlinSerial(LPC_UART_TypeDef *UARTx) : HardwareSerial<RX_BUFFER_SIZE, TX_BUFFER_SIZE>(UARTx) { }
-1
View File
@@ -39,7 +39,6 @@
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
#pragma once
/**
* Based on "servo.h - Interrupt driven Servo library for Arduino using 16 bit timers -
+1 -1
View File
@@ -91,7 +91,7 @@ bool PersistentStore::access_finish() {
static void debug_rw(const bool write, int &pos, const uint8_t *value, const size_t size, const FRESULT s, const size_t total=0) {
#if ENABLED(DEBUG_SD_EEPROM_EMULATION)
FSTR_P const rw_str = write ? F("write") : F("read");
SERIAL_ECHOLN(AS_CHAR(' '), rw_str, F("_data("), pos, AS_CHAR(','), *value, AS_CHAR(','), size, F(", ...)"));
SERIAL_ECHOLN(C(' '), rw_str, F("_data("), pos, C(','), *value, C(','), size, F(", ...)"));
if (total)
SERIAL_ECHOLN(F(" f_"), rw_str, F("()="), s, F("\n size="), size, F("\n bytes_"), write ? F("written=") : F("read="), total);
else
@@ -20,3 +20,7 @@
*
*/
#pragma once
#ifndef SERIAL_PORT
#define SERIAL_PORT 0
#endif
@@ -24,3 +24,10 @@
#if DISABLED(NO_SD_HOST_DRIVE)
#define HAS_SD_HOST_DRIVE 1
#endif
#ifndef RX_BUFFER_SIZE
#define RX_BUFFER_SIZE 128
#endif
#ifndef TX_BUFFER_SIZE
#define TX_BUFFER_SIZE 32
#endif
+8
View File
@@ -55,11 +55,19 @@ void TFT_SPI::dataTransferBegin(uint16_t dataSize) {
WRITE(TFT_CS_PIN, LOW);
}
#ifdef TFT_DEFAULT_DRIVER
#include "../../../lcd/tft_io/tft_ids.h"
#endif
uint32_t TFT_SPI::getID() {
uint32_t id;
id = readID(LCD_READ_ID);
if ((id & 0xFFFF) == 0 || (id & 0xFFFF) == 0xFFFF)
id = readID(LCD_READ_ID4);
#ifdef TFT_DEFAULT_DRIVER
if ((id & 0xFFFF) == 0 || (id & 0xFFFF) == 0xFFFF)
id = TFT_DEFAULT_DRIVER;
#endif
return id;
}
+2 -3
View File
@@ -74,9 +74,8 @@ bool XPT2046::isTouched() {
);
}
bool XPT2046::getRawPoint(int16_t *x, int16_t *y) {
if (isBusy()) return false;
if (!isTouched()) return false;
bool XPT2046::getRawPoint(int16_t * const x, int16_t * const y) {
if (isBusy() || !isTouched()) return false;
*x = getRawData(XPT2046_X);
*y = getRawData(XPT2046_Y);
return isTouched();
+1 -1
View File
@@ -79,5 +79,5 @@ public:
#endif
static void init();
static bool getRawPoint(int16_t *x, int16_t *y);
static bool getRawPoint(int16_t * const x, int16_t * const y);
};
+3 -3
View File
@@ -1,9 +1,9 @@
/**
* Marlin 3D Printer Firmware
*
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2016 Bob Cousins bobcousins42@googlemail.com
* Copyright (c) 2015-2016 Nico Tonnhofer wurstnase.reprap@gmail.com
*
* 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
+3 -2
View File
@@ -1,8 +1,9 @@
/**
* Marlin 3D Printer Firmware
*
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2016 Bob Cousins bobcousins42@googlemail.com
*
* 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
+15 -18
View File
@@ -25,25 +25,22 @@
* LPC1768 LCD-specific defines
*/
// The following are optional depending on the platform.
#ifndef U8G_HAL_LINKS
// definitions of HAL specific com and device drivers.
uint8_t u8g_com_HAL_LPC1768_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr);
uint8_t u8g_com_HAL_LPC1768_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr);
uint8_t u8g_com_HAL_LPC1768_ST7920_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr);
uint8_t u8g_com_HAL_LPC1768_ST7920_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr);
uint8_t u8g_com_HAL_LPC1768_ssd_hw_i2c_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr);
#define U8G_COM_SSD_I2C_HAL u8g_com_arduino_ssd_i2c_fn // See U8glib-HAL
#else
// connect U8g com generic com names to the desired driver
#define U8G_COM_HW_SPI u8g_com_HAL_LPC1768_hw_spi_fn // use LPC1768 specific hardware SPI routine
#define U8G_COM_SW_SPI u8g_com_HAL_LPC1768_sw_spi_fn // use LPC1768 specific software SPI routine
#define U8G_COM_ST7920_HW_SPI u8g_com_HAL_LPC1768_ST7920_hw_spi_fn
#define U8G_COM_ST7920_SW_SPI u8g_com_HAL_LPC1768_ST7920_sw_spi_fn
#define U8G_COM_SSD_I2C u8g_com_HAL_LPC1768_ssd_hw_i2c_fn
uint8_t u8g_com_HAL_LPC1768_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr);
uint8_t u8g_com_HAL_LPC1768_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr);
uint8_t u8g_com_HAL_LPC1768_ST7920_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr);
uint8_t u8g_com_HAL_LPC1768_ST7920_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr);
uint8_t u8g_com_HAL_LPC1768_ssd_hw_i2c_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr);
// let these default for now
#define U8G_COM_PARALLEL u8g_com_null_fn
#define U8G_COM_T6963 u8g_com_null_fn
#define U8G_COM_FAST_PARALLEL u8g_com_null_fn
#define U8G_COM_UC_I2C u8g_com_null_fn
#define U8G_COM_HAL_SW_SPI_FN u8g_com_HAL_LPC1768_sw_spi_fn
#define U8G_COM_HAL_HW_SPI_FN u8g_com_HAL_LPC1768_hw_spi_fn
#define U8G_COM_ST7920_HAL_SW_SPI u8g_com_HAL_LPC1768_ST7920_sw_spi_fn
#define U8G_COM_ST7920_HAL_HW_SPI u8g_com_HAL_LPC1768_ST7920_hw_spi_fn
#define U8G_COM_SSD_I2C_HAL u8g_com_HAL_LPC1768_ssd_hw_i2c_fn
#endif
@@ -125,5 +125,4 @@ uint8_t u8g_com_HAL_LPC1768_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val,
}
#endif // HAS_MARLINUI_U8GLIB
#endif // TARGET_LPC1768
@@ -194,5 +194,4 @@ uint8_t u8g_com_HAL_LPC1768_ssd_hw_i2c_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_v
}
#endif // HAS_MARLINUI_U8GLIB
#endif // TARGET_LPC1768
@@ -134,5 +134,4 @@ uint8_t u8g_com_HAL_LPC1768_ST7920_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t ar
}
#endif // HAS_MARLINUI_U8GLIB
#endif // TARGET_LPC1768
@@ -131,7 +131,7 @@ uint8_t swSpiTransfer_mode_3(uint8_t b, const uint8_t spi_speed, const pin_t sck
static uint8_t SPI_speed = 0;
static void u8g_sw_spi_HAL_LPC1768_shift_out(uint8_t dataPin, uint8_t clockPin, uint8_t val) {
static void u8g_sw_spi_shift_out(uint8_t dataPin, uint8_t clockPin, uint8_t val) {
#if ANY(FYSETC_MINI_12864, MKS_MINI_12864)
swSpiTransfer_mode_3(val, SPI_speed, clockPin, -1, dataPin);
#else
@@ -176,13 +176,13 @@ uint8_t u8g_com_HAL_LPC1768_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val,
break;
case U8G_COM_MSG_WRITE_BYTE:
u8g_sw_spi_HAL_LPC1768_shift_out(u8g->pin_list[U8G_PI_MOSI], u8g->pin_list[U8G_PI_SCK], arg_val);
u8g_sw_spi_shift_out(u8g->pin_list[U8G_PI_MOSI], u8g->pin_list[U8G_PI_SCK], arg_val);
break;
case U8G_COM_MSG_WRITE_SEQ: {
uint8_t *ptr = (uint8_t *)arg_ptr;
while (arg_val > 0) {
u8g_sw_spi_HAL_LPC1768_shift_out(u8g->pin_list[U8G_PI_MOSI], u8g->pin_list[U8G_PI_SCK], *ptr++);
u8g_sw_spi_shift_out(u8g->pin_list[U8G_PI_MOSI], u8g->pin_list[U8G_PI_SCK], *ptr++);
arg_val--;
}
}
@@ -191,7 +191,7 @@ uint8_t u8g_com_HAL_LPC1768_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val,
case U8G_COM_MSG_WRITE_SEQ_P: {
uint8_t *ptr = (uint8_t *)arg_ptr;
while (arg_val > 0) {
u8g_sw_spi_HAL_LPC1768_shift_out(u8g->pin_list[U8G_PI_MOSI], u8g->pin_list[U8G_PI_SCK], u8g_pgm_read(ptr));
u8g_sw_spi_shift_out(u8g->pin_list[U8G_PI_MOSI], u8g->pin_list[U8G_PI_SCK], u8g_pgm_read(ptr));
ptr++;
arg_val--;
}
+3 -3
View File
@@ -1,9 +1,9 @@
/**
* Marlin 3D Printer Firmware
*
* Copyright (c) 2021 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2016 Bob Cousins bobcousins42@googlemail.com
* Copyright (c) 2015-2016 Nico Tonnhofer wurstnase.reprap@gmail.com
*
* 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

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