Compare commits

...

1176 Commits

Author SHA1 Message Date
InsanityAutomation 01479cab84 Final binaries 2023-03-02 20:48:41 -05:00
InsanityAutomation 401f5cf1ca Tenlog Shipped Envs 2023-02-28 18:18:00 -05:00
InsanityAutomation ab427804ac Add debug message, reduce ram usage to avoid comm corruption from stack 2023-02-26 15:22:37 -05:00
InsanityAutomation 3a4d705308 Update Configuration.h 2023-02-25 13:31:13 -05:00
InsanityAutomation 56ee00f354 Minor tweak, fix fan speed input 2023-02-24 15:34:06 -05:00
InsanityAutomation f434f368ac Merge branch 'CrealityDwin2.0_Bleeding' of https://github.com/InsanityAutomation/Marlin into CrealityDwin2.0_Bleeding 2023-02-22 19:13:58 -05:00
InsanityAutomation 1d9cf20d4b Merge pull request #295 from bob-anthony/DGUS_DISPLAY_FIXES
Fix compiling errors for DGUS displays
2023-02-22 19:13:58 -05:00
Tom Brazier 313014515c MIN_ISR_LOOP_CYCLES already includes ISR_[XY]_STEPPER_CYCLES and more, it should not be counted 2023-02-22 19:13:58 -05:00
Tom Brazier 11d9bb4a66 Don't include MIN_ISR_LOOP_CYCLES in calculation for ISR_SHAPING_LOOP_CYCLES if input shaping is disabled 2023-02-22 19:13:58 -05:00
Tom Brazier 7591c8661f Also implement 2 cycle saving in MultiU24X32toH16() 2023-02-22 19:13:58 -05:00
Tom Brazier 456b0a4011 Fixed rounding of fractional part of multiplication results (a bug inherited from Sprinter). Cleaned up comments and function naming. Minor optimisation of MultiU8X16toH16(). 2023-02-22 19:13:58 -05:00
InsanityAutomation 67d6f2f877 circle around as upstream never merged 2023-02-19 17:53:32 -05:00
InsanityAutomation 5e10f6d8d1 Slightly more robust pause resume and faster serial event handling 2023-02-19 15:23:27 -05:00
InsanityAutomation 8a30019a18 Update README.md 2023-02-17 17:25:17 -05:00
InsanityAutomation 686fe6fe74 Patch version string 2023-02-15 19:17:03 -05:00
InsanityAutomation 8ece5bcbee Update Version.h 2023-02-14 23:29:30 -05:00
InsanityAutomation ae9fe880f8 Recompress ScreenICL 2023-02-14 23:21:29 -05:00
InsanityAutomation 9c48d93a36 Binaries now identify machine and options in version info 2023-02-13 10:29:11 -05:00
InsanityAutomation fad005fdc2 Readme and Version info 2023-02-12 12:56:09 -05:00
InsanityAutomation 0cf916ce13 Updated binaries 2023-02-11 13:35:20 -05:00
InsanityAutomation 0a54b35981 Updated screen configs, added low res/high res envs 2023-02-11 12:45:28 -05:00
InsanityAutomation 47c0dc631c Make high res screen default, add high res dwin fileset 2023-02-05 13:39:17 -05:00
InsanityAutomation 5c39469b94 Config tweaks and updated TFT files for low res screens 2023-02-04 11:57:05 -05:00
InsanityAutomation 8ea02e3ede add casting for handler 2023-02-03 17:40:47 -05:00
InsanityAutomation a33f7ddc8c Merge branch 'CrealityDwin2.0_Bleeding' into Tenlog_DWIN 2023-02-03 15:35:23 -05:00
InsanityAutomation 462b586c76 Merge branch 'bugfix-2.1.x' into CrealityDwin2.0_Bleeding 2023-02-03 15:31:34 -05:00
InsanityAutomation af85a271a5 Merge branch 'bugfix-2.1.x' of https://github.com/MarlinFirmware/Marlin into bugfix-2.1.x 2023-02-03 15:20:56 -05:00
InsanityAutomation 1bab76a98a Revert "Fix for Nema23 CNC driver on D6"
This reverts commit c43d064122.
2023-02-03 15:20:11 -05:00
InsanityAutomation 25de1facb5 more work on dint type for offsets 2023-02-03 15:20:03 -05:00
InsanityAutomation c43d064122 Fix for Nema23 CNC driver on D6 2023-02-03 15:19:40 -05:00
InsanityAutomation 5a9736bfa3 add endian swap 2023-02-03 15:19:40 -05:00
InsanityAutomation 359258701f Move writevariables to class with other serial sends 2023-02-03 15:19:40 -05:00
InsanityAutomation 04f5a42c60 Idex offsets to uint32 4 byte 2023-02-03 15:19:40 -05:00
InsanityAutomation 6dc27f6fc0 more work on dint type for offsets 2023-02-03 15:19:08 -05:00
InsanityAutomation b010d0782f Fix for Nema23 CNC driver on D6 2023-02-03 15:18:42 -05:00
thinkyhead 7c0b465754 [cron] Bump distribution date (2023-02-03) 2023-02-03 06:06:11 +00:00
Martin Turski cea176ab36 🔨 Fix test build path with spaces (#25329) 2023-02-02 21:01:22 -06:00
Keith Bennett cb7af50baf 📝 Fix Z*_ENDSTOP_ADJUSTMENT comments (#25295) 2023-02-02 19:41:46 -06:00
thinkyhead a80036e3ca [cron] Bump distribution date (2023-02-02) 2023-02-02 00:23:18 +00:00
kg333 8f11428db1 📺 Melzi v4 with BTT SKR Mini E3 (#25321) 2023-02-01 18:02:26 -06:00
Scott Lahteine 3be967bcb4 🩹 PID / MPC heating followup
Followup to #25314
2023-02-01 02:54:37 -06:00
Bob Kuhn 57a7e28145 🩹 Fix progress DOGM compile error (#25319) 2023-02-01 02:54:37 -06:00
Bob Kuhn 64338dfccb 🔧 Fix SD sorting sanity checks (#25318) 2023-02-01 01:51:11 -06:00
alexgrach fbe9237a6c 🐛 Fix TFT touch buttons, button colors (#25300) 2023-02-01 01:40:13 -06:00
tombrazier d6f4f24658 🩹 Fix PID / MPC heating flags (#25314)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2023-02-01 01:25:13 -06:00
thinkyhead aae103e359 [cron] Bump distribution date (2023-02-01) 2023-02-01 00:25:54 +00:00
Dan Royer 738f0a10f5 POLARGRAPH / PEN_UP_DOWN_MENU (#25303)
Co-authored-by: Dan Royer <1464454+i-make-robots@users.noreply.github.com>
2023-01-31 00:12:03 -06:00
thinkyhead 5446968a58 [cron] Bump distribution date (2023-01-31) 2023-01-31 06:05:55 +00:00
Giuliano Zaro 2dda0c0da2 🌐 Update Italian language (#25309) 2023-01-30 23:07:51 -06:00
Roman Moravčík 7ad3586f82 🌐 Update Slovak language (#25305) 2023-01-30 23:07:03 -06:00
Scott Lahteine 087e19a0ed 🔧 Fix build with no Y axis (#25311) 2023-01-30 22:11:50 -06:00
Darren Garnier d0a965a1df 🔨 Fix config.ini URL fetch (#25313) 2023-01-30 22:00:49 -06:00
Bob Kuhn 0c181fc9d3 🩹 Fix G61 axis parameters with no offset (#25312) 2023-01-30 21:57:36 -06:00
thinkyhead 67bc855000 [cron] Bump distribution date (2023-01-27) 2023-01-27 00:27:06 +00:00
alexgrach ab767a4586 🐛 Fix TFT Color UI LCD_HEIGHT (#25281) 2023-01-26 18:20:09 -06:00
xBiohazardx 0e748da7d3 ✏️ Fix probe invert flag (#25282) 2023-01-26 18:05:04 -06:00
thinkyhead 2637153575 [cron] Bump distribution date (2023-01-26) 2023-01-26 06:05:55 +00:00
avionix-g a2c93c24a6 🐛 Fix MKS board Ultipanel support (#25278) 2023-01-25 22:14:52 -06:00
Alexander Gavrilenko 4f902ac950 🐛 Fix Simulator TFT compile (#25279) 2023-01-25 22:05:43 -06:00
Scott Lahteine cf02107e6a 🔧 Refine Input Shaping check (#25280) 2023-01-25 21:37:10 -06:00
InsanityAutomation 6fd0c3f6a8 add endian swap 2023-01-24 20:38:53 -05:00
InsanityAutomation 8f7735655e Move writevariables to class with other serial sends 2023-01-24 20:28:35 -05:00
InsanityAutomation 5f431c140f Idex offsets to uint32 4 byte 2023-01-24 20:21:08 -05:00
InsanityAutomation 23f580bd03 Idex offsets to uint32 4 byte 2023-01-24 20:20:31 -05:00
thinkyhead 7a49fab16d [cron] Bump distribution date (2023-01-24) 2023-01-24 12:07:25 +00:00
Scott Lahteine 7393285560 SDIO retry, hsd clock, etc. 2023-01-24 02:42:16 -06:00
Scott Lahteine e0ae072f5a 🔧 Overridable Stepper EN init 2023-01-24 02:42:16 -06:00
thinkyhead 4099763cfc [cron] Bump distribution date (2023-01-23) 2023-01-23 12:07:26 +00:00
Bob Kuhn 32688979a1 🐛 Fix Ender-2 Stock Display with Melzi (#25258) 2023-01-23 01:37:35 -06:00
Scott Lahteine fffc96661f 🐛 Fix homing_needed_error bits 2023-01-23 01:35:36 -06:00
thinkyhead e656f108c8 [cron] Bump distribution date (2023-01-22) 2023-01-22 06:05:45 +00:00
Scott Lahteine 7e72981b8c 🚸 Fix homing_needed_error language 2023-01-21 23:08:27 -06:00
ellensp b7c23631c5 🐛 Fix misc. UI issues (#25252)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2023-01-21 20:08:37 -06:00
thinkyhead f2b8942adc [cron] Bump distribution date (2023-01-18) 2023-01-18 00:22:56 +00:00
John Robertson f81c468f1e 🐛 Fix potential I2S buffer overwrite (#25113) 2023-01-17 17:53:39 -06:00
Miguel Risco-Castillo b3f65b674f 🚸 ProUI MPC menu (#25232)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2023-01-17 17:41:36 -06:00
alexgrach 99d1b04a1f TFT 320x240 portrait (#25207)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2023-01-17 17:38:27 -06:00
thinkyhead 58f64eaeba [cron] Bump distribution date (2023-01-17) 2023-01-17 06:05:52 +00:00
Scott Lahteine c4482083ac 🎨 Heading cleanup 2023-01-16 22:11:49 -06:00
thinkyhead 938d7b5e14 [cron] Bump distribution date (2023-01-16) 2023-01-16 00:22:07 +00:00
Scott Lahteine 6fe387b6f0 🧑‍💻 Adjust PID / MPC / ProUI
Changes to simplify #25232 WIP
2023-01-15 17:23:53 -06:00
Scott Lahteine d94defc545 🎨 Language / menu cleanup 2023-01-15 08:13:29 -06:00
Keith Bennett 212167b140 📝 No longer experimental (#25238) 2023-01-15 07:25:36 -06:00
thinkyhead d753781dc0 [cron] Bump distribution date (2023-01-15) 2023-01-15 12:06:24 +00:00
Scott Lahteine da87c203c1 🔖 Config version 02010300 2023-01-15 01:19:45 -06:00
Scott Lahteine 5acf738688 🔧 Added MOTHERBOARD error text 2023-01-15 01:11:49 -06:00
thinkyhead 80a2555012 [cron] Bump distribution date (2023-01-14) 2023-01-14 18:05:38 +00:00
Scott Lahteine 5fd5cb02f6 ✏️ ProUI followup 2023-01-14 07:44:57 -06:00
thinkyhead 7503ac3c67 [cron] Bump distribution date (2023-01-13) 2023-01-13 00:22:51 +00:00
Scott Lahteine 80dc7b290b 🔧 Input Shaping sanity checks 2023-01-11 20:31:46 -06:00
thinkyhead 3d0b11a373 [cron] Bump distribution date (2023-01-12) 2023-01-12 01:39:45 +00:00
Scott Lahteine 0838f70b25 🩹 Fix Sim with USE_WATCHDOG disabled 2023-01-11 01:22:59 -06:00
Scott Lahteine 5af5c2a35c 🔨 Improve config.ini parser 2023-01-11 01:22:59 -06:00
thinkyhead fe62c8006a [cron] Bump distribution date (2023-01-11) 2023-01-11 06:24:37 +00:00
Powerlated 64167dfe79 PREHEAT_TIME_BED_MS (#25146) 2023-01-10 23:40:15 -06:00
Alex Z 250fd60920 🐛 Fix Chitu V6 Z_STOP_PIN (#25227) 2023-01-10 23:33:09 -06:00
Scott Lahteine 01e58de31a 🩹 ProUI - Remove ManualZOffset 2023-01-10 23:33:09 -06:00
kadir ilkimen 7717beb793 Polar Kinematics (#25214) 2023-01-10 23:33:09 -06:00
thinkyhead 33e5aad364 [cron] Bump distribution date (2023-01-10) 2023-01-10 01:41:43 +00:00
Scott Lahteine 202114c018 🐛 Fix ProUI with disabled PID, mesh, etc. 2023-01-08 20:00:13 -06:00
thinkyhead 7eccd3dd8c [cron] Bump distribution date (2023-01-09) 2023-01-09 01:36:30 +00:00
Scott Lahteine 290a55ced1 🎨 ProUI cleanup 2023-01-08 04:18:24 -06:00
Scott Lahteine c3fe4abd44 🔨 DGUS_LCD_UI version check 2023-01-08 04:01:29 -06:00
Anson Liu 8a33cfd546 🚸 RGB_STARTUP_TEST for PCA9632 (#25163) 2023-01-08 03:46:26 -06:00
Miguel Risco-Castillo c66b3cf8a4 🚸 ProUI updates (#25176) 2023-01-08 03:22:21 -06:00
Alexander Gavrilenko 7ca6650c77 🐛 Fix UTF support for TFT Color UI (#25177) 2023-01-07 23:43:22 -06:00
Sebastien BLAISOT e96e726b4e 🐛 Fix Neopixel 1 startup (#25203) 2023-01-07 23:07:14 -06:00
Vlad Popescu dd068fa69f 🩹 Fix E3V2 MarlinUI XYZ frame (#25206) 2023-01-07 23:05:24 -06:00
Vlad Popescu 4aa5557136 🩹 Fix E3V2 MarlinUI XYZ frame (#25206) 2023-01-07 23:04:58 -06:00
Richard Layton 6e4326b817 📝 Linux Sim apt-get line (#25208) 2023-01-07 23:03:29 -06:00
thinkyhead 81c1c7357b [cron] Bump distribution date (2023-01-08) 2023-01-08 00:23:33 +00:00
Richard Layton 3c929ab181 📝 More native.ini docs (#25201) 2023-01-07 04:42:21 -06:00
ellensp 2f88cd9ac0 🩹 Update MKS_GEN_13 MOSFET pins (#25126) 2023-01-07 02:39:58 -06:00
ellensp 0374445488 🩹 Replace pow() with _BV() (#25186) 2023-01-07 00:07:39 -06:00
thinkyhead 10b16416ee [cron] Bump distribution date (2023-01-07) 2023-01-07 06:05:53 +00:00
Mike Bignell 29202d5561 🩹 Fix missing IS_MELZI (#25190) 2023-01-06 23:54:35 -06:00
thinkyhead 62507cf54b [cron] Bump distribution date (2023-01-06) 2023-01-06 00:21:58 +00:00
Ashley 'DrToxic' Devine e60a7d8292 🎨 Misc. cleanup (#25194)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2023-01-05 17:06:35 -06:00
Vovodroid eef88cfdf1 🚸 Attach USB media (#25120) 2023-01-05 16:48:22 -06:00
thinkyhead 77439626a7 [cron] Bump distribution date (2023-01-05) 2023-01-05 00:21:58 +00:00
Scott Lahteine 0e72c90f49 🧑‍💻 Add Temperature::is_above_target 2023-01-04 02:25:04 -06:00
thinkyhead 984a758621 [cron] Bump distribution date (2023-01-04) 2023-01-04 02:25:04 -06:00
Scott Lahteine 2dcf3b8550 🎨 Rename *_temp_error to *temp_error 2023-01-04 02:25:04 -06:00
ellensp b28c4fe1e6 DGUS_LCD_UI followup (#25175)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2023-01-03 18:54:27 -06:00
Timothy Hoogland 6819c68a44 🩹 Remove extraneous EZBoard V1 autofans (#25182) 2023-01-03 18:52:19 -06:00
thinkyhead 1c0a09fe98 [cron] Bump distribution date (2023-01-03) 2023-01-03 12:07:19 +00:00
Scott Lahteine a786742109 ️ Less nag over Endstop Interrupts 2023-01-03 04:19:33 -06:00
Scott Lahteine e744ca78a8 🎨 Misc. IS cleanup 2023-01-03 04:09:40 -06:00
thinkyhead 071f009438 [cron] Bump distribution date (2023-01-02) 2023-01-02 06:06:05 +00:00
mikemerryguy 00fad1a79b LARGE_MOVE_ITEMS (#25026)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2023-01-01 23:13:53 -06:00
Scott Lahteine 42cfa4f48f DGUS_LCD_UI followup
Followup to #25143 fixing _DGUS_UI_IS
2023-01-01 23:03:22 -06:00
thinkyhead fffacf4dba [cron] Bump distribution date (2023-01-01) 2023-01-01 06:07:02 +00:00
Scott Lahteine 1456ba083a 🔧 Warn about Endstop Interrupts 2022-12-31 21:49:44 -06:00
Giuliano Zaro 4f7df32b77 🚸 MarlinUI edit steps/mm to 2 decimal places (#25144) 2022-12-31 21:03:50 -06:00
ellensp 32e8627510 New DGUS_LCD_UI option, IA_CREALITY (#25143)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-12-31 20:38:13 -06:00
thinkyhead 5026012abb [cron] Bump distribution date (2022-12-31) 2022-12-31 06:36:12 +00:00
Stefan Kalscheuer d5ff0e8aeb 🐛 Fix Mesh Bed Leveling Z correction (#25122) 2022-12-30 23:49:44 -06:00
Alexander Gavrilenko fca1929beb ️ UTF support for TFT Color UI (#25073) 2022-12-30 23:44:55 -06:00
ellensp 88242e0b5c 🧑‍💻 Fix type warning (#25149) 2022-12-30 21:55:15 -06:00
ellensp f17f921b68 🔨 FILAMENT_RUNOUT_SCRIPT sanity check (#25150) 2022-12-30 21:44:51 -06:00
Lukas Erlacher add9da25e6 🔧 Add H8 to Creality 4.2.2 stepper warning (#25154) 2022-12-30 21:39:15 -06:00
Lukas Erlacher 0c0ed15066 🚸 Z Servo Probe is HAS_STOWABLE_PROBE (#25158) 2022-12-30 21:38:01 -06:00
Timothy Hoogland 475114cbb7 🩹 Remove extraneous EZBoard V2 autofans (#25166) 2022-12-30 21:01:11 -06:00
ellensp c7e84e8ef1 Persistent AUTOTEMP settings (#25093) 2022-12-30 20:59:13 -06:00
Vlad Popescu b39ea9d870 🐛 Avoid lambda for menu items (#25169) 2022-12-30 20:53:45 -06:00
Scott Lahteine 14c8b7b031 🚸 Hide IS menu while busy 2022-12-30 19:43:46 -06:00
thinkyhead 4b4d98d282 [cron] Bump distribution date (2022-12-21) 2022-12-21 06:06:09 +00:00
Scott Lahteine 19bcb77f87 🧑‍💻 Fix D5 warning 2022-12-20 21:21:47 -06:00
thinkyhead fb5a595b34 [cron] Bump distribution date (2022-12-19) 2022-12-19 00:19:09 +00:00
Scott Lahteine 9be33550a1 📝 Update README 2022-12-18 17:23:00 -06:00
Scott Lahteine ebcf26ec5d 🧑‍💻 M593 F "min" freq 2022-12-18 15:48:54 -06:00
Scott Lahteine 0cf2443aa0 🐛 Fix Melzi encoder 2022-12-18 15:48:54 -06:00
MarkMan0 5200b36ae4 🐛 Fix, Refactor PID scaling (#25096) 2022-12-18 15:31:05 -06:00
MarkMan0 a7eacbcc49 🐛 Fix, Refactor PID scaling (#25096) 2022-12-17 23:48:33 -06:00
Scott Lahteine 05e2e059e3 🐛 Fix M593 F 2022-12-17 23:04:49 -06:00
Scott Lahteine c0045e6c0c 🩹 Fix LCD_FOR_MELZI with Tronxy Melzi 2022-12-17 22:00:18 -06:00
thinkyhead 8bf8836cb4 [cron] Bump distribution date (2022-12-18) 2022-12-18 00:20:52 +00:00
EvilGremlin eeea21a967 🐛 Fix DOGM time overflow, alignment (#25103) 2022-12-16 22:45:55 -06:00
ellensp f1a0b516cb 🎨 Suppress warning (#25101) 2022-12-16 22:43:54 -06:00
thinkyhead 01f64b649b [cron] Bump distribution date (2022-12-17) 2022-12-17 00:19:14 +00:00
ellensp 78de7c8545 BTT Octopus with STM32-F407 (#25031) 2022-12-16 15:01:14 -06:00
alextrical 72465e4eec BigTreeTech EBB42 v1.1 (#24964) 2022-12-16 14:45:14 -06:00
ils15 ed6212e0bd 🔧 Use multi-XYZ 'STOP' pins for MIN/MAX (#24855)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-12-16 14:37:56 -06:00
Ruedi Steinmann 15992f6426 🩹 Fix a BUZZ (#24740) 2022-12-16 14:34:44 -06:00
thinkyhead 03adbb18ef [cron] Bump distribution date (2022-12-14) 2022-12-14 00:21:33 +00:00
Dipl.-Ing. Raoul Rubien, BSc 314e52b32a 🩹 Fix M115_GEOMETRY_REPORT (#25092) 2022-12-12 21:23:45 -06:00
thinkyhead efab854204 [cron] Bump distribution date (2022-12-13) 2022-12-13 00:24:02 +00:00
ellensp 13c87c5b26 🩹 Inverted probe pin flag (K8400) (#25085) 2022-12-12 17:01:45 -06:00
Scott Lahteine 6d87dafc6e 🩹 Fix M502 init of default motion
Fix regression from #25035
2022-12-12 16:49:14 -06:00
alextrical 7884ce0707 🩹 Use custom I2C pins for OLED (#24970) 2022-12-12 16:11:09 -06:00
Bart Meijer 049cfe659c SAMD21 HAL / Minitronics v2.0 (#24976) 2022-12-12 15:36:50 -06:00
Alexander Gavrilenko aaae56a650 TFT_COLOR_UI async DMA SPI (#24980) 2022-12-12 15:13:31 -06:00
Scott Lahteine 8a5ef7420b 📝 Replace Twitter with Fosstodon 2022-12-11 19:46:55 -06:00
Simon Pilepich 809ec67e06 🔧 Anycubic alternate Z1/Z2 wiring (#25071) 2022-12-11 19:12:28 -06:00
thinkyhead 0f46ce6352 [cron] Bump distribution date (2022-12-12) 2022-12-12 00:22:54 +00:00
Krzysztof Błażewicz 1c045defa9 JyersUI TMC Settings (#25048) 2022-12-11 13:27:27 -06:00
Keith Bennett f8a20f6b99 🔧 Custom Menu Sanity Check (#25079) 2022-12-11 12:59:25 -06:00
Scott Lahteine 7e60d157ad 🔨 Updated 'mfconfig init' 2022-12-11 12:57:55 -06:00
thinkyhead afef612c8d [cron] Bump distribution date (2022-12-10) 2022-12-10 18:05:42 +00:00
ellensp 54d873b304 🔨 No env:mega1280 for MIGHTYBOARD_REVE (#25080) 2022-12-10 11:44:09 -06:00
tombrazier b4fbe4ff50 ️ Better IS buffer size calc (#25035) 2022-12-10 11:28:48 -06:00
Vovodroid a10f4c0e53 Two controller fans (#24995) 2022-12-10 09:03:54 -06:00
ellensp 9949672f1d 📌 Pins updates for Longer LK5, etc. (#25012)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-12-10 09:00:51 -06:00
thinkyhead c16d3655bf [cron] Bump distribution date (2022-12-08) 2022-12-08 01:38:54 +00:00
EvilGremlin b169d623e3 🚸 Progress display followup (#24879) 2022-12-07 16:08:53 -06:00
Sebastien BLAISOT 44b68319f1 M150 S default index (#23066)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-12-07 15:49:38 -06:00
thinkyhead e0d9b7005a [cron] Bump distribution date (2022-12-07) 2022-12-07 18:25:00 +00:00
Scott Lahteine 3ab36615e9 🔨 Return error on mftest exit 2022-12-07 12:18:09 -06:00
Scott Lahteine 2216753f5a ✏️ Fix typo in PR alert 2022-12-07 07:35:10 -06:00
thinkyhead 96b577cab0 [cron] Bump distribution date (2022-12-06) 2022-12-06 01:37:15 +00:00
Scott Lahteine d8fe7364c9 📝 Update config comments 2022-12-05 11:01:08 -06:00
ellensp cadb1a073d 🐛 Fix Fast PWM on AVR (#25030)
Followup to #25005
2022-12-04 21:38:50 -06:00
thinkyhead 1cd6bf7ef5 [cron] Bump distribution date (2022-12-05) 2022-12-05 01:39:43 +00:00
kisslorand dab43a7627 ✏️ Fix missing ) (#25055) 2022-12-04 16:04:11 -06:00
Scott Lahteine 6d1d5e4e6a 🔨 Fix CI Test clean step (2) 2022-12-04 15:35:45 -06:00
InsanityAutomation 2752234e14 large rom enable IS 2022-12-04 14:21:12 -05:00
ellensp c87943cff1 better 2022-12-04 12:24:05 -05:00
ellensp 661abff6e6 use uint32_t not int
fixes issue https://github.com/MarlinFirmware/Marlin/issues/25018
2022-12-04 12:24:05 -05:00
kisslorand 7e0478c97d Fix commit 3ba9387 2022-12-04 12:23:04 -05:00
Tom Brazier a0ed4d51bc Input shaping buffer size metaprogramming for disctict E axes 2022-12-04 12:22:35 -05:00
Tom Brazier 005019b82d Better error message 2022-12-04 12:22:35 -05:00
Tom Brazier 55d943e9d2 Make it possible to override the shaping buffer size calculations in confg.
Also potential SRAM reduction when not using ADAPTIVE_STEP_SMOOTHING on 32 bit MCUs.
2022-12-04 12:22:35 -05:00
InsanityAutomation f3e8919552 Merge branch 'bugfix-2.1.x' into CrealityDwin2.0_Bleeding 2022-12-04 11:46:46 -05:00
thinkyhead 76ed9b1c7c [cron] Bump distribution date (2022-12-04) 2022-12-04 06:08:00 +00:00
Scott Lahteine 3ba9387479 🎨 Misc. cleanup 2022-12-03 20:49:46 -06:00
Scott Lahteine 4d03c258dc 🔨 Fix CI Test clean step 2022-12-03 20:46:58 -06:00
tombrazier 5c3d87a951 🐛 Fix TMC5160 + Input Shaping overcurrent (#25050) 2022-12-03 20:46:58 -06:00
Taylor Talkington d46e87b00e 🩹 Ender 3v2 DWIN MarlinUI Fixup (#24984) 2022-12-03 19:20:19 -06:00
Scott Lahteine 0f08f7ab85 🎨 Trailing whitespace 2022-12-03 19:18:03 -06:00
ellensp 229dba6d4c 🔨 Update renamed.ini (#25042) 2022-12-03 19:09:02 -06:00
ellensp 464cc9bea9 🩹 Fix MSG_MOVE_N_MM substitution (#25043) 2022-12-03 19:05:22 -06:00
thinkyhead be380be8fb [cron] Bump distribution date (2022-12-03) 2022-12-03 00:19:44 +00:00
kisslorand f7ca7a92d1 🚸 G30 move to logical XY (#24953) 2022-12-02 00:19:34 -06:00
thinkyhead d1f09f23e5 [cron] Bump distribution date (2022-12-02) 2022-12-02 06:05:54 +00:00
Scott Lahteine b6794f6a7e 🎨 Misc. cleanup 2022-12-01 23:39:17 -06:00
thinkyhead 01e23af7d8 [cron] Bump distribution date (2022-11-29) 2022-11-29 00:24:07 +00:00
InsanityAutomation 2bd9bcf61b Merge branch 'bugfix-2.1.x' into CrealityDwin2.0_Bleeding 2022-11-28 15:01:14 -05:00
トトも 600591b18d 📝 Formatted Team Overview (#25029) 2022-11-27 23:40:35 -06:00
Scott Lahteine 791de40885 🐛 Fix G-code resend race condition
As pointed out in #24972 by @silycr, but simplified.
2022-11-27 23:23:00 -06:00
Taylor Talkington a8d7c8c89d Ender-3 V2 DWIN for BTT Octopus V1.1 (#24983) 2022-11-27 21:41:27 -06:00
Chris Bagwell f3108e87f1 ️ More SCURVE cycles on unoptimized cortex-m0 (#24955) 2022-11-27 21:40:11 -06:00
tombrazier 89334caa52 ️ Input Shaping improvements (#24951) 2022-11-27 21:38:15 -06:00
Trivalik d4d1112ae8 🐛 Fix missing va_end in UnwPrintf (#25027) 2022-11-27 19:06:44 -06:00
thinkyhead 463f35e0f2 [cron] Bump distribution date (2022-11-28) 2022-11-28 00:21:21 +00:00
studiodyne 84ae7d5f72 🐛 Fix MILLISECONDS_PREHEAT_TIME / mintemp (#24967) 2022-11-26 21:29:13 -06:00
Marcio T 60931719d8 🩹 Fix ADVANCE_K + DISTINCT_E_FACTORS sanity check (#25007) 2022-11-26 21:11:14 -06:00
Manuel McLure cc1069a3f0 🔧 Merge TMC26X with TMC config (#24373) 2022-11-26 20:30:59 -06:00
Radek e354e1c48f 🐛 Fix SKR mini E2 V2 + BTT_MINI_12864_V1 (#24827)
See https://github.com/bigtreetech/BIGTREETECH-SKR-mini-E3/issues/686#issuecomment-1296545443
2022-11-26 19:31:44 -06:00
Vasily Evseenko 909442cb88 🍻 Fix Z increase on toolchange without UBL (#22942) 2022-11-26 19:26:40 -06:00
ellensp a13f3cb889 🩹 Fix UBL menu compile (#25020) 2022-11-26 19:22:08 -06:00
mikemerryguy 5f831768a2 🚸 Add 50mm manual move (#24884) 2022-11-26 19:14:05 -06:00
Thomas Buck 50e3e4d862 🚸 Optional Cutter/Laser status for HD44780 (#25003) 2022-11-26 18:59:13 -06:00
thinkyhead 8f9d989378 [cron] Bump distribution date (2022-11-27) 2022-11-27 00:24:12 +00:00
Tanguy Pruvot 86276a6dd2 🚸 COLOR_UI sleep timeout / setting (#24994) 2022-11-26 01:23:24 -06:00
ellensp 74474c8a81 🔧 Fix TPARA (…SCARA, DELTA) settings (#25016) 2022-11-26 00:21:47 -06:00
thinkyhead 93a297ba3b [cron] Bump distribution date (2022-11-26) 2022-11-26 06:05:45 +00:00
Tanguy Pruvot 1e5b34187e ✏️ Fix Robin nano env typo (#24993) 2022-11-25 21:41:49 -06:00
ellensp 1d809168db 📺 FYSETC_MINI_12864_2_1 with BTT_SKR_E3_DIP (#24986) 2022-11-25 21:40:24 -06:00
ellensp 9c092ed0fc 🩹 Fix planner typo (#24977) 2022-11-25 19:17:24 -06:00
thinkyhead 59e19898ce [cron] Bump distribution date (2022-11-22) 2022-11-22 00:24:30 +00:00
ellensp 393660334d 🐛 MKS_MINI_12864 on SKR 1.3 needs FORCE_SOFT_SPI (#24850) 2022-11-21 17:47:27 -06:00
EvilGremlin 8542e9a085 🔧 Check Delta homing direction (#24865) 2022-11-21 17:45:57 -06:00
phigjm f49731251c 🩹 Fix SERVICE_INTERVAL reset (#24888) 2022-11-21 17:41:14 -06:00
Marcio T e3e07354d5 Fix FAST_PWM_FAN / TouchUI with NO_MOTION_BEFORE_HOMING (#25005)
Fix regressions from #20323, #23463
2022-11-21 17:25:56 -06:00
thinkyhead 8298a477e1 [cron] Bump distribution date (2022-11-15) 2022-11-15 00:24:38 +00:00
ellensp 00156a3e31 🩹 Fix 2 thermocouples (#24982)
Followup to #24898
2022-11-14 02:35:24 -06:00
Scott Lahteine d62fbfbce6 🐛 Fix M808 starting count
Reported by adcurtin on Discord
2022-11-14 02:26:31 -06:00
thinkyhead 14966c0ba2 [cron] Bump distribution date (2022-11-14) 2022-11-14 06:23:44 +00:00
Justin Hartmann e283f15720 🩹 Fix Overlord compile (#24947) 2022-11-13 23:50:02 -06:00
Pascal de Bruijn 16faa2950a 🚸 M306: Indicate MPC Autotune (#24949) 2022-11-13 22:59:25 -06:00
ellensp abc931629f 🩹 Allow max endstops MKS Monster 8 V2 (#24944) 2022-11-13 22:45:28 -06:00
thinkyhead dbd5dc4eb7 [cron] Bump distribution date (2022-11-13) 2022-11-13 00:23:31 +00:00
Scott Lahteine 7395569055 🐛 Fix Anycubic / Trigorilla pins, etc. (#24971) 2022-11-11 20:35:07 -06:00
thinkyhead e1423a8740 [cron] Bump distribution date (2022-11-12) 2022-11-12 00:40:15 +00:00
Scott Lahteine d123ea7346 🎨 Prefer axis element over index 2022-11-11 16:20:47 -06:00
thinkyhead 4d913fbf33 [cron] Bump distribution date (2022-11-10) 2022-11-10 06:06:37 +00:00
Scott Lahteine 3985d26939 🐛 Fix recalculate_max_e_jerk 2022-11-09 20:54:17 -06:00
thinkyhead c209626bda [cron] Bump distribution date (2022-11-07) 2022-11-07 06:06:50 +00:00
Scott Lahteine 885e923bff 🩹 Fix EEPROM write for !LIN_ADVANCE
Fixes #24963
Followup to #24821
2022-11-06 23:51:54 -06:00
thinkyhead e86c78379a [cron] Bump distribution date (2022-11-05) 2022-11-05 06:05:56 +00:00
Scott Lahteine 726321bc84 🩹 MAX Thermocouple followup
Followup to #24898
2022-11-04 20:15:16 -05:00
Scott Lahteine a80d2f065e 🩹 leds.update needed for reset_timeout
Followup to #23590
2022-11-04 20:11:18 -05:00
thinkyhead 32fa577d25 [cron] Bump distribution date (2022-11-04) 2022-11-04 06:06:27 +00:00
Scott Lahteine c579250294 🧑‍💻 More direct encoder spin 2022-11-03 21:29:22 -05:00
thinkyhead cd7fa1fdba [cron] Bump distribution date (2022-11-02) 2022-11-02 00:29:17 +00:00
Scott Lahteine 1c2d37eb0b 🎨 Update SAMD51 headers 2022-11-01 17:14:18 -05:00
thinkyhead bfa5e9b584 [cron] Bump distribution date (2022-10-31) 2022-10-31 00:30:33 +00:00
Scott Lahteine 622e795214 🎨 Format some lib-uhs3 code 2022-10-30 15:46:46 -05:00
ellensp b20db2e1a3 📌 ZRIB V52-V53 Servo Pins (#24880) 2022-10-29 22:45:08 -05:00
InsanityAutomation 4bee77d470 Tenlog MB1V23 IDEX board (#24896) 2022-10-29 22:35:12 -05:00
thinkyhead c1bc34daa7 [cron] Bump distribution date (2022-10-30) 2022-10-30 00:36:21 +00:00
Giuliano Zaro 846f88526f 🌐 Update Italian language (#24915) 2022-10-29 18:45:33 -05:00
InsanityAutomation 3ec124f417 Merge branch 'bugfix-2.1.x' into CrealityDwin2.0_Bleeding 2022-10-29 19:42:55 -04:00
ellensp 1ef6ddccbe 📌 Remove unused RX/TX pins (#24932) 2022-10-29 18:42:36 -05:00
Keith Bennett d3e3a64092 🔧 Update Display Sleep LCD Check (#24934) 2022-10-29 18:39:26 -05:00
Justin Hartmann a9fe447313 🩹 Buttons Followup (#24935)
Followup to #24878
2022-10-29 18:37:36 -05:00
thinkyhead 6b4d7b9151 [cron] Bump distribution date (2022-10-25) 2022-10-25 00:37:23 +00:00
Scott Lahteine 6e1f0be215 🩹 Allow for last non-servo extruder 2022-10-24 17:30:33 -05:00
ellensp f4dc9d572b 🐛 Fix move_extruder_servo (#24908) 2022-10-24 16:47:23 -05:00
InsanityAutomation 81f88fefdc 🐛 Fix FTDUI Status Screen Timeout (#24899) 2022-10-24 16:44:52 -05:00
Manuel McLure cf2311f768 🩹 Fix spurious "bad command" (#24923) 2022-10-24 16:25:47 -05:00
thinkyhead 248236b1a7 [cron] Bump distribution date (2022-10-24) 2022-10-24 00:36:39 +00:00
Scott Lahteine aaf34fa96b 🩹 Fix M593 report 2022-10-22 23:36:03 -05:00
thinkyhead 2cad4420fd [cron] Bump distribution date (2022-10-23) 2022-10-23 00:34:38 +00:00
kurtis-potier-geofabrica 1b31a7cf2c 🚸 Up to 3 MAX Thermocouples (#24898) 2022-10-21 23:13:56 -05:00
Scott Lahteine fd0c6fa153 🔧 Clean up unused ESP_WIFI pins 2022-10-21 19:45:20 -05:00
thinkyhead ed1252642f [cron] Bump distribution date (2022-10-22) 2022-10-22 00:33:26 +00:00
tombrazier a460b01c87 🚀 ZV Input Shaping (#24797) 2022-10-21 16:34:22 -05:00
Scott Lahteine f8d7090e30 🔨 gcc-12 for macOS native 2022-10-21 15:41:51 -05:00
InsanityAutomation 02c43f44c7 Controllerfan PWM scaling, kickstart (#24873) 2022-10-21 13:03:38 -05:00
silycr 86aac677ac 🚸 Probe pins for Chitu V5 (#24910) 2022-10-21 13:01:46 -05:00
thinkyhead 70b3166715 [cron] Bump distribution date (2022-10-21) 2022-10-21 00:28:49 +00:00
ellensp 42d30ed102 🔧 Some STM32 UART Sanity Checks (#24795) 2022-10-19 21:23:22 -05:00
Scott Lahteine 9be1554faf 🎨 Misc. variant cleanup, translation
Followup to #24787
2022-10-19 21:02:25 -05:00
InsanityAutomation b244785141 🐛 Fix Print Timer stop with MarlinUI abort (#24902) 2022-10-19 20:36:39 -05:00
Keith Bennett 7e25ef9456 ✏️ Fix a label (#24903)
Followup to e298266eff
2022-10-19 20:32:12 -05:00
ellensp 437cc48470 🔧 No Native USB on AVR (#24906) 2022-10-19 20:29:15 -05:00
thinkyhead 4b279ac300 [cron] Bump distribution date (2022-10-20) 2022-10-20 00:30:52 +00:00
Scott Lahteine e49c3dc088 🩹 Polargraph followup
Fix issue from #24847
2022-10-19 00:45:35 -05:00
thinkyhead 6aa536c08f [cron] Bump distribution date (2022-10-19) 2022-10-19 00:33:17 +00:00
InsanityAutomation c5263830d8 Update planner.cpp 2022-10-18 16:51:02 -04:00
InsanityAutomation 050e0db3a3 Merge branch 'bugfix-2.1.x' into CrealityDwin2.0_Bleeding 2022-10-18 16:42:19 -04:00
Scott Lahteine 81976c4360 🧑‍💻 Pins and debug list cleanup (#24878) 2022-10-17 23:00:26 -05:00
Scott Lahteine e298266eff 🎨 CONF_SERIAL_IS => SERIAL_IN_USE 2022-10-17 22:47:09 -05:00
ellensp 1aa0ece8a4 Tronxy v10 (#24787) 2022-10-17 22:41:41 -05:00
Keith Bennett 4e1e82b122 🔧 No Sleep for CR-10 Stock Display (#24875) 2022-10-17 22:24:19 -05:00
karliss 52096599b3 🐛 Fix compile without Y/Z (#24858)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-10-17 20:01:18 -05:00
thinkyhead fa63ed6cc7 [cron] Bump distribution date (2022-10-18) 2022-10-18 00:35:28 +00:00
Keith Bennett 5cdb9c2bc8 🔧 Check Sensorless Homing on all axes (#24872) 2022-10-17 14:25:37 -05:00
InsanityAutomation ce40836717 🐛 Fix bed/chamber PID P edit (#24861) 2022-10-17 14:17:51 -05:00
thinkyhead 4d56b557aa [cron] Bump distribution date (2022-10-17) 2022-10-17 18:46:42 +00:00
Scott Lahteine dd3b65bb1f 🎨 HAS_SPI_FLASH => SPI_FLASH 2022-10-17 13:02:04 -05:00
InsanityAutomation f8f918590c Merge branch 'bugfix-2.1.x' into CrealityDwin2.0_Bleeding 2022-10-16 15:05:28 -04:00
thinkyhead 5809bdd400 [cron] Bump distribution date (2022-10-16) 2022-10-16 06:11:46 +00:00
Dan Royer 5a80fc2617 🐛 Fix and improve Polargraph (#24847)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-10-16 00:03:42 -05:00
ellensp 6d2b792a29 🐛 Fix operators for V axis (#24866)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-10-15 19:40:00 -05:00
thinkyhead 1b46ca1cf8 [cron] Bump distribution date (2022-10-15) 2022-10-15 00:51:19 +00:00
mjbogusz e37a23231a 🩹 Fix TFT LCD in Simulation (#24871) 2022-10-14 18:59:31 -05:00
Scott Lahteine 54a5bf5edf 🎨 MMU2 cleanup 2022-10-14 13:37:12 -05:00
thinkyhead 670a199575 [cron] Bump distribution date (2022-10-13) 2022-10-13 00:32:13 +00:00
Scott Lahteine bbf4bcf5ae 🐛 Fix M876 without emergency parser
Fix regression from 1fb2fffdbf
2022-10-12 18:15:29 -05:00
adam3654 797aafd645 DOGM Display Sleep (#24829) 2022-10-12 18:03:32 -05:00
EvilGremlin 6ad5711807 🩹 Fix temperature include (#24834) 2022-10-12 18:01:28 -05:00
Scott Lahteine b577691b7b 🎨 Misc. variant cleanup 2022-10-12 17:53:42 -05:00
Scott Lahteine 93139e757c 🧑‍💻 Use spaces indent for Python 2022-10-12 17:52:56 -05:00
Scott Lahteine 8627d4e5da 🧑‍💻 Min and max for base types 2022-10-12 15:24:05 -05:00
thinkyhead cab94bb030 [cron] Bump distribution date (2022-10-12) 2022-10-12 00:37:55 +00:00
EvilGremlin 26d01c5f2c MKS SKIPR board (#24791) 2022-10-11 18:31:37 -05:00
thinkyhead 6b22f8152b [cron] Bump distribution date (2022-10-11) 2022-10-11 00:30:01 +00:00
Scott Lahteine e7cf3c7970 🔨 Update mfinfo for 2.1.x 2022-10-10 18:02:22 -04:00
Scott Lahteine 77227f66c2 🧑‍💻 Min and max for base types 2022-10-10 17:51:33 -04:00
Giuliano Zaro efde96131d ADVANCE_K per-extruder (#24821)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-10-10 14:55:04 -04:00
InsanityAutomation 5d56a71423 Update Creality_DWIN.cpp 2022-10-10 14:38:29 -04:00
thinkyhead 051b95c845 [cron] Bump distribution date (2022-10-09) 2022-10-09 18:06:15 +00:00
EvilGremlin f595e40ceb ♻️ Set Progress without LCD (#24767)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-10-09 11:34:48 -04:00
thinkyhead 0d8a695ea9 [cron] Bump distribution date (2022-10-02) 2022-10-02 00:34:34 +00:00
EvilGremlin fcf9f22390 🩹 Fix Color UI touchscreen sleep (#24826) 2022-10-01 15:04:50 -05:00
thinkyhead 43fa749d27 [cron] Bump distribution date (2022-10-01) 2022-10-01 18:05:53 +00:00
Adam 6cc11b76fd 🩹 Fix Switching Toolhead compile (#24814) 2022-10-01 11:49:12 -05:00
ellensp c2f7a568f3 🧑‍💻 Einsy Rambo EXP headers (#24825) 2022-10-01 11:39:10 -05:00
ellensp a8f650079b 🔨 Detect feature parsing error (#24824) 2022-10-01 11:35:47 -05:00
ellensp 91fafec424 Creality v5.2.1 board (#24815)
Followup to #24760
2022-10-01 11:25:00 -05:00
Keith Bennett 11f8244573 🔧 Thermistor (66) sanity-check (#24803) 2022-10-01 11:19:51 -05:00
thinkyhead e1df912dc7 [cron] Bump distribution date (2022-09-30) 2022-09-30 00:41:18 +00:00
Eduardo José Tagle 35594a23de 🐛 Fix DUE compile and errors (#24809) 2022-09-29 17:54:59 -05:00
Scott Lahteine 83922dd4e6 🩹 Fix some vector_3 cast operators 2022-09-29 17:30:53 -05:00
thinkyhead a5c5bb9660 [cron] Bump distribution date (2022-09-28) 2022-09-28 18:10:34 +00:00
Keith Bennett 18b6d6c8ca 🔧 Update Creality 4.2.2 Driver Warning (#24806) 2022-09-28 10:05:06 -05:00
ellensp 2c6ed101c1 🩹 Disable DEBUG_DGUSLCD (#24798) 2022-09-28 10:03:40 -05:00
Yuri D'Elia 644c91ce8b 🎨 Remove non-const compare operators (#24810) 2022-09-28 09:49:30 -05:00
Plynix / Ben Hartiwch 1b3941c0d2 Creality v5.2.1 board (#24760) 2022-09-28 09:46:50 -05:00
thinkyhead e14faf0413 [cron] Bump distribution date (2022-09-27) 2022-09-27 00:30:06 +00:00
discip f84d51ec06 Pt1000 with 2k2 pullup (SKR 3 / EZ) (#24790) 2022-09-26 16:42:52 -05:00
ellensp 8aa3273242 ✏️ Followup for M524 (#24775)
Followup to #24761
2022-09-26 16:25:54 -05:00
Stuart Pittaway 6f68942e83 🚸 UUID fallback to STM32 device SN (#24759)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-09-26 16:18:15 -05:00
Keith Bennett 9881f758d7 📌 Specify MarlinFirmware/U8glib (#24792) 2022-09-26 16:15:14 -05:00
thinkyhead 945d5dbe13 [cron] Bump distribution date (2022-09-23) 2022-09-23 06:23:27 +00:00
Renaud11232 7d08ab4fb7 🔨 Fix LPC1768 autodetect path on Linux (#24773) 2022-09-23 00:20:44 -05:00
ellensp 4a2b08f883 🐛 Fix VW axis fields in types.h (#24780) 2022-09-23 00:16:01 -05:00
thinkyhead 1d2aecaca8 [cron] Bump distribution date (2022-09-22) 2022-09-22 18:13:30 +00:00
Bob Kuhn a4297ff492 Fix UBL regression (#24622)
Fix regression from #24188
2022-09-22 12:54:49 -05:00
ellensp 4f299bf867 📺 FYSETC Mini 12864 2.1 pins for Creality V4 (#24624) 2022-09-22 12:20:17 -05:00
Yuri D'Elia 038042b09e 👷 Array macros to …26 elements (#24789) 2022-09-22 11:54:26 -05:00
thinkyhead 8f4fb42bfb [cron] Bump distribution date (2022-09-18) 2022-09-18 06:07:46 +00:00
FBN 6fdf9bf2ea ✏️ MMU2 followup (#24770)
Followup to #24750
2022-09-17 20:53:07 -05:00
Arkadiusz Miśkiewicz 6c813fcd16 🚸 Emergency Parse M524 (#24761) 2022-09-17 20:51:37 -05:00
Scott Lahteine 1e525c5976 🩹 Fix inverse_accel redefine
Followup to #24737
2022-09-17 20:36:55 -05:00
InsanityAutomation 93b664182e Final tweaks and add binaries 2022-09-17 16:10:08 -04:00
InsanityAutomation e0990f1b65 Merge branch 'CrealityDwin2.0_Bleeding' into Tenlog_DWIN 2022-09-17 12:12:13 -04:00
InsanityAutomation 0a55425552 Revert "️ Minor planner optimization (#24737)"
This reverts commit d5cf0b3348.
2022-09-17 12:03:16 -04:00
thinkyhead b1239a42a8 [cron] Bump distribution date (2022-09-17) 2022-09-17 00:24:30 +00:00
Stefan Kalscheuer 06d7d2ada4 Anycubic i3 Mega LCD file menu fix (#24752) 2022-09-16 14:21:13 -05:00
Chris Bagwell 9467b68608 🧑‍💻 STM32G0B1RE Pins Debugging (#24748) 2022-09-16 13:30:04 -05:00
thinkyhead e338420df8 [cron] Bump distribution date (2022-09-16) 2022-09-16 00:27:49 +00:00
FBN d0e7c2c208 🚸 More automatic MMU2 load (#24750) 2022-09-15 18:02:08 -05:00
thinkyhead 1ab6e5cdc9 [cron] Bump distribution date (2022-09-15) 2022-09-15 18:06:16 +00:00
Scott Lahteine 551f5ada94 📌 Can use luc-github/ESP3DLib now
Followup to #24670
2022-09-15 10:28:49 -05:00
InsanityAutomation 47c0c7072a Merge branch 'bugfix-2.1.x' into CrealityDwin2.0_Bleeding 2022-09-15 11:21:48 -04:00
InsanityAutomation beb163a183 Update stm32f1-maple.ini 2022-09-15 10:40:31 -04:00
thinkyhead e927e58d32 [cron] Bump distribution date (2022-09-14) 2022-09-14 00:26:34 +00:00
Scott Lahteine 8a3ad7abcc 🔨 Fix config-labels.py 2022-09-13 13:29:50 -05:00
thinkyhead 5b0096c350 [cron] Bump distribution date (2022-09-13) 2022-09-13 18:28:57 +00:00
Eduard Sukharev c3b58f1938 🩹 Fix MKS TinyBee + MKS MINI 12864 SD blank on write (#24670) 2022-09-13 12:31:59 -05:00
Eduard Sukharev e003552804 🚸 Sanity check Integrated Babystepping + I2S stream + ESP32 (#24691) 2022-09-13 12:29:59 -05:00
George Fu 50f79823d2 FYSETC SPIDER KING407 (#24696) 2022-09-13 12:28:38 -05:00
ellensp 3c449b220f BTT SKR Mini E3 V3.0.1 (#24722) 2022-09-13 12:27:16 -05:00
thinkyhead c5af435449 [cron] Bump distribution date (2022-09-11) 2022-09-11 00:24:58 +00:00
Scott Lahteine 45cf997341 🌐 Some short menu strings 2022-09-09 19:31:47 -05:00
thinkyhead 0820f94a5a [cron] Bump distribution date (2022-09-10) 2022-09-10 00:27:05 +00:00
XDA-Bam d5cf0b3348 ️ Minor planner optimization (#24737) 2022-09-09 15:51:11 -05:00
kisslorand 0ae64f1140 ✏️ Fix M115 spindle/laser cap (#24747) 2022-09-09 15:36:39 -05:00
hartmannathan c80d1ea97d 📝 Fix example comment (#24744) 2022-09-09 15:35:16 -05:00
Keith Bennett 1013323f18 ️ Only Sync Emulated EEPROM Print Counter (#24731) 2022-09-09 14:22:52 -05:00
Gurmeet Athwal 25736abc0f 🚸 M115 spindle/laser (#24681) 2022-09-09 14:21:19 -05:00
Giuliano Zaro dc0b490bf0 🐛 Fix heater timeout PID output (#24682) 2022-09-09 13:54:29 -05:00
thinkyhead b95d073f02 [cron] Bump distribution date (2022-09-08) 2022-09-08 00:25:55 +00:00
studiodyne 9e5c143b87 M217 G wipe retract length 2022-09-07 17:46:28 -05:00
studiodyne 458e1aea41 XY_COUNTERPART_BACKOFF_MM 2022-09-07 15:41:17 -05:00
studiodyne 0765dfd43f RGB_STARTUP_TEST 2022-09-07 14:16:21 -05:00
Scott Lahteine 4f9ba7e991 🧑‍💻 Microsteps to stepper.cpp 2022-09-06 23:05:42 -05:00
Scott Lahteine 9ab0b18256 📝 Fix comment 2022-09-06 22:34:17 -05:00
thinkyhead 57ee26e909 [cron] Bump distribution date (2022-09-07) 2022-09-07 00:26:05 +00:00
Scott Lahteine d23ab529d8 🔨 Outdent py string 2022-09-06 17:53:36 -05:00
Arkadiusz Miśkiewicz c9ef1277f3 🚸 On pause report "SD printing byte X/Y" (#24709) 2022-09-06 01:48:42 -05:00
JoaquinBerrios 2b23bdce70 ️ BTT SKR V3.0 / EZ = 480MHz (#24721) 2022-09-06 01:39:02 -05:00
thinkyhead 61a543a471 [cron] Bump distribution date (2022-09-06) 2022-09-06 00:26:04 +00:00
dmitrygribenchuk 83aac65664 🔨 Clean up Python imports (#24736) 2022-09-05 13:19:19 -05:00
ButchMonkey c46ed8f57d 🔨 Fix config.ini custom items, and 'all' (#24720) 2022-09-04 23:48:58 -05:00
thinkyhead 9fc3642f2a [cron] Bump distribution date (2022-09-05) 2022-09-05 00:29:22 +00:00
ButchMonkey 328f6d9aff 🔨 Fix configuration.py with encoding UTF-8 (#24719)
- Opening files with Windows-1252 encoding.
2022-09-04 15:10:22 -05:00
Stephen Hawes 35d4791518 Opulo LumenPnP REV04 (#24718) 2022-09-03 20:55:37 -05:00
Giuliano Zaro 094701cc71 🐛 Fix / refactor shared PID (#24673)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-09-03 19:51:53 -05:00
thinkyhead f6d109287f [cron] Bump distribution date (2022-09-04) 2022-09-04 00:26:23 +00:00
Keith Bennett fdf6445a51 🔨 Update SKR 3 env (#24711) 2022-09-03 18:48:21 -05:00
Scott Lahteine 68d4869616 Format some comments 2022-09-03 18:21:23 -05:00
thinkyhead 5f61a896d9 [cron] Bump distribution date (2022-09-03) 2022-09-03 00:22:59 +00:00
EvilGremlin bcb6f6e85e 🔨 Native USB modified env followup (#24669)
Followup to #24619
2022-09-01 21:47:37 -05:00
tombrazier 8e71f7add4 Permit Linear Advance with I2S Streaming (#24684) 2022-09-01 21:04:46 -05:00
thinkyhead 243f7f2834 [cron] Bump distribution date (2022-09-02) 2022-09-02 00:24:02 +00:00
Giuliano Zaro 89f86bc550 🚸 Strict index 2 for M913 / M914 XY (#24680) 2022-09-01 14:16:52 -05:00
Arkadiusz Miśkiewicz 1b03fc3f63 🩹 Report M22 / M23 success / fail (#24706) 2022-09-01 13:48:24 -05:00
InsanityAutomation cd67b87f22 Update Configuration_adv.h 2022-09-01 14:35:45 -04:00
thinkyhead aa0904600b [cron] Bump distribution date (2022-08-30) 2022-08-30 00:41:13 +00:00
Scott Lahteine 6542f61aaf 🔖 Config version 02010200 2022-08-29 19:23:53 -05:00
EvilGremlin b229fba98b 🐛 Fix back button (#24694) 2022-08-29 18:52:02 -05:00
thinkyhead 8a3cd2f47b [cron] Bump distribution date (2022-08-27) 2022-08-27 00:22:42 +00:00
Scott Lahteine 9b7b1a3635 ✏️ Fix http:// links 2022-08-25 23:45:07 -05:00
Lefteris Garyfalakis 15a100dafa ✏️ Fix LCD sleep conditional (#24685) 2022-08-25 23:40:31 -05:00
Miguel Risco-Castillo c918e90b8d 🩹 Constrain UBL within mesh bounds (#24631)
Fixes #24630
2022-08-25 23:23:54 -05:00
thinkyhead 2635182dcb [cron] Bump distribution date (2022-08-26) 2022-08-26 00:25:25 +00:00
Keith Bennett ace358327d 🚸 Up to 10 Preheat Constants (#24636) 2022-08-25 18:14:50 -05:00
ellensp eabab4322d 🔧 Fix Auto-Fan / Controller-Fan pin conflict check (#24648) 2022-08-25 18:07:41 -05:00
ellensp 66e61f4de3 🩹 Fix PID debug output (#24647) 2022-08-25 17:51:11 -05:00
Mark 42f8cc4606 🐛 Fix Bed Distance Sensor reading (#24649) 2022-08-25 17:50:03 -05:00
Arkadiusz Miśkiewicz 82d1851743 M20_TIMESTAMP_SUPPORT (#24679)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-08-25 17:14:54 -05:00
thinkyhead 6053fae1ac [cron] Bump distribution date (2022-08-25) 2022-08-25 18:16:46 +00:00
EvilGremlin 2f91154cbd ♻️ Display sleep minutes, encoder disable option (#24618)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-08-25 12:16:55 -05:00
DejitaruJin 6704c0bc4c 🩹 Fix SainSmart LCD (#24672) 2022-08-25 12:12:13 -05:00
Keith Bennett b19d44ba0b 🩹 Fix Freeze Feature (#24664) 2022-08-25 12:08:03 -05:00
Lefteris Garyfalakis 2a2c161d87 🔨 Suppressible Creality 4.2.2 warning (#24683) 2022-08-25 11:48:35 -05:00
thinkyhead f4a5db52e8 [cron] Bump distribution date (2022-08-24) 2022-08-24 18:11:29 +00:00
Scott Lahteine a76b92bce0 Robin Nano v1 CDC (USB mod)
Followup to #24619
2022-08-24 10:15:57 -05:00
InsanityAutomation e5f087bd98 adjust envs 2022-08-23 19:29:00 -04:00
InsanityAutomation 1fcad0b87c platform tweaking 2022-08-23 19:28:48 -04:00
thinkyhead e201f4e656 [cron] Bump distribution date (2022-08-22) 2022-08-22 18:06:10 +00:00
EvilGremlin 2a1c2e26ed Robin Nano v1 CDC (USB mod) (#24619) 2022-08-22 10:31:02 -05:00
Alexey Galakhov 20c72845a0 🐛 Fix JyersUI (#24652) 2022-08-22 10:11:53 -05:00
Keith Bennett d77027276c 🔧 Fix Skew Correction defaults (#24601) 2022-08-22 09:53:51 -05:00
thinkyhead 6e39bd6c85 [cron] Bump distribution date (2022-08-21) 2022-08-21 00:22:59 +00:00
InsanityAutomation bf698efc93 Remove no longer needed silent builds 2022-08-20 15:18:03 -04:00
InsanityAutomation f0e950db72 Merge branch 'bugfix-2.1.x' into CrealityDwin2.0_Bleeding 2022-08-20 15:17:46 -04:00
Scott Lahteine 34f3e5bd88 🎨 Some automated cleanup 2022-08-20 06:41:31 -05:00
thinkyhead da3b7ab259 [cron] Bump distribution date (2022-08-20) 2022-08-20 00:22:12 +00:00
Keith Bennett 6909f5fa4f 📺 Add to MKS UI About Screen (#24610) 2022-08-19 13:37:43 -05:00
Keith Bennett 03d9254079 🔧 Remove STM32F4 Print Counter Sanity Check (#24605) 2022-08-19 13:11:15 -05:00
Protomosh 4ae9bf3b9d 🐛 Fix DGUS Reloaded + STM32 (#24600) 2022-08-19 12:57:27 -05:00
Scott Lahteine 306e03b03b 🧑‍💻 Use spaces indent for Python 2022-08-19 11:10:42 -05:00
Scott Lahteine e701e0bb25 🔨 Misc. schema updates 2022-08-19 11:09:07 -05:00
Graham Reed dab60a1cb7 🔨 Fix LPC1768 automatic upload port (#24599) 2022-08-19 10:48:27 -05:00
thinkyhead 1be5a7b5d7 [cron] Bump distribution date (2022-08-19) 2022-08-19 00:25:32 +00:00
Scott Lahteine af1c7e1a81 🩹 Fix strtof interpreting a hex value
Bug introduced in #21532
2022-08-18 13:10:27 -05:00
thinkyhead 1766ee15a3 [cron] Bump distribution date (2022-08-17) 2022-08-17 18:05:53 +00:00
Scott Lahteine ce26fccc3e 🔨 Add args to schema.py 2022-08-17 07:32:43 -05:00
thinkyhead 0100b7be4d [cron] Bump distribution date (2022-08-16) 2022-08-16 18:07:16 +00:00
Scott Lahteine fab4fb7fbb 🎨 Fix '…if_chain' Uncrustify option 2022-08-16 09:47:51 -05:00
Scott Lahteine b8bd331efd 🔨 Misc. config py updates 2022-08-16 09:42:38 -05:00
Scott Lahteine e42cbe7500 🧑‍💻 Add operator== for C++20 2022-08-16 09:42:38 -05:00
thinkyhead c84f839fc7 [cron] Bump distribution date (2022-08-14) 2022-08-14 12:07:06 +00:00
Scott Lahteine c2874ca809 🔨 Update schema ignores, export value 2022-08-14 03:58:03 -05:00
thinkyhead 4bd4c1f3bc [cron] Bump distribution date (2022-08-12) 2022-08-12 00:22:10 +00:00
Keith Bennett 637bff9982 🧑‍💻 Fix UBL Build Mesh preheat items (#24598)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-08-11 13:35:36 -05:00
thinkyhead 8025117ac0 [cron] Bump distribution date (2022-08-08) 2022-08-08 06:06:06 +00:00
Scott Lahteine 1a1db10634 🔨 Fix 'val' value in schema.py 2022-08-07 20:42:33 -05:00
thinkyhead 5b68a3f79b [cron] Bump distribution date (2022-08-07) 2022-08-07 00:27:50 +00:00
Scott Lahteine d33111b215 🎨 Misc. config cleanup 2022-08-06 18:40:25 -05:00
ExtNeon 53b202cf9d SD Endstop Abort G-Code (#24461) 2022-08-06 18:37:03 -05:00
Scott Lahteine 9c86ca3a19 🔧 Schema catch missing pip 2022-08-06 03:53:21 -05:00
thinkyhead e33dafeb80 [cron] Bump distribution date (2022-08-06) 2022-08-06 06:21:59 +00:00
Ivan Kravets 5b4af52d04 🔨 Fix a PlatformIO debug issue (#24569) 2022-08-06 01:17:46 -05:00
Mark 83320f1052 Bed Distance Sensor (#24554) 2022-08-06 01:14:58 -05:00
Keith Bennett 1dc17aa64c 🩹 Fix AUTO_FAN_PIN sanity check (#24593) 2022-08-06 00:59:56 -05:00
Scott Lahteine 68f13ca9cf 🩹 G0/G1 S seen => seenval 2022-08-06 00:57:37 -05:00
qwertymodo 5a2cc41f9c M150 K – Keep unspecified components (#24315) 2022-08-06 00:18:50 -05:00
J.C. Nelson 7f10f8932e 🔨 Trigorilla Pro disk based update (#24591) 2022-08-06 00:17:27 -05:00
Travis Ziegler 1866e25eef 🩹 Fix LPC176x USB Host Shield (#24588) 2022-08-05 21:37:24 -05:00
Scott Lahteine ec4db07a51 👔 Keep "Needs: More Data" open 2022-08-05 19:40:31 -05:00
Scott Lahteine becef39c19 🩹 Fix CONFIGURATION_EMBEDDING
Followup to b7fd046d59
2022-08-05 19:23:49 -05:00
thinkyhead 24a7ed44b3 [cron] Bump distribution date (2022-08-05) 2022-08-05 00:28:07 +00:00
Ruedi Steinmann a167e2e948 🚸 Laser with only PWM pin (#24345) 2022-08-04 18:00:19 -05:00
Scott Lahteine 59c2fe4561 🧑‍💻 MARLIN_TEST_BUILD – for future use (#24077) 2022-08-04 17:56:09 -05:00
Scott Lahteine b7fd046d59 🔧 Add date, version to Config Export 2022-08-04 17:50:41 -05:00
thinkyhead 4c9146cffd [cron] Bump distribution date (2022-08-04) 2022-08-04 12:08:11 +00:00
Scott Lahteine 1bed10c380 🔧 Config INI, dump options (#24528) 2022-08-04 02:38:15 -05:00
Scott Lahteine 1c4fc4603a 🩹 Fix Malyan M300 with S-Curve compile
Fixes #24548
2022-08-04 01:17:56 -05:00
thinkyhead 35d9920ef8 [cron] Bump distribution date (2022-08-02) 2022-08-02 00:25:38 +00:00
ellensp 1ad036c52f 🔧 Update 644p/1284p Serial 1 sanity check (#24575) 2022-08-01 01:17:57 -05:00
Scott Lahteine 7f72e78520 🔨 Simplify scripts with pathlib (#24574) 2022-08-01 01:14:58 -05:00
thinkyhead 6fe317e385 [cron] Bump distribution date (2022-08-01) 2022-08-01 06:14:22 +00:00
Mike La Spina e5f2daa001 🐛 Fix laser menu enable_state (#24557) 2022-08-01 01:03:45 -05:00
thinkyhead 4ba35d3284 [cron] Bump distribution date (2022-07-31) 2022-07-31 06:05:45 +00:00
InsanityAutomation 91f9e1671f Configurable Switching Nozzle dwell (#24304) 2022-07-30 21:55:32 -05:00
tombrazier 232a104a92 Fix, improve Linear Advance (#24533) 2022-07-30 21:39:48 -05:00
tombrazier aba35ec1af 🩹 Use _MIN/_MAX macros for native compatibility (#24570) 2022-07-30 21:05:16 -05:00
DerAndere d8df9ffd61 🐛 Fix kinematic feedrate (#24568) 2022-07-30 20:49:15 -05:00
Keith Bennett f4b6870ad1 Encoder Noise Filter (#24538) 2022-07-30 19:51:25 -05:00
thinkyhead 8938e4d23c [cron] Bump distribution date (2022-07-30) 2022-07-30 00:29:03 +00:00
lukasradek 0f0edd2e37 📝 README Updates (#24564) 2022-07-29 18:56:59 -05:00
Scott Lahteine 7b0eb2d9f8 🚑️ Fix XYZEval = N not setting E 2022-07-29 18:41:03 -05:00
InsanityAutomation 200a3957d9 idex updates 2022-07-29 09:33:17 -04:00
Scott Lahteine 44c1f2ef6b 🎨 Renum boards.h 2022-07-29 08:01:39 -05:00
Scott Lahteine 9cdfaf693c 🐛 Fix M125 for 9 Axis 2022-07-29 02:14:14 -05:00
thinkyhead 6f7d14def3 [cron] Bump distribution date (2022-07-29) 2022-07-29 06:08:47 +00:00
Scott Lahteine a25f321abb 🔨 Separate bugfix-2.1.x CI Tests 2022-07-29 01:01:34 -05:00
Scott Lahteine 7e5d5330d6 🎨 Misc. 'else' cleanup 2022-07-28 20:53:11 -05:00
thinkyhead b4dcdcc885 [cron] Bump distribution date (2022-07-28) 2022-07-28 06:06:27 +00:00
Ludy 2dff08c86b 🌐 Update German language (#24555) 2022-07-27 21:44:21 -05:00
thinkyhead ca8182344f [cron] Bump distribution date (2022-07-27) 2022-07-27 12:08:06 +00:00
Scott Lahteine 21c48d9f92 🧑‍💻 Update planner/stepper includes 2022-07-27 04:25:37 -05:00
Scott Lahteine 90b5645223 🩹 Fix lcd_preheat compile 2022-07-27 03:52:03 -05:00
Scott Lahteine d816c1b38d 🔨 Update build/CI scripts 2022-07-27 03:52:03 -05:00
Scott Lahteine 8ccbac5317 🎨 PIO scripts cleanup 2022-07-27 03:52:03 -05:00
thinkyhead 223bbc9bca [cron] Bump distribution date (2022-07-26) 2022-07-26 00:25:10 +00:00
Keith Bennett 4ffa2e80e4 📺 Fix TFT Classic UI non-Touchscreen 1024x600 (#24541) 2022-07-25 14:02:37 -05:00
Keith Bennett bc0e4c6d50 🩹 Fix JyersUI include (#24540) 2022-07-25 13:48:59 -05:00
Keith Bennett a29fb8088f 📝 Update MPCTEMP G-Code M306 T (#24535)
M306 simply reports current values. M306 T starts autotune process.
2022-07-25 13:47:07 -05:00
thinkyhead 57ca996c31 [cron] Bump distribution date (2022-07-24) 2022-07-24 00:26:50 +00:00
InsanityAutomation b243c67de2 Update Configuration.h 2022-07-23 17:19:51 -04:00
InsanityAutomation 20d107adf2 Update Creality_DWIN.cpp 2022-07-23 17:19:48 -04:00
Scott Lahteine 8cf4c0515d 🧑‍💻 Keep state for build_all_examples --limit 2022-07-23 01:30:43 -05:00
thinkyhead 2634d0cc52 [cron] Bump distribution date (2022-07-23) 2022-07-23 06:05:41 +00:00
tombrazier deca553e18 🐛 Fix 2d mesh print (#24536) 2022-07-22 23:32:28 -05:00
Scott Lahteine 007af47768 Reinstate JyersUI 2022-07-22 22:09:08 -05:00
Scott Lahteine 8455408382 🧑‍💻 Give the simulator Stepper access 2022-07-22 21:52:14 -05:00
Scott Lahteine 3b4c759872 🧑‍💻 Fix and improve build_all_examples 2022-07-22 21:51:40 -05:00
Scott Lahteine edeea5a6fb 🔨 Minor build script changes 2022-07-22 21:49:29 -05:00
Scott Lahteine 6577fba768 🩹 Fix TFT image PACKED conflict 2022-07-22 21:46:43 -05:00
thinkyhead 7726e26ac0 [cron] Bump distribution date (2022-07-22) 2022-07-22 18:05:45 +00:00
Scott Lahteine c2972899ca 🩹 Fix MAX31865 approximations
Followup to #24407
2022-07-22 12:38:00 -05:00
thinkyhead 58329b066d [cron] Bump distribution date (2022-07-21) 2022-07-21 00:24:51 +00:00
Scott Lahteine 2419a167ee EXP header pin numbers redux (#24525)
Followup to 504fec98
2022-07-20 16:26:33 -05:00
Frederik Kemner 0138cb0552 🩹 Fix gcode.h include (#24527) 2022-07-20 16:25:15 -05:00
InsanityAutomation aacc2d3dc5 🐛 Fix Archim2 USB Hang (#24314) 2022-07-20 03:08:19 -05:00
InsanityAutomation 5e3c15bd39 Update Creality_DWIN.h 2022-07-19 22:32:04 -04:00
thinkyhead 39c5793575 [cron] Bump distribution date (2022-07-20) 2022-07-20 00:21:00 +00:00
InsanityAutomation 258904e86c 🚸 Use Tool 0 for G30 (#24511) 2022-07-19 17:33:49 -05:00
ellensp 57700b4edd 📺 SKR_MINI_SCREEN_ADAPTER for BTT SKR Mini E3 V3 (#24521) 2022-07-19 17:32:08 -05:00
Eduard Sukharev c5b3bacfc9 More ESP32 (MKS TinyBee) tests (#24493) 2022-07-19 17:30:19 -05:00
InsanityAutomation 05cbeef2c6 Update pins_TENLOG_D3_HERO.h 2022-07-19 13:49:17 -04:00
InsanityAutomation 2ab4b9bd13 Update Creality_DWIN.cpp 2022-07-19 13:49:10 -04:00
InsanityAutomation 1cc33f318c Delete binaries 2022-07-19 13:48:59 -04:00
thinkyhead 999f33b1e7 [cron] Bump distribution date (2022-07-19) 2022-07-19 06:07:36 +00:00
Keith Bennett 4b8a1ec86f 📝 Update Contributing Guide (#24320) 2022-07-18 20:14:58 -05:00
InsanityAutomation bb3c5aa186 🚸 Machine-relative Z_STEPPER_ALIGN_XY (#24261)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-07-18 20:12:27 -05:00
Scott Lahteine 5f2908a117 ♻️ Small sound / buzz refactor (#24520) 2022-07-18 19:53:36 -05:00
Scott Lahteine ed2071aabd 🩹 Fix manual move titles (#24518) 2022-07-18 19:52:47 -05:00
InsanityAutomation 78e3a829ba Merge branch 'CrealityDwin2.0_Bleeding' into Tenlog_DWIN 2022-07-18 18:55:53 -04:00
thinkyhead 48e4863cb6 [cron] Bump distribution date (2022-07-18) 2022-07-18 06:06:15 +00:00
tombrazier 3b4a5a1ae8 🩹 Arc/Planner optimization followup (#24509) 2022-07-18 00:51:44 -05:00
Keith Bennett 6d83f7a579 🩹 Fix ProUI + Leveling compile (#24508) 2022-07-17 23:33:23 -05:00
InsanityAutomation 60dc55c3bf Use raw positions for G34 probing to honor M206 offsets 2022-07-17 21:02:39 -04:00
thisiskeithb ef12aa5a6c Fix ProUI with Leveling 2022-07-17 21:01:31 -04:00
Tom Brazier b8f90b2d71 Give correct hints to the planner when drawing arcs 2022-07-17 21:01:01 -04:00
Tom Brazier ee91c915ee Return FLOOR() on the offchance that a float rounding error results in a slightly negative decelerate_steps_float 2022-07-17 21:01:01 -04:00
InsanityAutomation e7fac26f2b Merge branch 'bugfix-2.1.x' into CrealityDwin2.0_Bleeding 2022-07-17 20:58:41 -04:00
InsanityAutomation e66a2fdbf4 Update Configuration.h 2022-07-17 20:43:31 -04:00
InsanityAutomation f96a4a53ef IDEX Support initial commit 2022-07-17 20:43:12 -04:00
InsanityAutomation 096c146f16 Start adding more SKR boards, starting with SKRMiniV3 2022-07-17 20:42:52 -04:00
InsanityAutomation 5111e8d3a3 Update rev number and upstream merge revisions 2022-07-17 20:40:27 -04:00
thinkyhead 23926bb4c2 [cron] Bump distribution date (2022-07-17) 2022-07-17 00:24:12 +00:00
Scott Lahteine 8fd6693d53 🔨 Update mfprep comment 2022-07-16 17:16:37 -05:00
Arthur Masson 9706cd0d7d Polargraph M665 settings (#24401) 2022-07-16 16:58:18 -05:00
Scott Lahteine 504fec9823 🚸 Renumber EXP pins to match schematics/RRF/Klipper 2022-07-16 16:40:32 -05:00
Christophe Huriaux 05a7be7b25 eMotion-Tech eMotronic (Micro-Delta rework) (#24488) 2022-07-16 16:35:40 -05:00
Scott Lahteine fa0ad4b594 🔨 Add mftest --default flag 2022-07-16 16:11:33 -05:00
Scott Lahteine e84de791ab 🩹 Fix TFT tImage struct packing 2022-07-16 16:01:28 -05:00
GHGiampy 9be1de54ae 🩹 Add'l ProUI fixes (#24500) 2022-07-15 20:14:15 -05:00
GHGiampy 147fbd9d39 🔨 Remove log2file monitor filter (#24502) 2022-07-15 20:11:47 -05:00
Nikolay-Po 8a1643587b Steinhart-Hart C Coeff for Custom Thermistor (#24428) 2022-07-15 19:56:15 -05:00
thinkyhead 2f219d6824 [cron] Bump distribution date (2022-07-16) 2022-07-16 00:24:41 +00:00
Scott Lahteine 33d261141a 🔨 Also update rm for settings.o 2022-07-15 18:47:25 -05:00
tombrazier fc0615fbd1 ️ Optimize Planner calculations (#24484) 2022-07-15 18:47:20 -05:00
Keith Bennett 48f0d55097 📝 Update board MCU comments (#24486) 2022-07-15 18:47:20 -05:00
InsanityAutomation 775850a245 Merge branch 'bugfix-2.1.x' into CrealityDwin2.0_Bleeding 2022-07-15 10:37:36 -04:00
GHGiampy 6eef807520 🔨 Fix firmware upload (#24499) 2022-07-15 03:18:57 -05:00
Scott Lahteine 0f5703a837 🔨 PlatformIO "--target upload" == "--target exec" 2022-07-14 21:56:13 -05:00
Scott Lahteine de0706e52c 🔨 Fix Warnings.cpp force-recompile 2022-07-14 21:08:07 -05:00
thinkyhead 7361c03aa4 [cron] Bump distribution date (2022-07-15) 2022-07-15 00:26:29 +00:00
Scott Lahteine e92854b0ed 🔨 Fix and update Makefile
Followup to 89fe5f6d
2022-07-14 02:56:55 -05:00
Keith Bennett 0941e8e869 📌 Pin ESP32SSDP to 1.1.1 (#24489) 2022-07-14 01:31:47 -05:00
Victor Oliveira a61fab7302 Creality3D v4.2.5 / CR200B (#24491) 2022-07-14 01:30:00 -05:00
thinkyhead 0dc46a8d27 [cron] Bump distribution date (2022-07-14) 2022-07-14 06:22:49 +00:00
GHGiampy 30ec700a1d 🩹 Fix ProUI LED compile (#24473) 2022-07-14 00:03:27 -05:00
Miguel Risco-Castillo 8fb54d4621 🚸 Fix and update ProUI (#24477) 2022-07-14 00:00:33 -05:00
toomuchwonder c47575f244 🩹 Fix MKS UI extruder speed (#24476) 2022-07-13 22:17:53 -05:00
Bob Kuhn 3f4e4a4d89 🔥 Drop STM L64** drivers, STEVAL_3DP001V1 (#24427) 2022-07-13 22:16:22 -05:00
Scott Lahteine 2dc543c4f5 🎨 ANY => EITHER 2022-07-13 21:22:53 -05:00
GHGiampy 1d31b6215a 🔨 Abort firmware update on transfer error (#24472) 2022-07-13 20:25:35 -05:00
thinkyhead cee517bc24 [cron] Bump distribution date (2022-07-13) 2022-07-13 00:25:33 +00:00
Scott Lahteine 3c3c9f1a8e 🧑‍💻 Update Mac Sim directions 2022-07-12 13:25:41 -05:00
Scott Lahteine 068624a726 📌 Ask for PlatformIO 6.1.1 or newer (#24435) 2022-07-12 13:02:54 -05:00
thinkyhead ec2864be74 [cron] Bump distribution date (2022-07-12) 2022-07-12 00:22:44 +00:00
Keith Bennett 1bab0243fd MKS Monster8 V2 (#24483) 2022-07-11 13:33:42 -05:00
thinkyhead 57e27339b6 [cron] Bump distribution date (2022-07-11) 2022-07-11 06:06:57 +00:00
Scott Lahteine d60a280bc5 🧑‍💻 Add Sim debug with lldb 2022-07-10 22:00:10 -05:00
thinkyhead 0a7be1ac58 [cron] Bump distribution date (2022-07-10) 2022-07-10 00:26:20 +00:00
Scott Lahteine f101aeb3ec 🐛 Fix SDIO for STM32 (#24470)
Followup to #24271
2022-07-09 11:13:20 -05:00
thinkyhead 62c0ab072c [cron] Bump distribution date (2022-07-09) 2022-07-09 00:18:55 +00:00
Keith Bennett 55b8d1b9d3 🔧 Assert Probe Temp Comp requirements (#24468) 2022-07-08 15:30:03 -05:00
Mike La Spina d924d17209 🐛 Fix laser/fan sync (#24460)
Followup to #22690, 307dfb15
2022-07-08 15:04:14 -05:00
tombrazier 920799e38d ️ Optimize G2-G3 Arcs (#24366) 2022-07-08 14:41:39 -05:00
Jason Smith f65f7a685b 🩹 Fix LCD_BACKLIGHT_TIMEOUT compile (#24463) 2022-07-07 23:43:56 -05:00
thinkyhead 623631286f [cron] Bump distribution date (2022-07-08) 2022-07-08 00:26:22 +00:00
Pauli Jokela abe139192f 🩹 Fix safe homing sanity-check (#24462) 2022-07-07 10:59:23 -05:00
Farva42 5979aab1c7 MAG_MOUNTED_PROBE (#24420)
Co-Authored-By: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-07-06 21:15:18 -05:00
Scott Lahteine f73fad1b2f 🔥 Remove JyersUI (#24459) 2022-07-06 21:15:18 -05:00
Scott Lahteine 1497c40379 📝 Configurations 02010100 (#24458) 2022-07-06 21:15:18 -05:00
thinkyhead 64aff274b4 [cron] Bump distribution date (2022-07-07) 2022-07-06 21:15:18 -05:00
Meilleur Gars 509dfe92d0 🚸 JyersUI updates (#24451) 2022-07-06 21:15:18 -05:00
Christophe Huriaux 58048e7748 🩹 Fix ST7565 LCD contrast init (#24457) 2022-07-06 21:15:18 -05:00
thinkyhead 9805d2bc38 [cron] Bump distribution date (2022-07-06) 2022-07-06 21:15:18 -05:00
Bob Kuhn a88e847295 🐛 Fix Sensorless Probing compile (#24455) 2022-07-06 21:15:18 -05:00
Eduard Sukharev 55417b28fe 🐛 Fix MKS TinyBee compile (#24454) 2022-07-06 21:15:18 -05:00
Mike La Spina 6a67ad4e4a ️ Fix and improve Inline Laser Power (#22690) 2022-07-06 21:15:18 -05:00
thinkyhead 132c37a651 [cron] Bump distribution date (2022-07-05) 2022-07-05 00:21:32 +00:00
Keith Bennett e08b293b54 BigTreeTech SKR SE BX V3.0 (#24449)
SKR SE BX V3.0 removes the Reverse Driver Protection feature.
2022-07-04 00:31:06 -05:00
Scott Lahteine f39e2bc1e4 🩹 Followup for lchar_t 2022-07-04 00:30:17 -05:00
EvilGremlin e94fa7d5dc 🔨 Fix OpenBLT encode; no-bootloader envs (#24446) 2022-07-03 20:49:23 -05:00
thinkyhead 954b4493d2 [cron] Bump distribution date (2022-07-04) 2022-07-04 00:26:42 +00:00
Keith Bennett fc287b44da 🚸 MPCTEMP: Home before cooling (#24434) 2022-07-03 11:08:43 -05:00
Scott Lahteine 54e7b933cd ♻️ Encapsulate PID in class (#24389) 2022-07-03 10:32:47 -05:00
Keith Bennett 9baeeedd69 🩹 Fix MKS TinyBee ADC Vref (#24432) 2022-07-03 10:08:40 -05:00
Victor Oliveira 3826b13ab1 🔨 Disable stack protector on macOS simulator (#24443) 2022-07-02 19:31:27 -05:00
thinkyhead b8741a59df [cron] Bump distribution date (2022-07-03) 2022-07-03 00:24:56 +00:00
Scott Lahteine 2b6ce3006e 🩹 Followup for lchar_t 2022-07-02 18:33:06 -05:00
Scott Lahteine d956a6ba00 🩹 Followup for lchar_t 2022-07-01 21:14:56 -05:00
Scott Lahteine 9c376f120c 🩹 Remove obsolete split_move 2022-07-01 20:23:01 -05:00
thinkyhead b1bb307dab [cron] Bump distribution date (2022-07-02) 2022-07-02 00:24:49 +00:00
Scott Lahteine cb4a79173b 🩹 Remove poison wchar_t macro 2022-07-01 18:13:38 -05:00
Scott Lahteine 35dbc286bd ✏️ Creality test followup 2022-07-01 07:53:58 -05:00
Moonglow c7923c0397 🐛 Fix M149 (#24430) 2022-06-30 21:51:55 -05:00
tombrazier a811005ab2 🚸 Vertical Max7219::quantity in portrait orientation (#24415) 2022-06-30 21:07:36 -05:00
Scott Lahteine 71368b5fa5 Update path to Ender-3 S1 configs 2022-06-30 20:57:37 -05:00
thinkyhead f76025b79c [cron] Bump distribution date (2022-07-01) 2022-07-01 00:25:21 +00:00
Scott Lahteine f5488f96cc 📝 Index Mobo Rev03 => Opulo Lumen Rev3 2022-06-30 17:31:45 -05:00
thinkyhead 4fb1c42500 [cron] Bump distribution date (2022-06-30) 2022-06-30 00:21:32 +00:00
Scott Lahteine d9ec3795fb 🩹 Fix memset block warning 2022-06-29 17:14:23 -05:00
Keith Bennett cc51bc29e1 🐛 Fix Axis Homing (#24425)
Followup to 4520a51
2022-06-29 08:24:22 -05:00
thinkyhead 914501f67e [cron] Bump distribution date (2022-06-29) 2022-06-29 00:21:53 +00:00
John Lagonikas 31d286750c 🐛 Fix MAX31865 PT1000 normalization (#24407)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-06-28 17:53:05 -05:00
thinkyhead d6fc3d2b69 [cron] Bump distribution date (2022-06-28) 2022-06-28 06:05:50 +00:00
Scott Lahteine 93ffd57383 ♻️ reset_acceleration_rates => refresh_… 2022-06-27 21:28:04 -05:00
Scott Lahteine 307dfb15ca ♻️ Planner flags refactor 2022-06-27 21:28:04 -05:00
Scott Lahteine 884f7c7db9 📝 Note about UBL bad splits 2022-06-27 21:28:04 -05:00
thinkyhead 95b70233f2 [cron] Bump distribution date (2022-06-27) 2022-06-27 00:24:23 +00:00
Scott Lahteine 76d784f75f 🎨 Misc. shorthand operators 2022-06-26 10:01:22 -05:00
Scott Lahteine d8545551fe 🐛 Fix Manual Move axis selection (#24404) 2022-06-26 06:48:24 -05:00
Shlee b46191715d 📝 Add STM32F4 example, Ruby (#24399) 2022-06-26 01:56:57 -05:00
Giuliano Zaro dc5c5bdf82 🌐 Update Italian language (#24398) 2022-06-26 01:52:19 -05:00
Roman Moravčík d976f291fd 🌐 Update Slovak language (#24397) 2022-06-26 01:51:16 -05:00
sgparry 1e66cc39c2 🩹 Fix LCD contrast with K8800 board 2022-06-26 01:49:57 -05:00
tombrazier 2266f1ad67 MAX7219 idle profiler (#24375) 2022-06-26 00:38:23 -05:00
thinkyhead a0125c85d4 [cron] Bump distribution date (2022-06-26) 2022-06-26 00:26:54 +00:00
Scott Lahteine 546b3066c3 🌐 Drop unused delta strings 2022-06-24 22:07:19 -05:00
thinkyhead 0aebcc4ded [cron] Bump distribution date (2022-06-25) 2022-06-25 00:22:43 +00:00
Bob Kuhn 12a869e2ad 🐛 Fix Lerdge build / encrypt (#24391)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-06-23 23:59:50 -05:00
thinkyhead 645c7dc370 [cron] Bump distribution date (2022-06-24) 2022-06-24 00:21:33 +00:00
Victor Oliveira 1a79537645 Classic UI BIQU BX (#24387) 2022-06-23 04:18:36 -05:00
thinkyhead 6355798bfd [cron] Bump distribution date (2022-06-23) 2022-06-23 00:18:49 +00:00
ellensp 58d1b1be28 🩹 Fix DGUS (MKS) compile (#24378) 2022-06-22 05:08:24 -05:00
Victor Oliveira 3c13be165b 🚑️ Fix BIQU BX touch freeze (#24383) 2022-06-22 03:33:03 -05:00
ellensp 8c3ba69c98 🐛 Fix M423 invocation (#24360)
Followup to #23745
2022-06-21 23:14:05 -05:00
tombrazier 757156de72 🩹 LCD strings followup, fix warning (#24328) 2022-06-21 21:45:22 -05:00
InsanityAutomation 757d66e2c5 🐛 Resolve DUE Servo pulse issue (#24305)
Co-authored-by: sjasonsmith <20053467+sjasonsmith@users.noreply.github.com>
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-06-21 21:09:24 -05:00
DerAndere b06e378703 FOAMCUTTER_XYUV (for RAMPS) (#24325)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2022-06-21 21:07:17 -05:00
thinkyhead 90d9f1acc9 [cron] Bump distribution date (2022-06-22) 2022-06-22 00:25:14 +00:00
ellensp 22f0496c9b 🚑️ Fix SD mount bug (#24319)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2022-06-21 17:33:25 -05:00
thinkyhead d0e9ff0e29 [cron] Bump distribution date (2022-06-21) 2022-06-21 06:05:48 +00:00
Scott Lahteine 975c8f4b77 🎨 Simplify move menus with substitution 2022-06-20 21:22:04 -05:00
Scott Lahteine 4520a51bbe 🎨 Use MAP for home axis items 2022-06-20 21:21:48 -05:00
Scott Lahteine 432c879328 🧑‍💻 Fix STATIC_ITEM_N arg order 2022-06-20 21:21:20 -05:00
Scott Lahteine 6cbd7a48d1 🎨 Fix comments, formatting 2022-06-20 21:20:42 -05:00
Scott Lahteine 751c88aa5b 🩹 M919 9-axis update 2022-06-20 21:08:31 -05:00
thinkyhead 76f1f9d3b3 [cron] Bump distribution date (2022-06-18) 2022-06-18 06:07:14 +00:00
luzpaz a526c3d77a 🌐 Fix LCD string, typos (#24324) 2022-06-17 23:19:01 -05:00
tombrazier 1a6a604310 🐛 Fix G2/G3 Arcs stutter / JD speed (#24362) 2022-06-17 23:17:12 -05:00
thinkyhead 0a3c42a87c [cron] Bump distribution date (2022-06-15) 2022-06-15 12:07:28 +00:00
ellensp 70eac0fe4f 👷 CI test without src filter (emulate Arduino) (#24335) 2022-06-15 03:02:32 -05:00
thinkyhead 873f6c0b63 [cron] Bump distribution date (2022-06-14) 2022-06-14 06:05:52 +00:00
Keith Bennett e1b22a5c75 👷 Use Biqu BX for CI test (#24331) 2022-06-13 21:04:49 -05:00
Scott Lahteine 640282b8dc 🧑‍💻 Apply F() to some LCD / TFT strings
Followup to #24228
2022-06-13 20:43:23 -05:00
ellensp 0ff3018fd2 🩹 Fix missing ProUI cpp wrapper (#24313) 2022-06-13 20:38:19 -05:00
thinkyhead 9c6e0428af [cron] Bump distribution date (2022-06-11) 2022-06-11 06:06:31 +00:00
ellensp 43e9fe7f88 🐛 Fix JGAurora A5S A1 build (#24326) 2022-06-11 00:03:20 -05:00
Scott Lahteine 20dea22091 👔 Fewer checkboxes in Bug Report 2022-06-10 23:59:07 -05:00
Steven Haigh ee90ae2c87 🩹 Fix ProUI compile (#24310)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-06-10 21:08:55 -05:00
thinkyhead fb76ce841b [cron] Bump distribution date (2022-06-09) 2022-06-09 06:07:54 +00:00
Scott Lahteine 0ca33429b6 🧑‍💻 Misc. servo code cleanup 2022-06-09 00:51:47 -05:00
Scott Lahteine e4e6abe5af 🧑‍💻 Remove servo macros 2022-06-09 00:51:08 -05:00
thinkyhead 76a0cab782 [cron] Bump distribution date (2022-06-08) 2022-06-08 00:20:44 +00:00
ellensp 3e9fb34892 🩹 Media Change followup (#24302)
Followup to #24015
2022-06-07 01:59:21 -05:00
Scott Lahteine 9e73fd7149 👔 Update mfconfig import 2022-06-06 23:38:06 -05:00
thinkyhead 371ac49fc1 [cron] Bump distribution date (2022-06-07) 2022-06-07 00:30:16 +00:00
tombrazier f6e123430f 🩹 Fix Mesh Leveling + Debug compile (#24297) 2022-06-06 19:23:55 -05:00
lujios 3b142e531c 🩹 Fix G33 Delta Sensorless Probing compile (#24291) 2022-06-06 19:22:17 -05:00
Scott Lahteine d355ad04a0 👔 Fix and comment use_example_configs 2022-06-06 19:06:03 -05:00
thinkyhead a7a730f811 [cron] Bump distribution date (2022-06-06) 2022-06-06 06:06:26 +00:00
Miguel Risco-Castillo c9a9b25d41 🚸 ProUI G-code preview, PID plot (#24282) 2022-06-06 00:09:43 -05:00
Scott Lahteine 41a9dea149 👔 Update Marlin actions for 2.1.x 2022-06-06 00:09:43 -05:00
thinkyhead ec7cc59818 [cron] Bump distribution date (2022-06-05) 2022-06-05 00:25:04 +00:00
John Robertson ca06c6eab9 ️ PWM for ESP32 I2S expander (#24193) 2022-06-04 01:26:08 -05:00
Scott Lahteine d08223429b 🔖 Moving to bugfix-2.1.x 2022-06-04 01:22:02 -05:00
Scott Lahteine 8aca38351c 🧑‍💻 Extend LCD string substitution (#24278) 2022-06-03 22:56:38 -05:00
Scott Lahteine 9c872b214c 🐛 Fix min/max temp evaluation
Fixes #24257
2022-06-03 22:06:32 -05:00
Scott Lahteine 3522d5376c 🩹 Wrap SENSORLESS_STALLGUARD_DELAY 2022-06-03 20:55:15 -05:00
thinkyhead 2c0b8b52d8 [cron] Bump distribution date (2022-06-04) 2022-06-04 00:22:33 +00:00
Scott Lahteine 384ff264d7 🐛 Fix M203 report 2022-06-03 18:39:43 -05:00
Scott Lahteine 2b3ba02f09 🔧 LEVEL_BED_CORNERS => LCD_BED_TRAMMING 2022-06-03 18:16:43 -05:00
Scott Lahteine bcd9bb9628 🩹 Fix const warning
Followup to c16ae2451d
2022-06-03 01:31:01 -05:00
lujios 41f73cb457 ️ Improve Sensorless homing/probing accuracy for G28, G33, M48 (#24220)
Co-authored-by: Robby Candra <robbycandra.mail@gmail.com>
Co-authored-by: ellensp <530024+ellensp@users.noreply.github.com>
2022-06-03 00:19:25 -05:00
Tanguy Pruvot 845e2f6fb7 Use default null args in select_screen 2022-06-02 20:12:24 -05:00
Tanguy Pruvot c9b97b8d64 🚑️ Fix SDIO Init bootloop on STM32F1 (#24275) 2022-06-02 19:23:07 -05:00
thinkyhead 833ea4ec29 [cron] Bump distribution date (2022-06-03) 2022-06-03 00:18:25 +00:00
InsanityAutomation 8401c6d267 Allow Portrait display with no leveling 2022-06-02 09:17:06 -04:00
Keith Bennett 12aded95dc 💚 SKR V3 case-sensitive fs fix (#24272) 2022-06-02 07:14:38 -05:00
thinkyhead 0e8e735e4c [cron] Bump distribution date (2022-06-02) 2022-06-02 12:07:36 +00:00
ellensp 49db4ef5e4 🩹 Fix G60/G61 debug code (#24231) 2022-06-02 04:28:07 -05:00
ellensp 08c51a405a 🐛 Init Stepper SPI before PSU Control (#24269) 2022-06-02 04:22:09 -05:00
BIGTREETECH eda61a2cbd BigTreeTech SKR3 - STM32H743 (#24271)
Co-authored-by: Alan.Ma <alansayyeah@gmail.com>
2022-06-02 04:02:06 -05:00
bryan065 f6b425613e 🚸 Custom Menu Items for JyersUI (#24270) 2022-06-02 03:51:39 -05:00
ledzepman71 e260d90d21 📌 Tenlog PSU pin (#24266) 2022-06-02 03:49:48 -05:00
thinkyhead 30a7c4ca52 [cron] Bump distribution date (2022-06-01) 2022-06-01 00:25:07 +00:00
John Robertson 85c0875db2 Laser Safety Timeout (#24189) 2022-05-31 17:09:44 -05:00
Keith Bennett 6f3d7d864f 👔 Configs required to submit a Bug Report (#24256) 2022-05-31 16:28:01 -05:00
thinkyhead 3d70aca6e8 [cron] Bump distribution date (2022-05-31) 2022-05-31 18:24:10 +00:00
Scott Lahteine 58ce5182c2 🎨 Fix spelling, whitespace 2022-05-31 12:44:30 -05:00
ellensp 7dd34848b6 🩹 Fix EXTRUDERS 0 manual move compile (#24255)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2022-05-31 12:21:59 -05:00
kisslorand 1a555b3812 Fix axis string 'N' (#24259)
Followup to 167672d
2022-05-31 12:05:57 -05:00
tombrazier ea7bebb568 💥 More M306 M => M306 H (#24258)
Followup to #24253
2022-05-31 12:01:59 -05:00
InsanityAutomation bdeceae5b4 Update temp calls to honor active tool 2022-05-21 13:37:51 -04:00
InsanityAutomation c6ace0d4a5 tweaks 2022-05-21 13:19:16 -04:00
InsanityAutomation e9c9f07b8b Initial config import from luxuri and first pass sweep for issues 2022-05-21 12:55:02 -04:00
InsanityAutomation 8386ae0f4d generalize, and prep 2022-05-17 21:13:04 -04:00
InsanityAutomation 1c194d4e16 Update CR6E3 Touchscreen 2022-05-16 17:41:37 -04:00
InsanityAutomation fb5ee94263 New bins 2022-05-15 19:35:20 -04:00
InsanityAutomation 7bfcba1cf7 Update Configuration.h 2022-05-15 11:00:11 -04:00
InsanityAutomation 147cda7c1d Add E3S1_F4 2022-05-14 20:10:09 -04:00
InsanityAutomation 6016ef7ba1 Update Configuration_adv.h 2022-05-13 20:52:28 -04:00
InsanityAutomation a82e3147fd Adjust startup delay for fast machines with higher res displays 2022-05-13 19:54:23 -04:00
Scott Lahteine fa73edd76a Add BOARD_CREALITY_V24S1_301F4
Co-Authored-By: Miguel Risco-Castillo <mriscoc@users.noreply.github.com>
2022-05-13 11:11:41 -04:00
InsanityAutomation 591a42cdd0 Update G29.cpp 2022-05-08 18:01:38 -04:00
InsanityAutomation 6b74e0f142 Update pins_CREALITY_V25S1.h 2022-05-08 18:01:34 -04:00
InsanityAutomation 4cdec14648 Update Configuration_adv.h 2022-05-08 18:01:23 -04:00
InsanityAutomation e4e9f01bf0 More smart pro tweaks 2022-05-08 17:33:13 -04:00
InsanityAutomation 01ef9afdd0 CR10Smart Pro Configs 2022-05-08 14:41:54 -04:00
InsanityAutomation 21f8741982 Add Creality CR10SmartPro Support 2022-05-08 14:41:27 -04:00
InsanityAutomation fa80adf92c Update cr10 max builds to 470mm 2022-05-07 11:45:43 -04:00
InsanityAutomation 9e4cce23d4 Update Configuration.h 2022-05-04 15:07:04 -04:00
InsanityAutomation 868967d08c Updated bins compressed 2022-05-01 14:53:00 -04:00
InsanityAutomation 48dc25407e Update Creality_DWIN.cpp 2022-05-01 12:35:05 -04:00
InsanityAutomation b88833a1cd More pause tweaks 2022-04-30 21:29:39 -04:00
InsanityAutomation 391a07b2bf Pause improvements 2022-04-30 16:33:19 -04:00
InsanityAutomation c8faaca998 Update Creality_DWIN.cpp 2022-04-30 12:02:26 -04:00
InsanityAutomation 01ab324a12 advanced pause improvements 2022-04-30 10:22:52 -04:00
InsanityAutomation 00152be921 bin revision 2022-04-28 08:14:04 -04:00
InsanityAutomation be5078f8ab Update Configuration.h 2022-04-26 23:49:21 -04:00
InsanityAutomation cacdb2d818 update startup logo 2022-04-26 23:26:51 -04:00
InsanityAutomation 3553ef4c00 Set default runout mode to lerge and sprite to dd retraction 2022-04-26 23:24:16 -04:00
InsanityAutomation 64cf8316e1 Update dgus_creality_lcd.cpp 2022-04-26 22:58:30 -04:00
InsanityAutomation b6ad2db3a9 Add binary relocate function to avoid random pio purging 2022-04-26 14:18:13 -04:00
InsanityAutomation 47222bcdde Update platformio.ini 2022-04-25 11:10:49 -04:00
InsanityAutomation 22f2a8baa7 Add updated binaries 2022-04-25 11:07:52 -04:00
InsanityAutomation 08b92c3d1c Bump version, tweak accels 2022-04-23 10:48:43 -04:00
InsanityAutomation 474111f1c9 Minor touchups from last rebase 2022-04-22 09:11:22 -04:00
InsanityAutomation b35125e1a2 Update Configuration_adv.h 2022-04-20 17:33:48 -04:00
InsanityAutomation 3a1646b2e8 Update Configuration_adv.h 2022-04-18 14:50:05 -04:00
InsanityAutomation b99b6250ee Update Configuration.h 2022-04-18 14:48:31 -04:00
InsanityAutomation 947ee4560e E2Pro no runout stock 2022-04-15 16:09:23 -04:00
InsanityAutomation 11a0186b35 Update for extui recent changes 2022-04-15 16:08:29 -04:00
InsanityAutomation db74ac3ce1 Disable 100x multiplier for dwin marlinui 2022-04-15 13:13:46 -04:00
InsanityAutomation 2b46761060 minor tweaks 2022-04-15 13:03:32 -04:00
InsanityAutomation 97e1768ffe Remove extra screen refreshes and obsolete box 2022-04-09 17:16:56 -04:00
InsanityAutomation 8e83784656 Update dwin.cpp 2022-04-08 20:05:10 -04:00
InsanityAutomation 73b0c506e4 Update Configuration.h 2022-04-06 12:48:03 -04:00
InsanityAutomation 4678bb49b9 Update Creality_DWIN.cpp 2022-04-03 14:54:03 -04:00
InsanityAutomation f581502cc4 M591Fixes 2022-04-03 14:53:59 -04:00
InsanityAutomation dfc3007326 Merge branch 'Implement-M591-Configurable-Runout-Sensors' into CrealityDwin2.0_Bleeding 2022-04-03 13:24:30 -04:00
InsanityAutomation 7f691fc5c1 Bump version 2022-04-03 11:33:31 -04:00
InsanityAutomation 01e7a5cb76 Add Ender 2 Pro 2022-04-03 11:28:20 -04:00
InsanityAutomation fa72415812 Add CR10SmartPro First draft
Guess on BLTouch pins as HW not available atm
2022-04-03 10:57:55 -04:00
InsanityAutomation 0b6ecbd553 Merge branch 'bugfix-2.0.x' into Implement-M591-Configurable-Runout-Sensors 2022-04-03 10:33:18 -04:00
InsanityAutomation de6246f826 Merge branch 'Implement-M591-Configurable-Runout-Sensors' of https://github.com/InsanityAutomation/Marlin into Implement-M591-Configurable-Runout-Sensors 2022-04-03 10:32:57 -04:00
Scott Lahteine e813742ae0 Merge branch 'bugfix-2.0.x' into pr/23899 2022-03-29 03:25:51 -05:00
Scott Lahteine 46c8204990 Extend enum 2022-03-27 19:46:47 -05:00
Scott Lahteine bdfe4ca4d1 Simplify menu items, use enum, adjust settings 2022-03-26 21:10:16 -05:00
InsanityAutomation adabc63617 V2 tweaks 2022-03-26 20:08:37 -04:00
Scott Lahteine 6741f5182d Simplify menu items, use enum 2022-03-26 18:54:02 -05:00
InsanityAutomation d8508c5110 Update Configuration.h 2022-03-26 19:46:50 -04:00
InsanityAutomation dae60f4b29 V2 S1 UI Change 2022-03-26 19:46:26 -04:00
InsanityAutomation e16655a011 Fix char overlap V2S1 2022-03-26 19:46:14 -04:00
InsanityAutomation 0d576bb529 Fix marlinui status scroll 2022-03-25 21:53:36 -04:00
InsanityAutomation 61c3d122c9 Fix marlinUI V2 display bootscreen reloading cached BG 2022-03-25 16:39:46 -04:00
InsanityAutomation 123086d14c Fix non probe z offset adjustment 2022-03-25 14:05:55 -04:00
InsanityAutomation 10fd6df83d Update Configuration.h 2022-03-23 09:48:01 -04:00
InsanityAutomation d40750cde8 Non-BLT CR5 2022-03-19 11:49:40 -04:00
InsanityAutomation 489b75ae3c Update menu_advanced.cpp 2022-03-15 12:47:14 -04:00
InsanityAutomation 378fc12628 Add runout menu, small fixes 2022-03-15 12:28:19 -04:00
InsanityAutomation 0cedad36d1 Reorganize config options, remove obsolete option. 2022-03-14 09:29:53 -04:00
Scott Lahteine 07b2480d30 glue for CI test 2022-03-14 00:37:41 -05:00
Scott Lahteine dd88eb56ee Allow user to change 2022-03-14 00:37:41 -05:00
Scott Lahteine fc77afd93e misc. cleanup 2022-03-14 00:37:41 -05:00
InsanityAutomation 26af3e70bc Remove obsolete state from tests 2022-03-13 19:51:12 -04:00
InsanityAutomation 0c15e8e751 Fix up pause trigger, adjust config options minor changes 2022-03-13 18:57:24 -04:00
InsanityAutomation 639a2dc0b3 M591 Cleanup and tweaks 2022-03-13 13:48:33 -04:00
InsanityAutomation 91a094d8cb Update Configuration.h 2022-03-12 15:55:57 -05:00
InsanityAutomation 66efa0b09b Initial commit - Flexible Runout Configuration M591 2022-03-12 15:54:07 -05:00
InsanityAutomation e1c5f8418d Update Configuration.h 2022-03-06 18:12:11 -05:00
InsanityAutomation 4a0769ec1b allows z offset to work for babystep total on machines without probe 2022-03-06 18:11:43 -05:00
InsanityAutomation 991f21c74c Faster lcd buffer processing 2022-03-04 21:40:55 -05:00
InsanityAutomation 9ebf358b8a Default livemove to true 2022-03-04 21:40:38 -05:00
InsanityAutomation 70c26fd4ca S1 and E3 Touch Updates 2022-03-02 12:37:18 -05:00
InsanityAutomation 9e66a87122 Update .gitignore 2022-02-28 08:49:44 -05:00
InsanityAutomation f177bd32eb Variant and Version Info 2022-02-27 21:07:56 -05:00
InsanityAutomation 8df38008ef Add S1 screen support 2022-02-27 21:02:21 -05:00
InsanityAutomation ec5d623c93 Update README.md 2022-02-27 21:00:27 -05:00
InsanityAutomation aca3184ce4 Add S1 Support 2022-02-27 21:00:23 -05:00
InsanityAutomation 7cda9dbf84 Add Blank BG screen to E3V2 for S1 screen compat 2022-02-27 21:00:04 -05:00
InsanityAutomation 24e8499ef6 Create firmware_Ender7_BLT_DW7.4.5.bin.zip 2022-02-26 18:43:32 -05:00
InsanityAutomation 2abf5f0ad8 Add CR5Pro 2022-02-26 16:00:13 -05:00
InsanityAutomation f6a48f82aa Update README.md 2022-02-25 10:30:31 -05:00
InsanityAutomation c0f0964329 Update README.md 2022-02-25 10:17:42 -05:00
InsanityAutomation 0322dfd76e Update README.md 2022-02-25 10:08:34 -05:00
InsanityAutomation bd967ba7a2 Add smart binary 2022-02-23 11:21:57 -05:00
InsanityAutomation cc1a4f5f70 Update binaries 2022-02-19 19:15:25 -05:00
InsanityAutomation d43c557404 Readme and DWIN updates 2022-02-19 12:23:30 -05:00
InsanityAutomation c4ba4600dc Update Configuration_adv.h 2022-02-18 15:13:37 -05:00
InsanityAutomation 0bbc122475 Trim out processing page to save space 2022-02-15 09:51:13 -05:00
InsanityAutomation 1868db82aa Cleanup 2022-02-13 14:57:45 -05:00
InsanityAutomation 23091e566b fix overlapping platforms 2022-02-12 13:37:07 -05:00
InsanityAutomation 0ac94f6a2f Platform tweaks 2022-02-11 22:11:56 -05:00
InsanityAutomation 3d804bd314 Block LCD Reinit for ExtUI 2022-02-11 22:11:31 -05:00
InsanityAutomation e0de16f3a8 UpdateVersion 2022-02-06 12:01:38 -05:00
InsanityAutomation 7421731eed ReviseENVsToRC 2022-02-06 12:01:28 -05:00
InsanityAutomation 43bc8c3865 AddToggles 2022-02-06 12:01:08 -05:00
InsanityAutomation c13d290934 FixMapleHalCompileErrors 2022-02-06 12:00:42 -05:00
InsanityAutomation 49eb72816e AddGenericMapleRC_ENV 2022-02-06 12:00:17 -05:00
InsanityAutomation ec0c72e2f0 Merge branch 'bugfix-2.0.x' into CrealityDwin2.0_Bleeding 2022-02-05 11:04:35 -05:00
InsanityAutomation ff221cdacd Update Creality_DWIN.h 2022-02-05 10:25:04 -05:00
InsanityAutomation af177e719e Add PLR to ext_ui 2022-01-13 17:53:02 -05:00
InsanityAutomation c713b14143 CR30 and Smart improvements 2022-01-13 08:34:53 -05:00
InsanityAutomation 44c21f477e Update Creality_DWIN.cpp 2022-01-08 16:32:53 -05:00
InsanityAutomation 9f2e0238df Add ENV 2022-01-08 16:32:53 -05:00
InsanityAutomation fd72d771e6 Update Configuration.h 2022-01-08 16:32:53 -05:00
InsanityAutomation dc1a4080db Update Creality_DWIN.cpp 2022-01-03 11:40:33 -05:00
InsanityAutomation 1e3cd5ca8b Add ENV 2022-01-03 11:05:57 -05:00
InsanityAutomation 09f1c97c6e move to maple again 2022-01-03 10:50:14 -05:00
InsanityAutomation 13b16b4062 Add CR10Smart, CR6 fix 2022-01-03 10:47:11 -05:00
InsanityAutomation 92a7943d4e Update README.md 2021-11-26 13:27:30 -05:00
InsanityAutomation 448abd5de2 Fix stale screen build 2021-11-22 11:22:43 -05:00
InsanityAutomation 37f4924ac1 Fixed binaries 2021-11-21 15:31:30 -05:00
InsanityAutomation 1c269eda1e Merge branch 'CrealityDwin2.0_Bleeding' of https://github.com/InsanityAutomation/Marlin into CrealityDwin2.0_Bleeding 2021-11-21 15:28:50 -05:00
InsanityAutomation d8573b97eb Update Creality_DWIN.cpp 2021-11-21 15:27:08 -05:00
InsanityAutomation 5a94a8e1c0 Update Configuration.h 2021-11-20 12:55:37 -05:00
InsanityAutomation e067dc4713 Updated binaries 2021-11-17 16:41:08 -05:00
InsanityAutomation 1f6da0c1b4 Add ender 5 32b envs 2021-11-17 09:04:14 -05:00
InsanityAutomation 8bb4484af5 clear old binaries, add 32 bit filament runout envs 2021-11-17 08:59:33 -05:00
InsanityAutomation 6cc524dd50 Update Ender3V2_Dwin_TM3DV2.7z 2021-11-14 14:20:50 -05:00
InsanityAutomation 728539bb23 Revert "Revert "v2 jyers update""
This reverts commit a67b346523.
2021-11-14 14:11:29 -05:00
InsanityAutomation a67b346523 Revert "v2 jyers update"
This reverts commit a3e960c251.
2021-11-14 12:15:11 -05:00
InsanityAutomation 4b767d7623 bump version 2021-11-14 12:15:02 -05:00
InsanityAutomation 7e149b2532 Build script indentation fixes 2021-11-13 09:45:02 -05:00
InsanityAutomation 3b7b4b48d8 tm3d progress bar location 2021-11-13 09:44:49 -05:00
InsanityAutomation 49fd9bdb77 Merge branch 'bugfix-2.0.x' into CrealityDwin2.0_Bleeding 2021-11-11 21:23:58 -05:00
InsanityAutomation 5bcf64f17c Merge branch 'bugfix-2.0.x' of https://github.com/MarlinFirmware/Marlin into bugfix-2.0.x 2021-11-11 21:17:23 -05:00
InsanityAutomation a3e960c251 v2 jyers update 2021-11-11 21:17:16 -05:00
InsanityAutomation a7696f32fd Tweak accel multipliers, move to stm32 common lib 2021-11-07 10:29:11 -05:00
tome9111991 b4d3f03a26 🐛 Fix SHOW_REMAINING_TIME option for JyersUI (#22999) 2021-11-04 17:28:53 -04:00
ellensp 42c6324f68 🐛 Fix E3V2 width/height defines (#22994) 2021-11-04 17:28:04 -04:00
Dennis 4d15eb94e4 🐛 Fix JyersUI current positions (scaling) (#23005) 2021-11-04 17:27:16 -04:00
InsanityAutomation 3d688fc324 Merge branch 'bugfix-2.0.x' of https://github.com/MarlinFirmware/Marlin into bugfix-2.0.x 2021-11-04 17:25:43 -04:00
InsanityAutomation 58e54f6746 Ender 7 tuning, sermoon fixes, jyersui fixes, finish jerk/accel dwin 2021-11-04 17:25:36 -04:00
InsanityAutomation bf7a48ed31 Update Creality_DWIN.cpp 2021-10-30 10:40:52 -04:00
InsanityAutomation dc52c64424 Update Configuration.h 2021-10-30 10:40:49 -04:00
InsanityAutomation 0e29cd8cc5 Update Configuration.h 2021-10-26 18:38:35 -04:00
InsanityAutomation 844fe9b24d Start jerk/accel/travel support 2021-10-25 19:21:18 -04:00
Keith Bennett 2b19dc3232 Octopus Pro V1.0 with STM32F429ZGT6 (#23008) 2021-10-25 01:14:02 -05:00
ellensp f41c78d178 🐛 Fix børken E_DUAL_STEPPER_DRIVERS (#23017) 2021-10-25 01:12:07 -05:00
Miguel Risco-Castillo 6270df927e 🐛 Fix Emder-3 V2 Enhanced SetFlow (#23016) 2021-10-25 01:08:15 -05:00
InsanityAutomation cbcc1bc084 DWINos4 changes 2021-10-23 17:43:40 -04:00
InsanityAutomation ab1d124bf9 Ender 7 preliminary support 2021-10-23 17:43:12 -04:00
InsanityAutomation 5b7215df43 Ender 7 Mainboard Support 2021-10-23 17:42:12 -04:00
InsanityAutomation 44aaa4f042 Update README.md 2021-10-23 08:53:36 -04:00
InsanityAutomation afef0b9dec Update Configuration.h 2021-10-20 10:04:58 -04:00
InsanityAutomation f7767be8a5 Updated binaries 2021-10-18 18:11:03 -04:00
InsanityAutomation 2f5e28dd66 Update Configuration.h 2021-10-18 09:14:29 -04:00
InsanityAutomation 0397d384d2 Fix JyersUI ZOffset Multiplication 2021-10-17 20:02:13 -04:00
InsanityAutomation 212dfb4050 Update platformio.ini 2021-10-17 18:38:11 -04:00
InsanityAutomation 59ff070dba V2 Display Standalone 2021-10-16 19:44:55 -04:00
InsanityAutomation c7af93b39f Update Configuration.h 2021-10-16 18:30:28 -04:00
InsanityAutomation 794ea13ae8 Update Configuration_adv.h 2021-10-16 18:29:14 -04:00
InsanityAutomation 227f014fb5 Update PageHandlers.cpp 2021-10-16 18:29:11 -04:00
InsanityAutomation e22408f3f9 Update DGUSScreenHandler.cpp 2021-10-16 18:29:09 -04:00
InsanityAutomation 9e8e1c1113 CR30 Tweaks 2021-10-16 15:38:32 -04:00
InsanityAutomation 1427290e84 Message fixes, V2 UI Positioning 2021-10-16 12:00:30 -04:00
InsanityAutomation 1c7b232d05 Fix Tool Change Park 2021-10-16 10:44:59 -04:00
InsanityAutomation 005dad193a Updated screen archives 2021-10-15 11:24:18 -04:00
InsanityAutomation 88f502cac5 Bump revision, Add CR30 2021-10-15 10:53:09 -04:00
InsanityAutomation 0cc286757b Update Configuration.h 2021-10-15 09:48:58 -04:00
InsanityAutomation d843e2be2b Merge branch 'BLTouch-HS-Mode-EEPROM' into CrealityDwin2.0_Bleeding 2021-10-15 08:58:45 -04:00
Scott Lahteine cede5b22c9 Use BLTOUCH_HS_MODE for default + editable 2021-10-14 20:35:36 -05:00
Scott Lahteine 43f996d68a Rename bltouch_last_written_mode 2021-10-14 20:04:42 -05:00
Scott Lahteine bd426d40cd Tweak M401 2021-10-14 19:28:39 -05:00
Scott Lahteine 099c329238 Fix LEVEL_CORNERS_USE_PROBE 2021-10-14 19:28:39 -05:00
Scott Lahteine 3db4452d28 settings tweak 2021-10-14 19:28:00 -05:00
InsanityAutomation 385bab2f36 Update settings.cpp 2021-10-14 18:49:12 -04:00
InsanityAutomation 1fab2ef94f Update menu_tramming.cpp 2021-10-14 14:01:42 -04:00
InsanityAutomation 102c43dcd5 Update G35.cpp 2021-10-14 13:50:56 -04:00
InsanityAutomation 5284f45c62 Update menu_tramming.cpp 2021-10-14 13:41:31 -04:00
InsanityAutomation 9aaa7b1100 Add missing include 2021-10-14 13:34:31 -04:00
InsanityAutomation ef661cd295 Update Creality_DWIN.cpp 2021-10-14 13:24:08 -04:00
InsanityAutomation d068769f2c Merge branch 'bugfix-2.0.x' into CrealityDwin2.0_Bleeding 2021-10-13 17:47:30 -04:00
Scott Lahteine a6c4c5a3f7 Update motion.cpp 2021-10-12 22:22:15 -05:00
Scott Lahteine 78c57f2847 Update menu_tramming.cpp 2021-10-12 22:21:43 -05:00
Scott Lahteine 90b0be5e12 Merge 'upstream/bugfix-2.0.x' into pr/22916 2021-10-12 21:45:54 -05:00
Scott Lahteine c24456353f Merge 'upstream/bugfix-2.0.x' into pr/22916 2021-10-12 20:20:28 -05:00
Scott Lahteine ec7a4eb69e clean up and fix 2021-10-09 18:57:38 -05:00
InsanityAutomation 4f62ae9764 Return on mode change without deploying 2021-10-09 14:07:11 -04:00
InsanityAutomation 0cc6955ab7 BLTouch High Speed EEPROM Control 2021-10-09 13:58:25 -04:00
InsanityAutomation 86d2d5d0a8 Update dwin.cpp 2021-10-09 13:09:28 -04:00
InsanityAutomation 5a994f0c9a Update dwin.cpp 2021-10-09 12:15:10 -04:00
InsanityAutomation 39ee694856 Merge branch 'bugfix-2.0.x' into CrealityDwin2.0_Bleeding 2021-10-09 12:13:17 -04:00
InsanityAutomation 10a16c8c75 Sermoon updates 2021-10-08 14:06:57 -04:00
InsanityAutomation aa2763442e Fix E3V2 M600 resume 2021-09-28 09:25:29 -04:00
InsanityAutomation f44a11f5ff Add SermoonD1 preliminary 2021-09-22 17:02:47 -04:00
InsanityAutomation 7748fa84dd Catchup debug messages 2021-09-15 22:44:33 -04:00
InsanityAutomation cb506ec639 Update Configuration.h 2021-09-15 08:08:15 -04:00
InsanityAutomation 5e4f7516c1 Merge branch 'bugfix-2.0.x' into CrealityDwin2.0_Bleeding 2021-09-14 10:25:27 -04:00
InsanityAutomation 6443790c6f Merge branch 'bugfix-2.0.x' into CrealityDwin2.0_Bleeding 2021-09-10 10:41:08 -04:00
InsanityAutomation 9a238fa7f9 Add e3 options for CR6 touch 2021-08-22 19:37:55 -04:00
InsanityAutomation 723fc88e78 Updates to support ExtUI advanced pause messaging 2021-08-21 14:17:34 -04:00
InsanityAutomation 4b4a4ba163 AdvancedPauseExtUIMessaging 2021-08-21 14:17:19 -04:00
InsanityAutomation 57250c8340 Updates for CR6 Screen resume function 2021-08-13 13:32:46 -04:00
InsanityAutomation 6bf069d1ab Merge branch 'bugfix-2.0.x' into CrealityDwin2.0_Bleeding 2021-07-21 18:39:25 -04:00
InsanityAutomation 1921015d1f Merge branch 'bugfix-2.0.x' of https://github.com/MarlinFirmware/Marlin into bugfix-2.0.x 2021-07-21 18:30:14 -04:00
InsanityAutomation 24f3400c46 Merge branch 'bugfix-2.0.x' of https://github.com/MarlinFirmware/Marlin into bugfix-2.0.x 2021-07-19 15:35:57 -04:00
InsanityAutomation b8c9e823ca Update Configuration.h 2021-07-19 12:18:10 -04:00
InsanityAutomation 6f4b2ce4a2 Merge branch 'bugfix-2.0.x' of https://github.com/MarlinFirmware/Marlin into bugfix-2.0.x 2021-07-13 17:01:45 -04:00
InsanityAutomation ef85eeed2a Minor tweaks 2021-07-13 16:50:08 -04:00
Katelyn Schiesser cd98d0cf5c 🐛 Followup to TEMP_SENSOR_BOARD (#22344)
Followup to #22279
2021-07-12 22:57:01 -05:00
InsanityAutomation 6f57a7311c Update marlinui.cpp 2021-07-08 09:57:59 -04:00
InsanityAutomation dc19c60a0e Merge branch 'bugfix-2.0.x' into CrealityDwin2.0_Bleeding 2021-07-07 17:50:24 -04:00
InsanityAutomation 38c79a4585 Merge branch 'bugfix-2.0.x' of https://github.com/MarlinFirmware/Marlin into bugfix-2.0.x 2021-07-07 10:15:40 -04:00
InsanityAutomation 541e074f97 Merge branch 'CrealityDwin_2.0' into CrealityDwin2.0_Bleeding 2021-07-07 10:12:11 -04:00
InsanityAutomation 2a01b8ea62 Merge branch 'bugfix-2.0.x' of https://github.com/MarlinFirmware/Marlin into bugfix-2.0.x 2021-07-05 13:06:44 -04:00
InsanityAutomation 38fd3782f9 Ender6 BLT Fix 2021-07-03 14:43:04 -04:00
InsanityAutomation f5cfc65c1d Ender6 BLTouch Fix 2021-07-03 12:51:14 -04:00
InsanityAutomation 00f3397cad Create Creality_CR6DWIN_DW74.7z 2021-07-01 11:15:20 -04:00
InsanityAutomation 8e6f5f90c5 Update TM3D_DWINCombinedScreens_V4.7z 2021-06-30 09:54:46 -04:00
InsanityAutomation db0b14d97e fix 2021-06-28 18:45:23 -04:00
Katelyn Schiesser 84158b912b 🐛 Use setTargetHotend in menus (#22247) 2021-06-28 00:30:11 -05:00
InsanityAutomation 21f8c8d7f8 Fix precompiled bins 2021-06-27 22:56:19 -04:00
InsanityAutomation e2363dc64c Update hex files for screen rotate 2021-06-25 19:06:23 -04:00
InsanityAutomation 1f439cd89a Update Configuration.h 2021-06-25 12:04:47 -04:00
InsanityAutomation f3ddc1f8b6 Add screen rotate PB 2021-06-25 12:03:59 -04:00
InsanityAutomation 223971c47f Update Configuration.h 2021-06-25 12:03:40 -04:00
InsanityAutomation c2eeda01de Add screen rotate PB 2021-06-25 11:49:28 -04:00
InsanityAutomation 5ea4241ea3 Simplify conditions and reorder 2021-06-23 20:22:25 -04:00
InsanityAutomation 04845c80e9 Simplify conditions and reorder 2021-06-23 20:22:17 -04:00
InsanityAutomation 8194b7f5fc Merge branch 'CrealityDwin2.0_Bleeding' into CrealityDwin_2.0 2021-06-23 19:20:14 -04:00
InsanityAutomation e735948969 Update TM3D_DWINCombinedScreens_V4.7z 2021-06-23 19:09:59 -04:00
InsanityAutomation 634ddeef7e Update 32 bit bins 2021-06-21 17:08:49 -04:00
Scott Lahteine ea78c6bf61 🐛 Fix compact sensitive pins array (#22184) 2021-06-21 16:11:51 -04:00
InsanityAutomation b52168e37c Binaries, Readme 2021-06-21 16:10:42 -04:00
InsanityAutomation ba7368ce3a Repack screen files, update readme 2021-06-20 22:20:28 -04:00
InsanityAutomation 69d06dd872 Update README.md 2021-06-20 20:12:22 -04:00
InsanityAutomation a92b627d00 remove stale files 2021-06-20 18:17:36 -04:00
InsanityAutomation b9aa338c19 Update platformio.ini 2021-06-20 17:43:09 -04:00
InsanityAutomation 27e105b890 Add toggle option for probe pin on 422/427 2021-06-20 17:27:15 -04:00
InsanityAutomation 494a9a90bb Cleanup and limit adjustment 2021-06-20 17:15:33 -04:00
InsanityAutomation d876e6b80a Add combined screen files 2021-06-20 10:46:59 -04:00
InsanityAutomation 97da6e97b9 add zig to mesh update 2021-06-19 15:02:20 -04:00
InsanityAutomation 671ab75bce Updates for mesh edit 2021-06-19 14:04:42 -04:00
InsanityAutomation 6a98f4e1be Add CR10V3 description, eliminate crx display, minor additions 2021-06-19 10:32:54 -04:00
InsanityAutomation dd86d60a32 Catchup to head 2021-06-18 19:15:34 -04:00
InsanityAutomation 706260d39f Update pause.cpp 2021-06-18 00:12:37 -04:00
InsanityAutomation bae9d18ee9 Update Creality_DWIN.cpp 2021-06-18 00:10:59 -04:00
InsanityAutomation df31aa486e Add Pause State to ExtUI 2021-06-18 00:10:55 -04:00
InsanityAutomation 9a4d0fec6c Fixes from last rebase 2021-06-17 22:13:41 -04:00
InsanityAutomation b1f96cf4f7 Rebase fixes 2021-06-17 00:19:22 -04:00
InsanityAutomation 916aaa4881 Merge branch 'bugfix-2.0.x' into CrealityDwin2.0_Bleeding 2021-06-16 17:04:50 -04:00
InsanityAutomation 4a4820d84f Merge branch 'bugfix-2.0.x' of https://github.com/MarlinFirmware/Marlin into bugfix-2.0.x 2021-06-16 17:00:36 -04:00
InsanityAutomation 8eeea354cd Update Configuration.h 2021-06-16 17:00:23 -04:00
InsanityAutomation b26e53156f Update Configuration.h 2021-06-16 16:17:40 -04:00
InsanityAutomation ce46fafd92 Update serial.h 2021-06-15 22:14:10 -04:00
InsanityAutomation 7d9ee39285 Merge branch 'bugfix-2.0.x' of https://github.com/MarlinFirmware/Marlin into bugfix-2.0.x 2021-06-15 01:21:18 -04:00
InsanityAutomation bf8074c108 definerename 2021-06-14 23:46:40 -04:00
Marcio T dd82d2d217 🐛 Fix FTDI Eve Touch UI, add screens (#22132) 2021-06-14 02:46:50 -05:00
Scott Lahteine 1ee599a2ba 🚨 Suppress pin sign-change warning 2021-06-14 02:43:24 -05:00
InsanityAutomation 8adb58c266 Finish screen config controls 2021-06-14 01:21:19 -04:00
InsanityAutomation 173b0f8bd1 EEPROM settings for volume and brightness 2021-06-13 16:46:37 -04:00
InsanityAutomation e77f6d855b Update EXTUI on MBL 2021-06-12 15:41:43 -04:00
InsanityAutomation 23ce68436a Last bit of Ender 6 manual mesh debug 2021-06-12 15:41:33 -04:00
InsanityAutomation 6e15859ce2 Misc fixes 2021-06-12 14:56:43 -04:00
InsanityAutomation e76f769690 Minor debugging and platform changes 2021-06-12 10:21:41 -04:00
InsanityAutomation 0a2ba2fadf Add EXTUi Click function 2021-06-12 08:54:39 -04:00
InsanityAutomation 37d5f55396 Add cr6 screen files 2021-06-12 08:54:23 -04:00
InsanityAutomation eca2080a3f Add manual mesh to leveling screens 2021-06-12 08:21:17 -04:00
InsanityAutomation d2fc1daf50 Merge branch 'bugfix-2.0.x' into CrealityDwin2.0_Bleeding 2021-06-11 15:42:13 -04:00
InsanityAutomation 782fe78ea0 Merge branch 'bugfix-2.0.x' of https://github.com/MarlinFirmware/Marlin into bugfix-2.0.x 2021-06-11 15:40:38 -04:00
InsanityAutomation 084c45a6ee Update Configuration.h 2021-06-11 11:04:07 -04:00
InsanityAutomation 94d8fc8e8a CR6Max 2021-06-11 11:02:13 -04:00
InsanityAutomation 491d82f93e Add CR6 definitions 2021-06-11 10:55:43 -04:00
InsanityAutomation 49fd0950ee Update Configuration_adv.h 2021-06-11 09:14:32 -04:00
InsanityAutomation 06425bf4b7 Ender6 First Pass 2021-06-07 09:54:54 -04:00
InsanityAutomation e9660aeed7 Rebase fixes 2021-06-06 13:20:25 -04:00
InsanityAutomation 6480f0939d Add Ender3 Max 2021-06-06 12:27:14 -04:00
InsanityAutomation d0e9c21aff Merge branch 'bugfix-2.0.x' into CrealityDwin2.0_Bleeding 2021-06-06 12:03:26 -04:00
InsanityAutomation 63d1ae1021 Merge branch 'bugfix-2.0.x' of https://github.com/MarlinFirmware/Marlin into bugfix-2.0.x 2021-06-06 11:53:30 -04:00
InsanityAutomation 5a4b2ba5c5 Merge branch 'bugfix-2.0.x' of https://github.com/MarlinFirmware/Marlin into bugfix-2.0.x 2021-06-05 16:51:34 -04:00
InsanityAutomation a80c371340 Merge branch 'bugfix-2.0.x' of https://github.com/MarlinFirmware/Marlin into bugfix-2.0.x 2021-05-25 09:22:13 -04:00
InsanityAutomation 6d39a6fc55 Merge branch 'bugfix-2.0.x' of https://github.com/MarlinFirmware/Marlin into bugfix-2.0.x 2021-05-23 15:06:33 -04:00
InsanityAutomation 02fe3a6818 Update Ender3V2_Dwin_TM3D.7z 2021-05-16 15:58:17 -04:00
InsanityAutomation be44105ae9 Update Ender3V2_Dwin_TM3D.7z 2021-05-16 15:57:41 -04:00
InsanityAutomation 10e5d92dec Merge branch 'bugfix-2.0.x' of https://github.com/MarlinFirmware/Marlin into bugfix-2.0.x 2021-05-16 14:18:43 -04:00
InsanityAutomation 2e11485da4 Merge branch 'bugfix-2.0.x' of https://github.com/MarlinFirmware/Marlin into bugfix-2.0.x 2021-05-06 11:55:25 -04:00
InsanityAutomation d305f0a14b Merge branch 'bugfix-2.0.x' of https://github.com/MarlinFirmware/Marlin into bugfix-2.0.x 2021-05-05 09:46:59 -04:00
Scott Lahteine 5f30e9fe1c Add MKS_LCD12864B 2021-05-05 08:04:04 -05:00
Scott Lahteine 80c8218d94 Add MKS_LCD12864B 2021-05-05 07:23:52 -05:00
Scott Lahteine bed2bfdc24 Misc comments 2021-05-05 07:18:05 -05:00
Scott Lahteine 6f2967a8dc Cleanup, hex formatting 2021-05-05 06:34:02 -05:00
InsanityAutomation 6496cedc17 Update README.md 2021-05-04 14:42:49 -04:00
InsanityAutomation 7b01993bbc Fix link 2021-05-04 14:42:33 -04:00
InsanityAutomation 07a1b00a25 Version bump for rebase to head 2021-05-04 11:56:18 -04:00
InsanityAutomation 7325d66de5 Merge branch 'bugfix-2.0.x' into CrealityDwin2.0_Bleeding 2021-05-04 11:08:03 -04:00
InsanityAutomation 865737345f Update Configuration.h 2021-05-04 10:58:53 -04:00
InsanityAutomation dfa6c2f4f1 Update Configuration.h 2021-04-30 21:20:51 -04:00
InsanityAutomation 0a2f0cca93 Thermistor priority issue 2021-04-30 21:20:07 -04:00
InsanityAutomation dbbdf11d75 Merge branch 'CrealityDwin2.0_Bleeding' into CrealityDwin_2.0 2021-04-30 14:06:57 -04:00
InsanityAutomation 6430489e21 zip er up 2021-04-30 12:25:48 -04:00
InsanityAutomation 04d4fca75d Next batch 2021-04-30 09:02:05 -04:00
InsanityAutomation 486cf92c5c Set3 2021-04-30 00:39:59 -04:00
InsanityAutomation 820aff4e7c Merge branch 'CrealityDwin2.0_Bleeding' of https://github.com/InsanityAutomation/Marlin into CrealityDwin2.0_Bleeding 2021-04-29 23:16:15 -04:00
InsanityAutomation 120da68133 Batch 2 hex files 2021-04-29 23:11:16 -04:00
InsanityAutomation 747e21ee3e First batch 731 hex files 2021-04-29 23:10:41 -04:00
InsanityAutomation 53e8c005b7 Update Configuration_adv.h 2021-04-29 10:02:01 -04:00
InsanityAutomation ef01aecd47 Update screen file 2021-04-28 19:40:11 -04:00
InsanityAutomation 6ff92f3215 dw7.3.1 changes 2021-04-28 19:25:30 -04:00
InsanityAutomation ba5bab1a3a Update README.md 2021-04-28 10:53:41 -04:00
InsanityAutomation af0b39982b resolve bad merge 2021-04-28 10:39:32 -04:00
InsanityAutomation 680135583a Update ui_api.cpp 2021-04-28 10:36:40 -04:00
InsanityAutomation bdc256c048 Merge pull request #180 from oliof/patch-1
Update README.md
2021-04-26 23:32:24 -04:00
InsanityAutomation 0948c589d6 Merge branch 'CrealityDwin_2.0' into patch-1 2021-04-26 23:32:07 -04:00
InsanityAutomation fbf069ebe0 Remove leftover stale files 2021-04-26 10:34:33 -04:00
InsanityAutomation 160f8ef0bc Update platformio.ini 2021-04-26 08:25:12 -04:00
InsanityAutomation 93ecbfa88c Merge branch 'CrealityDwin2.0_Bleeding' into CrealityDwin_2.0 2021-04-26 08:24:22 -04:00
InsanityAutomation 19d004b342 Update README.md 2021-04-25 12:44:58 -04:00
InsanityAutomation 8b67e72afc Update README.md 2021-04-25 12:20:41 -04:00
InsanityAutomation 9c863b1c67 Update README.md 2021-04-25 12:12:24 -04:00
InsanityAutomation e4c4acbcc5 Add hex Remainder 2021-04-25 00:23:56 -04:00
InsanityAutomation 7dd2fe3f6c Add first bundle HEX 2021-04-24 19:29:09 -04:00
InsanityAutomation a399028c77 Update platformio.ini 2021-04-24 17:36:29 -04:00
InsanityAutomation 840beb78be Update README.md 2021-04-24 12:37:43 -04:00
InsanityAutomation 1181724b2b Update screen archives and remove stale hexs 2021-04-24 12:27:09 -04:00
InsanityAutomation 227aac34a2 Update Creality_DWIN.cpp 2021-04-22 16:49:31 -04:00
InsanityAutomation ecb6e215c5 Update Creality_DWIN.cpp 2021-04-22 16:07:32 -04:00
InsanityAutomation 8f09db27bd file browse page display 2021-04-22 14:49:26 -04:00
InsanityAutomation 39e4ae2d7a Working 2021-04-21 19:08:16 -04:00
InsanityAutomation 8c181685d2 First sweep 2021-04-20 11:23:25 -04:00
InsanityAutomation 4f2730b6f8 Update Creality_DWIN.h 2021-04-19 22:52:18 -04:00
InsanityAutomation bc12ada74d 422 and 427 adjustments 2021-04-19 17:50:31 -04:00
InsanityAutomation 7e97639e38 Update Version.h 2021-04-18 17:00:19 -04:00
InsanityAutomation c217fd3e66 Update Creality_DWIN.cpp 2021-04-18 16:16:30 -04:00
InsanityAutomation 6f69a30435 Reduce ram usage, convert to PSTRs, move serial to LCDSERIAL base 2021-04-18 13:15:00 -04:00
InsanityAutomation 96d880e745 Merge branch 'bugfix-2.0.x' into CrealityDwin2.0_Bleeding 2021-04-18 12:06:36 -04:00
InsanityAutomation d768f875ac Merge branch 'bugfix-2.0.x' of https://github.com/MarlinFirmware/Marlin into bugfix-2.0.x 2021-04-18 12:06:26 -04:00
InsanityAutomation 02d54b9ce7 Update Configuration.h 2021-04-18 12:05:26 -04:00
Scott Lahteine 7070628ef9 Misc. formatting, serial out 2021-04-13 21:34:21 -05:00
InsanityAutomation 1a89a43532 Update platformio.ini 2021-04-12 21:04:46 -04:00
InsanityAutomation 25faa304ee fix ret6 builds 2021-04-11 19:36:37 -04:00
InsanityAutomation 18a0f68ac0 Add hex files 2021-04-09 12:13:42 -04:00
InsanityAutomation 7262ad3fc4 Add CRXPro autobuilds 2021-04-09 12:06:38 -04:00
InsanityAutomation b456959b97 Add CRXPro autobuilds 2021-04-09 10:47:54 -04:00
InsanityAutomation d20182aa91 Some catch up and a look at SKRe3T E3V2 support 2021-04-08 10:50:06 -04:00
InsanityAutomation dc86dd9fae Update platformio.ini 2021-04-07 11:56:28 -04:00
InsanityAutomation e887033c0d Per AJ/Chris add home and Z0 post G29 measuring button 2021-04-07 11:26:38 -04:00
Scott Lahteine d786ba1773 Reimplement reverted PR from testing 2021-04-07 11:18:37 -04:00
InsanityAutomation 3f0a4cfe25 Merge branch 'bugfix-2.0.x' into CrealityDwin2.0_Bleeding 2021-04-07 11:12:35 -04:00
InsanityAutomation 442327d92e Leftovers 2021-04-03 15:01:38 -04:00
InsanityAutomation 345ac6e8fe Revert "Optimized string-to-number functions (#21484)"
This reverts commit 20d2061f22.
2021-04-03 13:53:44 -04:00
InsanityAutomation 1b47fe8c64 Fix extui build issues, block hotend idle while paused for user, revert type change 2021-04-03 13:35:43 -04:00
InsanityAutomation 67e9ee7bf2 Fix extui build issues, block hotend idle while paused for user, revert type change 2021-04-03 13:35:07 -04:00
InsanityAutomation 7aecff2ba6 Merge branch 'bugfix-2.0.x' into CrealityDwin2.0_Bleeding 2021-04-03 12:43:14 -04:00
InsanityAutomation 2e6d7308f6 Add SKRE3Turbo 2021-04-03 12:33:42 -04:00
InsanityAutomation 9c5ee355e8 Merge branch 'CrealityDwin2.0_Bleeding' into CrealityDwin_2.0 2021-04-03 11:11:01 -04:00
InsanityAutomation 656946a0ff Merge branch 'CrealityDwin2.0_Bleeding' of https://github.com/InsanityAutomation/Marlin into CrealityDwin2.0_Bleeding 2021-02-24 09:09:47 -05:00
InsanityAutomation 48e02a3210 Update Creality_DWIN.h 2021-02-24 09:09:13 -05:00
InsanityAutomation 6891ef5d00 Update Configuration.h 2021-02-23 18:41:46 -05:00
InsanityAutomation c392e6bf07 Minor tweaks 2021-02-23 14:28:20 -05:00
InsanityAutomation de564f9b0a add 7.2 hex files 2021-02-19 23:11:46 -05:00
InsanityAutomation c9aab13192 Merge branch 'bugfix-2.0.x' into CrealityDwin2.0_Bleeding 2021-02-19 10:17:09 -05:00
Harald Wagener 9ba9f654c4 Update README.md
Add explanation for LR configuration.
2021-02-17 11:29:44 +01:00
InsanityAutomation a13ebba41a Merge pull request #168 from DrDMoney/patch-1
Update Configuration.h
2021-02-11 15:51:21 -05:00
InsanityAutomation b1153cff1e Merge pull request #176 from x13-me/CrealityDwin_2.0
Added Ender 3 to Readme.md
2021-02-11 15:48:59 -05:00
InsanityAutomation 9aa0004de6 Disable broken feature until I can trace it down 2021-02-10 07:39:53 -05:00
InsanityAutomation 3a9f043c58 Update temperature.cpp 2021-02-10 07:26:20 -05:00
InsanityAutomation 80123bfdf2 fix platform 2021-02-10 07:24:51 -05:00
InsanityAutomation 923ce8e1d8 Merge branch 'bugfix-2.0.x' into CrealityDwin2.0_Bleeding 2021-02-10 07:09:49 -05:00
InsanityAutomation c72fc3eaec Update platformio.ini 2021-02-06 11:04:09 -05:00
InsanityAutomation 3aa0763f26 Update Creality_DWIN.cpp 2021-02-02 11:17:12 -05:00
InsanityAutomation 96bee60be9 Update dwin.cpp 2021-02-02 09:33:22 -05:00
InsanityAutomation b5df47bdf7 Add missing extui functions 2021-01-31 17:18:06 -05:00
InsanityAutomation c27474f396 Update Version.h 2021-01-31 15:37:45 -05:00
InsanityAutomation 6af2c36c50 Add E3V2 427 Env 2021-01-31 15:31:38 -05:00
InsanityAutomation 577ebc6ba4 Reimplement live move 2021-01-31 15:27:46 -05:00
InsanityAutomation 4b0135c022 Merge branch 'bugfix-2.0.x' into CrealityDwin2.0_Bleeding 2021-01-31 13:27:55 -05:00
x13.me 27e95f2aab Added Ender 3 to Readme.md 2021-01-25 02:18:13 +00:00
InsanityAutomation 247385e94e Update platformio.ini 2021-01-06 19:05:44 -05:00
Daniel Mooney aafa3af088 Update Configuration.h
PSU_ACTIVE_HIGH should be PSU_ACTIVE_STATE

PSU_ACTIVE_STATE set from false to low.
2020-12-12 14:23:00 -06:00
InsanityAutomation 12e230ca30 Update Configuration.h 2020-12-08 21:29:09 -05:00
InsanityAutomation 225a89004b Poweroff kit 2020-12-05 19:36:09 -05:00
InsanityAutomation 0b6aa3cb2d Update Creality_DWIN.cpp 2020-11-10 09:04:21 -05:00
InsanityAutomation e7d3e67dc4 Merge branch 'CrealityDwin2.0_Bleeding' of https://github.com/InsanityAutomation/Marlin into CrealityDwin2.0_Bleeding 2020-11-08 14:14:53 -05:00
InsanityAutomation 8fd37402a3 Bump rev, invert flag 2020-11-08 14:14:07 -05:00
InsanityAutomation 7cf72d5867 Rebase and catchup
add 2130 option for SKR

Update platformio.ini

Add SKRMini and DDX

Rebase and catchup

add 2130 option for SKR

Update platformio.ini

Minor adjustments following github issues

Update Creality_DWIN.cpp

Update Configuration_adv.h

Update platformio.ini

Rebase and catchup

add 2130 option for SKR

Update platformio.ini

Add SKRMini and DDX

Rebase and catchup

add 2130 option for SKR

Update platformio.ini

Minor adjustments following github issues

Update Creality_DWIN.cpp

Update Configuration_adv.h

Clean up rebase

Update platformio.ini

Update platformio.ini

Add Ender3V2

Update Configuration.h

tweaks for e3v2

Fixes

Add 32 bit Ender3's

eparser and display fixes

MachineEnder3Pro420 -> MachineEnder3Pro422

force silent board for all v4 pcb's

Update Configuration.h

Implement fix from https://github.com/cosmoderp/Marlin/commit/5c8e1e7d4af37e25fb9040dcbf690bbb089948e6

Live axis move and z offset

Update dwin.cpp

Fix info menu screens

borders etc e3v2

Ender 5 SKRMini Tweaks

Update Version.h

Add layer shift rapid correction logic and creality stm32f01 environments for E3V2

changes for melzi to fit

Update Configuration.h

Add DW7 Hex Files

Support 10SPro display on Ender3 422 and 427 boards

Update dwin.cpp

Update Configuration_adv.h

Update Configuration.h
2020-11-08 13:47:02 -05:00
InsanityAutomation a348c3caa9 Merge branch 'bugfix-2.0.x' of https://github.com/MarlinFirmware/Marlin into bugfix-2.0.x 2020-11-06 09:30:48 -05:00
InsanityAutomation 6f5430f00a Update Configuration.h 2020-10-26 10:44:44 -04:00
InsanityAutomation 63821d87f9 Update Configuration_adv.h 2020-10-23 14:57:19 -04:00
InsanityAutomation b5f447f144 Merge branch 'bugfix-2.0.x' of https://github.com/MarlinFirmware/Marlin into bugfix-2.0.x 2020-10-23 14:32:10 -04:00
InsanityAutomation 4a56689801 Merge branch 'bugfix-2.0.x' of https://github.com/MarlinFirmware/Marlin into bugfix-2.0.x 2020-10-22 09:13:59 -04:00
Scott Lahteine 0216e032be Host prompt followup 2020-10-19 04:34:14 -05:00
Scott Lahteine 2d8aa0cea1 Tweak a host prompt call 2020-10-19 04:25:48 -05:00
InsanityAutomation 50f10fc57f Update dwin.cpp 2020-10-08 15:56:54 -04:00
InsanityAutomation 12180f20e5 Support 10SPro display on Ender3 422 and 427 boards 2020-10-01 21:20:50 -04:00
InsanityAutomation f5dc8d73ee Add DW7 Hex Files 2020-09-26 10:51:50 -04:00
InsanityAutomation 00e3806613 Update Configuration.h 2020-09-24 12:54:05 -04:00
InsanityAutomation 7296538849 changes for melzi to fit 2020-09-24 09:53:13 -04:00
InsanityAutomation 6c4e3e9215 Add layer shift rapid correction logic and creality stm32f01 environments for E3V2 2020-09-21 10:13:07 -04:00
InsanityAutomation 4f050e8dc9 Update Version.h 2020-09-15 16:53:04 -04:00
InsanityAutomation e50e446676 Ender 5 SKRMini Tweaks 2020-09-14 21:38:07 -04:00
InsanityAutomation b795860c5a borders etc e3v2 2020-09-13 22:35:56 -04:00
InsanityAutomation b97b2b9df8 Fix info menu screens 2020-09-13 11:20:52 -04:00
InsanityAutomation c6bdb2cd95 Update dwin.cpp 2020-09-08 07:48:53 -04:00
InsanityAutomation f409cf8c87 Live axis move and z offset 2020-09-07 19:20:22 -04:00
InsanityAutomation fbb75f41c2 Implement fix from https://github.com/cosmoderp/Marlin/commit/5c8e1e7d4af37e25fb9040dcbf690bbb089948e6 2020-09-05 15:13:10 -04:00
InsanityAutomation d560a493b2 Update Configuration.h 2020-09-03 13:31:32 -04:00
InsanityAutomation 0395b7563e force silent board for all v4 pcb's 2020-09-03 13:19:53 -04:00
InsanityAutomation ebd414b3d5 MachineEnder3Pro420 -> MachineEnder3Pro422 2020-09-03 12:37:58 -04:00
InsanityAutomation 0c8bafba38 eparser and display fixes 2020-09-03 12:33:39 -04:00
InsanityAutomation 65d5c57957 Add 32 bit Ender3's 2020-09-03 12:30:06 -04:00
InsanityAutomation b1d667c04a Fixes 2020-09-03 12:03:20 -04:00
InsanityAutomation ee8ea7a0b5 tweaks for e3v2 2020-09-03 12:03:20 -04:00
InsanityAutomation 89ac692bcc Update Configuration.h 2020-09-03 12:03:20 -04:00
InsanityAutomation 88410b3cfe Add Ender3V2 2020-09-03 12:03:20 -04:00
InsanityAutomation 60eb467bfe Update platformio.ini 2020-09-03 12:03:03 -04:00
InsanityAutomation 1c3407ed62 Update platformio.ini 2020-09-03 12:03:03 -04:00
InsanityAutomation 82064d2341 Clean up rebase 2020-09-03 12:03:03 -04:00
InsanityAutomation 16b7cffe0f Update Configuration_adv.h 2020-09-03 12:03:03 -04:00
InsanityAutomation 638bac84cf Update Creality_DWIN.cpp 2020-09-03 12:03:03 -04:00
InsanityAutomation 9d3ad76d50 Minor adjustments following github issues 2020-09-03 12:03:03 -04:00
InsanityAutomation 6edb31f58c Update platformio.ini 2020-09-03 12:02:49 -04:00
InsanityAutomation 01297cab24 add 2130 option for SKR 2020-09-03 12:02:49 -04:00
InsanityAutomation 80fa195db3 Rebase and catchup 2020-09-03 12:02:49 -04:00
InsanityAutomation 052b4387d3 Add SKRMini and DDX 2020-09-03 12:02:34 -04:00
InsanityAutomation dd5481b001 Update platformio.ini 2020-09-03 12:02:14 -04:00
InsanityAutomation 59e1371f89 add 2130 option for SKR 2020-09-03 12:02:13 -04:00
InsanityAutomation 4fdcae6677 Rebase and catchup 2020-09-03 12:02:13 -04:00
InsanityAutomation 1c3dcae659 Update platformio.ini 2020-09-03 12:01:58 -04:00
InsanityAutomation ec425de694 Update Configuration_adv.h 2020-09-03 12:01:58 -04:00
InsanityAutomation 29899e6fe8 Update Creality_DWIN.cpp 2020-09-03 12:01:58 -04:00
InsanityAutomation f7eaa32bc9 Minor adjustments following github issues 2020-09-03 12:01:58 -04:00
InsanityAutomation 508dc26394 Update platformio.ini 2020-09-03 12:01:33 -04:00
InsanityAutomation 600d5922da add 2130 option for SKR 2020-09-03 12:01:33 -04:00
InsanityAutomation a2efee8b7b Rebase and catchup 2020-09-03 12:01:32 -04:00
InsanityAutomation 239e4737a8 Add SKRMini and DDX 2020-09-03 12:01:00 -04:00
InsanityAutomation c8577bc673 Update platformio.ini 2020-09-03 12:00:22 -04:00
InsanityAutomation 3bd2ed7310 add 2130 option for SKR 2020-09-03 12:00:22 -04:00
InsanityAutomation 79414a1398 Rebase and catchup 2020-09-03 12:00:22 -04:00
1209 changed files with 75272 additions and 26694 deletions
+5 -1
View File
@@ -14,6 +14,10 @@ end_of_line = lf
indent_style = space
indent_size = 2
[{*.py,*.conf,*.sublime-project}]
[{*.py}]
indent_style = space
indent_size = 4
[{*.conf,*.sublime-project}]
indent_style = tab
indent_size = 4
+26 -17
View File
@@ -14,13 +14,13 @@ body:
## Before Reporting a Bug
- Read and understand Marlin's [Code of Conduct](https://github.com/MarlinFirmware/Marlin/blob/bugfix-2.0.x/.github/code_of_conduct.md). You are expected to comply with it, including treating everyone with respect.
- Read and understand Marlin's [Code of Conduct](https://github.com/MarlinFirmware/Marlin/blob/bugfix-2.1.x/.github/code_of_conduct.md). You are expected to comply with it, including treating everyone with respect.
- Test with the [`bugfix-2.0.x` branch](https://github.com/MarlinFirmware/Marlin/archive/bugfix-2.0.x.zip) to see whether the issue still exists.
- Test with the [`bugfix-2.1.x` branch](https://github.com/MarlinFirmware/Marlin/archive/bugfix-2.1.x.zip) to see whether the issue still exists.
## Instructions
Please follow the instructions below. Failure to do so may result in your issue being closed. See [Contributing to Marlin](https://github.com/MarlinFirmware/Marlin/blob/bugfix-2.0.x/.github/contributing.md) for additional guidelines.
Please follow the instructions below. Failure to do so may result in your issue being closed. See [Contributing to Marlin](https://github.com/MarlinFirmware/Marlin/blob/bugfix-2.1.x/.github/contributing.md) for additional guidelines.
1. Provide a good title starting with [BUG].
2. Fill out all sections of this bug report form.
@@ -28,10 +28,10 @@ body:
- type: dropdown
attributes:
label: Did you test the latest `bugfix-2.0.x` code?
label: Did you test the latest `bugfix-2.1.x` code?
description: >-
Always try the latest code to make sure the issue you are reporting is not already fixed. To download
the latest code just [click this link](https://github.com/MarlinFirmware/Marlin/archive/bugfix-2.0.x.zip).
the latest code just [click this link](https://github.com/MarlinFirmware/Marlin/archive/bugfix-2.1.x.zip).
options:
- Yes, and the problem still exists.
- No, but I will test it now!
@@ -50,6 +50,8 @@ body:
Describe the bug in this section. Tell us what you were trying to do and what
happened that you did not expect. Provide a clear and concise description of the
problem and include as many details as possible.
When pasting formatted text don't forget to put ` ``` ` (on its own line) before and after to make it readable.
placeholder: |
Marlin doesn't work.
validations:
@@ -149,21 +151,28 @@ body:
- type: markdown
attributes:
value: >-
## Other things to include
value: |
# Attachments
Please also be sure to include these items to help with troubleshooting:
- type: checkboxes
attributes:
label: Don't forget to include
options:
- label: A ZIP file containing your `Configuration.h` and `Configuration_adv.h`.
required: true
* **A ZIP file** containing your `Configuration.h` and `Configuration_adv.h`.
(Please don't paste lengthy configuration text here.)
* **Log output** from the host. (`M111 S247` for maximum logging.)
* **Images or videos** demonstrating the problem, if it helps to make it clear.
* **A G-Code file** that exposes the problem, if not affecting _all_ G-code.
If you've made any other modifications to the firmware, please describe them in detail in the space provided.
When pasting formatted text into the box below don't forget to put ` ``` ` (on its own line) before and after to make it readable.
- type: markdown
attributes:
value: |
### Optional items to include:
- 'Log output from the host. (`M111 S247` for maximum logging.)'
- Images or videos demonstrating the problem, if it helps to make it clear.
- A G-Code file that exposes the problem, if not affecting _all_ G-code.
- type: textarea
attributes:
label: Additional information & file uploads
description: >-
If you've made any other modifications to the firmware, please describe them in detail.
When pasting formatted text don't forget to put ` ``` ` (on its own line) before and after to make it readable.
+1 -1
View File
@@ -17,7 +17,7 @@ body:
- Read and understand Marlin's [Code of Conduct](https://github.com/MarlinFirmware/Marlin/blob/master/.github/code_of_conduct.md). You are expected to comply with it, including treating everyone with respect.
- Check the latest [`bugfix-2.0.x` branch](https://github.com/MarlinFirmware/Marlin/archive/bugfix-2.0.x.zip) to see if the feature already exists.
- Check the latest [`bugfix-2.1.x` branch](https://github.com/MarlinFirmware/Marlin/archive/bugfix-2.1.x.zip) to see if the feature already exists.
- Before you proceed with your request, please consider if it is necessary to make it into a firmware feature, or if it may be better suited for a slicer or host feature.
+6 -3
View File
@@ -34,8 +34,11 @@ This project and everyone participating in it is governed by the [Marlin Code of
We have a Message Board and a Facebook group where our knowledgable user community can provide helpful advice if you have questions.
* [Marlin RepRap forum](https://reprap.org/forum/list.php?415)
* [MarlinFirmware on Facebook](https://www.facebook.com/groups/1049718498464482/)
- [Marlin Documentation](https://marlinfw.org) - Official Marlin documentation
- Facebook Group ["Marlin Firmware"](https://www.facebook.com/groups/1049718498464482/)
- RepRap.org [Marlin Forum](https://forums.reprap.org/list.php?415)
- Facebook Group ["Marlin Firmware for 3D Printers"](https://www.facebook.com/groups/3Dtechtalk/)
- [Marlin Configuration](https://www.youtube.com/results?search_query=marlin+configuration) on YouTube
If chat is more your speed, you can join the MarlinFirmware Discord server:
@@ -116,7 +119,7 @@ Unsure where to begin contributing to Marlin? You can start by looking through t
### Pull Requests
Pull Requests should always be targeted to working branches (e.g., `bugfix-2.0.x` and/or `bugfix-1.1.x`) and never to release branches (e.g., `2.0.x` and/or `1.1.x`). If this is your first Pull Request, please read our [Guide to Pull Requests](https://marlinfw.org/docs/development/getting_started_pull_requests.html) and Github's [Pull Request](https://help.github.com/articles/creating-a-pull-request/) documentation.
Pull Requests should always be targeted to working branches (e.g., `bugfix-2.1.x` and/or `bugfix-1.1.x`) and never to release branches (e.g., `2.0.x` and/or `1.1.x`). If this is your first Pull Request, please read our [Guide to Pull Requests](https://marlinfw.org/docs/development/getting_started_pull_requests.html) and Github's [Pull Request](https://help.github.com/articles/creating-a-pull-request/) documentation.
* Fill in [the required template](pull_request_template.md).
* Don't include issue numbers in the PR title.
+23 -3
View File
@@ -18,12 +18,32 @@ jobs:
steps:
- name: Check out bugfix-2.0.x
- name: Check out bugfix-2.1.x
uses: actions/checkout@v2
with:
ref: bugfix-2.0.x
ref: bugfix-2.1.x
- name: Bump Distribution Date
- name: Bump Date (bugfix-2.0.x)
run: |
# Inline Bump Script
if [[ ! "$( git log -1 --pretty=%B )" =~ ^\[cron\] ]]; then
DIST=$( date +"%Y-%m-%d" )
eval "sed -E -i 's/(#define +STRING_DISTRIBUTION_DATE) .*$/\1 \"$DIST\"/g' Marlin/src/inc/Version.h" && \
eval "sed -E -i 's/(#define +STRING_DISTRIBUTION_DATE) .*$/\1 \"$DIST\"/g' Marlin/Version.h" && \
git config user.name "${GITHUB_ACTOR}" && \
git config user.email "${GITHUB_ACTOR}@users.noreply.github.com" && \
git add . && \
git commit -m "[cron] Bump distribution date ($DIST)" && \
git push
fi
exit 0
- name: Check out bugfix-2.1.x
uses: actions/checkout@v2
with:
ref: bugfix-2.1.x
- name: Bump Date (bugfix-2.1.x)
run: |
# Inline Bump Script
if [[ ! "$( git log -1 --pretty=%B )" =~ ^\[cron\] ]]; then
+4 -3
View File
@@ -12,6 +12,7 @@ on:
- 1.0.x
- 1.1.x
- 2.0.x
- 2.1.x
jobs:
bad_target:
@@ -26,8 +27,8 @@ jobs:
comment: >
Thanks for your contribution! Unfortunately we can't accept PRs directed at release branches. We make patches to the bugfix branches and only later do we push them out as releases.
Please redo this PR starting with the `bugfix-2.0.x` branch and be careful to target `bugfix-2.0.x` when resubmitting the PR.
Please redo this PR starting with the `bugfix-2.1.x` branch and be careful to target `bugfix-2.1.x` when resubmitting the PR. Patches may also target `bugfix-2.0.x` if they are specifically for 2.0.9.x.
It may help to set your fork's default branch to `bugfix-2.0.x`.
It may help to set your fork's default branch to `bugfix-2.1.x`.
See [this page](http://marlinfw.org/docs/development/getting_started_pull_requests.html) for full instructions.
See [this page](https://marlinfw.org/docs/development/getting_started_pull_requests.html) for full instructions.
+1 -1
View File
@@ -25,4 +25,4 @@ jobs:
days-before-close: 10
stale-issue-label: 'stale-closing-soon'
exempt-all-assignees: true
exempt-issue-labels: 'Bug: Confirmed !,T: Feature Request,Needs: Discussion,Needs: Documentation,Needs: Patch,Needs: Work,Needs: Testing,help wanted,no-locking'
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'
+12 -6
View File
@@ -8,7 +8,7 @@ name: CI
on:
pull_request:
branches:
- bugfix-2.0.x
- bugfix-2.1.x
paths-ignore:
- config/**
- data/**
@@ -16,7 +16,7 @@ on:
- '**/*.md'
push:
branches:
- bugfix-2.0.x
- bugfix-2.1.x
paths-ignore:
- config/**
- data/**
@@ -44,7 +44,9 @@ jobs:
- teensy31
- teensy35
- teensy41
- SAMD21_minitronics20
- SAMD51_grandcentral_m4
- PANDA_PI_V29
# Extended AVR Environments
@@ -65,7 +67,7 @@ jobs:
#- mks_robin_maple
- mks_robin_lite_maple
- mks_robin_pro_maple
#- mks_robin_nano35_maple
#- mks_robin_nano_v1v2_maple
#- STM32F103RE_creality_maple
- STM32F103VE_ZM3E4V2_USB_maple
@@ -79,7 +81,6 @@ jobs:
- STM32F401RC_creality
- STM32F103VE_longer
- STM32F407VE_black
- STM32F401VE_STEVAL
- BIGTREE_BTT002
- BIGTREE_SKR_PRO
- BIGTREE_GTR_V1_0
@@ -93,12 +94,17 @@ jobs:
- rumba32
- LERDGEX
- LERDGEK
- mks_robin_nano35
- mks_robin_nano_v1v2
#- mks_robin_nano_v1v2_usbmod
#- mks_robin_nano_v1_3_f4_usbmod
- NUCLEO_F767ZI
- REMRAM_V1
- BTT_SKR_SE_BX
- chitu_f103
- Index_Mobo_Rev03
- Opulo_Lumen_REV3
# ESP32 environments
- mks_tinybee
# Put lengthy tests last
+3 -1
View File
@@ -111,7 +111,7 @@ tags
*.app
*.i*86
*.x86_64
*.hex
# Debug files
*.dSYM/
@@ -147,6 +147,7 @@ vc-fileutils.settings
imgui.ini
eeprom.dat
spi_flash.bin
fs.img
#cmake
CMakeLists.txt
@@ -169,3 +170,4 @@ __pycache__
# IOLogger logs
*_log.csv
.vscode/extensions.json
Binary file not shown.
Binary file not shown.
+2 -2
View File
@@ -27,7 +27,7 @@ tests-single-ci:
tests-single-local:
@if ! test -n "$(TEST_TARGET)" ; then echo "***ERROR*** Set TEST_TARGET=<your-module> or use make tests-all-local" ; return 1; fi
export PATH=./buildroot/bin/:./buildroot/tests/:${PATH} \
export PATH="./buildroot/bin/:./buildroot/tests/:${PATH}" \
&& export VERBOSE_PLATFORMIO=$(VERBOSE_PLATFORMIO) \
&& run_tests . $(TEST_TARGET) "$(ONLY_TEST)"
.PHONY: tests-single-local
@@ -38,7 +38,7 @@ tests-single-local-docker:
.PHONY: tests-single-local-docker
tests-all-local:
export PATH=./buildroot/bin/:./buildroot/tests/:${PATH} \
export PATH="./buildroot/bin/:./buildroot/tests/:${PATH}" \
&& export VERBOSE_PLATFORMIO=$(VERBOSE_PLATFORMIO) \
&& for TEST_TARGET in $$(./get_test_targets.py) ; do echo "Running tests for $$TEST_TARGET" ; run_tests . $$TEST_TARGET ; done
.PHONY: tests-all-local
+696 -247
View File
File diff suppressed because it is too large Load Diff
+540 -722
View File
File diff suppressed because it is too large Load Diff
+13 -124
View File
@@ -109,7 +109,7 @@ LIQUID_TWI2 ?= 0
# This defines if Wire is needed
WIRE ?= 0
# This defines if Tone is needed (i.e SPEAKER is defined in Configuration.h)
# This defines if Tone is needed (i.e., SPEAKER is defined in Configuration.h)
# Disabling this (and SPEAKER) saves approximately 350 bytes of memory.
TONE ?= 1
@@ -307,133 +307,22 @@ else ifeq ($(HARDWARE_MOTHERBOARD),1154)
else ifeq ($(HARDWARE_MOTHERBOARD),1155)
# Tenlog D3 Hero IDEX printer
else ifeq ($(HARDWARE_MOTHERBOARD),1156)
# Ramps S 1.2 by Sakul.cz (Power outputs: Hotend0, Hotend1, Fan, Bed)
# Tenlog D3,5,6 Pro IDEX printers
else ifeq ($(HARDWARE_MOTHERBOARD),1157)
# Ramps S 1.2 by Sakul.cz (Power outputs: Hotend0, Hotend1, Hotend2, Bed)
# Ramps S 1.2 by Sakul.cz (Power outputs: Hotend0, Hotend1, Fan, Bed)
else ifeq ($(HARDWARE_MOTHERBOARD),1158)
# Ramps S 1.2 by Sakul.cz (Power outputs: Hotend, Fan0, Fan1, Bed)
# Ramps S 1.2 by Sakul.cz (Power outputs: Hotend0, Hotend1, Hotend2, Bed)
else ifeq ($(HARDWARE_MOTHERBOARD),1159)
# Longer LK1 PRO / Alfawise U20 Pro (PRO version)
# Ramps S 1.2 by Sakul.cz (Power outputs: Hotend, Fan0, Fan1, Bed)
else ifeq ($(HARDWARE_MOTHERBOARD),1160)
# Longer LKx PRO / Alfawise Uxx Pro (PRO version)
# Longer LK1 PRO / Alfawise U20 Pro (PRO version)
else ifeq ($(HARDWARE_MOTHERBOARD),1161)
# 3Drag Controller
else ifeq ($(HARDWARE_MOTHERBOARD),1100)
# Velleman K8200 Controller (derived from 3Drag Controller)
else ifeq ($(HARDWARE_MOTHERBOARD),1101)
# Velleman K8400 Controller (derived from 3Drag Controller)
else ifeq ($(HARDWARE_MOTHERBOARD),1102)
# Velleman K8600 Controller (Vertex Nano)
else ifeq ($(HARDWARE_MOTHERBOARD),1103)
# Velleman K8800 Controller (Vertex Delta)
else ifeq ($(HARDWARE_MOTHERBOARD),1104)
# 2PrintBeta BAM&DICE with STK drivers
else ifeq ($(HARDWARE_MOTHERBOARD),1105)
# 2PrintBeta BAM&DICE Due with STK drivers
else ifeq ($(HARDWARE_MOTHERBOARD),1106)
# MKS BASE v1.0
else ifeq ($(HARDWARE_MOTHERBOARD),1107)
# MKS v1.4 with A4982 stepper drivers
else ifeq ($(HARDWARE_MOTHERBOARD),1108)
# MKS v1.5 with Allegro A4982 stepper drivers
else ifeq ($(HARDWARE_MOTHERBOARD),1109)
# MKS v1.6 with Allegro A4982 stepper drivers
else ifeq ($(HARDWARE_MOTHERBOARD),1110)
# MKS BASE 1.0 with Heroic HR4982 stepper drivers
else ifeq ($(HARDWARE_MOTHERBOARD),1111)
# MKS GEN v1.3 or 1.4
else ifeq ($(HARDWARE_MOTHERBOARD),1112)
# MKS GEN L
else ifeq ($(HARDWARE_MOTHERBOARD),1113)
# zrib V2.0 control board (Chinese RAMPS replica)
else ifeq ($(HARDWARE_MOTHERBOARD),1114)
# BigTreeTech or BIQU KFB2.0
else ifeq ($(HARDWARE_MOTHERBOARD),1115)
# Felix 2.0+ Electronics Board (RAMPS like)
else ifeq ($(HARDWARE_MOTHERBOARD),1116)
# Invent-A-Part RigidBoard
else ifeq ($(HARDWARE_MOTHERBOARD),1117)
# Invent-A-Part RigidBoard V2
else ifeq ($(HARDWARE_MOTHERBOARD),1118)
# Sainsmart 2-in-1 board
else ifeq ($(HARDWARE_MOTHERBOARD),1119)
# Ultimaker
else ifeq ($(HARDWARE_MOTHERBOARD),1120)
# Ultimaker (Older electronics. Pre 1.5.4. This is rare)
else ifeq ($(HARDWARE_MOTHERBOARD),1121)
MCU ?= atmega1280
PROG_MCU ?= m1280
# Azteeg X3
else ifeq ($(HARDWARE_MOTHERBOARD),1122)
# Azteeg X3 Pro
else ifeq ($(HARDWARE_MOTHERBOARD),1123)
# Ultimainboard 2.x (Uses TEMP_SENSOR 20)
else ifeq ($(HARDWARE_MOTHERBOARD),1124)
# Rumba
else ifeq ($(HARDWARE_MOTHERBOARD),1125)
# Raise3D Rumba
else ifeq ($(HARDWARE_MOTHERBOARD),1126)
# Rapide Lite RL200 Rumba
else ifeq ($(HARDWARE_MOTHERBOARD),1127)
# Formbot T-Rex 2 Plus
else ifeq ($(HARDWARE_MOTHERBOARD),1128)
# Formbot T-Rex 3
else ifeq ($(HARDWARE_MOTHERBOARD),1129)
# Formbot Raptor
else ifeq ($(HARDWARE_MOTHERBOARD),1130)
# Formbot Raptor 2
else ifeq ($(HARDWARE_MOTHERBOARD),1131)
# bq ZUM Mega 3D
else ifeq ($(HARDWARE_MOTHERBOARD),1132)
# MakeBoard Mini v2.1.2 is a control board sold by MicroMake
else ifeq ($(HARDWARE_MOTHERBOARD),1133)
# TriGorilla Anycubic version 1.3 based on RAMPS EFB
else ifeq ($(HARDWARE_MOTHERBOARD),1134)
# TriGorilla Anycubic version 1.4 based on RAMPS EFB
else ifeq ($(HARDWARE_MOTHERBOARD),1135)
# TriGorilla Anycubic version 1.4 Rev 1.1
else ifeq ($(HARDWARE_MOTHERBOARD),1136)
# Creality: Ender-4, CR-8
else ifeq ($(HARDWARE_MOTHERBOARD),1137)
# Creality: CR10S, CR20, CR-X
else ifeq ($(HARDWARE_MOTHERBOARD),1138)
# Dagoma F5
else ifeq ($(HARDWARE_MOTHERBOARD),1139)
# FYSETC F6 1.3
else ifeq ($(HARDWARE_MOTHERBOARD),1140)
# FYSETC F6 1.5
else ifeq ($(HARDWARE_MOTHERBOARD),1141)
# Duplicator i3 Plus
else ifeq ($(HARDWARE_MOTHERBOARD),1142)
# VORON
else ifeq ($(HARDWARE_MOTHERBOARD),1143)
# TRONXY V3 1.0
else ifeq ($(HARDWARE_MOTHERBOARD),1144)
# Z-Bolt X Series
else ifeq ($(HARDWARE_MOTHERBOARD),1145)
# TT OSCAR
else ifeq ($(HARDWARE_MOTHERBOARD),1146)
# Overlord/Overlord Pro
else ifeq ($(HARDWARE_MOTHERBOARD),1147)
# ADIMLab Gantry v1
else ifeq ($(HARDWARE_MOTHERBOARD),1148)
# ADIMLab Gantry v2
else ifeq ($(HARDWARE_MOTHERBOARD),1149)
# BIQU Tango V1
else ifeq ($(HARDWARE_MOTHERBOARD),1150)
# MKS GEN L V2
else ifeq ($(HARDWARE_MOTHERBOARD),1151)
# MKS GEN L V2.1
else ifeq ($(HARDWARE_MOTHERBOARD),1152)
# Copymaster 3D
else ifeq ($(HARDWARE_MOTHERBOARD),1153)
# Ortur 4
else ifeq ($(HARDWARE_MOTHERBOARD),1154)
# Tenlog D3 Hero
else ifeq ($(HARDWARE_MOTHERBOARD),1155)
# Longer LKx PRO / Alfawise Uxx Pro (PRO version)
else ifeq ($(HARDWARE_MOTHERBOARD),1162)
# Zonestar zrib V5.3 (Chinese RAMPS replica)
else ifeq ($(HARDWARE_MOTHERBOARD),1163)
# Pxmalion Core I3
else ifeq ($(HARDWARE_MOTHERBOARD),1164)
#
# RAMBo and derivatives
@@ -512,7 +401,7 @@ else ifeq ($(HARDWARE_MOTHERBOARD),1324)
else ifeq ($(HARDWARE_MOTHERBOARD),1325)
# Intamsys 4.0 (Funmat HT)
else ifeq ($(HARDWARE_MOTHERBOARD),1326)
# Malyan M180 Mainboard Version 2 (no display function, direct gcode only)
# Malyan M180 Mainboard Version 2 (no display function, direct G-code only)
else ifeq ($(HARDWARE_MOTHERBOARD),1327)
# Geeetech GT2560 Rev B for A20(M/T/D)
else ifeq ($(HARDWARE_MOTHERBOARD),1328)
+58 -10
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 <https://www.gnu.org/licenses/>.
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#pragma once
@@ -28,25 +28,73 @@
/**
* Marlin release version identifier
*/
//#define SHORT_BUILD_VERSION "bugfix-2.0.x"
#define SHORT_BUILD_VERSION "2.1.2_Beta1"
/**
* Verbose version identifier which should contain a reference to the location
* from where the binary was downloaded or the source code was compiled.
*/
//#define DETAILED_BUILD_VERSION SHORT_BUILD_VERSION
#if(ENABLED(DriverA4988))
#define VerChar1 "A"
#elif(ENABLED(Driver2209))
#define VerChar1 "T"
#endif
#if(ENABLED(BL_Touch))
#define VerChar2 "B"
#else
#define VerChar2 "E"
#endif
#if(ENABLED(LOWRES_DWIN))
#define VerChar3 "L"
#else
#define VerChar3 "H"
#endif
#if(ENABLED(ACBed))
#define VerChar4 "A"
#else
#define VerChar4 "D"
#endif
#if(ENABLED(OpticalY))
#define VerChar5 "O"
#else
#define VerChar5 "M"
#endif
#if(ENABLED(TitanExtruder))
#define VerChar6 "T"
#elif ANY(BMGExtruderV2, BMGExtruderV3)
#define VerChar6 "B"
#elif ENABLED(BondtechLGX)
#define VerChar6 "L"
#else
#define VerChar6 "S"
#endif
#define DETAILED_BUILD_VERSION SHORT_BUILD_VERSION "_" VerChar1 VerChar2 VerChar3 VerChar4 VerChar5 VerChar6
/**
* 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 "2022-05-29"
#define STRING_DISTRIBUTION_DATE "2023-02-03"
/**
* Defines a generic printer name to be output to the LCD after booting Marlin.
*/
//#define MACHINE_NAME "3D Printer"
#if(ENABLED(MachineTLD3P))
#define CUSTOM_MACHINE_NAME "TL D3P"
#elif(ENABLED(MachineTLD5))
#define CUSTOM_MACHINE_NAME "TL D5"
#elif(ENABLED(MachineTLD6))
#define CUSTOM_MACHINE_NAME "TL D6"
#endif
/**
* The SOURCE_CODE_URL is the location where users will find the Marlin Source
@@ -54,7 +102,7 @@
* has a distinct Github fork— the Source Code URL should just be the main
* Marlin repository.
*/
//#define SOURCE_CODE_URL "github.com/MarlinFirmware/Marlin"
#define SOURCE_CODE_URL "https://github.com/InsanityAutomation/Marlin/tree/Tenlog_DWIN"
/**
* Default generic printer UUID.
@@ -65,12 +113,12 @@
* The WEBSITE_URL is the location where users can get more information such as
* documentation about a specific Marlin release.
*/
//#define WEBSITE_URL "marlinfw.org"
#define WEBSITE_URL "http://www.lnl3d.com "
/**
* 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
@@ -0,0 +1,93 @@
/**
* 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
@@ -0,0 +1,74 @@
/**
* 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
+211
View File
@@ -0,0 +1,211 @@
#
# Marlin Firmware
# config.ini - Options to apply before the build
#
[config:base]
ini_use_config = none
# Load all config: sections in this file
;ini_use_config = all
# Load config file relative to Marlin/
;ini_use_config = another.ini
# Download configurations from GitHub
;ini_use_config = example/Creality/Ender-5 Plus @ bugfix-2.1.x
# Download configurations from your server
;ini_use_config = https://me.myserver.com/path/to/configs
# Evaluate config:base and do a config dump
;ini_use_config = base
;config_export = 2
[config:minimal]
motherboard = BOARD_RAMPS_14_EFB
serial_port = 0
baudrate = 250000
use_watchdog = on
thermal_protection_hotends = on
thermal_protection_hysteresis = 4
thermal_protection_period = 40
bufsize = 4
block_buffer_size = 16
max_cmd_size = 96
extruders = 1
temp_sensor_0 = 1
temp_hysteresis = 3
heater_0_mintemp = 5
heater_0_maxtemp = 275
preheat_1_temp_hotend = 180
bang_max = 255
pidtemp = on
pid_k1 = 0.95
pid_max = BANG_MAX
pid_functional_range = 10
default_kp = 22.20
default_ki = 1.08
default_kd = 114.00
x_driver_type = A4988
y_driver_type = A4988
z_driver_type = A4988
e0_driver_type = A4988
x_bed_size = 200
x_min_pos = 0
x_max_pos = X_BED_SIZE
y_bed_size = 200
y_min_pos = 0
y_max_pos = Y_BED_SIZE
z_min_pos = 0
z_max_pos = 200
x_home_dir = -1
y_home_dir = -1
z_home_dir = -1
use_xmin_plug = on
use_ymin_plug = on
use_zmin_plug = on
x_min_endstop_inverting = false
y_min_endstop_inverting = false
z_min_endstop_inverting = false
default_axis_steps_per_unit = { 80, 80, 400, 500 }
axis_relative_modes = { false, false, false, false }
default_max_feedrate = { 300, 300, 5, 25 }
default_max_acceleration = { 3000, 3000, 100, 10000 }
homing_feedrate_mm_m = { (50*60), (50*60), (4*60) }
homing_bump_divisor = { 2, 2, 4 }
x_enable_on = 0
y_enable_on = 0
z_enable_on = 0
e_enable_on = 0
invert_x_dir = false
invert_y_dir = true
invert_z_dir = false
invert_e0_dir = false
invert_e_step_pin = false
invert_x_step_pin = false
invert_y_step_pin = false
invert_z_step_pin = false
disable_x = false
disable_y = false
disable_z = false
disable_e = false
proportional_font_ratio = 1.0
default_nominal_filament_dia = 1.75
junction_deviation_mm = 0.013
default_acceleration = 3000
default_travel_acceleration = 3000
default_retract_acceleration = 3000
default_minimumfeedrate = 0.0
default_mintravelfeedrate = 0.0
minimum_planner_speed = 0.05
min_steps_per_segment = 6
default_minsegmenttime = 20000
[config:basic]
bed_overshoot = 10
busy_while_heating = on
default_ejerk = 5.0
default_keepalive_interval = 2
default_leveling_fade_height = 0.0
disable_inactive_extruder = on
display_charset_hd44780 = JAPANESE
eeprom_boot_silent = on
eeprom_chitchat = on
endstoppullups = on
extrude_maxlength = 200
extrude_mintemp = 170
host_keepalive_feature = on
hotend_overshoot = 15
jd_handle_small_segments = on
lcd_info_screen_style = 0
lcd_language = en
max_bed_power = 255
mesh_inset = 0
min_software_endstops = on
max_software_endstops = on
min_software_endstop_x = on
min_software_endstop_y = on
min_software_endstop_z = on
max_software_endstop_x = on
max_software_endstop_y = on
max_software_endstop_z = on
preheat_1_fan_speed = 0
preheat_1_label = "PLA"
preheat_1_temp_bed = 70
prevent_cold_extrusion = on
prevent_lengthy_extrude = on
printjob_timer_autostart = on
probing_margin = 10
show_bootscreen = on
soft_pwm_scale = 0
string_config_h_author = "(none, default config)"
temp_bed_hysteresis = 3
temp_bed_residency_time = 10
temp_bed_window = 1
temp_residency_time = 10
temp_window = 1
validate_homing_endstops = on
xy_probe_feedrate = (133*60)
z_clearance_between_probes = 5
z_clearance_deploy_probe = 10
z_clearance_multi_probe = 5
[config:advanced]
arc_support = on
auto_report_temperatures = on
autotemp = on
autotemp_oldweight = 0.98
bed_check_interval = 5000
default_stepper_deactive_time = 120
default_volumetric_extruder_limit = 0.00
disable_inactive_e = true
disable_inactive_x = true
disable_inactive_y = true
disable_inactive_z = true
e0_auto_fan_pin = -1
encoder_100x_steps_per_sec = 80
encoder_10x_steps_per_sec = 30
encoder_rate_multiplier = on
extended_capabilities_report = on
extruder_auto_fan_speed = 255
extruder_auto_fan_temperature = 50
fanmux0_pin = -1
fanmux1_pin = -1
fanmux2_pin = -1
faster_gcode_parser = on
homing_bump_mm = { 5, 5, 2 }
max_arc_segment_mm = 1.0
min_arc_segment_mm = 0.1
min_circle_segments = 72
n_arc_correction = 25
serial_overrun_protection = on
slowdown = on
slowdown_divisor = 2
temp_sensor_bed = 0
thermal_protection_bed_hysteresis = 2
thermocouple_max_errors = 15
tx_buffer_size = 0
watch_bed_temp_increase = 2
watch_bed_temp_period = 60
watch_temp_increase = 2
watch_temp_period = 20
+12 -11
View File
@@ -32,6 +32,7 @@
#include <HardwareSerial.h>
#else
#include "MarlinSerial.h"
#define BOARD_NO_NATIVE_USB
#endif
#include <stdint.h>
@@ -106,39 +107,39 @@ typedef Servo hal_servo_t;
#define MYSERIAL1 TERN(BLUETOOTH, btSerial, MSerial0)
#else
#if !WITHIN(SERIAL_PORT, -1, 3)
#error "SERIAL_PORT must be from 0 to 3, or -1 for USB Serial."
#if !WITHIN(SERIAL_PORT, 0, 3)
#error "SERIAL_PORT must be from 0 to 3."
#endif
#define MYSERIAL1 customizedSerial1
#ifdef SERIAL_PORT_2
#if !WITHIN(SERIAL_PORT_2, -1, 3)
#error "SERIAL_PORT_2 must be from 0 to 3, or -1 for USB Serial."
#if !WITHIN(SERIAL_PORT_2, 0, 3)
#error "SERIAL_PORT_2 must be from 0 to 3."
#endif
#define MYSERIAL2 customizedSerial2
#endif
#ifdef SERIAL_PORT_3
#if !WITHIN(SERIAL_PORT_3, -1, 3)
#error "SERIAL_PORT_3 must be from 0 to 3, or -1 for USB Serial."
#if !WITHIN(SERIAL_PORT_3, 0, 3)
#error "SERIAL_PORT_3 must be from 0 to 3."
#endif
#define MYSERIAL3 customizedSerial3
#endif
#endif
#ifdef MMU2_SERIAL_PORT
#if !WITHIN(MMU2_SERIAL_PORT, -1, 3)
#error "MMU2_SERIAL_PORT must be from 0 to 3, or -1 for USB Serial."
#if !WITHIN(MMU2_SERIAL_PORT, 0, 3)
#error "MMU2_SERIAL_PORT must be from 0 to 3"
#endif
#define MMU2_SERIAL mmuSerial
#endif
#ifdef LCD_SERIAL_PORT
#if !WITHIN(LCD_SERIAL_PORT, -1, 3)
#error "LCD_SERIAL_PORT must be from 0 to 3, or -1 for USB Serial."
#if !WITHIN(LCD_SERIAL_PORT, 0, 3)
#error "LCD_SERIAL_PORT must be from 0 to 3."
#endif
#define LCD_SERIAL lcdSerial
#if HAS_DGUS_LCD
#if HAS_DGUS_LCD || ENABLED(DGUS_LCD_UI_CREALITY_TOUCH)
#define SERIAL_GET_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
#if HAS_DGUS_LCD || ENABLED(DGUS_LCD_UI_CREALITY_TOUCH)
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.
+1 -1
View File
@@ -212,7 +212,7 @@
static ring_buffer_pos_t available();
static void write(const uint8_t c);
static void flushTX();
#if HAS_DGUS_LCD
#if HAS_DGUS_LCD || ENABLED(DGUS_LCD_UI_CREALITY_TOUCH)
static ring_buffer_pos_t get_tx_buffer_free();
#endif
+102 -92
View File
@@ -66,27 +66,26 @@ static volatile int8_t Channel[_Nbr_16timers]; // counter for the s
/************ static functions common to all instances ***********************/
static inline void handle_interrupts(timer16_Sequence_t timer, volatile uint16_t* TCNTn, volatile uint16_t* OCRnA) {
if (Channel[timer] < 0)
*TCNTn = 0; // channel set to -1 indicated that refresh interval completed so reset the timer
else {
if (SERVO_INDEX(timer, Channel[timer]) < ServoCount && SERVO(timer, Channel[timer]).Pin.isActive)
extDigitalWrite(SERVO(timer, Channel[timer]).Pin.nbr, LOW); // pulse this channel low if activated
}
static inline void handle_interrupts(const timer16_Sequence_t timer, volatile uint16_t* TCNTn, volatile uint16_t* OCRnA) {
int8_t cho = Channel[timer]; // Handle the prior Channel[timer] first
if (cho < 0) // Channel -1 indicates the refresh interval completed...
*TCNTn = 0; // ...so reset the timer
else if (SERVO_INDEX(timer, cho) < ServoCount) // prior channel handled?
extDigitalWrite(SERVO(timer, cho).Pin.nbr, LOW); // pulse the prior channel LOW
Channel[timer]++; // increment to the next channel
if (SERVO_INDEX(timer, Channel[timer]) < ServoCount && Channel[timer] < SERVOS_PER_TIMER) {
*OCRnA = *TCNTn + SERVO(timer, Channel[timer]).ticks;
if (SERVO(timer, Channel[timer]).Pin.isActive) // check if activated
extDigitalWrite(SERVO(timer, Channel[timer]).Pin.nbr, HIGH); // it's an active channel so pulse it high
Channel[timer] = ++cho; // Handle the next channel (or 0)
if (cho < SERVOS_PER_TIMER && SERVO_INDEX(timer, cho) < ServoCount) {
*OCRnA = *TCNTn + SERVO(timer, cho).ticks; // set compare to current ticks plus duration
if (SERVO(timer, cho).Pin.isActive) // activated?
extDigitalWrite(SERVO(timer, cho).Pin.nbr, HIGH); // yes: pulse HIGH
}
else {
// finished all channels so wait for the refresh period to expire before starting over
if (((unsigned)*TCNTn) + 4 < usToTicks(REFRESH_INTERVAL)) // allow a few ticks to ensure the next OCR1A not missed
*OCRnA = (unsigned int)usToTicks(REFRESH_INTERVAL);
else
*OCRnA = *TCNTn + 4; // at least REFRESH_INTERVAL has elapsed
Channel[timer] = -1; // this will get incremented at the end of the refresh period to start again at the first channel
const unsigned int cval = ((unsigned)*TCNTn) + 32 / (SERVO_TIMER_PRESCALER), // allow 32 cycles to ensure the next OCR1A not missed
ival = (unsigned int)usToTicks(REFRESH_INTERVAL); // at least REFRESH_INTERVAL has elapsed
*OCRnA = max(cval, ival);
Channel[timer] = -1; // reset the timer counter to 0 on the next call
}
}
@@ -123,91 +122,102 @@ static inline void handle_interrupts(timer16_Sequence_t timer, volatile uint16_t
/****************** end of static functions ******************************/
void initISR(timer16_Sequence_t timer) {
#ifdef _useTimer1
if (timer == _timer1) {
TCCR1A = 0; // normal counting mode
TCCR1B = _BV(CS11); // set prescaler of 8
TCNT1 = 0; // clear the timer count
#if defined(__AVR_ATmega8__) || defined(__AVR_ATmega128__)
SBI(TIFR, OCF1A); // clear any pending interrupts;
SBI(TIMSK, OCIE1A); // enable the output compare interrupt
#else
// here if not ATmega8 or ATmega128
SBI(TIFR1, OCF1A); // clear any pending interrupts;
SBI(TIMSK1, OCIE1A); // enable the output compare interrupt
#endif
#ifdef WIRING
timerAttach(TIMER1OUTCOMPAREA_INT, Timer1Service);
#endif
}
#endif
void initISR(const timer16_Sequence_t timer_index) {
switch (timer_index) {
default: break;
#ifdef _useTimer3
if (timer == _timer3) {
TCCR3A = 0; // normal counting mode
TCCR3B = _BV(CS31); // set prescaler of 8
TCNT3 = 0; // clear the timer count
#ifdef __AVR_ATmega128__
SBI(TIFR, OCF3A); // clear any pending interrupts;
SBI(ETIMSK, OCIE3A); // enable the output compare interrupt
#else
SBI(TIFR3, OCF3A); // clear any pending interrupts;
SBI(TIMSK3, OCIE3A); // enable the output compare interrupt
#endif
#ifdef WIRING
timerAttach(TIMER3OUTCOMPAREA_INT, Timer3Service); // for Wiring platform only
#endif
}
#endif
#ifdef _useTimer1
case _timer1:
TCCR1A = 0; // normal counting mode
TCCR1B = _BV(CS11); // set prescaler of 8
TCNT1 = 0; // clear the timer count
#if defined(__AVR_ATmega8__) || defined(__AVR_ATmega128__)
SBI(TIFR, OCF1A); // clear any pending interrupts;
SBI(TIMSK, OCIE1A); // enable the output compare interrupt
#else
// here if not ATmega8 or ATmega128
SBI(TIFR1, OCF1A); // clear any pending interrupts;
SBI(TIMSK1, OCIE1A); // enable the output compare interrupt
#endif
#ifdef WIRING
timerAttach(TIMER1OUTCOMPAREA_INT, Timer1Service);
#endif
break;
#endif
#ifdef _useTimer4
if (timer == _timer4) {
TCCR4A = 0; // normal counting mode
TCCR4B = _BV(CS41); // set prescaler of 8
TCNT4 = 0; // clear the timer count
TIFR4 = _BV(OCF4A); // clear any pending interrupts;
TIMSK4 = _BV(OCIE4A); // enable the output compare interrupt
}
#endif
#ifdef _useTimer3
case _timer3:
TCCR3A = 0; // normal counting mode
TCCR3B = _BV(CS31); // set prescaler of 8
TCNT3 = 0; // clear the timer count
#ifdef __AVR_ATmega128__
SBI(TIFR, OCF3A); // clear any pending interrupts;
SBI(ETIMSK, OCIE3A); // enable the output compare interrupt
#else
SBI(TIFR3, OCF3A); // clear any pending interrupts;
SBI(TIMSK3, OCIE3A); // enable the output compare interrupt
#endif
#ifdef WIRING
timerAttach(TIMER3OUTCOMPAREA_INT, Timer3Service); // for Wiring platform only
#endif
break;
#endif
#ifdef _useTimer5
if (timer == _timer5) {
TCCR5A = 0; // normal counting mode
TCCR5B = _BV(CS51); // set prescaler of 8
TCNT5 = 0; // clear the timer count
TIFR5 = _BV(OCF5A); // clear any pending interrupts;
TIMSK5 = _BV(OCIE5A); // enable the output compare interrupt
}
#endif
#ifdef _useTimer4
case _timer4:
TCCR4A = 0; // normal counting mode
TCCR4B = _BV(CS41); // set prescaler of 8
TCNT4 = 0; // clear the timer count
TIFR4 = _BV(OCF4A); // clear any pending interrupts;
TIMSK4 = _BV(OCIE4A); // enable the output compare interrupt
break;
#endif
#ifdef _useTimer5
case _timer5:
TCCR5A = 0; // normal counting mode
TCCR5B = _BV(CS51); // set prescaler of 8
TCNT5 = 0; // clear the timer count
TIFR5 = _BV(OCF5A); // clear any pending interrupts;
TIMSK5 = _BV(OCIE5A); // enable the output compare interrupt
break;
#endif
}
}
void finISR(timer16_Sequence_t timer) {
void finISR(const timer16_Sequence_t timer_index) {
// Disable use of the given timer
#ifdef WIRING
if (timer == _timer1) {
CBI(
#if defined(__AVR_ATmega1281__) || defined(__AVR_ATmega2561__)
TIMSK1
#else
TIMSK
#endif
, OCIE1A); // disable timer 1 output compare interrupt
timerDetach(TIMER1OUTCOMPAREA_INT);
}
else if (timer == _timer3) {
CBI(
#if defined(__AVR_ATmega1281__) || defined(__AVR_ATmega2561__)
TIMSK3
#else
ETIMSK
#endif
, OCIE3A); // disable the timer3 output compare A interrupt
timerDetach(TIMER3OUTCOMPAREA_INT);
switch (timer_index) {
default: break;
case _timer1:
CBI(
#if defined(__AVR_ATmega1281__) || defined(__AVR_ATmega2561__)
TIMSK1
#else
TIMSK
#endif
, OCIE1A // disable timer 1 output compare interrupt
);
timerDetach(TIMER1OUTCOMPAREA_INT);
break;
case _timer3:
CBI(
#if defined(__AVR_ATmega1281__) || defined(__AVR_ATmega2561__)
TIMSK3
#else
ETIMSK
#endif
, OCIE3A // disable the timer3 output compare A interrupt
);
timerDetach(TIMER3OUTCOMPAREA_INT);
break;
}
#else // !WIRING
// For arduino - in future: call here to a currently undefined function to reset the timer
UNUSED(timer);
UNUSED(timer_index);
#endif
}
+3 -3
View File
@@ -146,10 +146,10 @@ void MarlinHAL::set_pwm_frequency(const pin_t pin, const uint16_t f_desired) {
LIMIT(res_pc_temp, 1U, maxtop);
// Calculate frequencies of test prescaler and resolution values
const uint32_t f_diff = _MAX(f, f_desired) - _MIN(f, f_desired),
f_fast_temp = (F_CPU) / (p * (1 + res_fast_temp)),
const uint16_t f_fast_temp = (F_CPU) / (p * (1 + res_fast_temp)),
f_pc_temp = (F_CPU) / (2 * p * res_pc_temp);
const int f_diff = _MAX(f, f_desired) - _MIN(f, f_desired),
f_fast_diff = _MAX(f_fast_temp, f_desired) - _MIN(f_fast_temp, f_desired),
f_pc_temp = (F_CPU) / (2 * p * res_pc_temp),
f_pc_diff = _MAX(f_pc_temp, f_desired) - _MIN(f_pc_temp, f_desired);
if (f_fast_diff < f_diff && f_fast_diff <= f_pc_diff) { // FAST values are closest to desired f
+3 -3
View File
@@ -293,11 +293,11 @@ enum ClockSource2 : uint8_t {
#if HAS_MOTOR_CURRENT_PWM
#if PIN_EXISTS(MOTOR_CURRENT_PWM_XY)
#define PWM_CHK_MOTOR_CURRENT(P) (P == MOTOR_CURRENT_PWM_E || P == MOTOR_CURRENT_PWM_Z || P == MOTOR_CURRENT_PWM_XY)
#define PWM_CHK_MOTOR_CURRENT(P) (P == MOTOR_CURRENT_PWM_E_PIN || P == MOTOR_CURRENT_PWM_E0_PIN || P == MOTOR_CURRENT_PWM_E1_PIN || P == MOTOR_CURRENT_PWM_Z_PIN || P == MOTOR_CURRENT_PWM_XY_PIN)
#elif PIN_EXISTS(MOTOR_CURRENT_PWM_Z)
#define PWM_CHK_MOTOR_CURRENT(P) (P == MOTOR_CURRENT_PWM_E || P == MOTOR_CURRENT_PWM_Z)
#define PWM_CHK_MOTOR_CURRENT(P) (P == MOTOR_CURRENT_PWM_E_PIN || P == MOTOR_CURRENT_PWM_E0_PIN || P == MOTOR_CURRENT_PWM_E1_PIN || P == MOTOR_CURRENT_PWM_Z_PIN)
#else
#define PWM_CHK_MOTOR_CURRENT(P) (P == MOTOR_CURRENT_PWM_E)
#define PWM_CHK_MOTOR_CURRENT(P) (P == MOTOR_CURRENT_PWM_E_PIN || P == MOTOR_CURRENT_PWM_E0_PIN || P == MOTOR_CURRENT_PWM_E1_PIN)
#endif
#else
#define PWM_CHK_MOTOR_CURRENT(P) false
+15 -5
View File
@@ -35,16 +35,26 @@
|| X_STEP_PIN == N || Y_STEP_PIN == N || Z_STEP_PIN == N \
|| X_DIR_PIN == N || Y_DIR_PIN == N || Z_DIR_PIN == N \
|| X_ENA_PIN == N || Y_ENA_PIN == N || Z_ENA_PIN == N \
|| BTN_EN1 == N || BTN_EN2 == N \
)
#if CONF_SERIAL_IS(0) // D0-D1. No known conflicts.
#if SERIAL_IN_USE(0)
// D0-D1. No known conflicts.
#endif
#if CONF_SERIAL_IS(1) && (CHECK_SERIAL_PIN(18) || CHECK_SERIAL_PIN(19))
#error "Serial Port 1 pin D18 and/or D19 conflicts with another pin on the board."
#if SERIAL_IN_USE(1)
#if NOT_TARGET(__AVR_ATmega644P__, __AVR_ATmega1284P__)
#if CHECK_SERIAL_PIN(18) || CHECK_SERIAL_PIN(19)
#error "Serial Port 1 pin D18 and/or D19 conflicts with another pin on the board."
#endif
#else
#if CHECK_SERIAL_PIN(10) || CHECK_SERIAL_PIN(11)
#error "Serial Port 1 pin D10 and/or D11 conflicts with another pin on the board."
#endif
#endif
#endif
#if CONF_SERIAL_IS(2) && (CHECK_SERIAL_PIN(16) || CHECK_SERIAL_PIN(17))
#if SERIAL_IN_USE(2) && (CHECK_SERIAL_PIN(16) || CHECK_SERIAL_PIN(17))
#error "Serial Port 2 pin D16 and/or D17 conflicts with another pin on the board."
#endif
#if CONF_SERIAL_IS(3) && (CHECK_SERIAL_PIN(14) || CHECK_SERIAL_PIN(15))
#if SERIAL_IN_USE(3) && (CHECK_SERIAL_PIN(14) || CHECK_SERIAL_PIN(15))
#error "Serial Port 3 pin D14 and/or D15 conflicts with another pin on the board."
#endif
#undef CHECK_SERIAL_PIN
+21 -19
View File
@@ -27,13 +27,14 @@
// intRes = longIn1 * longIn2 >> 24
// uses:
// A[tmp] to store 0
// B[tmp] to store bits 16-23 of the 48bit result. The top bit is used to round the two byte result.
// note that the lower two bytes and the upper byte of the 48bit result are not calculated.
// this can cause the result to be out by one as the lower bytes may cause carries into the upper ones.
// B A are bits 24-39 and are the returned value
// C B A is longIn1
// D C B A is longIn2
// r1, r0 for the result of mul.
// [tmp1] to store 0.
// [tmp2] to store bits 16-23 of the 56 bit result. The top bit of [tmp2] is used for rounding.
// Note that the lower two bytes and the upper two bytes of the 56 bit result are not calculated.
// This can cause the result to be out by one as the lower bytes may cause carries into the upper ones.
// [intRes] (A B) is bits 24-39 and is the returned value.
// [longIn1] (C B A) is a 24 bit parameter.
// [longIn2] (D C B A) is a 32 bit parameter.
//
FORCE_INLINE static uint16_t MultiU24X32toH16(uint32_t longIn1, uint32_t longIn2) {
uint8_t tmp1;
@@ -66,11 +67,9 @@ FORCE_INLINE static uint16_t MultiU24X32toH16(uint32_t longIn1, uint32_t longIn2
A("add %[tmp2], r1")
A("adc %A[intRes], %[tmp1]")
A("adc %B[intRes], %[tmp1]")
A("lsr %[tmp2]")
A("adc %A[intRes], %[tmp1]")
A("adc %B[intRes], %[tmp1]")
A("mul %D[longIn2], %A[longIn1]")
A("add %A[intRes], r0")
A("lsl %[tmp2]")
A("adc %A[intRes], r0")
A("adc %B[intRes], r1")
A("mul %D[longIn2], %B[longIn1]")
A("add %B[intRes], r0")
@@ -85,11 +84,16 @@ FORCE_INLINE static uint16_t MultiU24X32toH16(uint32_t longIn1, uint32_t longIn2
return intRes;
}
// intRes = intIn1 * intIn2 >> 16
// intRes = intIn1 * intIn2 >> 8
// uses:
// r26 to store 0
// r27 to store the byte 1 of the 24 bit result
FORCE_INLINE static uint16_t MultiU16X8toH16(uint8_t charIn1, uint16_t intIn2) {
// r1, r0 for the result of mul. After the second mul, r0 holds bits 0-7 of the 24 bit result and
// the top bit of r0 is used for rounding.
// [tmp] to store 0.
// [intRes] (A B) is bits 8-15 and is the returned value.
// [charIn1] is an 8 bit parameter.
// [intIn2] (B A) is a 16 bit parameter.
//
FORCE_INLINE static uint16_t MultiU8X16toH16(uint8_t charIn1, uint16_t intIn2) {
uint8_t tmp;
uint16_t intRes;
__asm__ __volatile__ (
@@ -97,10 +101,8 @@ FORCE_INLINE static uint16_t MultiU16X8toH16(uint8_t charIn1, uint16_t intIn2) {
A("mul %[charIn1], %B[intIn2]")
A("movw %A[intRes], r0")
A("mul %[charIn1], %A[intIn2]")
A("add %A[intRes], r1")
A("adc %B[intRes], %[tmp]")
A("lsr r0")
A("adc %A[intRes], %[tmp]")
A("lsl r0")
A("adc %A[intRes], r1")
A("adc %B[intRes], %[tmp]")
A("clr r1")
: [intRes] "=&r" (intRes),
+1 -1
View File
@@ -74,7 +74,7 @@
#define MULTI_NAME_PAD 26 // space needed to be pretty if not first name assigned to a pin
void PRINT_ARRAY_NAME(uint8_t x) {
const char * const name_mem_pointer = (PGM_P)pgm_read_ptr(&pin_array[x].name);
PGM_P const name_mem_pointer = (PGM_P)pgm_read_ptr(&pin_array[x].name);
LOOP_L_N(y, MAX_NAME_LENGTH) {
char temp_char = pgm_read_byte(name_mem_pointer + y);
if (temp_char != 0)
+1 -1
View File
@@ -210,7 +210,7 @@ public:
static void adc_init() {}
// Called by Temperature::init for each sensor at startup
static void adc_enable(const uint8_t ch) {}
static void adc_enable(const uint8_t /*ch*/) {}
// Begin ADC sampling on the given channel. Called from Temperature::isr!
static void adc_start(const uint8_t ch) { adc_result = analogRead(ch); }
+2 -2
View File
@@ -247,12 +247,12 @@
b <<= 1; // little setup time
WRITE(SD_SCK_PIN, HIGH);
DELAY_NS(spiDelayNS);
DELAY_NS_VAR(spiDelayNS);
b |= (READ(SD_MISO_PIN) != 0);
WRITE(SD_SCK_PIN, LOW);
DELAY_NS(spiDelayNS);
DELAY_NS_VAR(spiDelayNS);
} while (--bits);
return b;
}
+1 -1
View File
@@ -41,7 +41,7 @@
practice, we need alignment to 256 bytes to make this work in all
cases */
__attribute__ ((aligned(256)))
static DeviceVectors ram_tab = { nullptr };
static DeviceVectors ram_tab[61] = { nullptr };
/**
* This function checks if the exception/interrupt table is already in SRAM or not.
+68 -64
View File
@@ -47,12 +47,12 @@
#include "../shared/servo.h"
#include "../shared/servo_private.h"
static volatile int8_t Channel[_Nbr_16timers]; // counter for the servo being pulsed for each timer (or -1 if refresh interval)
static Flags<_Nbr_16timers> DisablePending; // ISR should disable the timer at the next timer reset
// ------------------------
/// Interrupt handler for the TC0 channel 1.
// ------------------------
void Servo_Handler(timer16_Sequence_t timer, Tc *pTc, uint8_t channel);
void Servo_Handler(const timer16_Sequence_t, Tc*, const uint8_t);
#ifdef _useTimer1
void HANDLER_FOR_TIMER1() { Servo_Handler(_timer1, TC_FOR_TIMER1, CHANNEL_FOR_TIMER1); }
@@ -70,88 +70,92 @@ void Servo_Handler(timer16_Sequence_t timer, Tc *pTc, uint8_t channel);
void HANDLER_FOR_TIMER5() { Servo_Handler(_timer5, TC_FOR_TIMER5, CHANNEL_FOR_TIMER5); }
#endif
void Servo_Handler(timer16_Sequence_t timer, Tc *tc, uint8_t channel) {
// clear interrupt
tc->TC_CHANNEL[channel].TC_SR;
if (Channel[timer] < 0)
tc->TC_CHANNEL[channel].TC_CCR |= TC_CCR_SWTRG; // channel set to -1 indicated that refresh interval completed so reset the timer
else if (SERVO_INDEX(timer, Channel[timer]) < ServoCount && SERVO(timer, Channel[timer]).Pin.isActive)
extDigitalWrite(SERVO(timer, Channel[timer]).Pin.nbr, LOW); // pulse this channel low if activated
void Servo_Handler(const timer16_Sequence_t timer, Tc *tc, const uint8_t channel) {
static int8_t Channel[_Nbr_16timers]; // Servo counters to pulse (or -1 for refresh interval)
int8_t cho = Channel[timer]; // Handle the prior Channel[timer] first
if (cho < 0) { // Channel -1 indicates the refresh interval completed...
tc->TC_CHANNEL[channel].TC_CCR |= TC_CCR_SWTRG; // ...so reset the timer
if (DisablePending[timer]) {
// Disabling only after the full servo period expires prevents
// pulses being too close together if immediately re-enabled.
DisablePending.clear(timer);
TC_Stop(tc, channel);
tc->TC_CHANNEL[channel].TC_SR; // clear interrupt
return;
}
}
else if (SERVO_INDEX(timer, cho) < ServoCount) // prior channel handled?
extDigitalWrite(SERVO(timer, cho).Pin.nbr, LOW); // pulse the prior channel LOW
Channel[timer]++; // increment to the next channel
if (SERVO_INDEX(timer, Channel[timer]) < ServoCount && Channel[timer] < SERVOS_PER_TIMER) {
tc->TC_CHANNEL[channel].TC_RA = tc->TC_CHANNEL[channel].TC_CV + SERVO(timer,Channel[timer]).ticks;
if (SERVO(timer,Channel[timer]).Pin.isActive) // check if activated
extDigitalWrite(SERVO(timer, Channel[timer]).Pin.nbr, HIGH); // its an active channel so pulse it high
Channel[timer] = ++cho; // go to the next channel (or 0)
if (cho < SERVOS_PER_TIMER && SERVO_INDEX(timer, cho) < ServoCount) {
tc->TC_CHANNEL[channel].TC_RA = tc->TC_CHANNEL[channel].TC_CV + SERVO(timer, cho).ticks;
if (SERVO(timer, cho).Pin.isActive) // activated?
extDigitalWrite(SERVO(timer, cho).Pin.nbr, HIGH); // yes: pulse HIGH
}
else {
// finished all channels so wait for the refresh period to expire before starting over
tc->TC_CHANNEL[channel].TC_RA =
tc->TC_CHANNEL[channel].TC_CV < usToTicks(REFRESH_INTERVAL) - 4
? (unsigned int)usToTicks(REFRESH_INTERVAL) // allow a few ticks to ensure the next OCR1A not missed
: tc->TC_CHANNEL[channel].TC_CV + 4; // at least REFRESH_INTERVAL has elapsed
Channel[timer] = -1; // this will get incremented at the end of the refresh period to start again at the first channel
const unsigned int cval = tc->TC_CHANNEL[channel].TC_CV + 128 / (SERVO_TIMER_PRESCALER), // allow 128 cycles to ensure the next CV not missed
ival = (unsigned int)usToTicks(REFRESH_INTERVAL); // at least REFRESH_INTERVAL has elapsed
tc->TC_CHANNEL[channel].TC_RA = max(cval, ival);
Channel[timer] = -1; // reset the timer CCR on the next call
}
tc->TC_CHANNEL[channel].TC_SR; // clear interrupt
}
static void _initISR(Tc *tc, uint32_t channel, uint32_t id, IRQn_Type irqn) {
pmc_enable_periph_clk(id);
TC_Configure(tc, channel,
TC_CMR_TCCLKS_TIMER_CLOCK3 | // MCK/32
TC_CMR_WAVE | // Waveform mode
TC_CMR_WAVSEL_UP_RC ); // Counter running up and reset when equals to RC
TC_CMR_WAVE // Waveform mode
| TC_CMR_WAVSEL_UP_RC // Counter running up and reset when equal to RC
| (SERVO_TIMER_PRESCALER == 2 ? TC_CMR_TCCLKS_TIMER_CLOCK1 : 0) // MCK/2
| (SERVO_TIMER_PRESCALER == 8 ? TC_CMR_TCCLKS_TIMER_CLOCK2 : 0) // MCK/8
| (SERVO_TIMER_PRESCALER == 32 ? TC_CMR_TCCLKS_TIMER_CLOCK3 : 0) // MCK/32
| (SERVO_TIMER_PRESCALER == 128 ? TC_CMR_TCCLKS_TIMER_CLOCK4 : 0) // MCK/128
);
/* 84MHz, MCK/32, for 1.5ms: 3937 */
TC_SetRA(tc, channel, 2625); // 1ms
// Wait 1ms before the first ISR
TC_SetRA(tc, channel, (F_CPU) / (SERVO_TIMER_PRESCALER) / 1000UL); // 1ms
/* Configure and enable interrupt */
// Configure and enable interrupt
NVIC_EnableIRQ(irqn);
// TC_IER_CPAS: RA Compare
tc->TC_CHANNEL[channel].TC_IER = TC_IER_CPAS;
tc->TC_CHANNEL[channel].TC_IER = TC_IER_CPAS; // TC_IER_CPAS: RA Compare
// Enables the timer clock and performs a software reset to start the counting
TC_Start(tc, channel);
}
void initISR(timer16_Sequence_t timer) {
#ifdef _useTimer1
if (timer == _timer1)
_initISR(TC_FOR_TIMER1, CHANNEL_FOR_TIMER1, ID_TC_FOR_TIMER1, IRQn_FOR_TIMER1);
#endif
#ifdef _useTimer2
if (timer == _timer2)
_initISR(TC_FOR_TIMER2, CHANNEL_FOR_TIMER2, ID_TC_FOR_TIMER2, IRQn_FOR_TIMER2);
#endif
#ifdef _useTimer3
if (timer == _timer3)
_initISR(TC_FOR_TIMER3, CHANNEL_FOR_TIMER3, ID_TC_FOR_TIMER3, IRQn_FOR_TIMER3);
#endif
#ifdef _useTimer4
if (timer == _timer4)
_initISR(TC_FOR_TIMER4, CHANNEL_FOR_TIMER4, ID_TC_FOR_TIMER4, IRQn_FOR_TIMER4);
#endif
#ifdef _useTimer5
if (timer == _timer5)
_initISR(TC_FOR_TIMER5, CHANNEL_FOR_TIMER5, ID_TC_FOR_TIMER5, IRQn_FOR_TIMER5);
#endif
void initISR(const timer16_Sequence_t timer_index) {
CRITICAL_SECTION_START();
const bool disable_soon = DisablePending[timer_index];
DisablePending.clear(timer_index);
CRITICAL_SECTION_END();
if (!disable_soon) switch (timer_index) {
default: break;
#ifdef _useTimer1
case _timer1: return _initISR(TC_FOR_TIMER1, CHANNEL_FOR_TIMER1, ID_TC_FOR_TIMER1, IRQn_FOR_TIMER1);
#endif
#ifdef _useTimer2
case _timer2: return _initISR(TC_FOR_TIMER2, CHANNEL_FOR_TIMER2, ID_TC_FOR_TIMER2, IRQn_FOR_TIMER2);
#endif
#ifdef _useTimer3
case _timer3: return _initISR(TC_FOR_TIMER3, CHANNEL_FOR_TIMER3, ID_TC_FOR_TIMER3, IRQn_FOR_TIMER3);
#endif
#ifdef _useTimer4
case _timer4: return _initISR(TC_FOR_TIMER4, CHANNEL_FOR_TIMER4, ID_TC_FOR_TIMER4, IRQn_FOR_TIMER4);
#endif
#ifdef _useTimer5
case _timer5: return _initISR(TC_FOR_TIMER5, CHANNEL_FOR_TIMER5, ID_TC_FOR_TIMER5, IRQn_FOR_TIMER5);
#endif
}
}
void finISR(timer16_Sequence_t) {
#ifdef _useTimer1
TC_Stop(TC_FOR_TIMER1, CHANNEL_FOR_TIMER1);
#endif
#ifdef _useTimer2
TC_Stop(TC_FOR_TIMER2, CHANNEL_FOR_TIMER2);
#endif
#ifdef _useTimer3
TC_Stop(TC_FOR_TIMER3, CHANNEL_FOR_TIMER3);
#endif
#ifdef _useTimer4
TC_Stop(TC_FOR_TIMER4, CHANNEL_FOR_TIMER4);
#endif
#ifdef _useTimer5
TC_Stop(TC_FOR_TIMER5, CHANNEL_FOR_TIMER5);
#endif
void finISR(const timer16_Sequence_t timer_index) {
// Timer is disabled from the ISR, to ensure proper final pulse length.
DisablePending.set(timer_index);
}
#endif // HAS_SERVOS
+1 -1
View File
@@ -37,7 +37,7 @@
#define _useTimer5
#define TRIM_DURATION 2 // compensation ticks to trim adjust for digitalWrite delays
#define SERVO_TIMER_PRESCALER 32 // timer prescaler
#define SERVO_TIMER_PRESCALER 2 // timer prescaler
/*
TC0, chan 0 => TC0_Handler
+4 -4
View File
@@ -36,15 +36,15 @@
|| X_DIR_PIN == N || Y_DIR_PIN == N || Z_DIR_PIN == N \
|| X_ENA_PIN == N || Y_ENA_PIN == N || Z_ENA_PIN == N \
)
#if CONF_SERIAL_IS(0) // D0-D1. No known conflicts.
#if SERIAL_IN_USE(0) // D0-D1. No known conflicts.
#endif
#if CONF_SERIAL_IS(1) && (CHECK_SERIAL_PIN(18) || CHECK_SERIAL_PIN(19))
#if SERIAL_IN_USE(1) && (CHECK_SERIAL_PIN(18) || CHECK_SERIAL_PIN(19))
#error "Serial Port 1 pin D18 and/or D19 conflicts with another pin on the board."
#endif
#if CONF_SERIAL_IS(2) && (CHECK_SERIAL_PIN(16) || CHECK_SERIAL_PIN(17))
#if SERIAL_IN_USE(2) && (CHECK_SERIAL_PIN(16) || CHECK_SERIAL_PIN(17))
#error "Serial Port 2 pin D16 and/or D17 conflicts with another pin on the board."
#endif
#if CONF_SERIAL_IS(3) && (CHECK_SERIAL_PIN(14) || CHECK_SERIAL_PIN(15))
#if SERIAL_IN_USE(3) && (CHECK_SERIAL_PIN(14) || CHECK_SERIAL_PIN(15))
#error "Serial Port 3 pin D14 and/or D15 conflicts with another pin on the board."
#endif
#undef CHECK_SERIAL_PIN
+1 -1
View File
@@ -70,7 +70,7 @@
#define PRINT_PIN_ANALOG(p) do{ sprintf_P(buffer, PSTR(" (A%2d) "), DIGITAL_PIN_TO_ANALOG_PIN(pin)); SERIAL_ECHO(buffer); }while(0)
#define GET_ARRAY_PIN(p) pin_array[p].pin
#define GET_ARRAY_IS_DIGITAL(p) pin_array[p].is_digital
#define VALID_PIN(pin) (pin >= 0 && pin < (int8_t)NUMBER_PINS_TOTAL ? 1 : 0)
#define VALID_PIN(pin) (pin >= 0 && pin < int8_t(NUMBER_PINS_TOTAL))
#define DIGITAL_PIN_TO_ANALOG_PIN(p) int(p - analogInputToDigitalPin(0))
#define IS_ANALOG(P) WITHIN(P, char(analogInputToDigitalPin(0)), char(analogInputToDigitalPin(NUM_ANALOG_INPUTS - 1)))
#define pwm_status(pin) (((g_pinStatus[pin] & 0xF) == PIN_STATUS_PWM) && \
+9 -2
View File
@@ -89,10 +89,17 @@ void HAL_timer_start(const uint8_t timer_num, const uint32_t frequency) {
NVIC_SetPriority(irq, timer_config[timer_num].priority);
// wave mode, reset counter on match with RC,
TC_Configure(tc, channel, TC_CMR_WAVE | TC_CMR_WAVSEL_UP_RC | TC_CMR_TCCLKS_TIMER_CLOCK1);
TC_Configure(tc, channel,
TC_CMR_WAVE
| TC_CMR_WAVSEL_UP_RC
| (HAL_TIMER_PRESCALER == 2 ? TC_CMR_TCCLKS_TIMER_CLOCK1 : 0)
| (HAL_TIMER_PRESCALER == 8 ? TC_CMR_TCCLKS_TIMER_CLOCK2 : 0)
| (HAL_TIMER_PRESCALER == 32 ? TC_CMR_TCCLKS_TIMER_CLOCK3 : 0)
| (HAL_TIMER_PRESCALER == 128 ? TC_CMR_TCCLKS_TIMER_CLOCK4 : 0)
);
// Set compare value
TC_SetRC(tc, channel, VARIANT_MCK / 2 / frequency);
TC_SetRC(tc, channel, VARIANT_MCK / (HAL_TIMER_PRESCALER) / frequency);
// And start timer
TC_Start(tc, channel);
+2 -1
View File
@@ -35,7 +35,8 @@
typedef uint32_t hal_timer_t;
#define HAL_TIMER_TYPE_MAX 0xFFFFFFFF
#define HAL_TIMER_RATE ((F_CPU) / 2) // frequency of timers peripherals
#define HAL_TIMER_PRESCALER 2
#define HAL_TIMER_RATE ((F_CPU) / (HAL_TIMER_PRESCALER)) // frequency of timers peripherals
#ifndef MF_TIMER_STEP
#define MF_TIMER_STEP 2 // Timer Index for Stepper
+8 -8
View File
@@ -6,14 +6,14 @@
#
import pioutil
if pioutil.is_pio_build():
import platform
current_OS = platform.system()
import platform
current_OS = platform.system()
if current_OS == 'Windows':
if current_OS == 'Windows':
Import("env")
Import("env")
# Use bossac.exe on Windows
env.Replace(
UPLOADCMD="bossac --info --unlock --write --verify --reset --erase -U false --boot $SOURCE"
)
# Use bossac.exe on Windows
env.Replace(
UPLOADCMD="bossac --info --unlock --write --verify --reset --erase -U false --boot $SOURCE"
)
+1 -1
View File
@@ -1059,7 +1059,7 @@ static inline void convert_64_bit_to_byte_array(uint64_t value, uint8_t *data)
while (val_index < 8)
{
data[val_index++] = value & 0xFF;
value = value >> 8;
value >>= 8;
}
}
+1 -1
View File
@@ -62,7 +62,7 @@ void usb_task_idle(void) {
// Attend SD card access from the USB MSD -- Prioritize access to improve speed
int delay = 2;
while (main_b_msc_enable && --delay > 0) {
if (udi_msc_process_trans()) delay = 10000;
if (udi_msc_process_trans()) delay = 20;
// Reset the watchdog, just to be sure
REG_WDT_CR = WDT_CR_WDRSTT | WDT_CR_KEY(0xA5);
+38 -12
View File
@@ -65,6 +65,7 @@ portMUX_TYPE MarlinHAL::spinlock = portMUX_INITIALIZER_UNLOCKED;
// ------------------------
uint16_t MarlinHAL::adc_result;
pwm_pin_t MarlinHAL::pwm_pin_data[MAX_EXPANDER_BITS];
// ------------------------
// Private Variables
@@ -330,21 +331,46 @@ int8_t get_pwm_channel(const pin_t pin, const uint32_t freq, const uint16_t res)
}
void MarlinHAL::set_pwm_duty(const pin_t pin, const uint16_t v, const uint16_t v_size/*=_BV(PWM_RESOLUTION)-1*/, const bool invert/*=false*/) {
const int8_t cid = get_pwm_channel(pin, PWM_FREQUENCY, PWM_RESOLUTION);
if (cid >= 0) {
uint32_t duty = map(invert ? v_size - v : v, 0, v_size, 0, _BV(PWM_RESOLUTION)-1);
ledcWrite(cid, duty);
}
#if ENABLED(I2S_STEPPER_STREAM)
if (pin > 127) {
const uint8_t pinlo = pin & 0x7F;
pwm_pin_t &pindata = pwm_pin_data[pinlo];
const uint32_t duty = map(invert ? v_size - v : v, 0, v_size, 0, pindata.pwm_cycle_ticks);
if (duty == 0 || duty == pindata.pwm_cycle_ticks) { // max or min (i.e., on/off)
pindata.pwm_duty_ticks = 0; // turn off PWM for this pin
duty ? SBI32(i2s_port_data, pinlo) : CBI32(i2s_port_data, pinlo); // set pin level
}
else
pindata.pwm_duty_ticks = duty; // PWM duty count = # of 4µs ticks per full PWM cycle
}
else
#endif
{
const int8_t cid = get_pwm_channel(pin, PWM_FREQUENCY, PWM_RESOLUTION);
if (cid >= 0) {
const uint32_t duty = map(invert ? v_size - v : v, 0, v_size, 0, _BV(PWM_RESOLUTION)-1);
ledcWrite(cid, duty);
}
}
}
int8_t MarlinHAL::set_pwm_frequency(const pin_t pin, const uint32_t f_desired) {
const int8_t cid = channel_for_pin(pin);
if (cid >= 0) {
if (f_desired == ledcReadFreq(cid)) return cid; // no freq change
ledcDetachPin(chan_pin[cid]);
chan_pin[cid] = 0; // remove old freq channel
}
return get_pwm_channel(pin, f_desired, PWM_RESOLUTION); // try for new one
#if ENABLED(I2S_STEPPER_STREAM)
if (pin > 127) {
pwm_pin_data[pin & 0x7F].pwm_cycle_ticks = 1000000UL / f_desired / 4; // # of 4µs ticks per full PWM cycle
return 0;
}
else
#endif
{
const int8_t cid = channel_for_pin(pin);
if (cid >= 0) {
if (f_desired == ledcReadFreq(cid)) return cid; // no freq change
ledcDetachPin(chan_pin[cid]);
chan_pin[cid] = 0; // remove old freq channel
}
return get_pwm_channel(pin, f_desired, PWM_RESOLUTION); // try for new one
}
}
// use hardware PWM if avail, if not then ISR
+13 -2
View File
@@ -60,14 +60,17 @@
#endif
#endif
#define CRITICAL_SECTION_START() portENTER_CRITICAL(&spinlock)
#define CRITICAL_SECTION_END() portEXIT_CRITICAL(&spinlock)
#define CRITICAL_SECTION_START() portENTER_CRITICAL(&hal.spinlock)
#define CRITICAL_SECTION_END() portEXIT_CRITICAL(&hal.spinlock)
#define HAL_CAN_SET_PWM_FREQ // This HAL supports PWM Frequency adjustment
#define PWM_FREQUENCY 1000u // Default PWM frequency when set_pwm_duty() is called without set_pwm_frequency()
#define PWM_RESOLUTION 10u // Default PWM bit resolution
#define CHANNEL_MAX_NUM 15u // max PWM channel # to allocate (7 to only use low speed, 15 to use low & high)
#define MAX_PWM_IOPIN 33u // hardware pwm pins < 34
#ifndef MAX_EXPANDER_BITS
#define MAX_EXPANDER_BITS 32 // I2S expander bit width (max 32)
#endif
// ------------------------
// Types
@@ -76,6 +79,12 @@
typedef double isr_float_t; // FPU ops are used for single-precision, so use double for ISRs.
typedef int16_t pin_t;
typedef struct pwm_pin {
uint32_t pwm_cycle_ticks = 1000000UL / (PWM_FREQUENCY) / 4; // # ticks per pwm cycle
uint32_t pwm_tick_count = 0; // current tick count
uint32_t pwm_duty_ticks = 0; // # of ticks for current duty cycle
} pwm_pin_t;
class Servo;
typedef Servo hal_servo_t;
@@ -197,6 +206,8 @@ public:
// Free SRAM
static int freeMemory();
static pwm_pin_t pwm_pin_data[MAX_EXPANDER_BITS];
//
// ADC Methods
//
+45 -9
View File
@@ -139,22 +139,38 @@ static void IRAM_ATTR i2s_intr_handler_default(void *arg) {
}
void stepperTask(void *parameter) {
uint32_t remaining = 0;
uint32_t nextMainISR = 0;
#if ENABLED(LIN_ADVANCE)
uint32_t nextAdvanceISR = Stepper::LA_ADV_NEVER;
#endif
while (1) {
for (;;) {
xQueueReceive(dma.queue, &dma.current, portMAX_DELAY);
dma.rw_pos = 0;
while (dma.rw_pos < DMA_SAMPLE_COUNT) {
// Fill with the port data post pulse_phase until the next step
if (remaining) {
i2s_push_sample();
remaining--;
}
else {
if (!nextMainISR) {
Stepper::pulse_phase_isr();
remaining = Stepper::block_phase_isr();
nextMainISR = Stepper::block_phase_isr();
}
#if ENABLED(LIN_ADVANCE)
else if (!nextAdvanceISR) {
Stepper::advance_isr();
nextAdvanceISR = Stepper::la_interval;
}
#endif
else
i2s_push_sample();
nextMainISR--;
#if ENABLED(LIN_ADVANCE)
if (nextAdvanceISR == Stepper::LA_ADV_NEVER)
nextAdvanceISR = Stepper::la_interval;
if (nextAdvanceISR && nextAdvanceISR != Stepper::LA_ADV_NEVER)
nextAdvanceISR--;
#endif
}
}
}
@@ -337,6 +353,26 @@ uint8_t i2s_state(uint8_t pin) {
}
void i2s_push_sample() {
// Every 4µs (when space in DMA buffer) toggle each expander PWM output using
// the current duty cycle/frequency so they sync with any steps (once
// through the DMA/FIFO buffers). PWM signal inversion handled by other functions
LOOP_L_N(p, MAX_EXPANDER_BITS) {
if (hal.pwm_pin_data[p].pwm_duty_ticks > 0) { // pin has active pwm?
if (hal.pwm_pin_data[p].pwm_tick_count == 0) {
if (TEST32(i2s_port_data, p)) { // hi->lo
CBI32(i2s_port_data, p);
hal.pwm_pin_data[p].pwm_tick_count = hal.pwm_pin_data[p].pwm_cycle_ticks - hal.pwm_pin_data[p].pwm_duty_ticks;
}
else { // lo->hi
SBI32(i2s_port_data, p);
hal.pwm_pin_data[p].pwm_tick_count = hal.pwm_pin_data[p].pwm_duty_ticks;
}
}
else
hal.pwm_pin_data[p].pwm_tick_count--;
}
}
dma.current[dma.rw_pos++] = i2s_port_data;
}
@@ -20,3 +20,10 @@
*
*/
#pragma once
//
// Board-specific options need to be defined before HAL.h
//
#if MB(MKS_TINYBEE)
#define MAX_EXPANDER_BITS 24 // TinyBee has 3 x HC595
#endif
+8
View File
@@ -45,6 +45,14 @@
#error "FAST_PWM_FAN is not available on TinyBee."
#endif
#if BOTH(I2S_STEPPER_STREAM, BABYSTEPPING) && DISABLED(INTEGRATED_BABYSTEPPING)
#error "BABYSTEPPING on I2S stream requires INTEGRATED_BABYSTEPPING."
#endif
#if USING_PULLDOWNS
#error "PULLDOWN pin mode is not available on ESP32 boards."
#endif
#if BOTH(I2S_STEPPER_STREAM, LIN_ADVANCE) && DISABLED(EXPERIMENTAL_I2S_LA)
#error "I2S stream is currently incompatible with LIN_ADVANCE."
#endif
+12
View File
@@ -32,6 +32,13 @@
#include "HAL.h"
#include "SPI.h"
#if ENABLED(SDSUPPORT)
#include "../../sd/cardreader.h"
#if ENABLED(ESP3D_WIFISUPPORT)
#include "sd_ESP32.h"
#endif
#endif
static SPISettings spiConfig;
@@ -45,6 +52,11 @@ static SPISettings spiConfig;
uint8_t u8g_eps_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) {
static uint8_t msgInitCount = 2; // Ignore all messages until 2nd U8G_COM_MSG_INIT
#if ENABLED(PAUSE_LCD_FOR_BUSY_SD)
if (card.flag.saving || card.flag.logging || TERN0(ESP3D_WIFISUPPORT, sd_busy_lock == true)) return 0;
#endif
if (msgInitCount) {
if (msg == U8G_COM_MSG_INIT) msgInitCount--;
if (msgInitCount) return -1;
+8 -8
View File
@@ -69,12 +69,12 @@ bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, ui
std::size_t bytes_written = 0;
for (std::size_t i = 0; i < size; i++) {
buffer[pos+i] = value[i];
bytes_written ++;
buffer[pos + i] = value[i];
bytes_written++;
}
crc16(crc, value, size);
pos = pos + size;
pos += size;
return (bytes_written != size); // return true for any error
}
@@ -82,21 +82,21 @@ bool PersistentStore::read_data(int &pos, uint8_t *value, const size_t size, uin
std::size_t bytes_read = 0;
if (writing) {
for (std::size_t i = 0; i < size; i++) {
value[i] = buffer[pos+i];
bytes_read ++;
value[i] = buffer[pos + i];
bytes_read++;
}
crc16(crc, value, size);
}
else {
uint8_t temp[size];
for (std::size_t i = 0; i < size; i++) {
temp[i] = buffer[pos+i];
bytes_read ++;
temp[i] = buffer[pos + i];
bytes_read++;
}
crc16(crc, temp, size);
}
pos = pos + size;
pos += size;
return bytes_read != size; // return true for any error
}
+2 -2
View File
@@ -26,8 +26,8 @@
struct LowpassFilter {
uint64_t data_delay = 0;
uint16_t update(uint16_t value) {
data_delay = data_delay - (data_delay >> 6) + value;
return (uint16_t)(data_delay >> 6);
data_delay += value - (data_delay >> 6);
return uint16_t(data_delay >> 6);
}
};
+46 -1
View File
@@ -318,8 +318,16 @@ void SPIClass::dmaSend(void *buf, uint16_t length, bool minc) {
// Enable DMA
GPDMA_ChannelCmd(0, ENABLE);
/*
* Observed behaviour on normal data transfer completion (SKR 1.3 board / LPC1768 MCU)
* GPDMA_STAT_INTTC flag is SET
* GPDMA_STAT_INTERR flag is NOT SET
* GPDMA_STAT_RAWINTTC flag is NOT SET
* GPDMA_STAT_RAWINTERR flag is SET
*/
// Wait for data transfer
while (!GPDMA_IntGetStatus(GPDMA_STAT_RAWINTTC, 0) && !GPDMA_IntGetStatus(GPDMA_STAT_RAWINTERR, 0)) { }
while (!GPDMA_IntGetStatus(GPDMA_STAT_INTTC, 0) && !GPDMA_IntGetStatus(GPDMA_STAT_INTERR, 0)) {}
// Clear err and int
GPDMA_ClearIntPending (GPDMA_STATCLR_INTTC, 0);
@@ -333,6 +341,43 @@ void SPIClass::dmaSend(void *buf, uint16_t length, bool minc) {
SSP_DMACmd(_currentSetting->spi_d, SSP_DMA_TX, DISABLE);
}
void SPIClass::dmaSendAsync(void *buf, uint16_t length, bool minc) {
//TODO: LPC dma can only write 0xFFF bytes at once.
GPDMA_Channel_CFG_Type GPDMACfg;
/* Configure GPDMA channel 0 -------------------------------------------------------------*/
/* DMA Channel 0 */
GPDMACfg.ChannelNum = 0;
// Source memory
GPDMACfg.SrcMemAddr = (uint32_t)buf;
// Destination memory - Not used
GPDMACfg.DstMemAddr = 0;
// Transfer size
GPDMACfg.TransferSize = length;
// Transfer width
GPDMACfg.TransferWidth = (_currentSetting->dataSize == DATA_SIZE_16BIT) ? GPDMA_WIDTH_HALFWORD : GPDMA_WIDTH_BYTE;
// Transfer type
GPDMACfg.TransferType = GPDMA_TRANSFERTYPE_M2P;
// Source connection - unused
GPDMACfg.SrcConn = 0;
// Destination connection
GPDMACfg.DstConn = (_currentSetting->spi_d == LPC_SSP0) ? GPDMA_CONN_SSP0_Tx : GPDMA_CONN_SSP1_Tx;
GPDMACfg.DMALLI = 0;
// Enable dma on SPI
SSP_DMACmd(_currentSetting->spi_d, SSP_DMA_TX, ENABLE);
// Only increase memory if minc is true
GPDMACfg.MemoryIncrease = (minc ? GPDMA_DMACCxControl_SI : 0);
// Setup channel with given parameter
GPDMA_Setup(&GPDMACfg);
// Enable DMA
GPDMA_ChannelCmd(0, ENABLE);
}
uint16_t SPIClass::read() {
return SSP_ReceiveData(_currentSetting->spi_d);
}
@@ -29,6 +29,6 @@
// LPC1768 boards seem to lose steps when saving to EEPROM during print (issue #20785)
// TODO: Which other boards are incompatible?
#if defined(MCU_LPC1768) && PRINTCOUNTER_SAVE_INTERVAL > 0
#if defined(MCU_LPC1768) && ENABLED(FLASH_EEPROM_EMULATION) && PRINTCOUNTER_SAVE_INTERVAL > 0
#define PRINTCOUNTER_SYNC 1
#endif
+1
View File
@@ -155,6 +155,7 @@ public:
void read(uint8_t *buf, uint32_t len);
void dmaSend(void *buf, uint16_t length, bool minc);
void dmaSendAsync(void *buf, uint16_t length, bool minc);
/**
* @brief Sets the number of the SPI peripheral to be used by
+56 -41
View File
@@ -26,7 +26,7 @@
#include "tft_spi.h"
SPIClass TFT_SPI::SPIx(1);
SPIClass TFT_SPI::SPIx(TFT_SPI_DEVICE);
void TFT_SPI::Init() {
#if PIN_EXISTS(TFT_RESET)
@@ -38,40 +38,10 @@ void TFT_SPI::Init() {
OUT_WRITE(TFT_BACKLIGHT_PIN, HIGH);
#endif
SET_OUTPUT(TFT_DC_PIN);
SET_OUTPUT(TFT_CS_PIN);
WRITE(TFT_DC_PIN, HIGH);
WRITE(TFT_CS_PIN, HIGH);
OUT_WRITE(TFT_DC_PIN, HIGH);
OUT_WRITE(TFT_CS_PIN, HIGH);
/**
* STM32F1 APB2 = 72MHz, APB1 = 36MHz, max SPI speed of this MCU if 18Mhz
* STM32F1 has 3 SPI ports, SPI1 in APB2, SPI2/SPI3 in APB1
* so the minimum prescale of SPI1 is DIV4, SPI2/SPI3 is DIV2
*/
#if 0
#if SPI_DEVICE == 1
#define SPI_CLOCK_MAX SPI_CLOCK_DIV4
#else
#define SPI_CLOCK_MAX SPI_CLOCK_DIV2
#endif
uint8_t clock;
uint8_t spiRate = SPI_FULL_SPEED;
switch (spiRate) {
case SPI_FULL_SPEED: clock = SPI_CLOCK_MAX ; break;
case SPI_HALF_SPEED: clock = SPI_CLOCK_DIV4 ; break;
case SPI_QUARTER_SPEED: clock = SPI_CLOCK_DIV8 ; break;
case SPI_EIGHTH_SPEED: clock = SPI_CLOCK_DIV16; break;
case SPI_SPEED_5: clock = SPI_CLOCK_DIV32; break;
case SPI_SPEED_6: clock = SPI_CLOCK_DIV64; break;
default: clock = SPI_CLOCK_DIV2; // Default from the SPI library
}
#endif
#if TFT_MISO_PIN == BOARD_SPI1_MISO_PIN
SPIx.setModule(1);
#elif TFT_MISO_PIN == BOARD_SPI2_MISO_PIN
SPIx.setModule(2);
#endif
SPIx.setModule(TFT_SPI_DEVICE);
SPIx.setClock(SPI_CLOCK_MAX_TFT);
SPIx.setBitOrder(MSBFIRST);
SPIx.setDataMode(SPI_MODE0);
@@ -114,17 +84,62 @@ uint32_t TFT_SPI::ReadID(uint16_t Reg) {
return data >> 7;
}
bool TFT_SPI::isBusy() { return false; }
bool TFT_SPI::isBusy() {
#define __IS_DMA_CONFIGURED(__HANDLE__) ((__HANDLE__)->DMACCSrcAddr != 0)
void TFT_SPI::Abort() { DataTransferEnd(); }
// DMA Channel 0 is hardcoded in dmaSendAsync() and dmaSend()
if (!__IS_DMA_CONFIGURED(LPC_GPDMACH0)) return false;
void TFT_SPI::Transmit(uint16_t Data) { SPIx.transfer(Data); }
if (GPDMA_IntGetStatus(GPDMA_STAT_INTERR, 0)) {
// You should not be here - DMA transfer error flag is set
// Abort DMA transfer and release SPI
}
else {
// Check if DMA transfer completed flag is set
if (!GPDMA_IntGetStatus(GPDMA_STAT_INTTC, 0)) return true;
// Check if SPI TX butter is empty and SPI is idle
if ((SSP_GetStatus(LPC_SSPx, SSP_STAT_TXFIFO_EMPTY) == RESET) || (SSP_GetStatus(LPC_SSPx, SSP_STAT_BUSY) == SET)) return true;
}
Abort();
return false;
}
void TFT_SPI::Abort() {
// DMA Channel 0 is hardcoded in dmaSendAsync() and dmaSend()
// Disable DMA
GPDMA_ChannelCmd(0, DISABLE);
// Clear ERR and TC
GPDMA_ClearIntPending(GPDMA_STATCLR_INTTC, 0);
GPDMA_ClearIntPending(GPDMA_STATCLR_INTERR, 0);
// Disable DMA on SPI
SSP_DMACmd(LPC_SSPx, SSP_DMA_TX, DISABLE);
// Deconfigure DMA Channel 0
LPC_GPDMACH0->DMACCControl = 0U;
LPC_GPDMACH0->DMACCConfig = 0U;
LPC_GPDMACH0->DMACCSrcAddr = 0U;
LPC_GPDMACH0->DMACCDestAddr = 0U;
void TFT_SPI::TransmitDMA(uint32_t MemoryIncrease, uint16_t *Data, uint16_t Count) {
DataTransferBegin(DATASIZE_16BIT);
WRITE(TFT_DC_PIN, HIGH);
SPIx.dmaSend(Data, Count, MemoryIncrease);
DataTransferEnd();
}
void TFT_SPI::Transmit(uint16_t Data) { SPIx.transfer(Data); }
void TFT_SPI::Transmit(uint32_t MemoryIncrease, uint16_t *Data, uint16_t Count) {
DataTransferBegin(DATASIZE_16BIT);
SPIx.dmaSend(Data, Count, MemoryIncrease);
Abort();
}
void TFT_SPI::TransmitDMA(uint32_t MemoryIncrease, uint16_t *Data, uint16_t Count) {
DataTransferBegin(DATASIZE_16BIT);
SPIx.dmaSendAsync(Data, Count, MemoryIncrease);
TERN_(TFT_SHARED_SPI, while (isBusy()));
}
#endif // HAS_SPI_TFT
+27 -15
View File
@@ -27,6 +27,18 @@
#include <lpc17xx_ssp.h>
// #include <lpc17xx_gpdma.h>
#define IS_SPI(N) (BOARD_NR_SPI >= N && (TFT_SCK_PIN == BOARD_SPI##N##_SCK_PIN) && (TFT_MOSI_PIN == BOARD_SPI##N##_MOSI_PIN) && (TFT_MISO_PIN == BOARD_SPI##N##_MISO_PIN))
#if IS_SPI(1)
#define TFT_SPI_DEVICE 1
#define LPC_SSPx LPC_SSP0
#elif IS_SPI(2)
#define TFT_SPI_DEVICE 2
#define LPC_SSPx LPC_SSP1
#else
#error "Invalid TFT SPI configuration."
#endif
#undef IS_SPI
#ifndef LCD_READ_ID
#define LCD_READ_ID 0x04 // Read display identification information (0xD3 on ILI9341)
#endif
@@ -34,17 +46,19 @@
#define LCD_READ_ID4 0xD3 // Read display identification information (0xD3 on ILI9341)
#endif
#define DATASIZE_8BIT SSP_DATABIT_8
#define DATASIZE_16BIT SSP_DATABIT_16
#define TFT_IO_DRIVER TFT_SPI
#define DATASIZE_8BIT SSP_DATABIT_8
#define DATASIZE_16BIT SSP_DATABIT_16
#define TFT_IO_DRIVER TFT_SPI
#define DMA_MAX_SIZE 0xFFF
#define DMA_MINC_ENABLE 1
#define DMA_MINC_DISABLE 0
#define DMA_MINC_ENABLE 1
#define DMA_MINC_DISABLE 0
class TFT_SPI {
private:
static uint32_t ReadID(uint16_t Reg);
static void Transmit(uint16_t Data);
static void Transmit(uint32_t MemoryIncrease, uint16_t *Data, uint16_t Count);
static void TransmitDMA(uint32_t MemoryIncrease, uint16_t *Data, uint16_t Count);
public:
@@ -56,22 +70,20 @@ public:
static void Abort();
static void DataTransferBegin(uint16_t DataWidth = DATASIZE_16BIT);
static void DataTransferEnd() { OUT_WRITE(TFT_CS_PIN, HIGH); SPIx.end(); };
static void DataTransferEnd() { WRITE(TFT_CS_PIN, HIGH); SSP_Cmd(LPC_SSPx, DISABLE); };
static void DataTransferAbort();
static void WriteData(uint16_t Data) { Transmit(Data); }
static void WriteReg(uint16_t Reg) { OUT_WRITE(TFT_A0_PIN, LOW); Transmit(Reg); OUT_WRITE(TFT_A0_PIN, HIGH); }
static void WriteReg(uint16_t Reg) { WRITE(TFT_DC_PIN, LOW); Transmit(Reg); WRITE(TFT_DC_PIN, HIGH); }
static void WriteSequence(uint16_t *Data, uint16_t Count) { TransmitDMA(DMA_MINC_ENABLE, Data, Count); }
// static void WriteMultiple(uint16_t Color, uint16_t Count) { static uint16_t Data; Data = Color; TransmitDMA(DMA_MINC_DISABLE, &Data, Count); }
static void WriteSequence_DMA(uint16_t *Data, uint16_t Count) { TransmitDMA(DMA_MINC_ENABLE, Data, Count); }
static void WriteMultiple_DMA(uint16_t Color, uint16_t Count) { static uint16_t Data; Data = Color; TransmitDMA(DMA_MINC_DISABLE, &Data, Count); }
static void WriteSequence(uint16_t *Data, uint16_t Count) { Transmit(DMA_MINC_ENABLE, Data, Count); }
static void WriteMultiple(uint16_t Color, uint32_t Count) {
static uint16_t Data; Data = Color;
//LPC dma can only write 0xFFF bytes at once.
#define MAX_DMA_SIZE (0xFFF - 1)
while (Count > 0) {
TransmitDMA(DMA_MINC_DISABLE, &Data, Count > MAX_DMA_SIZE ? MAX_DMA_SIZE : Count);
Count = Count > MAX_DMA_SIZE ? Count - MAX_DMA_SIZE : 0;
Transmit(DMA_MINC_DISABLE, &Color, Count > DMA_MAX_SIZE ? DMA_MAX_SIZE : Count);
Count = Count > DMA_MAX_SIZE ? Count - DMA_MAX_SIZE : 0;
}
#undef MAX_DMA_SIZE
}
};
+5 -3
View File
@@ -44,9 +44,11 @@ uint16_t delta(uint16_t a, uint16_t b) { return a > b ? a - b : b - a; }
#endif
void XPT2046::Init() {
SET_INPUT(TOUCH_MISO_PIN);
SET_OUTPUT(TOUCH_MOSI_PIN);
SET_OUTPUT(TOUCH_SCK_PIN);
#if DISABLED(TOUCH_BUTTONS_HW_SPI)
SET_INPUT(TOUCH_MISO_PIN);
SET_OUTPUT(TOUCH_MOSI_PIN);
SET_OUTPUT(TOUCH_SCK_PIN);
#endif
OUT_WRITE(TOUCH_CS_PIN, HIGH);
#if PIN_EXISTS(TOUCH_INT)
+112 -104
View File
@@ -9,119 +9,127 @@ from __future__ import print_function
import pioutil
if pioutil.is_pio_build():
target_filename = "FIRMWARE.CUR"
target_drive = "REARM"
target_filename = "FIRMWARE.CUR"
target_drive = "REARM"
import os,getpass,platform
import platform
current_OS = platform.system()
Import("env")
current_OS = platform.system()
Import("env")
def print_error(e):
print('\nUnable to find destination disk (%s)\n' \
'Please select it in platformio.ini using the upload_port keyword ' \
'(https://docs.platformio.org/en/latest/projectconf/section_env_upload.html) ' \
'or copy the firmware (.pio/build/%s/firmware.bin) manually to the appropriate disk\n' \
%(e, env.get('PIOENV')))
def print_error(e):
print('\nUnable to find destination disk (%s)\n' \
'Please select it in platformio.ini using the upload_port keyword ' \
'(https://docs.platformio.org/en/latest/projectconf/section_env_upload.html) ' \
'or copy the firmware (.pio/build/%s/firmware.bin) manually to the appropriate disk\n' \
%(e, env.get('PIOENV')))
def before_upload(source, target, env):
try:
#
# Find a disk for upload
#
upload_disk = 'Disk not found'
target_file_found = False
target_drive_found = False
if current_OS == 'Windows':
#
# platformio.ini will accept this for a Windows upload port designation: 'upload_port = L:'
# Windows - doesn't care about the disk's name, only cares about the drive letter
import subprocess,string
from ctypes import windll
def before_upload(source, target, env):
try:
from pathlib import Path
#
# Find a disk for upload
#
upload_disk = 'Disk not found'
target_file_found = False
target_drive_found = False
if current_OS == 'Windows':
#
# platformio.ini will accept this for a Windows upload port designation: 'upload_port = L:'
# Windows - doesn't care about the disk's name, only cares about the drive letter
import subprocess,string
from ctypes import windll
from pathlib import PureWindowsPath
# getting list of drives
# https://stackoverflow.com/questions/827371/is-there-a-way-to-list-all-the-available-drive-letters-in-python
drives = []
bitmask = windll.kernel32.GetLogicalDrives()
for letter in string.ascii_uppercase:
if bitmask & 1:
drives.append(letter)
bitmask >>= 1
# getting list of drives
# https://stackoverflow.com/questions/827371/is-there-a-way-to-list-all-the-available-drive-letters-in-python
drives = []
bitmask = windll.kernel32.GetLogicalDrives()
for letter in string.ascii_uppercase:
if bitmask & 1:
drives.append(letter)
bitmask >>= 1
for drive in drives:
final_drive_name = drive + ':\\'
# print ('disc check: {}'.format(final_drive_name))
try:
volume_info = str(subprocess.check_output('cmd /C dir ' + final_drive_name, stderr=subprocess.STDOUT))
except Exception as e:
print ('error:{}'.format(e))
continue
else:
if target_drive in volume_info and not target_file_found: # set upload if not found target file yet
target_drive_found = True
upload_disk = final_drive_name
if target_filename in volume_info:
if not target_file_found:
upload_disk = final_drive_name
target_file_found = True
for drive in drives:
final_drive_name = drive + ':'
# print ('disc check: {}'.format(final_drive_name))
try:
volume_info = str(subprocess.check_output('cmd /C dir ' + final_drive_name, stderr=subprocess.STDOUT))
except Exception as e:
print ('error:{}'.format(e))
continue
else:
if target_drive in volume_info and not target_file_found: # set upload if not found target file yet
target_drive_found = True
upload_disk = PureWindowsPath(final_drive_name)
if target_filename in volume_info:
if not target_file_found:
upload_disk = PureWindowsPath(final_drive_name)
target_file_found = True
elif current_OS == 'Linux':
#
# platformio.ini will accept this for a Linux upload port designation: 'upload_port = /media/media_name/drive'
#
drives = os.listdir(os.path.join(os.sep, 'media', getpass.getuser()))
if target_drive in drives: # If target drive is found, use it.
target_drive_found = True
upload_disk = os.path.join(os.sep, 'media', getpass.getuser(), target_drive) + os.sep
else:
for drive in drives:
try:
files = os.listdir(os.path.join(os.sep, 'media', getpass.getuser(), drive))
except:
continue
else:
if target_filename in files:
upload_disk = os.path.join(os.sep, 'media', getpass.getuser(), drive) + os.sep
target_file_found = True
break
#
# set upload_port to drive if found
#
elif current_OS == 'Linux':
#
# platformio.ini will accept this for a Linux upload port designation: 'upload_port = /media/media_name/drive'
#
import getpass
user = getpass.getuser()
mpath = Path('/media', user)
drives = [ x for x in mpath.iterdir() if x.is_dir() ]
if target_drive in drives: # If target drive is found, use it.
target_drive_found = True
upload_disk = mpath / target_drive
else:
for drive in drives:
try:
fpath = mpath / drive
filenames = [ x.name for x in fpath.iterdir() if x.is_file() ]
except:
continue
else:
if target_filename in filenames:
upload_disk = mpath / drive
target_file_found = True
break
#
# set upload_port to drive if found
#
if target_file_found or target_drive_found:
env.Replace(
UPLOAD_FLAGS="-P$UPLOAD_PORT"
)
if target_file_found or target_drive_found:
env.Replace(
UPLOAD_FLAGS="-P$UPLOAD_PORT"
)
elif current_OS == 'Darwin': # MAC
#
# platformio.ini will accept this for a OSX upload port designation: 'upload_port = /media/media_name/drive'
#
drives = os.listdir('/Volumes') # human readable names
if target_drive in drives and not target_file_found: # set upload if not found target file yet
target_drive_found = True
upload_disk = '/Volumes/' + target_drive + '/'
for drive in drives:
try:
filenames = os.listdir('/Volumes/' + drive + '/') # will get an error if the drive is protected
except:
continue
else:
if target_filename in filenames:
if not target_file_found:
upload_disk = '/Volumes/' + drive + '/'
target_file_found = True
elif current_OS == 'Darwin': # MAC
#
# platformio.ini will accept this for a OSX upload port designation: 'upload_port = /media/media_name/drive'
#
dpath = Path('/Volumes') # human readable names
drives = [ x for x in dpath.iterdir() if x.is_dir() ]
if target_drive in drives and not target_file_found: # set upload if not found target file yet
target_drive_found = True
upload_disk = dpath / target_drive
for drive in drives:
try:
fpath = dpath / drive # will get an error if the drive is protected
filenames = [ x.name for x in fpath.iterdir() if x.is_file() ]
except:
continue
else:
if target_filename in filenames:
upload_disk = dpath / drive
target_file_found = True
break
#
# Set upload_port to drive if found
#
if target_file_found or target_drive_found:
env.Replace(UPLOAD_PORT=upload_disk)
print('\nUpload disk: ', upload_disk, '\n')
else:
print_error('Autodetect Error')
#
# Set upload_port to drive if found
#
if target_file_found or target_drive_found:
env.Replace(UPLOAD_PORT=str(upload_disk))
print('\nUpload disk: ', upload_disk, '\n')
else:
print_error('Autodetect Error')
except Exception as e:
print_error(str(e))
except Exception as e:
print_error(str(e))
env.AddPreAction("upload", before_upload)
env.AddPreAction("upload", before_upload)
+2 -2
View File
@@ -208,8 +208,8 @@ public:
MarlinHAL() {}
// Watchdog
static void watchdog_init() IF_DISABLED(USE_WATCHDOG, {});
static void watchdog_refresh() IF_DISABLED(USE_WATCHDOG, {});
static void watchdog_init();
static void watchdog_refresh();
static void init() {} // Called early in setup()
static void init_board() {} // Called less early in setup()
+1 -1
View File
@@ -44,7 +44,7 @@
*
* Now you can simply SET_OUTPUT(STEP); WRITE(STEP, HIGH); WRITE(STEP, LOW);
*
* Why double up on these macros? see http://gcc.gnu.org/onlinedocs/cpp/Stringification.html
* Why double up on these macros? see https://gcc.gnu.org/onlinedocs/cpp/Stringification.html
*/
/// Read a pin
+7 -4
View File
@@ -31,10 +31,11 @@
#endif
#define DATASIZE_8BIT 8
#define DATASIZE_16BIT 16
#define TFT_IO_DRIVER TFT_SPI
#define DATASIZE_16BIT 16
#define TFT_IO_DRIVER TFT_SPI
#define DMA_MAX_SIZE 0xFFFF
#define DMA_MINC_ENABLE 1
#define DMA_MINC_ENABLE 1
#define DMA_MINC_DISABLE 0
class TFT_SPI {
@@ -58,7 +59,9 @@ public:
static void WriteData(uint16_t Data);
static void WriteReg(uint16_t Reg);
static void WriteSequence_DMA(uint16_t *Data, uint16_t Count) { WriteSequence(Data, Count); }
static void WriteMultiple_DMA(uint16_t Color, uint16_t Count) { WriteMultiple(Color, Count); }
static void WriteSequence(uint16_t *Data, uint16_t Count);
// static void WriteMultiple(uint16_t Color, uint16_t Count);
static void WriteMultiple(uint16_t Color, uint32_t Count);
};
+1 -1
View File
@@ -51,7 +51,7 @@ enum XPTCoordinate : uint8_t {
XPT2046_Z2 = 0x40 | XPT2046_CONTROL | XPT2046_DFR_MODE,
};
#if !defined(XPT2046_Z1_THRESHOLD)
#ifndef XPT2046_Z1_THRESHOLD
#define XPT2046_Z1_THRESHOLD 10
#endif
@@ -168,4 +168,4 @@ uint8_t u8g_com_ST7920_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void
#endif
#endif // IS_U8GLIB_ST7920
#endif // TARGET_LPC1768
#endif // __PLAT_NATIVE_SIM__
+212
View File
@@ -0,0 +1,212 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2022 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
*
* 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/>.
*
*/
/**
* SAMD21 HAL developed by Bart Meijer (brupje)
* Based on SAMD51 HAL by Giuliano Zaro (AKA GMagician)
*/
#ifdef __SAMD21__
#include "../../inc/MarlinConfig.h"
#include <wiring_private.h>
#if USING_HW_SERIALUSB
DefaultSerial1 MSerialUSB(false, SerialUSB);
#endif
#if USING_HW_SERIAL0
DefaultSerial2 MSerial1(false, Serial1);
#endif
#if USING_HW_SERIAL1
DefaultSerial3 MSerial2(false, Serial2);
#endif
#define WDT_CONFIG_PER_7_Val 0x9u
#define WDT_CONFIG_PER_Pos 0
#define WDT_CONFIG_PER_7 (WDT_CONFIG_PER_7_Val << WDT_CONFIG_PER_Pos)
#if ENABLED(USE_WATCHDOG)
#define WDT_TIMEOUT_REG TERN(WATCHDOG_DURATION_8S, WDT_CONFIG_PER_CYC8192, WDT_CONFIG_PER_CYC4096) // 4 or 8 second timeout
void MarlinHAL::watchdog_init() {
// Set up the generic clock (GCLK2) used to clock the watchdog timer at 1.024kHz
GCLK->GENDIV.reg = GCLK_GENDIV_DIV(4) | // Divide the 32.768kHz clock source by divisor 32, where 2^(4 + 1): 32.768kHz/32=1.024kHz
GCLK_GENDIV_ID(2); // Select Generic Clock (GCLK) 2
while (GCLK->STATUS.bit.SYNCBUSY); // Wait for synchronization
REG_GCLK_GENCTRL = GCLK_GENCTRL_DIVSEL | // Set to divide by 2^(GCLK_GENDIV_DIV(4) + 1)
GCLK_GENCTRL_IDC | // Set the duty cycle to 50/50 HIGH/LOW
GCLK_GENCTRL_GENEN | // Enable GCLK2
GCLK_GENCTRL_SRC_OSCULP32K | // Set the clock source to the ultra low power oscillator (OSCULP32K)
GCLK_GENCTRL_ID(2); // Select GCLK2
while (GCLK->STATUS.bit.SYNCBUSY); // Wait for synchronization
// Feed GCLK2 to WDT (Watchdog Timer)
REG_GCLK_CLKCTRL = GCLK_CLKCTRL_CLKEN | // Enable GCLK2 to the WDT
GCLK_CLKCTRL_GEN_GCLK2 | // Select GCLK2
GCLK_CLKCTRL_ID_WDT; // Feed the GCLK2 to the WDT
while (GCLK->STATUS.bit.SYNCBUSY); // Wait for synchronization
WDT->CONFIG.bit.PER = WDT_CONFIG_PER_7; // Set the WDT reset timeout to 4 seconds
while (WDT->STATUS.bit.SYNCBUSY); // Wait for synchronization
REG_WDT_CTRL = WDT_CTRL_ENABLE; // Enable the WDT in normal mode
while (WDT->STATUS.bit.SYNCBUSY); // Wait for synchronization
}
// Reset watchdog. MUST be called at least every 4 seconds after the
// first watchdog_init or SAMD will go into emergency procedures.
void MarlinHAL::watchdog_refresh() {
WDT->CLEAR.reg = WDT_CLEAR_CLEAR_KEY;
while (WDT->STATUS.bit.SYNCBUSY);
}
#endif
// ------------------------
// Types
// ------------------------
// ------------------------
// Private Variables
// ------------------------
// ------------------------
// Private functions
// ------------------------
void MarlinHAL::dma_init() {}
// ------------------------
// Public functions
// ------------------------
// HAL initialization task
void MarlinHAL::init() {
TERN_(DMA_IS_REQUIRED, dma_init());
#if ENABLED(SDSUPPORT)
#if HAS_SD_DETECT && SD_CONNECTION_IS(ONBOARD)
SET_INPUT_PULLUP(SD_DETECT_PIN);
#endif
OUT_WRITE(SDSS, HIGH); // Try to set SDSS inactive before any other SPI users start up
#endif
}
#pragma push_macro("WDT")
#undef WDT // Required to be able to use '.bit.WDT'. Compiler wrongly replace struct field with WDT define
uint8_t MarlinHAL::get_reset_source() {
return 0;
}
#pragma pop_macro("WDT")
void MarlinHAL::reboot() { NVIC_SystemReset(); }
extern "C" {
void * _sbrk(int incr);
extern unsigned int __bss_end__; // end of bss section
}
// Return free memory between end of heap (or end bss) and whatever is current
int freeMemory() {
int free_memory, heap_end = (int)_sbrk(0);
return (int)&free_memory - (heap_end ?: (int)&__bss_end__);
}
// ------------------------
// ADC
// ------------------------
uint16_t MarlinHAL::adc_result;
void MarlinHAL::adc_init() {
/* thanks to https://www.eevblog.com/forum/microcontrollers/samd21g18-adc-with-resrdy-interrupts-only-reads-once-or-twice/ */
ADC->CTRLA.bit.ENABLE = false;
while(ADC->STATUS.bit.SYNCBUSY);
// load chip corrections
uint32_t bias = (*((uint32_t *) ADC_FUSES_BIASCAL_ADDR) & ADC_FUSES_BIASCAL_Msk) >> ADC_FUSES_BIASCAL_Pos;
uint32_t linearity = (*((uint32_t *) ADC_FUSES_LINEARITY_0_ADDR) & ADC_FUSES_LINEARITY_0_Msk) >> ADC_FUSES_LINEARITY_0_Pos;
linearity |= ((*((uint32_t *) ADC_FUSES_LINEARITY_1_ADDR) & ADC_FUSES_LINEARITY_1_Msk) >> ADC_FUSES_LINEARITY_1_Pos) << 5;
/* Wait for bus synchronization. */
while (ADC->STATUS.bit.SYNCBUSY) {};
ADC->CALIB.reg = ADC_CALIB_BIAS_CAL(bias) | ADC_CALIB_LINEARITY_CAL(linearity);
/* Wait for bus synchronization. */
while (ADC->STATUS.bit.SYNCBUSY) {};
ADC->CTRLA.bit.SWRST = true;
while(ADC->STATUS.bit.SYNCBUSY);
ADC->REFCTRL.reg = ADC_REFCTRL_REFSEL_INTVCC1;
ADC->AVGCTRL.reg = ADC_AVGCTRL_SAMPLENUM_32| ADC_AVGCTRL_ADJRES(4);;
ADC->CTRLB.reg = ADC_CTRLB_PRESCALER_DIV128 |
ADC_CTRLB_RESSEL_16BIT |
ADC_CTRLB_FREERUN;
while(ADC->STATUS.bit.SYNCBUSY);
ADC->SAMPCTRL.bit.SAMPLEN = 0x00;
while(ADC->STATUS.bit.SYNCBUSY);
ADC->INPUTCTRL.reg = ADC_INPUTCTRL_INPUTSCAN(HAL_ADC_AIN_LEN) // scan (INPUTSCAN + NUM_EXTUDERS - 1) pins
| ADC_INPUTCTRL_GAIN_DIV2 |ADC_INPUTCTRL_MUXNEG_GND| HAL_ADC_AIN_START ; /* set to first AIN */
while(ADC->STATUS.bit.SYNCBUSY);
ADC->INTENSET.reg |= ADC_INTENSET_RESRDY; // enable Result Ready ADC interrupts
while (ADC->STATUS.bit.SYNCBUSY);
NVIC_EnableIRQ(ADC_IRQn); // enable ADC interrupts
NVIC_SetPriority(ADC_IRQn, 3);
ADC->CTRLA.bit.ENABLE = true;
}
volatile uint32_t adc_results[HAL_ADC_AIN_NUM_SENSORS];
void ADC_Handler() {
while(ADC->STATUS.bit.SYNCBUSY == 1);
int pos = ADC->INPUTCTRL.bit.INPUTOFFSET;
adc_results[pos] = ADC->RESULT.reg; /* Read the value. */
ADC->INTFLAG.reg = ADC_INTENSET_RESRDY; /* Clear the data ready flag. */
}
void MarlinHAL::adc_start(const pin_t pin) {
/* due to the way INPUTOFFSET works, the last sensor is the first position in the array
and we want the ADC_handler interrupt to be as simple possible, so we do the calculation here.
*/
unsigned int pos = PIN_TO_INPUTCTRL(pin) - HAL_ADC_AIN_START + 1;
if (pos == HAL_ADC_AIN_NUM_SENSORS) pos = 0;
adc_result = adc_results[pos]; // 16-bit resolution
//adc_result = 0xFFFF;
}
#endif // __SAMD21__
+223
View File
@@ -0,0 +1,223 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2022 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
*
* 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
/**
* SAMD21 HAL developed by Bart Meijer (brupje)
* Based on SAMD51 HAL by Giuliano Zaro (AKA GMagician)
*/
#define CPU_32_BIT
#include "../shared/Marduino.h"
#include "../shared/math_32bit.h"
#include "../shared/HAL_SPI.h"
#include "fastio.h"
// ------------------------
// Serial ports
// ------------------------
#include "../../core/serial_hook.h"
typedef ForwardSerial1Class< decltype(SerialUSB) > DefaultSerial1;
extern DefaultSerial1 MSerialUSB;
// Serial ports
typedef ForwardSerial1Class< decltype(Serial1) > DefaultSerial2;
typedef ForwardSerial1Class< decltype(Serial2) > DefaultSerial3;
extern DefaultSerial2 MSerial0;
extern DefaultSerial3 MSerial1;
#define __MSERIAL(X) MSerial##X
#define _MSERIAL(X) __MSERIAL(X)
#define MSERIAL(X) _MSERIAL(INCREMENT(X))
#if WITHIN(SERIAL_PORT, 0, 1)
#define MYSERIAL1 MSERIAL(SERIAL_PORT)
#elif SERIAL_PORT == -1
#define MYSERIAL1 MSerialUSB
#else
#error "SERIAL_PORT must be -1 (Native USB only)."
#endif
#ifdef SERIAL_PORT_2
#if WITHIN(SERIAL_PORT_2, 0, 1)
#define MYSERIAL2 MSERIAL(SERIAL_PORT)
#elif SERIAL_PORT_2 == -1
#define MYSERIAL2 MSerialUSB
#else
#error "SERIAL_PORT_2 must be -1 (Native USB only)."
#endif
#endif
#ifdef MMU2_SERIAL_PORT
#if WITHIN(MMU2_SERIAL_PORT, 0, 1)
#define MMU2_SERIAL MSERIAL(SERIAL_PORT)
#elif MMU2_SERIAL_PORT == -1
#define MMU2_SERIAL MSerialUSB
#else
#error "MMU2_SERIAL_PORT must be -1 (Native USB only)."
#endif
#endif
#ifdef LCD_SERIAL_PORT
#if WITHIN(LCD_SERIAL_PORT, 0, 1)
#define LCD_SERIAL MSERIAL(SERIAL_PORT)
#elif LCD_SERIAL_PORT == -1
#define LCD_SERIAL MSerialUSB
#else
#error "LCD_SERIAL_PORT must be -1 (Native USB only)."
#endif
#endif
typedef int8_t pin_t;
#define SHARED_SERVOS HAS_SERVOS // Use shared/servos.cpp
class Servo;
typedef Servo hal_servo_t;
//
// Interrupts
//
#define CRITICAL_SECTION_START() const bool irqon = !__get_PRIMASK(); __disable_irq()
#define CRITICAL_SECTION_END() if (irqon) __enable_irq()
#define cli() __disable_irq() // Disable interrupts
#define sei() __enable_irq() // Enable interrupts
//
// ADC
//
#define HAL_ADC_FILTERED 1 // Disable Marlin's oversampling. The HAL filters ADC values.
#define HAL_ADC_VREF 3.3
#define HAL_ADC_RESOLUTION 12
#define HAL_ADC_AIN_START ADC_INPUTCTRL_MUXPOS_PIN3
#define HAL_ADC_AIN_NUM_SENSORS 3
#define HAL_ADC_AIN_LEN HAL_ADC_AIN_NUM_SENSORS-1
//
// Pin Mapping for M42, M43, M226
//
#define GET_PIN_MAP_PIN(index) index
#define GET_PIN_MAP_INDEX(pin) pin
#define PARSED_PIN_INDEX(code, dval) parser.intval(code, dval)
//
// Tone
//
void tone(const pin_t _pin, const unsigned int frequency, const unsigned long duration=0);
void noTone(const pin_t _pin);
// ------------------------
// Class Utilities
// ------------------------
#pragma GCC diagnostic push
#if GCC_VERSION <= 50000
#pragma GCC diagnostic ignored "-Wunused-function"
#endif
#ifdef __cplusplus
extern "C" {
#endif
char *dtostrf(double __val, signed char __width, unsigned char __prec, char *__s);
extern "C" int freeMemory();
#ifdef __cplusplus
}
#endif
#pragma GCC diagnostic pop
// ------------------------
// MarlinHAL Class
// ------------------------
class MarlinHAL {
public:
// Earliest possible init, before setup()
MarlinHAL() {}
// Watchdog
static void watchdog_init() IF_DISABLED(USE_WATCHDOG, {});
static void watchdog_refresh() IF_DISABLED(USE_WATCHDOG, {});
static void init(); // Called early in setup()
static void init_board() {} // Called less early in setup()
static void reboot(); // Restart the firmware from 0x0
// Interrupts
static bool isr_state() { return !__get_PRIMASK(); }
static void isr_on() { sei(); }
static void isr_off() { cli(); }
static void delay_ms(const int ms) { delay(ms); }
// Tasks, called from idle()
static void idletask() {}
// Reset
static uint8_t get_reset_source();
static void clear_reset_source() {}
// Free SRAM
static int freeMemory() { return ::freeMemory(); }
//
// ADC Methods
//
static uint16_t adc_result;
// Called by Temperature::init once at startup
static void adc_init();
// Called by Temperature::init for each sensor at startup
static void adc_enable(const uint8_t ch) {}
// Begin ADC sampling on the given pin. Called from Temperature::isr!
static void adc_start(const pin_t pin);
// Is the ADC ready for reading?
static bool adc_ready() { return true; }
// The current value of the ADC register
static uint16_t adc_value() { return adc_result; }
/**
* Set the PWM duty cycle for the pin to the given value.
* No option to invert the duty cycle [default = false]
* No option to change the scale of the provided value to enable finer PWM duty control [default = 255]
*/
static void set_pwm_duty(const pin_t pin, const uint16_t v, const uint16_t=255, const bool=false) {
analogWrite(pin, v);
}
private:
static void dma_init();
};
+148
View File
@@ -0,0 +1,148 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2022 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
*
* 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/>.
*
*/
/**
* SAMD21 HAL developed by Bart Meijer (brupje)
* Based on SAMD51 HAL by Giuliano Zaro (AKA GMagician)
*/
/**
* Hardware and software SPI implementations are included in this file.
*
* Control of the slave select pin(s) is handled by the calling routines and
* SAMD21 let hardware SPI handling to remove SS from its logic.
*/
#ifdef __SAMD21__
// --------------------------------------------------------------------------
// Includes
// --------------------------------------------------------------------------
#include "../../inc/MarlinConfig.h"
#include <SPI.h>
// --------------------------------------------------------------------------
// Public functions
// --------------------------------------------------------------------------
#if EITHER(SOFTWARE_SPI, FORCE_SOFT_SPI)
// ------------------------
// Software SPI
// ------------------------
#error "Software SPI not supported for SAMD21. Use Hardware SPI."
#else // !SOFTWARE_SPI
static SPISettings spiConfig;
// ------------------------
// Hardware SPI
// ------------------------
void spiBegin() {
spiInit(SPI_HALF_SPEED);
}
void spiInit(uint8_t spiRate) {
// Use datarates Marlin uses
uint32_t clock;
switch (spiRate) {
case SPI_FULL_SPEED: clock = 8000000; break;
case SPI_HALF_SPEED: clock = 4000000; break;
case SPI_QUARTER_SPEED: clock = 2000000; break;
case SPI_EIGHTH_SPEED: clock = 1000000; break;
case SPI_SIXTEENTH_SPEED: clock = 500000; break;
case SPI_SPEED_5: clock = 250000; break;
case SPI_SPEED_6: clock = 125000; break;
default: clock = 4000000; break; // Default from the SPI library
}
spiConfig = SPISettings(clock, MSBFIRST, SPI_MODE0);
SPI.begin();
}
/**
* @brief Receives a single byte from the SPI port.
*
* @return Byte received
*
* @details
*/
uint8_t spiRec() {
SPI.beginTransaction(spiConfig);
uint8_t returnByte = SPI.transfer(0xFF);
SPI.endTransaction();
return returnByte;
}
/**
* @brief Receives a number of bytes from the SPI port to a buffer
*
* @param buf Pointer to starting address of buffer to write to.
* @param nbyte Number of bytes to receive.
* @return Nothing
*/
void spiRead(uint8_t *buf, uint16_t nbyte) {
if (nbyte == 0) return;
memset(buf, 0xFF, nbyte);
SPI.beginTransaction(spiConfig);
SPI.transfer(buf, nbyte);
SPI.endTransaction();
}
/**
* @brief Sends a single byte on SPI port
*
* @param b Byte to send
*
* @details
*/
void spiSend(uint8_t b) {
SPI.beginTransaction(spiConfig);
SPI.transfer(b);
SPI.endTransaction();
}
/**
* @brief Write token and then write from 512 byte buffer to SPI (for SD card)
*
* @param buf Pointer with buffer start address
* @return Nothing
*
* @details Uses DMA
*/
void spiSendBlock(uint8_t token, const uint8_t *buf) {
SPI.beginTransaction(spiConfig);
SPI.transfer(token);
SPI.transfer((uint8_t*)buf, 512);
SPI.endTransaction();
}
void spiBeginTransaction(uint32_t spiClock, uint8_t bitOrder, uint8_t dataMode) {
spiConfig = SPISettings(spiClock, (BitOrder)bitOrder, dataMode);
SPI.beginTransaction(spiConfig);
}
#endif // !SOFTWARE_SPI
#endif // __SAMD21__
+31
View File
@@ -0,0 +1,31 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2022 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
*
* 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/>.
*
*/
/**
* SAMD21 HAL developed by Bart Meijer (brupje)
* Based on SAMD51 HAL by Giuliano Zaro (AKA GMagician)
*/
#pragma once
#include <SPI.h>
using MarlinSPI = SPIClass;
+82
View File
@@ -0,0 +1,82 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2022 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
*
* 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/>.
*
*/
/**
* SAMD21 HAL developed by Bart Meijer (brupje)
* Based on SAMD51 HAL by Giuliano Zaro (AKA GMagician)
*/
#include "../../inc/MarlinConfig.h"
#if ENABLED(QSPI_EEPROM)
#include "QSPIFlash.h"
#define INVALID_ADDR 0xFFFFFFFF
#define SECTOR_OF(a) (a & ~(SFLASH_SECTOR_SIZE - 1))
#define OFFSET_OF(a) (a & (SFLASH_SECTOR_SIZE - 1))
Adafruit_SPIFlashBase * QSPIFlash::_flashBase = nullptr;
uint8_t QSPIFlash::_buf[SFLASH_SECTOR_SIZE];
uint32_t QSPIFlash::_addr = INVALID_ADDR;
void QSPIFlash::begin() {
if (_flashBase) return;
_flashBase = new Adafruit_SPIFlashBase(new Adafruit_FlashTransport_QSPI());
_flashBase->begin(nullptr);
}
size_t QSPIFlash::size() {
return _flashBase->size();
}
uint8_t QSPIFlash::readByte(const uint32_t address) {
if (SECTOR_OF(address) == _addr) return _buf[OFFSET_OF(address)];
return _flashBase->read8(address);
}
void QSPIFlash::writeByte(const uint32_t address, const uint8_t value) {
uint32_t const sector_addr = SECTOR_OF(address);
// Page changes, flush old and update new cache
if (sector_addr != _addr) {
flush();
_addr = sector_addr;
// read a whole page from flash
_flashBase->readBuffer(sector_addr, _buf, SFLASH_SECTOR_SIZE);
}
_buf[OFFSET_OF(address)] = value;
}
void QSPIFlash::flush() {
if (_addr == INVALID_ADDR) return;
_flashBase->eraseSector(_addr / SFLASH_SECTOR_SIZE);
_flashBase->writeBuffer(_addr, _buf, SFLASH_SECTOR_SIZE);
_addr = INVALID_ADDR;
}
#endif // QSPI_EEPROM
+49
View File
@@ -0,0 +1,49 @@
/**
* @file QSPIFlash.h
*
* The MIT License (MIT)
*
* Copyright (c) 2019 Ha Thach and Dean Miller for Adafruit Industries LLC
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*
* Derived from Adafruit_SPIFlash class with no SdFat references
*/
#pragma once
#include <Adafruit_SPIFlashBase.h>
// This class extends Adafruit_SPIFlashBase by adding caching support.
//
// This class will use 4096 Bytes of RAM as a block cache.
class QSPIFlash {
public:
static void begin();
static size_t size();
static uint8_t readByte(const uint32_t address);
static void writeByte(const uint32_t address, const uint8_t v);
static void flush();
private:
static Adafruit_SPIFlashBase * _flashBase;
static uint8_t _buf[SFLASH_SECTOR_SIZE];
static uint32_t _addr;
};
extern QSPIFlash qspi;
+66
View File
@@ -0,0 +1,66 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2022 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
*
* 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
/**
* SAMD21 HAL developed by Bart Meijer (brupje)
* Based on SAMD51 HAL by Giuliano Zaro (AKA GMagician)
*/
#define SYNC(sc) while (sc) { \
asm(""); \
}
// Get SAMD port/pin from specified arduino pin
#define GET_SAMD_PORT(P) _GET_SAMD_PORT(PIN_TO_SAMD_PIN(P))
#define GET_SAMD_PIN(P) _GET_SAMD_PIN(PIN_TO_SAMD_PIN(P))
// Get external interrupt line associated to specified arduino pin
#define PIN_TO_EILINE(P) _SAMDPORTPIN_TO_EILINE(GET_SAMD_PORT(P), GET_SAMD_PIN(P))
// Get adc/ain associated to specified arduino pin
#define PIN_TO_ADC(P) (ANAPIN_TO_ADCAIN(P) >> 8)
// Private defines
#define PIN_TO_SAMD_PIN(P) DIO##P##_PIN
#define _GET_SAMD_PORT(P) ((P) >> 5)
#define _GET_SAMD_PIN(P) ((P) & 0x1F)
// Get external interrupt line
#define _SAMDPORTPIN_TO_EILINE(P,B) ((P == 0 && WITHIN(B, 0, 31) && B != 26 && B != 28 && B != 29) ? (B) & 0xF \
: (P == 1 && (WITHIN(B, 0, 25) || WITHIN(B, 30, 31))) ? (B) & 0xF \
: (P == 1 && WITHIN(B, 26, 29)) ? 12 + (B) - 26 \
: (P == 2 && (WITHIN(B, 0, 6) || WITHIN(B, 10, 31)) && B != 29) ? (B) & 0xF \
: (P == 2 && B == 7) ? 9 \
: (P == 3 && WITHIN(B, 0, 1)) ? (B) \
: (P == 3 && WITHIN(B, 8, 12)) ? 3 + (B) - 8 \
: (P == 3 && WITHIN(B, 20, 21)) ? 10 + (B) - 20 \
: -1)
#define A2_AIN 3
#define A3_AIN 4
#define A4_AIN 5
#define PIN_TO_AIN(P) A##P##_AIN
#define AIN_TO_RESULT(P) ( (P - HAL_ADC_AIN_START == HAL_ADC_AIN_NUM_SENSORS-1) ? 0 : (P - HAL_ADC_AIN_START + 1) )
+220
View File
@@ -0,0 +1,220 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2022 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
*
* 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/>.
*
*/
/**
* SAMD21 HAL developed by Bart Meijer (brupje)
* Based on SAMD51 HAL by Giuliano Zaro (AKA GMagician)
*/
/**
* This comes from Arduino library which at the moment is buggy and uncompilable
*/
#ifdef __SAMD21__
#include "../../inc/MarlinConfig.h"
#if HAS_SERVOS
#include "../shared/servo.h"
#include "../shared/servo_private.h"
#include "SAMD21.h"
#define __TC_GCLK_ID(t) TC##t##_GCLK_ID
#define _TC_GCLK_ID(t) __TC_GCLK_ID(t)
#define TC_GCLK_ID _TC_GCLK_ID(SERVO_TC)
#define _TC_PRESCALER(d) TC_CTRLA_PRESCALER_DIV##d##_Val
#define TC_PRESCALER(d) _TC_PRESCALER(d)
#define __SERVO_IRQn(t) TC##t##_IRQn
#define _SERVO_IRQn(t) __SERVO_IRQn(t)
#define SERVO_IRQn _SERVO_IRQn(SERVO_TC)
#define HAL_SERVO_TIMER_ISR() TC_HANDLER(SERVO_TC)
#define TIMER_TCCHANNEL(t) ((t) & 1)
#define TC_COUNTER_START_VAL 0xFFFF
static volatile int8_t currentServoIndex[_Nbr_16timers]; // index for the servo being pulsed for each timer (or -1 if refresh interval)
FORCE_INLINE static uint16_t getTimerCount() {
Tcc * const tc = timer_config[SERVO_TC].pTcc;
tc->CTRLBSET.reg = TCC_CTRLBCLR_CMD_READSYNC;
SYNC(tc->STATUS.reg & TC_STATUS_SYNCBUSY);
return tc->COUNT.bit.COUNT;
}
// ----------------------------
// Interrupt handler for the TC
// ----------------------------
HAL_SERVO_TIMER_ISR() {
Tcc * const tc = timer_config[SERVO_TC].pTcc;
const timer16_Sequence_t timer =
#ifndef _useTimer1
_timer2
#elif !defined(_useTimer2)
_timer1
#else
(tc->INTFLAG.reg & tc->INTENSET.reg & TC_INTFLAG_MC0) ? _timer1 : _timer2
#endif
;
const uint8_t tcChannel = TIMER_TCCHANNEL(timer);
int8_t cho = currentServoIndex[timer]; // Handle the prior servo first
if (cho < 0) { // Servo -1 indicates the refresh interval completed...
#if defined(_useTimer1) && defined(_useTimer2)
if (currentServoIndex[timer ^ 1] >= 0) {
// Wait for both channels
// Clear the interrupt
tc->INTFLAG.reg = (tcChannel == 0) ? TC_INTFLAG_MC0 : TC_INTFLAG_MC1;
return;
}
#endif
tc->COUNT.reg = TC_COUNTER_START_VAL; // ...so reset the timer
SYNC(tc->STATUS.reg & TC_STATUS_SYNCBUSY);
}
else if (SERVO_INDEX(timer, cho) < ServoCount) // prior channel handled?
digitalWrite(SERVO(timer, cho).Pin.nbr, LOW); // pulse the prior channel LOW
currentServoIndex[timer] = ++cho; // go to the next channel (or 0)
if (cho < SERVOS_PER_TIMER && SERVO_INDEX(timer, cho) < ServoCount) {
if (SERVO(timer, cho).Pin.isActive) // activated?
digitalWrite(SERVO(timer, cho).Pin.nbr, HIGH); // yes: pulse HIGH
tc->CC[tcChannel].reg = getTimerCount() - (uint16_t)SERVO(timer, cho).ticks;
}
else {
// finished all channels so wait for the refresh period to expire before starting over
currentServoIndex[timer] = -1; // reset the timer COUNT.reg on the next call
const uint16_t cval = getTimerCount() - 256 / (SERVO_TIMER_PRESCALER), // allow 256 cycles to ensure the next CV not missed
ival = (TC_COUNTER_START_VAL) - (uint16_t)usToTicks(REFRESH_INTERVAL); // at least REFRESH_INTERVAL has elapsed
tc->CC[tcChannel].reg = min(cval, ival);
}
if (tcChannel == 0) {
SYNC(tc->SYNCBUSY.bit.CC0);
tc->INTFLAG.reg = TC_INTFLAG_MC0; // Clear the interrupt
}
else {
SYNC(tc->SYNCBUSY.bit.CC1);
tc->INTFLAG.reg = TC_INTFLAG_MC1; // Clear the interrupt
}
}
void initISR(const timer16_Sequence_t timer) {
Tcc * const tc = timer_config[SERVO_TC].pTcc;
const uint8_t tcChannel = TIMER_TCCHANNEL(timer);
static bool initialized = false; // Servo TC has been initialized
if (!initialized) {
NVIC_DisableIRQ(SERVO_IRQn);
// Disable the timer
tc->CTRLA.bit.ENABLE = false;
SYNC(tc->STATUS.reg & TC_STATUS_SYNCBUSY);
// Select GCLK0 as timer/counter input clock source
GCLK->CLKCTRL.reg =(GCLK_CLKCTRL_CLKEN | GCLK_CLKCTRL_GEN_GCLK0 | GCLK_CLKCTRL_ID(TCC0_GCLK_ID));
SYNC (GCLK->STATUS.bit.SYNCBUSY);
// Reset the timer
tc->CTRLA.bit.SWRST = true;
SYNC(tc->CTRLA.bit.SWRST);
// Set timer counter mode to 16 bits
tc->CTRLA.reg = TC_CTRLA_MODE_COUNT16;
// Set timer counter mode as normal PWM
tc->WAVE.bit.WAVEGEN = TCC_WAVE_WAVEGEN_NPWM_Val;
// Set the prescaler factor
tc->CTRLA.bit.PRESCALER = TC_PRESCALER(SERVO_TIMER_PRESCALER);
// Count down
tc->CTRLBSET.reg = TCC_CTRLBCLR_DIR;
SYNC(tc->SYNCBUSY.bit.CTRLB);
// Reset all servo indexes
memset((void *)currentServoIndex, 0xFF, sizeof(currentServoIndex));
// Configure interrupt request
NVIC_ClearPendingIRQ(SERVO_IRQn);
NVIC_SetPriority(SERVO_IRQn, 5);
NVIC_EnableIRQ(SERVO_IRQn);
initialized = true;
}
if (!tc->CTRLA.bit.ENABLE) {
// Reset the timer counter
tc->COUNT.reg = TC_COUNTER_START_VAL;
SYNC(tc->STATUS.reg & TC_STATUS_SYNCBUSY);
// Enable the timer and start it
tc->CTRLA.bit.ENABLE = true;
SYNC(tc->STATUS.reg & TC_STATUS_SYNCBUSY);
}
// First interrupt request after 1 ms
tc->CC[tcChannel].reg = getTimerCount() - (uint16_t)usToTicks(1000UL);
if (tcChannel == 0 ) {
SYNC(tc->SYNCBUSY.bit.CC0);
// Clear pending match interrupt
tc->INTFLAG.reg = TC_INTENSET_MC0;
// Enable the match channel interrupt request
tc->INTENSET.reg = TC_INTENSET_MC0;
}
else {
SYNC(tc->SYNCBUSY.bit.CC1);
// Clear pending match interrupt
tc->INTFLAG.reg = TC_INTENSET_MC1;
// Enable the match channel interrupt request
tc->INTENSET.reg = TC_INTENSET_MC1;
}
}
void finISR(const timer16_Sequence_t timer_index) {
Tcc * const tc = timer_config[SERVO_TC].pTcc;
const uint8_t tcChannel = TIMER_TCCHANNEL(timer_index);
// Disable the match channel interrupt request
tc->INTENCLR.reg = (tcChannel == 0) ? TC_INTENCLR_MC0 : TC_INTENCLR_MC1;
if (true
#if defined(_useTimer1) && defined(_useTimer2)
&& (tc->INTENCLR.reg & (TC_INTENCLR_MC0|TC_INTENCLR_MC1)) == 0
#endif
) {
// Disable the timer if not used
tc->CTRLA.bit.ENABLE = false;
SYNC(tc->STATUS.reg & TC_STATUS_SYNCBUSY);
}
}
#endif // HAS_SERVOS
#endif // __SAMD21__
+45
View File
@@ -0,0 +1,45 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2022 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
*
* 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
/**
* SAMD21 HAL developed by Bart Meijer (brupje)
* Based on SAMD51 HAL by Giuliano Zaro (AKA GMagician)
*/
#define _useTimer1
#define _useTimer2
#define TRIM_DURATION 5 // compensation ticks to trim adjust for digitalWrite delays
#define SERVO_TIMER_PRESCALER 64 // timer prescaler factor to 64 (avoid overflowing 16-bit clock counter, at 120MHz this is 1831 ticks per millisecond
#define SERVO_TC 3
typedef enum {
#ifdef _useTimer1
_timer1,
#endif
#ifdef _useTimer2
_timer2,
#endif
_Nbr_16timers
} timer16_Sequence_t;
+141
View File
@@ -0,0 +1,141 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2022 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
*
* 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/>.
*
*/
/**
* SAMD21 HAL developed by Bart Meijer (brupje)
* Based on SAMD51 HAL by Giuliano Zaro (AKA GMagician)
*/
#ifdef __SAMD21__
#include "../../inc/MarlinConfig.h"
#if ENABLED(FLASH_EEPROM_EMULATION)
#define TOTAL_FLASH_SIZE (MARLIN_EEPROM_SIZE+255)/256*256
/* reserve flash memory */
static const uint8_t flashdata[TOTAL_FLASH_SIZE] __attribute__((__aligned__(256))) { }; \
#include "../shared/eeprom_api.h"
size_t PersistentStore::capacity() {
return MARLIN_EEPROM_SIZE;
/* const uint8_t psz = NVMCTRL->SEESTAT.bit.PSZ,
sblk = NVMCTRL->SEESTAT.bit.SBLK;
return (!psz && !sblk) ? 0
: (psz <= 2) ? (0x200 << psz)
: (sblk == 1 || psz == 3) ? 4096
: (sblk == 2 || psz == 4) ? 8192
: (sblk <= 4 || psz == 5) ? 16384
: (sblk >= 9 && psz == 7) ? 65536
: 32768;*/
}
uint32_t PAGE_SIZE;
uint32_t ROW_SIZE;
bool hasWritten = false;
uint8_t * buffer;
void _erase(const volatile void *flash_ptr) {
NVMCTRL->ADDR.reg = ((uint32_t)flash_ptr) / 2;
NVMCTRL->CTRLA.reg = NVMCTRL_CTRLA_CMDEX_KEY | NVMCTRL_CTRLA_CMD_ER;
while (!NVMCTRL->INTFLAG.bit.READY) { }
}
void erase(const volatile void *flash_ptr, uint32_t size) {
const uint8_t *ptr = (const uint8_t *)flash_ptr;
while (size > ROW_SIZE) {
_erase(ptr);
ptr += ROW_SIZE;
size -= ROW_SIZE;
}
_erase(ptr);
}
bool PersistentStore::access_start() {
/* clear page buffer*/
NVMCTRL->CTRLA.reg = NVMCTRL_CTRLA_CMDEX_KEY | NVMCTRL_CTRLA_CMD_PBC;
while (NVMCTRL->INTFLAG.bit.READY == 0) { }
PAGE_SIZE = pow(2,3 + NVMCTRL->PARAM.bit.PSZ);
ROW_SIZE= PAGE_SIZE * 4;
/*NVMCTRL->SEECFG.reg = NVMCTRL_SEECFG_WMODE_BUFFERED; // Buffered mode and segment reallocation active
if (NVMCTRL->SEESTAT.bit.RLOCK)
NVMCTRL_CMD(NVMCTRL_CTRLB_CMD_USEE); */ // Unlock E2P data write access
// erase(&flashdata[0], TOTAL_FLASH_SIZE);
return true;
}
bool PersistentStore::access_finish() {
if (hasWritten) {
erase(&flashdata[0], TOTAL_FLASH_SIZE);
NVMCTRL->CTRLA.reg = NVMCTRL_CTRLA_CMDEX_KEY | NVMCTRL_CTRLA_CMD_PBC;
while (NVMCTRL->INTFLAG.bit.READY == 0) { }
NVMCTRL->CTRLB.bit.MANW = 0;
volatile uint32_t *dst_addr = (volatile uint32_t *) &flashdata;
uint32_t *pointer = (uint32_t *) buffer;
for (uint32_t i = 0; i < TOTAL_FLASH_SIZE; i+=4) {
*dst_addr = (uint32_t) *pointer;
pointer++;
dst_addr ++;
}
// Execute "WP" Write Page
NVMCTRL->CTRLA.reg = NVMCTRL_CTRLA_CMDEX_KEY | NVMCTRL_CTRLA_CMD_WP;
while (NVMCTRL->INTFLAG.bit.READY == 0) { }
free(buffer);
hasWritten = false;
}
return true;
}
bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, uint16_t *crc) {
if (!hasWritten) {
// init temp buffer
buffer = (uint8_t *) malloc(MARLIN_EEPROM_SIZE);
hasWritten=true;
}
memcpy(buffer+pos,value,size);
pos += size;
return false;
}
bool PersistentStore::read_data(int &pos, uint8_t *value, size_t size, uint16_t *crc, const bool writing/*=true*/) {
volatile uint8_t *dst_addr = (volatile uint8_t *) &flashdata;
dst_addr += pos;
memcpy(value,(const void *) dst_addr,size);
pos += size;
return false;
}
#endif // FLASH_EEPROM_EMULATION
#endif // __SAMD21__
+79
View File
@@ -0,0 +1,79 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2022 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
*
* 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/>.
*
*/
/**
* SAMD21 HAL developed by Bart Meijer (brupje)
* Based on SAMD51 HAL by Giuliano Zaro (AKA GMagician)
*/
#ifdef __SAMD21__
#include "../../inc/MarlinConfig.h"
#if ENABLED(QSPI_EEPROM)
#error "QSPI_EEPROM emulation Not implemented on SAMD21"
#include "../shared/eeprom_api.h"
#include "QSPIFlash.h"
static bool initialized;
size_t PersistentStore::capacity() { return qspi.size(); }
bool PersistentStore::access_start() {
if (!initialized) {
qspi.begin();
initialized = true;
}
return true;
}
bool PersistentStore::access_finish() {
qspi.flush();
return true;
}
bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, uint16_t *crc) {
while (size--) {
const uint8_t v = *value;
qspi.writeByte(pos, v);
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*/) {
while (size--) {
uint8_t c = qspi.readByte(pos);
if (writing) *value = c;
crc16(crc, &c, 1);
pos++;
value++;
}
return false;
}
#endif // QSPI_EEPROM
#endif // __SAMD21__
+82
View File
@@ -0,0 +1,82 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2022 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
*
* 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/>.
*
*/
/**
* SAMD21 HAL developed by Bart Meijer (brupje)
* Based on SAMD51 HAL by Giuliano Zaro (AKA GMagician)
*/
#ifdef __SAMD21__
#include "../../inc/MarlinConfig.h"
#if USE_WIRED_EEPROM
#error "USE_WIRED_EEPROM emulation Not implemented on SAMD21"
/**
* 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_start() { eeprom_init(); return true; }
bool PersistentStore::access_finish() { return true; }
bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, uint16_t *crc) {
uint16_t written = 0;
while (size--) {
const uint8_t v = *value;
uint8_t * const p = (uint8_t * const)pos;
if (v != eeprom_read_byte(p)) { // EEPROM has only ~100,000 write cycles, so only write bytes that have changed!
eeprom_write_byte(p, v);
if (++written & 0x7F) delay(2); else safe_delay(2); // Avoid triggering watchdog during long EEPROM writes
if (eeprom_read_byte(p) != v) {
SERIAL_ECHO_MSG(STR_ERR_EEPROM_WRITE);
return true;
}
}
crc16(crc, &v, 1);
pos++;
value++;
}
return false;
}
bool PersistentStore::read_data(int &pos, uint8_t *value, size_t size, uint16_t *crc, const bool writing/*=true*/) {
while (size--) {
uint8_t c = eeprom_read_byte((uint8_t*)pos);
if (writing) *value = c;
crc16(crc, &c, 1);
pos++;
value++;
}
return false;
}
#endif // USE_WIRED_EEPROM
#endif // __SAMD21__
+253
View File
@@ -0,0 +1,253 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2022 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
*
* 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
/**
* SAMD21 HAL developed by Bart Meijer (brupje)
* Based on SAMD51 HAL by Giuliano Zaro (AKA GMagician)
*/
/**
* Endstop interrupts for ATMEL SAMD21 based targets.
*
* On SAMD21, all pins support external interrupt capability.
* Any pin can be used for external interrupts, but there are some restrictions.
* At most 16 different external interrupts can be used at one time.
* Further, you cant just pick any 16 pins to use. This is because every pin on the SAMD21
* connects to what is called an EXTINT line, and only one pin per EXTINT line can be used for external
* interrupts at a time
*/
/**
* 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)
*/
#include "../../module/endstops.h"
#define MATCH_EILINE(P1,P2) (P1 != P2 && PIN_TO_EILINE(P1) == PIN_TO_EILINE(P2))
#define MATCH_X_MAX_EILINE(P) TERN0(HAS_X_MAX, DEFER4(MATCH_EILINE)(P, X_MAX_PIN))
#define MATCH_X_MIN_EILINE(P) TERN0(HAS_X_MIN, DEFER4(MATCH_EILINE)(P, X_MIN_PIN))
#define MATCH_Y_MAX_EILINE(P) TERN0(HAS_Y_MAX, DEFER4(MATCH_EILINE)(P, Y_MAX_PIN))
#define MATCH_Y_MIN_EILINE(P) TERN0(HAS_Y_MIN, DEFER4(MATCH_EILINE)(P, Y_MIN_PIN))
#define MATCH_Z_MAX_EILINE(P) TERN0(HAS_Z_MAX, DEFER4(MATCH_EILINE)(P, Z_MAX_PIN))
#define MATCH_Z_MIN_EILINE(P) TERN0(HAS_Z_MIN, DEFER4(MATCH_EILINE)(P, Z_MIN_PIN))
#define MATCH_I_MAX_EILINE(P) TERN0(HAS_I_MAX, DEFER4(MATCH_EILINE)(P, I_MAX_PIN))
#define MATCH_I_MIN_EILINE(P) TERN0(HAS_I_MIN, DEFER4(MATCH_EILINE)(P, I_MIN_PIN))
#define MATCH_J_MAX_EILINE(P) TERN0(HAS_J_MAX, DEFER4(MATCH_EILINE)(P, J_MAX_PIN))
#define MATCH_J_MIN_EILINE(P) TERN0(HAS_J_MIN, DEFER4(MATCH_EILINE)(P, J_MIN_PIN))
#define MATCH_K_MAX_EILINE(P) TERN0(HAS_K_MAX, DEFER4(MATCH_EILINE)(P, K_MAX_PIN))
#define MATCH_K_MIN_EILINE(P) TERN0(HAS_K_MIN, DEFER4(MATCH_EILINE)(P, K_MIN_PIN))
#define MATCH_U_MAX_EILINE(P) TERN0(HAS_U_MAX, DEFER4(MATCH_EILINE)(P, U_MAX_PIN))
#define MATCH_U_MIN_EILINE(P) TERN0(HAS_U_MIN, DEFER4(MATCH_EILINE)(P, U_MIN_PIN))
#define MATCH_V_MAX_EILINE(P) TERN0(HAS_V_MAX, DEFER4(MATCH_EILINE)(P, V_MAX_PIN))
#define MATCH_V_MIN_EILINE(P) TERN0(HAS_V_MIN, DEFER4(MATCH_EILINE)(P, V_MIN_PIN))
#define MATCH_W_MAX_EILINE(P) TERN0(HAS_W_MAX, DEFER4(MATCH_EILINE)(P, W_MAX_PIN))
#define MATCH_W_MIN_EILINE(P) TERN0(HAS_W_MIN, DEFER4(MATCH_EILINE)(P, W_MIN_PIN))
#define MATCH_Z2_MAX_EILINE(P) TERN0(HAS_Z2_MAX, DEFER4(MATCH_EILINE)(P, Z2_MAX_PIN))
#define MATCH_Z2_MIN_EILINE(P) TERN0(HAS_Z2_MIN, DEFER4(MATCH_EILINE)(P, Z2_MIN_PIN))
#define MATCH_Z3_MAX_EILINE(P) TERN0(HAS_Z3_MAX, DEFER4(MATCH_EILINE)(P, Z3_MAX_PIN))
#define MATCH_Z3_MIN_EILINE(P) TERN0(HAS_Z3_MIN, DEFER4(MATCH_EILINE)(P, Z3_MIN_PIN))
#define MATCH_Z4_MAX_EILINE(P) TERN0(HAS_Z4_MAX, DEFER4(MATCH_EILINE)(P, Z4_MAX_PIN))
#define MATCH_Z4_MIN_EILINE(P) TERN0(HAS_Z4_MIN, DEFER4(MATCH_EILINE)(P, Z4_MIN_PIN))
#define MATCH_Z_MIN_PROBE_EILINE(P) TERN0(HAS_Z_MIN_PROBE_PIN, DEFER4(MATCH_EILINE)(P, Z_MIN_PROBE_PIN))
#define AVAILABLE_EILINE(P) ( PIN_TO_EILINE(P) != -1 \
&& !MATCH_X_MAX_EILINE(P) && !MATCH_X_MIN_EILINE(P) \
&& !MATCH_Y_MAX_EILINE(P) && !MATCH_Y_MIN_EILINE(P) \
&& !MATCH_Z_MAX_EILINE(P) && !MATCH_Z_MIN_EILINE(P) \
&& !MATCH_I_MAX_EILINE(P) && !MATCH_I_MIN_EILINE(P) \
&& !MATCH_J_MAX_EILINE(P) && !MATCH_J_MIN_EILINE(P) \
&& !MATCH_K_MAX_EILINE(P) && !MATCH_K_MIN_EILINE(P) \
&& !MATCH_U_MAX_EILINE(P) && !MATCH_U_MIN_EILINE(P) \
&& !MATCH_V_MAX_EILINE(P) && !MATCH_V_MIN_EILINE(P) \
&& !MATCH_W_MAX_EILINE(P) && !MATCH_W_MIN_EILINE(P) \
&& !MATCH_Z2_MAX_EILINE(P) && !MATCH_Z2_MIN_EILINE(P) \
&& !MATCH_Z3_MAX_EILINE(P) && !MATCH_Z3_MIN_EILINE(P) \
&& !MATCH_Z4_MAX_EILINE(P) && !MATCH_Z4_MIN_EILINE(P) \
&& !MATCH_Z_MIN_PROBE_EILINE(P) )
// One ISR for all EXT-Interrupts
void endstop_ISR() { endstops.update(); }
void setup_endstop_interrupts() {
#define _ATTACH(P) attachInterrupt(P, endstop_ISR, CHANGE)
#if HAS_X_MAX
#if !AVAILABLE_EILINE(X_MAX_PIN)
#error "X_MAX_PIN has no EXTINT line available."
#endif
_ATTACH(X_MAX_PIN);
#endif
#if HAS_X_MIN
#if !AVAILABLE_EILINE(X_MIN_PIN)
#error "X_MIN_PIN has no EXTINT line available."
#endif
_ATTACH(X_MIN_PIN);
#endif
#if HAS_Y_MAX
#if !AVAILABLE_EILINE(Y_MAX_PIN)
#error "Y_MAX_PIN has no EXTINT line available."
#endif
_ATTACH(Y_MAX_PIN);
#endif
#if HAS_Y_MIN
#if !AVAILABLE_EILINE(Y_MIN_PIN)
#error "Y_MIN_PIN has no EXTINT line available."
#endif
_ATTACH(Y_MIN_PIN);
#endif
#if HAS_Z_MAX
#if !AVAILABLE_EILINE(Z_MAX_PIN)
#error "Z_MAX_PIN has no EXTINT line available."
#endif
_ATTACH(Z_MAX_PIN);
#endif
#if HAS_Z_MIN
#if !AVAILABLE_EILINE(Z_MIN_PIN)
#error "Z_MIN_PIN has no EXTINT line available."
#endif
_ATTACH(Z_MIN_PIN);
#endif
#if HAS_Z2_MAX
#if !AVAILABLE_EILINE(Z2_MAX_PIN)
#error "Z2_MAX_PIN has no EXTINT line available."
#endif
_ATTACH(Z2_MAX_PIN);
#endif
#if HAS_Z2_MIN
#if !AVAILABLE_EILINE(Z2_MIN_PIN)
#error "Z2_MIN_PIN has no EXTINT line available."
#endif
_ATTACH(Z2_MIN_PIN);
#endif
#if HAS_Z3_MAX
#if !AVAILABLE_EILINE(Z3_MAX_PIN)
#error "Z3_MAX_PIN has no EXTINT line available."
#endif
_ATTACH(Z3_MAX_PIN);
#endif
#if HAS_Z3_MIN
#if !AVAILABLE_EILINE(Z3_MIN_PIN)
#error "Z3_MIN_PIN has no EXTINT line available."
#endif
_ATTACH(Z3_MIN_PIN);
#endif
#if HAS_Z4_MAX
#if !AVAILABLE_EILINE(Z4_MAX_PIN)
#error "Z4_MAX_PIN has no EXTINT line available."
#endif
_ATTACH(Z4_MAX_PIN);
#endif
#if HAS_Z4_MIN
#if !AVAILABLE_EILINE(Z4_MIN_PIN)
#error "Z4_MIN_PIN has no EXTINT line available."
#endif
_ATTACH(Z4_MIN_PIN);
#endif
#if HAS_Z_MIN_PROBE_PIN
#if !AVAILABLE_EILINE(Z_MIN_PROBE_PIN)
#error "Z_MIN_PROBE_PIN has no EXTINT line available."
#endif
_ATTACH(Z_MIN_PROBE_PIN);
#endif
#if HAS_I_MAX
#if !AVAILABLE_EILINE(I_MAX_PIN)
#error "I_MAX_PIN has no EXTINT line available."
#endif
attachInterrupt(I_MAX_PIN, endstop_ISR, CHANGE);
#endif
#if HAS_I_MIN
#if !AVAILABLE_EILINE(I_MIN_PIN)
#error "I_MIN_PIN has no EXTINT line available."
#endif
attachInterrupt(I_MIN_PIN, endstop_ISR, CHANGE);
#endif
#if HAS_J_MAX
#if !AVAILABLE_EILINE(J_MAX_PIN)
#error "J_MAX_PIN has no EXTINT line available."
#endif
attachInterrupt(J_MAX_PIN, endstop_ISR, CHANGE);
#endif
#if HAS_J_MIN
#if !AVAILABLE_EILINE(J_MIN_PIN)
#error "J_MIN_PIN has no EXTINT line available."
#endif
attachInterrupt(J_MIN_PIN, endstop_ISR, CHANGE);
#endif
#if HAS_K_MAX
#if !AVAILABLE_EILINE(K_MAX_PIN)
#error "K_MAX_PIN has no EXTINT line available."
#endif
attachInterrupt(K_MAX_PIN, endstop_ISR, CHANGE);
#endif
#if HAS_K_MIN
#if !AVAILABLE_EILINE(K_MIN_PIN)
#error "K_MIN_PIN has no EXTINT line available."
#endif
attachInterrupt(K_MIN_PIN, endstop_ISR, CHANGE);
#endif
#if HAS_U_MAX
#if !AVAILABLE_EILINE(U_MAX_PIN)
#error "U_MAX_PIN has no EXTINT line available."
#endif
attachInterrupt(U_MAX_PIN, endstop_ISR, CHANGE);
#endif
#if HAS_U_MIN
#if !AVAILABLE_EILINE(U_MIN_PIN)
#error "U_MIN_PIN has no EXTINT line available."
#endif
attachInterrupt(U_MIN_PIN, endstop_ISR, CHANGE);
#endif
#if HAS_V_MAX
#if !AVAILABLE_EILINE(V_MAX_PIN)
#error "V_MAX_PIN has no EXTINT line available."
#endif
attachInterrupt(V_MAX_PIN, endstop_ISR, CHANGE);
#endif
#if HAS_V_MIN
#if !AVAILABLE_EILINE(V_MIN_PIN)
#error "V_MIN_PIN has no EXTINT line available."
#endif
attachInterrupt(V_MIN_PIN, endstop_ISR, CHANGE);
#endif
#if HAS_W_MAX
#if !AVAILABLE_EILINE(W_MAX_PIN)
#error "W_MAX_PIN has no EXTINT line available."
#endif
attachInterrupt(W_MAX_PIN, endstop_ISR, CHANGE);
#endif
#if HAS_W_MIN
#if !AVAILABLE_EILINE(W_MIN_PIN)
#error "W_MIN_PIN has no EXTINT line available."
#endif
attachInterrupt(W_MIN_PIN, endstop_ISR, CHANGE);
#endif
}
+216
View File
@@ -0,0 +1,216 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2022 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
*
* 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
/**
* SAMD21 HAL developed by Bart Meijer (brupje)
* Based on SAMD51 HAL by Giuliano Zaro (AKA GMagician)
*/
/**
* Fast IO functions for SAMD21
*/
#include "SAMD21.h"
/**
* Utility functions
*/
#ifndef MASK
#define MASK(PIN) _BV(PIN)
#endif
/**
* Magic I/O routines
*
* Now you can simply SET_OUTPUT(IO); WRITE(IO, HIGH); WRITE(IO, LOW);
*/
// Read a pin
#define READ(IO) ((PORT->Group[(EPortType)GET_SAMD_PORT(IO)].IN.reg & MASK(GET_SAMD_PIN(IO))) != 0)
// Write to a pin
#define WRITE(IO,V) do{ \
const EPortType port = (EPortType)GET_SAMD_PORT(IO); \
const uint32_t mask = MASK(GET_SAMD_PIN(IO)); \
\
if (V) PORT->Group[port].OUTSET.reg = mask; \
else PORT->Group[port].OUTCLR.reg = mask; \
}while(0)
// Toggle a pin
#define TOGGLE(IO) PORT->Group[(EPortType)GET_SAMD_PORT(IO)].OUTTGL.reg = MASK(GET_SAMD_PIN(IO));
// Set pin as input
#define SET_INPUT(IO) do{ \
const EPortType port = (EPortType)GET_SAMD_PORT(IO); \
const uint32_t pin = GET_SAMD_PIN(IO); \
\
PORT->Group[port].PINCFG[pin].reg = (uint8_t)(PORT_PINCFG_INEN); \
PORT->Group[port].DIRCLR.reg = MASK(pin); \
}while(0)
// Set pin as input with pullup
#define SET_INPUT_PULLUP(IO) do{ \
const EPortType port = (EPortType)GET_SAMD_PORT(IO); \
const uint32_t pin = GET_SAMD_PIN(IO); \
const uint32_t mask = MASK(pin); \
\
PORT->Group[port].PINCFG[pin].reg = (uint8_t)(PORT_PINCFG_INEN | PORT_PINCFG_PULLEN); \
PORT->Group[port].DIRCLR.reg = mask; \
PORT->Group[port].OUTSET.reg = mask; \
}while(0)
// Set pin as input with pulldown
#define SET_INPUT_PULLDOWN(IO) do{ \
const EPortType port = (EPortType)GET_SAMD_PORT(IO); \
const uint32_t pin = GET_SAMD_PIN(IO); \
const uint32_t mask = MASK(pin); \
\
PORT->Group[port].PINCFG[pin].reg = (uint8_t)(PORT_PINCFG_INEN | PORT_PINCFG_PULLEN); \
PORT->Group[port].DIRCLR.reg = mask; \
PORT->Group[port].OUTCLR.reg = mask; \
}while(0)
// Set pin as output (push pull)
#define SET_OUTPUT(IO) do{ \
const EPortType port = (EPortType)GET_SAMD_PORT(IO); \
const uint32_t pin = GET_SAMD_PIN(IO); \
\
PORT->Group[port].DIRSET.reg = MASK(pin); \
PORT->Group[port].PINCFG[pin].reg = 0; \
}while(0)
// Set pin as output (open drain)
#define SET_OUTPUT_OD(IO) do{ \
const EPortType port = (EPortType)GET_SAMD_PORT(IO); \
const uint32_t pin = GET_SAMD_PIN(IO); \
\
PORT->Group[port].PINCFG[pin].reg = (uint8_t)(PORT_PINCFG_PULLEN); \
PORT->Group[port].DIRCLR.reg = MASK(pin); \
}while(0)
// Set pin as PWM (push pull)
#define SET_PWM SET_OUTPUT
// Set pin as PWM (open drain)
#define SET_PWM_OD SET_OUTPUT_OD
// check if pin is an output
#define IS_OUTPUT(IO) ((PORT->Group[(EPortType)GET_SAMD_PORT(IO)].DIR.reg & MASK(GET_SAMD_PIN(IO))) \
|| (PORT->Group[(EPortType)GET_SAMD_PORT(IO)].PINCFG[GET_SAMD_PIN(IO)].reg & (PORT_PINCFG_INEN | PORT_PINCFG_PULLEN)) == PORT_PINCFG_PULLEN)
// check if pin is an input
#define IS_INPUT(IO) !IS_OUTPUT(IO)
// Shorthand
#define OUT_WRITE(IO,V) do{ SET_OUTPUT(IO); WRITE(IO,V); }while(0)
#define OUT_WRITE_OD(IO,V) do{ SET_OUTPUT_OD(IO); WRITE(IO,V); }while(0)
// digitalRead/Write wrappers
#define extDigitalRead(IO) digitalRead(IO)
#define extDigitalWrite(IO,V) digitalWrite(IO,V)
/**
* Ports and functions
* Added as necessary or if I feel like it- not a comprehensive list!
*/
/*
* Some of these share the same source and so can't be used in the same time
*/
#define PWM_PIN(P) (WITHIN(P, 2, 13) || WITHIN(P, 22, 23) || WITHIN(P, 44, 45) || P == 48)
// Return fulfilled ADCx->INPUTCTRL.reg
#define PIN_TO_INPUTCTRL(P) ( (P == 0) ? ADC_INPUTCTRL_MUXPOS_PIN0 \
: ((P) == 1) ? ADC_INPUTCTRL_MUXPOS_PIN1 \
: ((P) == 2) ? ADC_INPUTCTRL_MUXPOS_PIN3 \
: ((P) == 3) ? ADC_INPUTCTRL_MUXPOS_PIN4 \
: ((P) == 4) ? ADC_INPUTCTRL_MUXPOS_PIN5 \
: ((P) == 5) ? ADC_INPUTCTRL_MUXPOS_PIN5 \
: ((P) == 6) ? ADC_INPUTCTRL_MUXPOS_PIN6 \
: ((P) == 7) ? ADC_INPUTCTRL_MUXPOS_PIN7 \
: ((P) == 8) ? ADC_INPUTCTRL_MUXPOS_PIN8 \
: ((P) == 9) ? ADC_INPUTCTRL_MUXPOS_PIN9 \
: ((P) == 10) ? ADC_INPUTCTRL_MUXPOS_PIN10 \
: ((P) == 11) ? ADC_INPUTCTRL_MUXPOS_PIN11 \
: ((P) == 12) ? ADC_INPUTCTRL_MUXPOS_PIN12 \
: ((P) == 13) ? ADC_INPUTCTRL_MUXPOS_PIN13 \
: ((P) == 14) ? ADC_INPUTCTRL_MUXPOS_PIN14 \
: ADC_INPUTCTRL_MUXPOS_PIN15)
#define digitalPinToAnalogInput(P) (WITHIN(P, 67, 74) ? (P) - 67 : WITHIN(P, 54, 61) ? 8 + (P) - 54 : WITHIN(P, 12, 13) ? 16 + (P) - 12 : P == 9 ? 18 : -1)
/**
* pins
*/
// PORTA
#define DIO28_PIN PIN_PA02 // A0
#define DIO56_PIN PIN_PA03 // A13
#define DIO31_PIN PIN_PA04 // A13
#define DIO32_PIN PIN_PA05 // A1
#define DIO8_PIN PIN_PA06 // A14
#define DIO9_PIN PIN_PA07 // A15
#define DIO4_PIN PIN_PA08 // A15
#define DIO3_PIN PIN_PA09 // A15
#define DIO1_PIN PIN_PA10
#define DIO0_PIN PIN_PA11
#define DIO18_PIN PIN_PA12
#define DIO52_PIN PIN_PA13
#define DIO2_PIN PIN_PA14
#define DIO5_PIN PIN_PA15
#define DIO11_PIN PIN_PA16
#define DIO13_PIN PIN_PA17
#define DIO10_PIN PIN_PA18
#define DIO12_PIN PIN_PA19
#define DIO6_PIN PIN_PA20
#define DIO07_PIN PIN_PA21
#define DIO34_PIN PIN_PA22
#define DIO35_PIN PIN_PA23
#define DIO42_PIN PIN_PA24
#define DIO43_PIN PIN_PA25
#define DIO40_PIN PIN_PA27
#define DIO26_PIN PIN_PB00
#define DIO27_PIN PIN_PB01 // A0
#define DIO33_PIN PIN_PB02
#define DIO39_PIN PIN_PB03
#define DIO14_PIN PIN_PB04
#define DIO15_PIN PIN_PB05
#define DIO16_PIN PIN_PB06
#define DIO17_PIN PIN_PB07
#define DIO29_PIN PIN_PB08
#define DIO30_PIN PIN_PB09
#define DIO37_PIN PIN_PB10
#define DIO38_PIN PIN_PB11
#define DIO36_PIN PIN_PB12
#define DIO19_PIN PIN_PB13
#define DIO20_PIN PIN_PB14
#define DIO21_PIN PIN_PB15
#define DIO22_PIN PIN_PB16
#define DIO23_PIN PIN_PB17
#define DIO44_PIN PIN_PB22
#define DIO45_PIN PIN_PB23
#define DIO24_PIN PIN_PB30
#define DIO25_PIN PIN_PB31
#define DIO53_PIN PIN_PA21
#define DIO54_PIN PIN_PA06
#define DIO55_PIN PIN_PA07
@@ -0,0 +1,31 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2022 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
*
* 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/>.
*
*/
/**
* SAMD21 HAL developed by Bart Meijer (brupje)
* Based on SAMD51 HAL by Giuliano Zaro (AKA GMagician)
*/
#pragma once
#if HAS_SPI_TFT || HAS_FSMC_TFT
#error "Sorry! TFT displays are not available for HAL/SAMD21."
#endif
@@ -0,0 +1,27 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2022 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
*
* 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/>.
*
*/
/**
* SAMD21 HAL developed by Bart Meijer (brupje)
* Based on SAMD51 HAL by Giuliano Zaro (AKA GMagician)
*/
#pragma once
@@ -0,0 +1,33 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2022 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
*
* 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/>.
*
*/
/**
* SAMD21 HAL developed by Bart Meijer (brupje)
* Based on SAMD51 HAL by Giuliano Zaro (AKA GMagician)
*/
#pragma once
#if USE_FALLBACK_EEPROM
#define FLASH_EEPROM_EMULATION
#elif EITHER(I2C_EEPROM, SPI_EEPROM)
#define USE_SHARED_EEPROM 1
#endif
+50
View File
@@ -0,0 +1,50 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2022 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
*
* 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/>.
*
*/
/**
* SAMD21 HAL developed by Bart Meijer (brupje)
* Based on SAMD51 HAL by Giuliano Zaro (AKA GMagician)
*/
/**
* Test SAMD21 specific configuration values for errors at compile-time.
*/
#if SERVO_TC == MF_TIMER_RTC
#error "Servos can't use RTC timer"
#endif
#if ENABLED(EMERGENCY_PARSER)
#error "EMERGENCY_PARSER is not yet implemented for SAMD21. Disable EMERGENCY_PARSER to continue."
#endif
#if ENABLED(SDIO_SUPPORT)
#error "SDIO_SUPPORT is not supported on SAMD21."
#endif
#if ENABLED(FAST_PWM_FAN)
#error "Features requiring Hardware PWM (FAST_PWM_FAN) are not yet supported on SAMD21."
#endif
#if ENABLED(POSTMORTEM_DEBUGGING)
#error "POSTMORTEM_DEBUGGING is not yet supported on SAMD21."
#endif
+160
View File
@@ -0,0 +1,160 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2022 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
*
* 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
/**
* SAMD21 HAL developed by Bart Meijer (brupje)
* Based on SAMD51 HAL by Giuliano Zaro (AKA GMagician)
*/
#define NUMBER_PINS_TOTAL PINS_COUNT
#define digitalRead_mod(p) extDigitalRead(p)
#define PRINT_PORT(p) do{ SERIAL_ECHOPGM(" Port: "); sprintf_P(buffer, PSTR("%c%02ld"), 'A' + g_APinDescription[p].ulPort, g_APinDescription[p].ulPin); SERIAL_ECHO(buffer); }while (0)
#define PRINT_ARRAY_NAME(x) do{ sprintf_P(buffer, PSTR("%-" STRINGIFY(MAX_NAME_LENGTH) "s"), pin_array[x].name); SERIAL_ECHO(buffer); }while(0)
#define PRINT_PIN(p) do{ sprintf_P(buffer, PSTR("%3d "), p); SERIAL_ECHO(buffer); }while(0)
#define PRINT_PIN_ANALOG(p) do{ sprintf_P(buffer, PSTR(" (A%2d) "), DIGITAL_PIN_TO_ANALOG_PIN(pin)); SERIAL_ECHO(buffer); }while(0)
#define GET_ARRAY_PIN(p) pin_array[p].pin
#define GET_ARRAY_IS_DIGITAL(p) pin_array[p].is_digital
#define VALID_PIN(pin) (pin >= 0 && pin < (int8_t)NUMBER_PINS_TOTAL)
#define DIGITAL_PIN_TO_ANALOG_PIN(p) digitalPinToAnalogInput(p)
#define IS_ANALOG(P) (DIGITAL_PIN_TO_ANALOG_PIN(P)!=-1)
#define pwm_status(pin) digitalPinHasPWM(pin)
#define MULTI_NAME_PAD 27 // space needed to be pretty if not first name assigned to a pin
// pins that will cause hang/reset/disconnect in M43 Toggle and Watch utilities
// uses pin index
#define M43_NEVER_TOUCH(Q) ((Q) >= 75)
bool GET_PINMODE(int8_t pin) { // 1: output, 0: input
const EPortType samdport = g_APinDescription[pin].ulPort;
const uint32_t samdpin = g_APinDescription[pin].ulPin;
return PORT->Group[samdport].DIR.reg & MASK(samdpin) || (PORT->Group[samdport].PINCFG[samdpin].reg & (PORT_PINCFG_INEN | PORT_PINCFG_PULLEN)) == PORT_PINCFG_PULLEN;
}
void pwm_details(int32_t pin) {
if (pwm_status(pin)) {
//uint32_t chan = g_APinDescription[pin].ulPWMChannel TODO when fast pwm is operative;
//SERIAL_ECHOPGM("PWM = ", duty);
}
}
/**
* SAMD21 Board pin| PORT | Label
* ----------------+--------+-------
* 0 | PB25 | "RX0"
* 1 | PB24 | "TX0"
* 2 | PC18 |
* 3 | PC19 |
* 4 | PC20 |
* 5 | PC21 |
* 6 | PD20 |
* 7 | PD21 |
* 8 | PB18 |
* 9 | PB2 |
* 10 | PB22 |
* 11 | PB23 |
* 12 | PB0 | "A16"
* 13 | PB1 | LED AMBER "L" / "A17"
* 14 | PB16 | "TX3"
* 15 | PB17 | "RX3"
* 16 | PC22 | "TX2"
* 17 | PC23 | "RX2"
* 18 | PB12 | "TX1" / "A18"
* 19 | PB13 | "RX1"
* 20 | PB20 | "SDA"
* 21 | PB21 | "SCL"
* 22 | PD12 |
* 23 | PA15 |
* 24 | PC17 |
* 25 | PC16 |
* 26 | PA12 |
* 27 | PA13 |
* 28 | PA14 |
* 29 | PB19 |
* 30 | PA23 |
* 31 | PA22 |
* 32 | PA21 |
* 33 | PA20 |
* 34 | PA19 |
* 35 | PA18 |
* 36 | PA17 |
* 37 | PA16 |
* 38 | PB15 |
* 39 | PB14 |
* 40 | PC13 |
* 41 | PC12 |
* 42 | PC15 |
* 43 | PC14 |
* 44 | PC11 |
* 45 | PC10 |
* 46 | PC6 |
* 47 | PC7 |
* 48 | PC4 |
* 49 | PC5 |
* 50 | PD11 |
* 51 | PD8 |
* 52 | PD9 |
* 53 | PD10 |
* 54 | PB5 | "A8"
* 55 | PB6 | "A9"
* 56 | PB7 | "A10"
* 57 | PB8 | "A11"
* 58 | PB9 | "A12"
* 69 | PA4 | "A13"
* 60 | PA6 | "A14"
* 61 | PA7 | "A15"
* 62 | PB17 |
* 63 | PB20 |
* 64 | PD11 |
* 65 | PD8 |
* 66 | PD9 |
* 67 | PA2 | "A0" / "DAC0"
* 68 | PA5 | "A1" / "DAC1"
* 69 | PB3 | "A2"
* 70 | PC0 | "A3"
* 71 | PC1 | "A4"
* 72 | PC2 | "A5"
* 73 | PC3 | "A6"
* 74 | PB4 | "A7"
* 75 | PC31 | LED GREEN "RX"
* 76 | PC30 | LED GREEN "TX"
* 77 | PA27 | USB: Host enable
* 78 | PA24 | USB: D-
* 79 | PA25 | USB: D+
* 80 | PB29 | SD: MISO
* 81 | PB27 | SD: SCK
* 82 | PB26 | SD: MOSI
* 83 | PB28 | SD: CS
* 84 | PA3 | AREF
* 85 | PA2 | DAC0 (Duplicate)
* 86 | PA5 | DAC1 (Duplicate)
* 87 | PB1 | LED AMBER "L" (Duplicate)
* 88 | PC24 | NeoPixel
* 89 | PB10 | QSPI: SCK
* 90 | PB11 | QSPI: CS
* 91 | PA8 | QSPI: IO0
* 92 | PA9 | QSPI: IO1
* 93 | PA10 | QSPI: IO2
* 94 | PA11 | QSPI: IO3
* 95 | PB31 | SD: DETECT
*/
+54
View File
@@ -0,0 +1,54 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2022 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
*
* 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
/**
* SAMD21 HAL developed by Bart Meijer (brupje)
* Based on SAMD51 HAL by Giuliano Zaro (AKA GMagician)
*/
/**
* SAMD21 Default SPI Pins
*
* SS SCK MISO MOSI
* +-------------------------+
* SPI | 53 52 50 51 |
* SPI1 | 83 81 80 82 |
* +-------------------------+
* Any pin can be used for Chip Select (SD_SS_PIN)
*/
#ifndef SD_SCK_PIN
#define SD_SCK_PIN 38
#endif
#ifndef SD_MISO_PIN
#define SD_MISO_PIN 36
#endif
#ifndef SD_MOSI_PIN
#define SD_MOSI_PIN 37
#endif
#ifndef SDSS
#define SDSS 18
#endif
#ifndef SD_SS_PIN
#define SD_SS_PIN SDSS
#endif
+217
View File
@@ -0,0 +1,217 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2022 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
*
* 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/>.
*
*/
/**
* SAMD21 HAL developed by Bart Meijer (brupje)
* Based on SAMD51 HAL by Giuliano Zaro (AKA GMagician)
*/
#ifdef __SAMD21__
// --------------------------------------------------------------------------
// Includes
// --------------------------------------------------------------------------
#include "../../inc/MarlinConfig.h"
#include "ServoTimers.h" // for SERVO_TC
// --------------------------------------------------------------------------
// Local defines
// --------------------------------------------------------------------------
#define NUM_HARDWARE_TIMERS 9
// --------------------------------------------------------------------------
// Private Variables
// --------------------------------------------------------------------------
const tTimerConfig timer_config[NUM_HARDWARE_TIMERS] = {
{ {.pTcc=TCC0}, TimerType::tcc, TCC0_IRQn, TC_PRIORITY(0) }, // 0 - stepper (assigned priority 2)
{ {.pTcc=TCC1}, TimerType::tcc, TCC1_IRQn, TC_PRIORITY(1) }, // 1 - stepper (needed by 32 bit timers)
{ {.pTcc=TCC2}, TimerType::tcc, TCC2_IRQn, 5 }, // 2 - tone (reserved by framework and fixed assigned priority 5)
{ {.pTc=TC3}, TimerType::tc, TC3_IRQn, TC_PRIORITY(3) }, // 3 - servo (assigned priority 1)
{ {.pTc=TC4}, TimerType::tc, TC4_IRQn, TC_PRIORITY(4) }, // 4 - software serial (no interrupts used)
{ {.pTc=TC5}, TimerType::tc, TC5_IRQn, TC_PRIORITY(5) },
{ {.pTc=TC6}, TimerType::tc, TC6_IRQn, TC_PRIORITY(6) },
{ {.pTc=TC7}, TimerType::tc, TC7_IRQn, TC_PRIORITY(7) },
{ {.pRtc=RTC}, TimerType::rtc, RTC_IRQn, TC_PRIORITY(8) } // 8 - temperature (assigned priority 6)
};
// --------------------------------------------------------------------------
// Private functions
// --------------------------------------------------------------------------
FORCE_INLINE void Disable_Irq(IRQn_Type irq) {
NVIC_DisableIRQ(irq);
// We NEED memory barriers to ensure Interrupts are actually disabled!
// ( https://dzone.com/articles/nvic-disabling-interrupts-on-arm-cortex-m-and-the )
__DSB();
__ISB();
}
static bool tcIsSyncing(Tc * tc) {
return tc->COUNT32.STATUS.reg & TC_STATUS_SYNCBUSY;
}
static void tcReset( Tc * tc) {
tc->COUNT32.CTRLA.reg = TC_CTRLA_SWRST;
while (tcIsSyncing(tc)) {}
while (tc->COUNT32.CTRLA.bit.SWRST) {}
}
// --------------------------------------------------------------------------
// Public functions
// --------------------------------------------------------------------------
void HAL_timer_start(const uint8_t timer_num, const uint32_t frequency) {
IRQn_Type irq = timer_config[timer_num].IRQ_Id;
// Disable interrupt, just in case it was already enabled
NVIC_DisableIRQ(irq);
NVIC_ClearPendingIRQ(irq);
if (timer_num == MF_TIMER_RTC) {
// https://github.com/arduino-libraries/RTCZero
Rtc * const rtc = timer_config[timer_num].pRtc;
PM->APBAMASK.reg |= PM_APBAMASK_RTC;
GCLK->CLKCTRL.reg = (uint32_t)((GCLK_CLKCTRL_CLKEN | GCLK_CLKCTRL_GEN_GCLK4 | (RTC_GCLK_ID << GCLK_CLKCTRL_ID_Pos)));
while (GCLK->STATUS.bit.SYNCBUSY) {}
GCLK->GENCTRL.reg = (GCLK_GENCTRL_GENEN | GCLK_GENCTRL_SRC_OSCULP32K | GCLK_GENCTRL_ID(4) | GCLK_GENCTRL_DIVSEL );
while (GCLK->STATUS.reg & GCLK_STATUS_SYNCBUSY) {}
GCLK->GENDIV.reg = GCLK_GENDIV_ID(4);
GCLK->GENDIV.bit.DIV=4;
while (GCLK->STATUS.reg & GCLK_STATUS_SYNCBUSY) {}
// Disable timer interrupt
rtc->MODE0.INTENCLR.reg = RTC_MODE0_INTENCLR_CMP0;
SYNC(rtc->MODE0.STATUS.bit.SYNCBUSY);
while(rtc->MODE0.STATUS.bit.SYNCBUSY) {}
// Stop timer, just in case, to be able to reconfigure it
rtc->MODE0.CTRL.reg =
RTC_MODE0_CTRL_MODE_COUNT32 | // Mode 0 = 32-bits counter
RTC_MODE0_CTRL_PRESCALER_DIV1024; // Divisor = 1024
while(rtc->MODE0.STATUS.bit.SYNCBUSY) {}
// Mode, reset counter on match
rtc->MODE0.CTRL.reg = RTC_MODE0_CTRL_MODE_COUNT32 | RTC_MODE0_CTRL_MATCHCLR;
// Set compare value
rtc->MODE0.COMP[0].reg = (32768 + frequency / 2) / frequency;
SYNC(rtc->MODE0.STATUS.bit.SYNCBUSY);
// Enable interrupt on compare
rtc->MODE0.INTFLAG.reg = RTC_MODE0_INTFLAG_CMP0; // reset pending interrupt
rtc->MODE0.INTENSET.reg = RTC_MODE0_INTENSET_CMP0; // enable compare 0 interrupt
// And start timer
rtc->MODE0.CTRL.bit.ENABLE = true;
SYNC(rtc->MODE0.STATUS.bit.SYNCBUSY);
}
else if (timer_config[timer_num].type==TimerType::tcc) {
Tcc * const tc = timer_config[timer_num].pTcc;
PM->APBCMASK.reg |= PM_APBCMASK_TCC0;
GCLK->CLKCTRL.reg =(GCLK_CLKCTRL_CLKEN | GCLK_CLKCTRL_GEN_GCLK0 | GCLK_CLKCTRL_ID(TCC0_GCLK_ID));
SYNC (GCLK->STATUS.bit.SYNCBUSY);
tc->CTRLA.reg = TCC_CTRLA_SWRST;
SYNC (tc->SYNCBUSY.reg & TCC_SYNCBUSY_SWRST) {}
SYNC (tc->CTRLA.bit.SWRST);
tc->CTRLA.reg &= ~(TCC_CTRLA_ENABLE); // disable TC module
tc->CTRLA.reg |= TCC_WAVE_WAVEGEN_MFRQ;
tc->CTRLA.reg |= TCC_CTRLA_PRESCALER_DIV2;
tc->CC[0].reg = (HAL_TIMER_RATE) / frequency;
tc->INTENSET.reg = TCC_INTFLAG_MC0;
tc->CTRLA.reg |= TCC_CTRLA_ENABLE;
tc->INTFLAG.reg = 0xFF;
SYNC ( tc->STATUS.reg & TC_STATUS_SYNCBUSY);
}
else {
Tc * const tc = timer_config[timer_num].pTc;
// Disable timer interrupt
tc->COUNT32.INTENCLR.reg = TC_INTENCLR_OVF; // disable overflow interrupt
// TCn clock setup
GCLK->CLKCTRL.reg = (uint16_t) (GCLK_CLKCTRL_CLKEN | GCLK_CLKCTRL_GEN_GCLK0 | GCLK_CLKCTRL_ID(GCM_TC4_TC5)) ;
SYNC (GCLK->STATUS.bit.SYNCBUSY);
tcReset(tc); // reset TC
// Set Timer counter 5 Mode to 16 bits, it will become a 16bit counter ('mode1' in the datasheet)
tc->COUNT32.CTRLA.reg |= TC_CTRLA_MODE_COUNT32;
// Set TC waveform generation mode to 'match frequency'
tc->COUNT32.CTRLA.reg |= TC_CTRLA_WAVEGEN_MFRQ;
//set prescaler
//the clock normally counts at the GCLK_TC frequency, but we can set it to divide that frequency to slow it down
//you can use different prescaler divisons here like TC_CTRLA_PRESCALER_DIV1 to get a different range
tc->COUNT32.CTRLA.reg |= TC_CTRLA_PRESCALER_DIV1 | TC_CTRLA_ENABLE; //it will divide GCLK_TC frequency by 1024
//set the compare-capture register.
//The counter will count up to this value (it's a 16bit counter so we use uint16_t)
//this is how we fine-tune the frequency, make it count to a lower or higher value
//system clock should be 1MHz (8MHz/8) at Reset by default
tc->COUNT32.CC[0].reg = (uint16_t) (HAL_TIMER_RATE / frequency);
while (tcIsSyncing(tc)) {}
// Enable the TC interrupt request
tc->COUNT32.INTENSET.bit.MC0 = 1;
while (tcIsSyncing(tc)) {}
}
NVIC_SetPriority(irq, timer_config[timer_num].priority);
NVIC_EnableIRQ(irq);
}
void HAL_timer_enable_interrupt(const uint8_t timer_num) {
const IRQn_Type irq = timer_config[timer_num].IRQ_Id;
NVIC_EnableIRQ(irq);
}
void HAL_timer_disable_interrupt(const uint8_t timer_num) {
const IRQn_Type irq = timer_config[timer_num].IRQ_Id;
Disable_Irq(irq);
}
// missing from CMSIS: Check if interrupt is enabled or not
static bool NVIC_GetEnabledIRQ(IRQn_Type IRQn) {
return TEST(NVIC->ISER[uint32_t(IRQn) >> 5], uint32_t(IRQn) & 0x1F);
}
bool HAL_timer_interrupt_enabled(const uint8_t timer_num) {
const IRQn_Type irq = timer_config[timer_num].IRQ_Id;
return NVIC_GetEnabledIRQ(irq);
}
#endif // __SAMD21__
+160
View File
@@ -0,0 +1,160 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2022 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
*
* 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
/**
* SAMD21 HAL developed by Bart Meijer (brupje)
* Based on SAMD51 HAL by Giuliano Zaro (AKA GMagician)
*/
#include <stdint.h>
// --------------------------------------------------------------------------
// Defines
// --------------------------------------------------------------------------
typedef uint32_t hal_timer_t;
#define HAL_TIMER_TYPE_MAX 0xFFFFFFFF
#define HAL_TIMER_RATE F_CPU // frequency of timers peripherals
#define MF_TIMER_RTC 8 // This is not a TC but a RTC
#ifndef MF_TIMER_STEP
#define MF_TIMER_STEP 4 // Timer Index for Stepper
#endif
#ifndef MF_TIMER_PULSE
#define MF_TIMER_PULSE MF_TIMER_STEP
#endif
#ifndef MF_TIMER_TEMP
#define MF_TIMER_TEMP MF_TIMER_RTC // Timer Index for Temperature
#endif
#define TEMP_TIMER_FREQUENCY 1000 // temperature interrupt frequency
#define STEPPER_TIMER_RATE HAL_TIMER_RATE // frequency of stepper timer (HAL_TIMER_RATE / STEPPER_TIMER_PRESCALE)
#define STEPPER_TIMER_TICKS_PER_US (STEPPER_TIMER_RATE / 1000000) // stepper timer ticks per µs
#define STEPPER_TIMER_PRESCALE (CYCLES_PER_MICROSECOND / STEPPER_TIMER_TICKS_PER_US)
#define PULSE_TIMER_RATE STEPPER_TIMER_RATE
#define PULSE_TIMER_PRESCALE STEPPER_TIMER_PRESCALE
#define PULSE_TIMER_TICKS_PER_US STEPPER_TIMER_TICKS_PER_US
#define ENABLE_STEPPER_DRIVER_INTERRUPT() HAL_timer_enable_interrupt(MF_TIMER_STEP)
#define DISABLE_STEPPER_DRIVER_INTERRUPT() HAL_timer_disable_interrupt(MF_TIMER_STEP)
#define STEPPER_ISR_ENABLED() HAL_timer_interrupt_enabled(MF_TIMER_STEP)
#define ENABLE_TEMPERATURE_INTERRUPT() HAL_timer_enable_interrupt(MF_TIMER_TEMP)
#define DISABLE_TEMPERATURE_INTERRUPT() HAL_timer_disable_interrupt(MF_TIMER_TEMP)
#define TC_PRIORITY(t) ( t == SERVO_TC ? 1 \
: (t == MF_TIMER_STEP || t == MF_TIMER_PULSE) ? 2 \
: (t == MF_TIMER_TEMP) ? 6 : 7 )
#define _TC_HANDLER(t) void TC##t##_Handler()
#define TC_HANDLER(t) _TC_HANDLER(t)
#ifndef HAL_STEP_TIMER_ISR
#define HAL_STEP_TIMER_ISR() TC_HANDLER(MF_TIMER_STEP)
#endif
#if MF_TIMER_STEP != MF_TIMER_PULSE
#define HAL_PULSE_TIMER_ISR() TC_HANDLER(MF_TIMER_PULSE)
#endif
#if MF_TIMER_TEMP == MF_TIMER_RTC
#define HAL_TEMP_TIMER_ISR() void RTC_Handler()
#else
#define HAL_TEMP_TIMER_ISR() TC_HANDLER(MF_TIMER_TEMP)
#endif
// --------------------------------------------------------------------------
// Types
// --------------------------------------------------------------------------
typedef enum { tcc, tc, rtc } TimerType;
typedef struct {
union {
Tc *pTc;
Tcc *pTcc;
Rtc *pRtc;
};
TimerType type;
IRQn_Type IRQ_Id;
uint8_t priority;
} tTimerConfig;
// --------------------------------------------------------------------------
// Public Variables
// --------------------------------------------------------------------------
extern const tTimerConfig timer_config[];
// --------------------------------------------------------------------------
// Public functions
// --------------------------------------------------------------------------
void HAL_timer_start(const uint8_t timer_num, const uint32_t frequency);
FORCE_INLINE static void HAL_timer_set_compare(const uint8_t timer_num, const hal_timer_t compare) {
// Should never be called with timer MF_TIMER_RTC
Tc * const tc = timer_config[timer_num].pTc;
tc->COUNT32.CC[0].reg = compare;
}
FORCE_INLINE static hal_timer_t HAL_timer_get_compare(const uint8_t timer_num) {
// Should never be called with timer MF_TIMER_RTC
Tc * const tc = timer_config[timer_num].pTc;
return (hal_timer_t)tc->COUNT32.CC[0].reg;
}
FORCE_INLINE static hal_timer_t HAL_timer_get_count(const uint8_t timer_num) {
// Should never be called with timer MF_TIMER_RTC
Tc * const tc = timer_config[timer_num].pTc;
tc->COUNT32.READREQ.reg = TC_READREQ_RREQ;
// Request a read synchronization
SYNC (tc->COUNT32.STATUS.bit.SYNCBUSY);
//SYNC(tc->COUNT32.STATUS.bit.SYNCBUSY );
return tc->COUNT32.COUNT.reg;
}
void HAL_timer_enable_interrupt(const uint8_t timer_num);
void HAL_timer_disable_interrupt(const uint8_t timer_num);
bool HAL_timer_interrupt_enabled(const uint8_t timer_num);
FORCE_INLINE static void HAL_timer_isr_prologue(const uint8_t timer_num) {
if (timer_num == MF_TIMER_RTC) {
Rtc * const rtc = timer_config[timer_num].pRtc;
// Clear interrupt flag
rtc->MODE0.INTFLAG.reg = RTC_MODE0_INTFLAG_CMP0| RTC_MODE0_INTFLAG_OVF;
}
else if (timer_config[timer_num].type == TimerType::tcc){
Tcc * const tc = timer_config[timer_num].pTcc;
// Clear interrupt flag
tc->INTFLAG.reg = TCC_INTFLAG_OVF;
}
else {
Tc * const tc = timer_config[timer_num].pTc;
// Clear interrupt flag
tc->COUNT32.INTFLAG.bit.MC0 = 1;
}
}
#define HAL_timer_isr_epilogue(timer_num)
@@ -0,0 +1,32 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2022 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
*
* 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/>.
*
*/
/**
* SAMD21 HAL developed by Bart Meijer (brupje)
* Based on SAMD51 HAL by Giuliano Zaro (AKA GMagician)
*/
// adapted from I2C/master/master.c example
// https://www-users.cs.york.ac.uk/~pcc/MCP/HAPR-Course-web/CMSIS/examples/html/master_8c_source.html
#ifdef __SAMD21__
#endif // __SAMD21__
@@ -0,0 +1,27 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2022 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
*
* 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/>.
*
*/
/**
* SAMD21 HAL developed by Bart Meijer (brupje)
* Based on SAMD51 HAL by Giuliano Zaro (AKA GMagician)
*/
#pragma once
+41
View File
@@ -0,0 +1,41 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2022 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
*
* 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/>.
*
*/
/**
* SAMD21 HAL developed by Bart Meijer (brupje)
* Based on SAMD51 HAL by Giuliano Zaro (AKA GMagician)
*/
#pragma once
/**
* SAMD21 LCD-specific defines
*/
// The following are optional depending on the platform.
// definitions of HAL specific com and device drivers.
uint8_t u8g_com_samd21_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr);
uint8_t u8g_com_samd21_st7920_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr);
// connect U8g com generic com names to the desired driver
#define U8G_COM_HW_SPI u8g_com_samd21_st7920_hw_spi_fn // use SAMD21 specific hardware SPI routine
#define U8G_COM_ST7920_HW_SPI u8g_com_samd21_st7920_hw_spi_fn
@@ -0,0 +1,42 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2022 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
*
* 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/>.
*
*/
/**
* SAMD21 HAL developed by Bart Meijer (brupje)
* Based on SAMD51 HAL by Giuliano Zaro (AKA GMagician)
*/
/**
* Low level pin manipulation routines - used by all the drivers.
*
* These are based on the SAMD51 pinMode, digitalRead & digitalWrite routines.
*
* Couldn't just call exact copies because the overhead killed the LCD update speed
* With an intermediate level the softspi was running in the 10-20kHz range which
* resulted in using about about 25% of the CPU's time.
*/
#ifdef __SAMD21__
#include <Arduino.h>
#endif // __SAMD21__
@@ -0,0 +1,42 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2022 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
*
* 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/>.
*
*/
/**
* SAMD21 HAL developed by Bart Meijer (brupje)
* Based on SAMD51 HAL by Giuliano Zaro (AKA GMagician)
*/
#pragma once
/**
* Low level pin manipulation routines - used by all the drivers.
*
* These are based on the SAMD51 pinMode, digitalRead & digitalWrite routines.
*
* Couldn't just call exact copies because the overhead killed the LCD update speed
* With an intermediate level the softspi was running in the 10-20kHz range which
* resulted in using about about 25% of the CPU's time.
*/
void u8g_SetPinOutput(uint8_t internal_pin_number);
void u8g_SetPinInput(uint8_t internal_pin_number);
void u8g_SetPinLevel(uint8_t pin, uint8_t pin_status);
uint8_t u8g_GetPinLevel(uint8_t pin);
@@ -0,0 +1,154 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2022 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
*
* 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/>.
*
*/
/**
* SAMD21 HAL developed by Bart Meijer (brupje)
* Based on SAMD51 HAL by Giuliano Zaro (AKA GMagician)
*/
/**
* Based on u8g_com_msp430_hw_spi.c
*
* Universal 8bit Graphics Library
*
* Copyright (c) 2012, olikraus@gmail.com
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice, this list
* of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright notice, this
* list of conditions and the following disclaimer in the documentation and/or other
* materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#ifdef __SAMD21__
#include <U8glib-HAL.h>
#include "SPI.h"
#include "../../shared/HAL_SPI.h"
#ifndef LCD_SPI_SPEED
#define LCD_SPI_SPEED SPI_QUARTER_SPEED
#endif
void u8g_SetPIOutput(u8g_t *u8g, uint8_t pin_index) {
if (u8g->pin_list[pin_index]!= U8G_PIN_NONE)
pinMode(u8g->pin_list[pin_index],OUTPUT);
}
void u8g_SetPILevel(u8g_t *u8g, uint8_t pin_index, uint8_t level) {
if (u8g->pin_list[pin_index]!= U8G_PIN_NONE)
digitalWrite(u8g->pin_list[pin_index],level);
}
uint8_t u8g_com_samd21_st7920_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) {
static SPISettings lcdSPIConfig;
switch (msg) {
case U8G_COM_MSG_STOP:
break;
case U8G_COM_MSG_INIT:
u8g_SetPIOutput(u8g, U8G_PI_CS);
u8g_SetPIOutput(u8g, U8G_PI_A0);
u8g_SetPIOutput(u8g, U8G_PI_RESET);
u8g_SetPILevel(u8g, U8G_PI_CS, LOW);
spiBegin();
lcdSPIConfig = SPISettings(900000, MSBFIRST, SPI_MODE0);
u8g->pin_list[U8G_PI_A0_STATE] = 0;
break;
case U8G_COM_MSG_ADDRESS: // define cmd (arg_val = 0) or data mode (arg_val = 1)
u8g_SetPILevel(u8g, U8G_PI_A0, arg_val);
u8g->pin_list[U8G_PI_A0_STATE] = arg_val;
break;
case U8G_COM_MSG_CHIP_SELECT: // arg_val == 1 means chip selected, but ST7920 is active high, so needs inverting
u8g_SetPILevel(u8g, U8G_PI_CS, arg_val ? HIGH : LOW);
break;
case U8G_COM_MSG_RESET:
u8g_SetPILevel(u8g, U8G_PI_RESET, arg_val);
break;
case U8G_COM_MSG_WRITE_BYTE:
SPI.beginTransaction(lcdSPIConfig);
if (u8g->pin_list[U8G_PI_A0_STATE] == 0) { // command
SPI.transfer(0x0f8); u8g->pin_list[U8G_PI_A0_STATE] = 2;
}
else if (u8g->pin_list[U8G_PI_A0_STATE] == 1) { // data
SPI.transfer(0x0fa); u8g->pin_list[U8G_PI_A0_STATE] = 2;
}
SPI.transfer(arg_val & 0x0f0);
SPI.transfer(arg_val << 4);
SPI.endTransaction();
break;
case U8G_COM_MSG_WRITE_SEQ:
SPI.beginTransaction(lcdSPIConfig);
if (u8g->pin_list[U8G_PI_A0_STATE] == 0 ) { // command
SPI.transfer(0x0f8); u8g->pin_list[U8G_PI_A0_STATE] = 2;
}
else if (u8g->pin_list[U8G_PI_A0_STATE] == 1) { // data
SPI.transfer(0x0fa); u8g->pin_list[U8G_PI_A0_STATE] = 2;
}
uint8_t *ptr = (uint8_t*)arg_ptr;
while (arg_val > 0) {
SPI.transfer((*ptr) & 0x0f0);
SPI.transfer((*ptr) << 4);
ptr++;
arg_val--;
}
SPI.endTransaction();
break;
}
return 1;
}
#endif // __SAMD21__
+8 -3
View File
@@ -1,8 +1,9 @@
/**
* Marlin 3D Printer Firmware
*
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* SAMD51 HAL developed by Giuliano Zaro (AKA GMagician)
*
* 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
@@ -18,6 +19,10 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
*/
/**
* SAMD51 HAL developed by Giuliano Zaro (AKA GMagician)
*/
#ifdef __SAMD51__
#include "../../inc/MarlinConfig.h"
@@ -598,7 +603,7 @@ void MarlinHAL::dma_init() {
void MarlinHAL::init() {
TERN_(DMA_IS_REQUIRED, dma_init());
#if ENABLED(SDSUPPORT)
#if SD_CONNECTION_IS(ONBOARD) && PIN_EXISTS(SD_DETECT)
#if HAS_SD_DETECT && SD_CONNECTION_IS(ONBOARD)
SET_INPUT_PULLUP(SD_DETECT_PIN);
#endif
OUT_WRITE(SDSS, HIGH); // Try to set SDSS inactive before any other SPI users start up
+7 -2
View File
@@ -1,8 +1,9 @@
/**
* Marlin 3D Printer Firmware
*
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* SAMD51 HAL developed by Giuliano Zaro (AKA GMagician)
*
* 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
@@ -20,6 +21,10 @@
*/
#pragma once
/**
* SAMD51 HAL developed by Giuliano Zaro (AKA GMagician)
*/
#define CPU_32_BIT
#include "../shared/Marduino.h"
+7 -2
View File
@@ -1,8 +1,9 @@
/**
* Marlin 3D Printer Firmware
*
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* SAMD51 HAL developed by Giuliano Zaro (AKA GMagician)
*
* 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
@@ -19,6 +20,10 @@
*
*/
/**
* SAMD51 HAL developed by Giuliano Zaro (AKA GMagician)
*/
/**
* Hardware and software SPI implementations are included in this file.
*
+7 -2
View File
@@ -1,8 +1,9 @@
/**
* Marlin 3D Printer Firmware
*
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* SAMD51 HAL developed by Giuliano Zaro (AKA GMagician)
*
* 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
@@ -18,6 +19,10 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
*/
/**
* SAMD51 HAL developed by Giuliano Zaro (AKA GMagician)
*/
#ifdef ADAFRUIT_GRAND_CENTRAL_M4
/**
+7 -2
View File
@@ -1,8 +1,9 @@
/**
* Marlin 3D Printer Firmware
*
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* SAMD51 HAL developed by Giuliano Zaro (AKA GMagician)
*
* 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
@@ -20,6 +21,10 @@
*/
#pragma once
/**
* SAMD51 HAL developed by Giuliano Zaro (AKA GMagician)
*/
#include "../../core/serial_hook.h"
typedef Serial1Class<Uart> UartT;
+7 -2
View File
@@ -1,8 +1,9 @@
/**
* Marlin 3D Printer Firmware
*
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* SAMD51 HAL developed by Giuliano Zaro (AKA GMagician)
*
* 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
@@ -20,6 +21,10 @@
*/
#pragma once
/**
* SAMD51 HAL developed by Giuliano Zaro (AKA GMagician)
*/
#define SYNC(sc) while (sc) { \
asm(""); \
}
+26 -28
View File
@@ -1,8 +1,9 @@
/**
* Marlin 3D Printer Firmware
*
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* SAMD51 HAL developed by Giuliano Zaro (AKA GMagician)
*
* 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
@@ -19,6 +20,10 @@
*
*/
/**
* SAMD51 HAL developed by Giuliano Zaro (AKA GMagician)
*/
/**
* This comes from Arduino library which at the moment is buggy and uncompilable
*/
@@ -77,7 +82,8 @@ HAL_SERVO_TIMER_ISR() {
;
const uint8_t tcChannel = TIMER_TCCHANNEL(timer);
if (currentServoIndex[timer] < 0) {
int8_t cho = currentServoIndex[timer]; // Handle the prior servo first
if (cho < 0) { // Servo -1 indicates the refresh interval completed...
#if defined(_useTimer1) && defined(_useTimer2)
if (currentServoIndex[timer ^ 1] >= 0) {
// Wait for both channels
@@ -86,45 +92,37 @@ HAL_SERVO_TIMER_ISR() {
return;
}
#endif
tc->COUNT16.COUNT.reg = TC_COUNTER_START_VAL;
tc->COUNT16.COUNT.reg = TC_COUNTER_START_VAL; // ...so reset the timer
SYNC(tc->COUNT16.SYNCBUSY.bit.COUNT);
}
else if (SERVO_INDEX(timer, currentServoIndex[timer]) < ServoCount && SERVO(timer, currentServoIndex[timer]).Pin.isActive)
digitalWrite(SERVO(timer, currentServoIndex[timer]).Pin.nbr, LOW); // pulse this channel low if activated
else if (SERVO_INDEX(timer, cho) < ServoCount) // prior channel handled?
digitalWrite(SERVO(timer, cho).Pin.nbr, LOW); // pulse the prior channel LOW
// Select the next servo controlled by this timer
currentServoIndex[timer]++;
currentServoIndex[timer] = ++cho; // go to the next channel (or 0)
if (cho < SERVOS_PER_TIMER && SERVO_INDEX(timer, cho) < ServoCount) {
if (SERVO(timer, cho).Pin.isActive) // activated?
digitalWrite(SERVO(timer, cho).Pin.nbr, HIGH); // yes: pulse HIGH
if (SERVO_INDEX(timer, currentServoIndex[timer]) < ServoCount && currentServoIndex[timer] < SERVOS_PER_TIMER) {
if (SERVO(timer, currentServoIndex[timer]).Pin.isActive) // check if activated
digitalWrite(SERVO(timer, currentServoIndex[timer]).Pin.nbr, HIGH); // it's an active channel so pulse it high
tc->COUNT16.CC[tcChannel].reg = getTimerCount() - (uint16_t)SERVO(timer, currentServoIndex[timer]).ticks;
tc->COUNT16.CC[tcChannel].reg = getTimerCount() - (uint16_t)SERVO(timer, cho).ticks;
}
else {
// finished all channels so wait for the refresh period to expire before starting over
currentServoIndex[timer] = -1; // this will get incremented at the end of the refresh period to start again at the first channel
const uint16_t tcCounterValue = getTimerCount();
if ((TC_COUNTER_START_VAL - tcCounterValue) + 4UL < usToTicks(REFRESH_INTERVAL)) // allow a few ticks to ensure the next OCR1A not missed
tc->COUNT16.CC[tcChannel].reg = TC_COUNTER_START_VAL - (uint16_t)usToTicks(REFRESH_INTERVAL);
else
tc->COUNT16.CC[tcChannel].reg = (uint16_t)(tcCounterValue - 4UL); // at least REFRESH_INTERVAL has elapsed
currentServoIndex[timer] = -1; // reset the timer COUNT.reg on the next call
const uint16_t cval = getTimerCount() - 256 / (SERVO_TIMER_PRESCALER), // allow 256 cycles to ensure the next CV not missed
ival = (TC_COUNTER_START_VAL) - (uint16_t)usToTicks(REFRESH_INTERVAL); // at least REFRESH_INTERVAL has elapsed
tc->COUNT16.CC[tcChannel].reg = min(cval, ival);
}
if (tcChannel == 0) {
SYNC(tc->COUNT16.SYNCBUSY.bit.CC0);
// Clear the interrupt
tc->COUNT16.INTFLAG.reg = TC_INTFLAG_MC0;
tc->COUNT16.INTFLAG.reg = TC_INTFLAG_MC0; // Clear the interrupt
}
else {
SYNC(tc->COUNT16.SYNCBUSY.bit.CC1);
// Clear the interrupt
tc->COUNT16.INTFLAG.reg = TC_INTFLAG_MC1;
tc->COUNT16.INTFLAG.reg = TC_INTFLAG_MC1; // Clear the interrupt
}
}
void initISR(timer16_Sequence_t timer) {
void initISR(const timer16_Sequence_t timer) {
Tc * const tc = timer_config[SERVO_TC].pTc;
const uint8_t tcChannel = TIMER_TCCHANNEL(timer);
@@ -201,9 +199,9 @@ void initISR(timer16_Sequence_t timer) {
}
}
void finISR(timer16_Sequence_t timer) {
void finISR(const timer16_Sequence_t timer_index) {
Tc * const tc = timer_config[SERVO_TC].pTc;
const uint8_t tcChannel = TIMER_TCCHANNEL(timer);
const uint8_t tcChannel = TIMER_TCCHANNEL(timer_index);
// Disable the match channel interrupt request
tc->COUNT16.INTENCLR.reg = (tcChannel == 0) ? TC_INTENCLR_MC0 : TC_INTENCLR_MC1;
+7 -2
View File
@@ -1,8 +1,9 @@
/**
* Marlin 3D Printer Firmware
*
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* SAMD51 HAL developed by Giuliano Zaro (AKA GMagician)
*
* 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
@@ -20,6 +21,10 @@
*/
#pragma once
/**
* SAMD51 HAL developed by Giuliano Zaro (AKA GMagician)
*/
#define _useTimer1
#define _useTimer2
+7 -2
View File
@@ -1,8 +1,9 @@
/**
* Marlin 3D Printer Firmware
*
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* SAMD51 HAL developed by Giuliano Zaro (AKA GMagician)
*
* 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
@@ -18,6 +19,10 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
*/
/**
* SAMD51 HAL developed by Giuliano Zaro (AKA GMagician)
*/
#ifdef __SAMD51__
#include "../../inc/MarlinConfig.h"
+7 -2
View File
@@ -1,8 +1,9 @@
/**
* Marlin 3D Printer Firmware
*
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* SAMD51 HAL developed by Giuliano Zaro (AKA GMagician)
*
* 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
@@ -18,6 +19,10 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
*/
/**
* SAMD51 HAL developed by Giuliano Zaro (AKA GMagician)
*/
#ifdef __SAMD51__
#include "../../inc/MarlinConfig.h"
+7 -2
View File
@@ -1,8 +1,9 @@
/**
* Marlin 3D Printer Firmware
*
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* SAMD51 HAL developed by Giuliano Zaro (AKA GMagician)
*
* 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
@@ -18,6 +19,10 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
*/
/**
* SAMD51 HAL developed by Giuliano Zaro (AKA GMagician)
*/
#ifdef __SAMD51__
#include "../../inc/MarlinConfig.h"
+7 -2
View File
@@ -1,8 +1,9 @@
/**
* Marlin 3D Printer Firmware
*
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* SAMD51 HAL developed by Giuliano Zaro (AKA GMagician)
*
* 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
@@ -20,6 +21,10 @@
*/
#pragma once
/**
* SAMD51 HAL developed by Giuliano Zaro (AKA GMagician)
*/
/**
* Endstop interrupts for ATMEL SAMD51 based targets.
*

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