Compare commits

..

487 Commits

Author SHA1 Message Date
InsanityAutomation 69f91ffdc5 Add hex files 2019-10-27 13:03:18 -04:00
InsanityAutomation 1b6f303adb Update Configuration.h 2019-10-27 13:02:33 -04:00
InsanityAutomation 81e6155f88 Ender config updates 2019-10-27 12:16:11 -04:00
InsanityAutomation 352676885d Update bedlevel.cpp 2019-10-18 23:57:18 -04:00
InsanityAutomation dbb62feac9 Update Configuration_adv.h 2019-10-18 23:16:42 -04:00
InsanityAutomation 7805b59936 Tweaks for CR2020, Add Mosquito option, Add 10sProV2 2019-10-18 23:11:17 -04:00
InsanityAutomation 4c90b7e82e Tweaks for probe inset front and rear for binder clips 2019-10-18 16:10:23 -04:00
InsanityAutomation ebaa72811d Final CR2020 tweaks 2019-10-18 12:53:06 -04:00
InsanityAutomation 39cd26487a add cr2020 pid 2019-10-18 12:10:10 -04:00
InsanityAutomation de2c3bb3f3 finish cr2020 2019-10-16 21:48:18 -04:00
InsanityAutomation 42d68ff13f Tweaks to cr2020 2019-10-16 20:48:58 -04:00
InsanityAutomation 463e3d4436 Update Configuration.h 2019-10-16 20:00:55 -04:00
InsanityAutomation 3cf1e618eb Initial CR2020 Support 2019-10-16 19:58:32 -04:00
InsanityAutomation 575570f2a8 Ultra compress melzi builds 2019-10-15 21:47:39 -04:00
InsanityAutomation f1823aca55 Update Configuration.h 2019-10-15 15:01:06 -04:00
InsanityAutomation cf4766a2b2 Bump to head and M851XY Tweaks 2019-10-06 16:43:38 -04:00
InsanityAutomation 38ce8b9772 Bump to head 2019-09-29 00:20:38 -04:00
InsanityAutomation c0159be9df Update Configuration.h 2019-09-28 18:44:43 -04:00
InsanityAutomation c80623998c Update Configuration.h 2019-09-28 18:04:58 -04:00
InsanityAutomation ae067f1c45 Update Configuration.h 2019-09-28 18:04:10 -04:00
InsanityAutomation aa20e8e419 Update Configuration.h 2019-09-28 17:51:55 -04:00
InsanityAutomation 9393a1e75b Add probe offsets 2019-09-28 15:38:39 -04:00
InsanityAutomation 201f0ae03e Add CR10V2 support 2019-09-28 15:26:47 -04:00
InsanityAutomation 098256d5df Merge pull request #55 from g0dsCookie/CrealityDwin_2.0
Fixed include paths
2019-09-17 08:58:44 -04:00
InsanityAutomation a0f00367fe Update max bed thermal limits for large dc bed at high temps 2019-09-16 22:22:11 -04:00
InsanityAutomation 60cfb42668 dont send octo cancel on timer stop 2019-09-09 10:09:54 -04:00
InsanityAutomation 138de675fe Add tone 2019-09-08 22:52:08 -04:00
InsanityAutomation 263ca25342 Merge branch 'CrealityDwin_2.0' of https://github.com/InsanityAutomation/Marlin into CrealityDwin_2.0 2019-09-08 19:58:39 -04:00
InsanityAutomation e4211d2358 Remove obsolete 2019-09-08 19:58:28 -04:00
InsanityAutomation 03897008e4 Add files via upload 2019-09-08 19:58:05 -04:00
InsanityAutomation 9291b46600 Bump 2019-09-08 19:57:39 -04:00
InsanityAutomation ed5cc1a0c0 Bump with M851XY 2019-09-08 18:38:25 -04:00
InsanityAutomation 769701e64a Update Configuration.h 2019-09-08 17:40:43 -04:00
InsanityAutomation 4c8f900950 Update Creality_DWIN.cpp 2019-09-08 16:37:12 -04:00
InsanityAutomation c0f97e7874 Merge branch 'CrealityDwin_2.0' of https://github.com/InsanityAutomation/Marlin into CrealityDwin_2.0 2019-09-07 11:32:17 -04:00
InsanityAutomation 232dec268d NewRev 2019-09-07 11:32:04 -04:00
InsanityAutomation 6af3951a47 Add files via upload 2019-09-07 11:31:17 -04:00
InsanityAutomation ea34fa2616 fix extui timers 2019-09-07 10:31:33 -04:00
InsanityAutomation 0e04d7b43d Update tool_change.cpp 2019-09-06 22:18:05 -04:00
InsanityAutomation 093d3cb32b revert non working bed leveling disable more tool change 2019-09-06 21:44:59 -04:00
InsanityAutomation f603a152c7 Merge branch 'CrealityDwin_2.0' of https://github.com/InsanityAutomation/Marlin into CrealityDwin_2.0 2019-09-05 21:33:51 -04:00
InsanityAutomation cf7e896328 Update Configuration.h 2019-09-05 21:33:46 -04:00
InsanityAutomation d4ad91c8f2 Add files via upload 2019-09-05 21:20:57 -04:00
InsanityAutomation e45d5354ea Add files via upload 2019-09-05 21:11:38 -04:00
InsanityAutomation 4279b78b17 dont compile creality dwin if not enabled 2019-09-05 20:46:59 -04:00
InsanityAutomation 5d24ecb17b Update Configuration.h 2019-09-05 16:28:13 -04:00
InsanityAutomation 23c7b5018e Small tweaks 2019-09-05 16:27:35 -04:00
InsanityAutomation 04d499c816 Update Configuration.h 2019-08-30 13:02:16 -04:00
g0dsCookie e943b54003 Fixed include paths 2019-08-30 15:51:51 +02:00
InsanityAutomation 7d04475e09 Update bltouch.cpp 2019-08-29 14:29:15 -04:00
InsanityAutomation 8c796fcd3b Update Configuration.h 2019-08-29 14:22:43 -04:00
InsanityAutomation 39997b7710 Update Creality_DWIN.cpp 2019-08-29 13:32:24 -04:00
InsanityAutomation 6ac884ee58 Update Creality_DWIN.cpp 2019-08-29 13:30:23 -04:00
InsanityAutomation b0829e5745 Update Creality_DWIN.cpp 2019-08-29 12:58:20 -04:00
InsanityAutomation ed2d955a42 Some ender 5 tweaks 2019-08-29 10:25:34 -04:00
InsanityAutomation 49c78a4b25 Fix Progress, test bltouch servo to 0, set message for z offset change 2019-08-28 17:31:58 -04:00
InsanityAutomation eb53a1c318 Update Configuration.h 2019-08-28 12:00:24 -04:00
InsanityAutomation 4743bb58e9 Update README.md 2019-08-24 15:02:43 -04:00
InsanityAutomation 27f48c2c46 Update bin file name 2019-08-24 14:54:44 -04:00
InsanityAutomation 9ab228f19d segmented move change 2019-08-24 00:44:32 -04:00
InsanityAutomation 00d3cdc8a6 Update README.md 2019-08-24 00:37:13 -04:00
InsanityAutomation 384f45dcae Update README.md 2019-08-24 00:23:11 -04:00
InsanityAutomation ebc40633a5 Add standard configuration Hex files 2019-08-23 21:42:01 -04:00
InsanityAutomation 61665a4b6f Update README.md 2019-08-23 21:29:03 -04:00
InsanityAutomation 848020d314 Update README.md 2019-08-23 21:24:51 -04:00
InsanityAutomation 885fe5f573 Update README.md 2019-08-23 21:20:56 -04:00
InsanityAutomation 39f035547a Update README.md 2019-08-23 21:18:36 -04:00
InsanityAutomation 975141f77e Tweaks 2019-08-23 21:18:09 -04:00
InsanityAutomation aa6b6a3b3d crx pid, tweaks 2019-08-23 19:58:17 -04:00
InsanityAutomation 0b81c1cd14 ExtUI babystep to position without probe 2019-08-23 15:55:26 -04:00
InsanityAutomation 1a1f9562d8 Update README.md 2019-08-23 14:04:29 -04:00
InsanityAutomation 334893f831 Update CR-X_Stock__1.70_Screen.7z 2019-08-23 13:42:49 -04:00
InsanityAutomation 73310d9848 Update README.md 2019-08-23 13:34:23 -04:00
InsanityAutomation 34cce5a26a Archive TFT files
50mb to 1.5mb
2019-08-23 11:14:54 -04:00
InsanityAutomation 45688c0ae6 Update README.md 2019-08-23 00:25:53 -04:00
InsanityAutomation 420ea1c30e Update README.md 2019-08-23 00:12:17 -04:00
InsanityAutomation 10a71da890 Update single extruder screens with 2.0 functions 2019-08-22 23:13:14 -04:00
InsanityAutomation dde5cdfb0b Update Creality_DWIN.cpp 2019-08-22 21:44:50 -04:00
InsanityAutomation 0fea530069 Tweaks 2019-08-22 20:55:42 -04:00
InsanityAutomation b55264b5ed fix status callback 2019-08-22 20:13:02 -04:00
InsanityAutomation fb1cd0cf3c TweaksTouchups 2019-08-22 19:39:40 -04:00
InsanityAutomation 6840dcf87d Update Configuration.h 2019-08-22 14:32:58 -04:00
InsanityAutomation 04f81d0aa4 Update Creality_DWIN.cpp 2019-08-22 13:15:59 -04:00
InsanityAutomation 1884f3754c Update Creality_DWIN.cpp 2019-08-22 13:04:17 -04:00
InsanityAutomation 8f8511d2e0 tweaks 2019-08-22 12:34:14 -04:00
InsanityAutomation 966ffa295f bump 2019-08-21 22:31:18 -04:00
InsanityAutomation 63815d9acc Bump 2019-08-21 20:32:28 -04:00
InsanityAutomation 1b5f70a35e fix level corners 2019-08-21 20:29:06 -04:00
InsanityAutomation f6fc94dbc4 sd card continuity bump 2019-08-21 17:17:47 -04:00
InsanityAutomation 06982535d2 Tweaks 2019-08-21 10:45:53 -04:00
InsanityAutomation f62a5f3ff6 Update Configuration.h 2019-08-21 00:14:46 -04:00
InsanityAutomation 2fc4871bc1 Update Configuration.h 2019-08-21 00:12:42 -04:00
InsanityAutomation 7e5b72bb49 Update Configuration.h 2019-08-20 23:25:52 -04:00
InsanityAutomation 31386be583 throttling 2019-08-20 22:45:47 -04:00
InsanityAutomation cff4360621 Tweaks 2019-08-20 20:28:39 -04:00
InsanityAutomation f515f22313 update pid refix old bug 2019-08-20 18:44:20 -04:00
InsanityAutomation e249e380fc usability tweaks 2019-08-20 18:12:01 -04:00
InsanityAutomation 9ce076a045 Bump 2019-08-20 17:59:36 -04:00
InsanityAutomation f70c1d59da debug 2019-08-20 17:21:49 -04:00
InsanityAutomation f30bf8ba7d Update README.md 2019-08-20 14:26:05 -04:00
InsanityAutomation 5e82e4e33d Update Creality_DWIN.cpp 2019-08-20 14:00:19 -04:00
InsanityAutomation b54f11859a Update Creality_DWIN.cpp 2019-08-20 10:20:35 -04:00
InsanityAutomation 5c051a005f Update README.md 2019-08-19 12:43:19 -04:00
InsanityAutomation d25e477f76 Update README.md 2019-08-19 12:40:37 -04:00
InsanityAutomation a1d8f5f79f Update README.md 2019-08-19 12:39:43 -04:00
InsanityAutomation fd52a71294 Update README.md 2019-08-19 12:38:59 -04:00
InsanityAutomation adc60676ae Update README.md 2019-08-19 10:16:42 -04:00
InsanityAutomation 55a69ca853 Update README.md 2019-08-19 10:15:31 -04:00
InsanityAutomation e0e42a5f61 cleanup 2019-08-18 23:20:16 -04:00
InsanityAutomation 2b10dfaf52 Update Creality_DWIN.cpp 2019-08-18 23:18:47 -04:00
InsanityAutomation 4599988e2a One more SD tweak 2019-08-18 23:01:39 -04:00
InsanityAutomation ea10994180 Tweak sd file select 2019-08-18 22:42:33 -04:00
InsanityAutomation 534a3f39bb Update Creality_DWIN.cpp 2019-08-18 21:00:40 -04:00
InsanityAutomation 9f04dfb0a1 Change txt to white 2019-08-18 20:42:54 -04:00
InsanityAutomation 34d8f1d81f Fix swapped icon 2019-08-18 19:14:21 -04:00
InsanityAutomation 005cbbbb17 Update G28.cpp 2019-08-18 19:09:08 -04:00
InsanityAutomation 9dbf731d9a fix runout trigering oon either sensor 2019-08-18 18:29:04 -04:00
InsanityAutomation 3f752657a7 turn runout back on 2019-08-18 18:04:52 -04:00
InsanityAutomation dd70e03767 lots of fixes 2019-08-18 18:00:35 -04:00
InsanityAutomation ecdc3a0911 Tweaks 2019-08-18 14:51:55 -04:00
InsanityAutomation 2416912aef Bump 2019-08-18 14:48:04 -04:00
InsanityAutomation 6d7220e379 Initial Ender 5 support, migrate max support 2019-08-18 14:44:53 -04:00
InsanityAutomation 80134a4a48 Update Configuration.h 2019-08-18 12:26:37 -04:00
InsanityAutomation e49bbfef14 Delete DWIN_SET.7z 2019-08-18 10:35:12 -04:00
InsanityAutomation 0c48e709ff Updates again 2019-08-18 00:45:27 -04:00
InsanityAutomation 38aba644c3 Update 2019-08-17 22:04:51 -04:00
InsanityAutomation 6498c4cf88 Config sync 2019-08-17 20:23:22 -04:00
InsanityAutomation 9948054cb7 Lots of fixes 2019-08-17 19:29:45 -04:00
InsanityAutomation 412e3aa1f6 Update ui_api.cpp 2019-08-17 00:49:32 -04:00
InsanityAutomation 9975799c5f CRX Works too 2019-08-17 00:18:56 -04:00
InsanityAutomation 5f688304f6 Update Creality_DWIN.cpp 2019-08-16 10:34:17 -04:00
InsanityAutomation ba919e49fc Mostly works ok-ish 2019-08-16 00:31:17 -04:00
InsanityAutomation a2fa854d9c Bump, filament runout mostly works 2019-08-14 00:24:51 -04:00
InsanityAutomation 518e313260 Update Configuration.h 2019-07-23 22:47:30 -04:00
InsanityAutomation 4e2b4ce9a0 Bump 2019-07-23 22:46:22 -04:00
InsanityAutomation 08b5bdda27 fixes 2019-07-19 10:47:24 -04:00
InsanityAutomation a9d634fe28 minor tweak 2019-07-19 10:23:45 -04:00
InsanityAutomation 4198b14e2f Bump to head, some tweaks 2019-07-19 10:21:38 -04:00
InsanityAutomation 615ac13a52 bump to head, misc fixes 2019-06-23 12:06:21 -04:00
InsanityAutomation 8d23b85b47 Update Creality_DWIN.cpp 2019-06-23 11:38:16 -04:00
InsanityAutomation ad17b23fc8 SD Print Working 2019-05-27 23:57:46 -04:00
InsanityAutomation 3ef237cece More progress 2019-05-18 14:56:14 -04:00
InsanityAutomation 4c2fe3bad8 Bump and fix mesh define issue 2019-05-15 23:00:26 -04:00
InsanityAutomation 0822bcbff8 Bump in the night 2019-04-25 23:35:43 -04:00
InsanityAutomation 672f1c60fb progress 2019-04-25 23:23:01 -04:00
InsanityAutomation 3a8c87b511 Update Creality_DWIN.cpp 2019-04-24 21:18:29 -04:00
InsanityAutomation a43dd70976 Update Configuration.h 2019-04-23 18:39:02 -04:00
InsanityAutomation e890bdffeb disable some mesh and bed leveling stuff until API is fixed 2019-04-23 17:57:19 -04:00
InsanityAutomation eb54bf155a Bump to head, another couple steps 2019-04-23 17:37:25 -04:00
InsanityAutomation 53e9e8c7b3 close the night... 2019-03-17 01:00:47 -04:00
InsanityAutomation cddbd1c6b4 Updates 2019-03-17 00:41:55 -04:00
InsanityAutomation 77db45432b Update Creality_DWIN.cpp 2019-03-17 00:39:00 -04:00
InsanityAutomation 68240d398f IT COMPILES!!!!
without sd card to screen
2019-03-17 00:23:55 -04:00
InsanityAutomation 6a3532bc71 Another Step 2019-03-17 00:05:31 -04:00
InsanityAutomation a94dedd2cb Compile fixes 2019-03-16 23:36:26 -04:00
InsanityAutomation 2108715fa6 Update Configuration.h 2019-03-16 22:49:55 -04:00
InsanityAutomation 614c9c6c9d more 2019-03-16 19:02:40 -04:00
InsanityAutomation 1c658401de bump 2019-03-16 16:29:28 -04:00
InsanityAutomation 97379d5d53 More updates 2019-03-16 16:03:56 -04:00
InsanityAutomation 3e5a957872 Updates 2019-03-16 13:31:19 -04:00
InsanityAutomation e9588824bb 10s pro support and basic dwin files to start changes 2019-03-16 13:31:19 -04:00
Ludy 59353546e8 Fix BUTTON_EXISTS and misplaced comma (#13411)
Fixes #13410 and redeclaration of `BUTTON_EXISTS`
2019-03-16 11:59:12 -05:00
InsanityAutomation 09eb30dc05 IDEX Mirror mode based on Formbot / Vivedino Symmetric mode (#13404) 2019-03-15 22:46:27 -05:00
Scott Lahteine 5c1aa5162d Adjust M206 output in M503 for DELTA 2019-03-15 19:20:40 -05:00
Scott Lahteine ad8b82d054 Fix KILL_PIN assignment for MKS_MINI_12864
According to #13397
2019-03-15 19:20:40 -05:00
Scott Lahteine 3a916b4ef2 Create bresenham.h 2019-03-15 19:20:39 -05:00
Karl Andersson 5d3928cb01 PWM is not defined on Arduino Core STM32 (#13405) 2019-03-15 19:14:06 -05:00
Scott Lahteine 9a515cbd32 Fix Pause Print message and behavior (#13394) 2019-03-14 02:26:07 -05:00
Scott Lahteine f5bcc00570 Unify debugging output with debug_out.h (#13388) 2019-03-14 02:25:42 -05:00
Andrei Pozolotin cc8a871705 Add capability string CHAMBER_TEMPERATURE (#13391)
Reference: #13380
2019-03-13 18:09:22 -05:00
Scott Lahteine 67bee06e43 No patch needed for non-libmaple analogWrite
See https://github.com/pinchies/Marlin/pull/1#issuecomment-471388743
2019-03-13 07:21:10 -05:00
Scott Lahteine f89b375fb9 Fixes and improvements for PWM pins (#13383) 2019-03-13 06:51:15 -05:00
Scott Lahteine 87162658c4 Fix and improve software endstops (#13386) 2019-03-13 05:48:36 -05:00
Scott Lahteine 6214c997c0 Remove includes of <binary.h> 2019-03-13 05:32:33 -05:00
Scott Lahteine 4555ae448f Fixups for ESP32 2019-03-13 05:32:33 -05:00
Scott Lahteine a5ea3e2f15 Fix hotend offset on switching toolhead change
See commentary at #11623
2019-03-13 05:32:21 -05:00
jmz52 8e0ac93d60 Fix 'UNUSED redefined' compiler warning (#13387) 2019-03-13 04:34:02 -05:00
Hadrien Jouet 0278ad0a6d Add ESP32 WiFi interface (#11209) 2019-03-13 00:48:08 -05:00
InsanityAutomation c03df89921 ExtUI Mesh Leveling Extensions (#13363) 2019-03-13 00:45:52 -05:00
InsanityAutomation 050eac03af Single X Duplication Extension (#13373)
* Multi-nozzle selective duplication
* Use a bit-mask, reduce stepper_indirection.h size
* Tweak the multi-nozzle duplication description
* Use 'S' as a bool in M605
* Add HAS_DUPLICATION_MODE conditional
* Remove '_MODE' from the option name
* M605 in the style of Stacker M280
* Also include direct mask style (P)
2019-03-13 00:42:50 -05:00
Scott Lahteine ad91476d26 Fix USEABLE_HARDWARE_PWM 2019-03-13 00:12:46 -05:00
Scott Lahteine d63da4592d Tweak to SCARA_move_to_cal 2019-03-12 22:06:50 -05:00
Scott Lahteine 51ff5b68fa Clean up fastIO ahead of PWM patch 2019-03-12 20:39:55 -05:00
Scott Lahteine 388babbcea Tweak SERIAL_PRINTF 2019-03-11 20:58:27 -05:00
Scott Lahteine d94e077901 Apply HAS_HOTEND_OFFSET where needed 2019-03-11 20:58:27 -05:00
Scott Lahteine 11d6a939df Always define axis_unhomed_err 2019-03-11 20:58:27 -05:00
7eggert 10c8c034bd Allow both encoder and ADC keypad (#13355) 2019-03-11 18:10:56 -05:00
Andrei Pozolotin 31ff7da7ac Add missing CHAMBER options (for M141) (#13371) 2019-03-11 16:50:07 -05:00
Scott Lahteine 0375e92847 Followup to serial rework
As mentioned in #13370
2019-03-11 16:46:04 -05:00
jmz52 013bb469ca Fix compilation for STM32F1 with no SDIO (#13366) 2019-03-11 16:40:51 -05:00
Scott Lahteine e52bcc9408 Limit top bed temp to BED_MAXTEMP - 10
The chances of a 10° overshoot is pretty minimal.
2019-03-11 16:32:34 -05:00
Scott Lahteine 98b55421a5 Clean up some temp config 2019-03-11 16:31:23 -05:00
InsanityAutomation 785a7028bf Followup to 'volatile' patch (#13369)
Originally #13344
2019-03-11 15:01:57 -05:00
Scott Lahteine aa1d587128 Some LCD code cleanup 2019-03-11 05:07:31 -05:00
Scott Lahteine fa11427ec6 Remove obsolete LCD_CONTRAST 2019-03-11 03:33:07 -05:00
pinchies 4df9509ead Add support for printers with inverted fan pins (#13362)
Add support for printers with inverted fan pins by adding `#define FAN_INVERTING 1` to `Configuration_adv.h` and modifying the fan write macros.
2019-03-10 20:51:21 -05:00
Scott Lahteine 1f7e220387 Make HAL ISR macros function-like 2019-03-10 20:44:27 -05:00
Scott Lahteine e3ce346f24 Report position to host in Nozzle::park 2019-03-10 19:09:28 -05:00
Scott Lahteine 77b4176152 Use lib include for bit_constants.h 2019-03-10 19:09:28 -05:00
Scott Lahteine 3419099f0a Clean up whitespace 2019-03-10 19:09:28 -05:00
pinchies 4c43e6c48b Fix "spontaneous heating" issue (WRITE bug) on STM32 (#13356)
Should fix "spontanous heating" problems due to order of operations error. Error occurs at least with ststm32 v5.1.0 in PlatformIO.
2019-03-10 17:25:54 -05:00
Michiel Baird b824a517aa Add G38.4 and G38.5 (#13348) 2019-03-10 17:22:09 -05:00
Bruce j Beare e4d080e63c Reset after kill with a button on the KILL_PIN (#13091) 2019-03-10 09:57:38 -05:00
MoellerDi c36989c39e Fix chamber temperature measurement (#13350) 2019-03-10 09:51:13 -05:00
Scott Lahteine 12503fce06 Followup to wait_for_user fix 2019-03-10 09:14:02 -05:00
Scott Lahteine 33a08fc6f7 Fix typos from temperature rework
Followup to #12201
2019-03-10 08:28:16 -05:00
Tobias Frost 2efbcc90c5 Fix wait_for_user compile error (#13352) 2019-03-10 08:07:41 -05:00
Tobias Frost 60e82e3929 Send notifications to ExtUI for M0/M1 (#13344)
- Send notifications to ExtUI for M0/M1

- wait_for_user can be non-volatile (not changed by interrupt)
  C / C++ compilers don't optimize away reads of non-volatile variables when a function call is used between accesses, because *any* variable could be changed by the function call. Since `wait_for_user` can't be changed without a function call, it should be non-volatile so the compiler can optimize away cases where it is read more than once without an intervening function call.
2019-03-09 14:20:37 -06:00
Marcio Teixeira 00fc43144a Follow up fixes to various PRs. (#13334)
- Ensure `MarlinUI:get_progress` is defined for `ExtUI`.
- Fix for `BACKLASH_SMOOTHING` with small segments.
  `BACKLASH_SMOOTHING` with extremely small segments failed to fully correct due to the correction factor being rounded down. Rounding up ensures the entire backlash will converge to zero even for small segments.
- Add pinout for the beta revision `EINSY_RETRO`.
- Update soft endstops with tool offsets (for toolchange et. al. move clamping) (#12568)
2019-03-09 14:20:37 -06:00
Scott Lahteine c7d618b4d9 Fix SERIAL_ECHOLNPAIR
Fix #13333
2019-03-09 14:20:37 -06:00
InsanityAutomation d54741eda8 Update some G26 plausible values. Add speed control. (#13330) 2019-03-08 03:13:44 -06:00
Msq001 fb3302feda Fix STM32F1 Serial and ADC pins (#13331) 2019-03-08 02:21:32 -06:00
Reece Kibble dbead66988 Allows user to set (almost) any PWM frequency (#12638) 2019-03-08 02:15:42 -06:00
Tobias Frost afbec5ff7e Have ExtUI::getProgress use ui.get_progress (#13328) 2019-03-07 18:00:38 -06:00
3dlabsio 645ca7af7a M141 Heated Chamber, Temperature rework (#12201) 2019-03-07 02:09:39 -06:00
Scott Lahteine 44571775bd Further support for 6 extruders 2019-03-07 01:00:56 -06:00
Chris Pepper 8d95019442 LPC176x NeoPixel Support (#13322) 2019-03-06 23:54:19 +00:00
Scott Lahteine 893ee68b52 Clean up trailing whitespace 2019-03-06 01:02:43 -06:00
Scott Lahteine 39f1222060 One fewer G29 error string 2019-03-05 23:04:52 -06:00
InsanityAutomation 543fc4c117 Mention 2.0.x 8-bit support earlier in README (#13317) 2019-03-05 23:03:00 -06:00
Scott Lahteine cfdb38eda4 Allow SERIAL_ECHOPAIR to take up to 12 pairs (#13311) 2019-03-05 06:46:19 -06:00
Scott Lahteine 4771e372a1 Update criteria for PAUSE/RESUME/STOP menu items (#13294) 2019-03-05 06:46:06 -06:00
Tobias Frost 56fdcf93d1 Disallow SD_DETECT_INVERTED with FYSETC F6. (#13307) 2019-03-05 06:45:28 -06:00
Tobias Frost 7ce13a6ec1 Fix a print_job_timer compile error (#13304) 2019-03-05 06:39:15 -06:00
Tobias Frost 6df51201ae Include EXTENSIBLE_UI in single LCD sanity check (#13306) 2019-03-05 06:33:36 -06:00
Scott Lahteine 2e5a3b01fd Save Power Loss Recovery only on move commands 2019-03-05 02:43:29 -06:00
Scott Lahteine 15738ea506 Update a motion comment 2019-03-05 00:50:29 -06:00
Scott Lahteine bc87e97357 Prevent a tool change move out of bounds 2019-03-05 00:50:29 -06:00
Scott Lahteine 2212da453a Distinguish between analog/digital auto fans (#13298) 2019-03-05 00:41:31 -06:00
Chris Pepper 2513f6b550 Fix multiport G28 with Binary Transfer (#13308) 2019-03-04 16:44:54 +00:00
Chris Pepper 38bef9da91 Report auto temp to both serial ports, if available (#13301) 2019-03-03 21:03:48 -06:00
Robert Mendon 367d392880 Init stepper current after stepper pins are set up (#13302) 2019-03-03 20:58:02 -06:00
InsanityAutomation bf8b38e0f7 Relocate configs above Marlin/src folder (#13299) 2019-03-03 16:50:56 -06:00
Scott Lahteine d71dc5cf42 Fix for Ender 4 fan/case light pin
See #12731
2019-03-03 07:43:27 -06:00
Anthony Rich 7640b328df Support for Tronxy X5S 2e (#13297) 2019-03-03 07:41:05 -06:00
Scott Lahteine 599cdc3f0f Remove dead code from get_pid_output
See #12981
2019-03-03 05:45:20 -06:00
Scott Lahteine 35ae5daf2d Split up sdcard G-codes 2019-03-03 01:52:15 -06:00
Scott Lahteine 3f36a38512 Clean up some pre-serial-redirect includes 2019-03-03 01:52:15 -06:00
Scott Lahteine fa0d909dd3 Add FIL_RUNOUT_PIN for BIGTREE_SKR_V1.3
See #13267
2019-03-03 00:27:47 -06:00
Ludy bd4160dbaf Unused CS_ACTUAL_sb (#13282) 2019-03-02 17:30:30 -06:00
Vasily Evseenko 71773b128d Fix stepper use before init. Add Ultimaker2+ Extended clone config (#13284) 2019-03-02 17:29:02 -06:00
Scott Lahteine edc4e037c4 Add a note to G10 2019-03-02 17:19:36 -06:00
Tobias Frost 57afd0ab37 Fix range check bug in FileList::seek() (#13286)
When `count()` returns 0, `pos > (count()-1)` will always yield `true` due to integer underflow.
2019-03-02 16:43:08 -06:00
kAdonis 05c2f80826 Fix bug in wait-for-heatup (#13290) 2019-03-02 16:29:10 -06:00
Chris Pepper b0553d2d97 Add M997 support and simple implementation for LPC176x (#13281) 2019-03-01 20:11:50 -06:00
Scott Lahteine fa236e9718 General cleanup ahead of L64XX 2019-03-01 19:58:07 -06:00
Scott Lahteine 2f1e1dcb42 Gradual step towards EXTRUDERS 0 support 2019-03-01 01:51:24 -06:00
Scott Lahteine 99d0022fae Drop the Z_MIN_PROBE_ENDSTOP option (#13276) 2019-03-01 00:27:45 -06:00
Scott Lahteine 9a6b90f47d TMC2660.h comment tweaks 2019-03-01 00:25:22 -06:00
Scott Lahteine a2e3226597 Init XYZ to configured home position 2019-02-28 22:10:26 -06:00
Scott Lahteine 4fbbce9a35 Marlin Dev Mode for DOGM status screen 2019-02-28 22:10:26 -06:00
Scott Lahteine 998ce55be0 Alternative fan bitmap 2019-02-28 22:08:20 -06:00
InsanityAutomation e2e2a55d9b Add thermistor type 67 SliceEng (#13275) 2019-02-28 19:44:17 -06:00
Msq001 5b7ad3a5a0 Fix SKR onboard TF card CS pin (#13272) 2019-02-28 19:41:19 -06:00
Scott Lahteine 7fde3ed915 Skip hysteresis check when temp is already close to target
To eliminate a long delay during pause, park, and filament change
2019-02-28 14:35:19 -06:00
Chris Pepper 7de6476b3d Fix binary protocol error 2019-02-28 02:31:42 +00:00
Scott Lahteine 2c10222e87 card.transfer_port => transfer_port_index 2019-02-27 20:14:17 -06:00
Chris Pepper 4ab433d391 Fix binary protocol with one serial port (#13270)
- The `sdcard.transfer_port` variable is Marlin's internal serial port index, not the physical serial port number.
- Added packet number to "ok" response so hosts don't need to wait for the ACK.
- Renamed feature to `BINARY_FILE_TRANSFER`, as the speed up is only consequential to the ability to transfer binaries over serial.
2019-02-27 19:57:48 -06:00
Scott Lahteine ab781de5a0 Fix opt_add to accept quotes 2019-02-27 05:53:09 -06:00
InsanityAutomation eb4bf93ea4 Add more Babystep options (#13262) 2019-02-27 04:38:56 -06:00
Scott Lahteine f37df28d17 UBL G29 T current position fix
Counterpart to #12845
2019-02-26 22:25:53 -06:00
Msq001 f8a39919fa Add Bigtree SKR 1.3 board (#13267)
Co-Authored-By: Msq001 <msq001@users.noreply.github.com>
2019-02-26 21:30:00 -06:00
Bob Kuhn ddbe4cfa20 Printrboard G2 support (#13116) 2019-02-26 21:03:13 -06:00
Scott Lahteine 4200f9ed62 Hide freeMemory et.al. warnings 2019-02-26 18:03:00 -06:00
Scott Lahteine dc88747770 Fix Due GET_ARRAY_IS_DIGITAL
Co-Authored-By: bob-the-kuhn <bob.kuhn@att.net>
2019-02-26 17:49:14 -06:00
Scott Lahteine 2356970a91 Disable STM32F1 Travis CI test for now 2019-02-26 17:49:14 -06:00
Scott Lahteine a79b9bbe6b Cleanup whitespace, add a const 2019-02-26 17:49:14 -06:00
Giuliano Zaro 2616e4d4d9 Remove duplicated 'chitchat' defines (#13258) 2019-02-25 16:13:01 -06:00
Scott Lahteine 5d28575d4d Clean up some motion code 2019-02-25 16:01:42 -06:00
Scott Lahteine 808b076000 Update some ABL/UBL conditionals 2019-02-25 16:01:42 -06:00
Scott Lahteine 833c2e54a1 Add an empty flushTX to MarlinSerialUSB_Due 2019-02-25 13:48:14 -06:00
Scott Lahteine 38363902c7 Fix sanity checks for distinct E factor settings
Reference #13156
2019-02-25 00:20:36 -06:00
Scott Lahteine 64253e1a58 Followup to serial reform
Reference #13250
2019-02-25 00:20:36 -06:00
Minims 92a4984066 Fix G34 probe position (#13251) 2019-02-24 13:57:30 -06:00
Scott Lahteine e15354e387 Simplify serial port redirect (#13234) 2019-02-23 22:53:01 -06:00
Chris Pepper 88cc1d1a31 Fix Preprocessor syntax in Re-ARM pins file (#13247) 2019-02-24 01:36:58 +00:00
Karl Andersson 76e9ee33aa Fix include order to make SERIAL_PORT_2 work (#13241) 2019-02-23 16:56:09 -06:00
Bruce j Beare 562f2321d2 Fix a G34 bug, allow negative Z corrections (#13240) 2019-02-23 02:41:52 -06:00
FernandoVelcic edf025ed8d Update Spanish language (#13236) 2019-02-23 00:41:02 -06:00
Scott Lahteine 02fec89a0d Turn fans off in zero_fan_speeds
Addressing #13231
2019-02-22 21:00:44 -06:00
Scott Lahteine 15aa932aa6 HAL for Linux (#13146) 2019-02-22 19:09:10 -06:00
kwalters3 5eb82ca6a8 Change SSD1306_OLED_I2C_CONTROLLER to HAS_SSD1306_OLED_I2C (#13223) 2019-02-22 19:08:36 -06:00
Marcio Teixeira 109e67169c Define G21 as NOOP w/o INCH_MODE_SUPPORT (#13229)
Ticket #13228

If `INCH_MODE_SUPPORT` is undefined, G20 is an unknown command as it should be (Marlin is, by default, operating in metric mode). G21, however, is found in many slicers and printer start gcode sections and should be accepted (as a NOOP) to avoid the unknown commands.
2019-02-22 15:35:32 -06:00
AnHardt 31b0be74af Fix autotemp_factor menu setting (#13226)
Fix #12643
Only factors above 1 can have a 'positive' effect.
2019-02-22 15:30:17 -06:00
Evgeny-SPB f6ab62bc13 Fix Creality CR-10 S5 filament change (#13219) 2019-02-21 05:40:49 -06:00
Thomas Moore 9f5e4e5ad8 Update LPC1769 Pins Files (#13183) 2019-02-21 00:54:05 -06:00
Greg Nutt 608a6810e7 Fix DOGLCD_A0 pin in pins_Smoothieboard.h (#13217) 2019-02-20 18:08:49 -06:00
Scott Lahteine 80359c9937 Add more parameters to M240
Co-Authored-By: shitcreek <45380455+shitcreek@users.noreply.github.com>
2019-02-20 14:51:36 -06:00
Scott Lahteine a43e892fb5 Use 8-bit i2c address on LPC platform
Fix #9799 — hopefully not a unicorn
2019-02-20 06:27:26 -06:00
Scott Lahteine 631d867dc9 HAL cleanups 2019-02-20 06:27:26 -06:00
Scott Lahteine 89bbc30a09 Fix init of power supply pin
Fix #13184
2019-02-20 05:29:05 -06:00
Scott Lahteine 44c22e3935 Provide a default MAX6675_SS_PIN for ReARM
See #8010
2019-02-20 05:06:06 -06:00
Scott Lahteine 3c9a7926c2 Fix compile error with JUNCTION_DEVIATION
See #13000
2019-02-20 04:54:26 -06:00
Scott Lahteine 758c6c9464 Very minor SPI speedup 2019-02-20 04:36:23 -06:00
Scott Lahteine 422dd6666e Fix Due EEPROM write bug
See #13065
2019-02-20 04:36:23 -06:00
Scott Lahteine 03e109c4a3 FLASH_EEPROM => FLASH_EEPROM_EMULATION 2019-02-20 04:36:23 -06:00
Scott Lahteine 50917ccda6 Tweak some u8g interface code 2019-02-20 04:26:34 -06:00
LinFor ba39186364 TMC_DEBUG optimization and improvements (#13135) 2019-02-20 02:22:42 -06:00
Scott Lahteine 1424b368cf Tweak M122 comment in configs 2019-02-19 16:20:18 -06:00
Scott Lahteine 3a1b6fe8c1 Coding standards 2019-02-19 14:58:39 -06:00
InsanityAutomation 19af90face Fix a host action compile error (#13208) 2019-02-19 14:47:31 -06:00
Marcio Teixeira 992cdc8d14 Fix host action / G-code ordering in event_probe_failure (#13207)
Observing from the console, it makes the most sense to do `//action:probe_retry` before executing commands.
2019-02-19 14:45:03 -06:00
InsanityAutomation 33a6d52965 Fix a RAPTOR2 pin conflict (#13205) 2019-02-19 14:42:02 -06:00
InsanityAutomation 52665f54ad Fix bad Purge More logic (#13193) 2019-02-19 14:37:18 -06:00
Scott Lahteine 18458ec42b Error in Smoothieboard for unsupported display 2019-02-19 14:17:33 -06:00
InsanityAutomation d4ed9b3ef1 Babystep also requires homing (#13191) 2019-02-17 14:35:45 -06:00
InsanityAutomation ca7b2f574f Fix condition on tool change filament swap menu (#13190) 2019-02-17 12:33:46 -06:00
Roman Moravčík 208ab8b366 Fix compilation with one service interval (#13185) 2019-02-17 12:32:47 -06:00
Roman Moravčík 567d03a269 Update Slovak language (#13187) 2019-02-17 12:29:49 -06:00
Scott Lahteine c041eec699 Update G-code syntax for Sublime 2019-02-16 19:46:46 -06:00
Alain Martel 27203c62b8 Enable M240, set photo pins for 3DFabXYZ i3 (#13174) 2019-02-15 21:16:39 -06:00
Evgeny-SPB 3025ddf179 Support for Creality CR-10 5S (#13173) 2019-02-15 21:09:44 -06:00
Scott Lahteine e00aad84af Add M240 parameters D I J R S 2019-02-14 20:00:40 -06:00
Marcio Teixeira 31c240a8db Enhancements to G425 (#13159)
- Turn off bed leveling prior to calibrating.
    - This prevents lateral probes from having a Z component that
      triggers the Z endstop and causes the motion to be aborted.
- Got rid of static const float arrays "dimension" and "true_center"
    - Frees up 24 bytes of SRAM
- Changed incorrect use of "bool" for float in backlash macros.
    - Replaced arguments with 0.0f and 1.0f for clarity.
- Now only disables soft endstops (since calibration cube is outside of bed)
    - Not necessary to disable global endstops
2019-02-14 16:45:31 -06:00
Andy Shaw 84fc400aba Update BIQU SKR V1.1 pins, add TMC2130 settings (#13166)
* Remove untested displays add TMC2130 configs.
* Remove references to the ReARM, delete untested displays. Add TMC2130 settings. Cleanup spacing, etc.
2019-02-14 16:43:56 -06:00
Scott Lahteine ab2816c870 Patch for M240 2019-02-14 15:13:57 -06:00
Scott Lahteine d2bdb71c13 Add PHOTO_GCODE option, photo trigger physical move (#13168) 2019-02-14 15:09:35 -06:00
Scott Lahteine be9a409980 Fix M125 XY parameters, export get_homing_bump_feedrate 2019-02-14 05:25:46 -06:00
Scott Lahteine ce40c2e87c Use do_blocking_move_to(ref, fr) 2019-02-14 02:22:08 -06:00
Giuliano Zaro bdc2f10b90 Update Italian language, fix unused var warning (#13164) 2019-02-13 21:05:18 -06:00
Marcio Teixeira 9f0e1834ec Followup to #13039 (#13163)
- Fix compile error when accessing `process_subcommands_now_P`.
- Use `const` var eliminating double-negative (to make code more understandable).
2019-02-13 20:39:38 -06:00
Ludy 1ace97e946 [2.0.x] Update German language (#13150) 2019-02-13 20:31:50 -06:00
Scott Lahteine 7cf9b93f26 Add HAS_FILAMENT_SENSOR ahead of 12962 2019-02-12 20:13:20 -06:00
Giuliano Zaro 2c8d12d3ec Update Italian language (#13148) 2019-02-12 18:40:34 -06:00
Scott Lahteine c2b90c44e4 Prettify some code comments 2019-02-12 17:43:37 -06:00
Scott Lahteine a0dadc8c62 Smaller I2CPositionEncoder strings 2019-02-12 16:21:56 -06:00
Scott Lahteine 18996d2595 Fix some spelling 2019-02-12 16:21:56 -06:00
revilor e56c13670d Service interval watchdog (#13105) 2019-02-12 15:58:56 -06:00
InsanityAutomation 7f1b69b0c8 Add HOST_PROMPT_SUPPORT (#13039) 2019-02-12 15:55:47 -06:00
Scott Lahteine 0feeef2604 Update copyright in headers 2019-02-12 15:30:11 -06:00
Scott Lahteine 894f5c24a8 Fix trailing whitespace 2019-02-12 14:25:57 -06:00
Roman Moravčík bace52afd7 Fixed compilation with MMU2_MENUS disabled (#13140) 2019-02-12 12:55:49 -06:00
Ludy 584f9cd449 Update German language (#13137) 2019-02-12 12:54:57 -06:00
Scott Lahteine d9a3fea022 Comments in HAL_spi_STM32F1.cpp 2019-02-11 18:06:33 -06:00
Giuliano Zaro 773fa5c40f Fix define used when PID is off (#13119)
Replaced `PID_MAX` with `BANG_MAX` since it should be the correct define to be used when PID is not enabled.
2019-02-11 17:29:17 -06:00
Giuliano Zaro f7efe6f6c5 [2.0.x] Fix TEMP_STAT_LED startup init (#13120) 2019-02-11 17:27:59 -06:00
Ludy 2bd6ce4b62 Update German language (#13125) 2019-02-11 17:08:21 -06:00
Giuliano Zaro 27115ff7eb Update Italian language (#13123)
Incomplete.
2019-02-11 17:07:21 -06:00
Roman Moravčík 08a8bd10ca Updated Slovak translation (#13122) 2019-02-11 17:06:10 -06:00
Scott Lahteine 3e2a4c3b26 Show mixer and temperature menus while printing 2019-02-11 16:52:47 -06:00
Scott Lahteine 8d271f20fe C10mini E steps of 95
See https://www.patreon.com/posts/creality-cr10-24602624
2019-02-10 14:23:05 -06:00
Scott Lahteine 9737608f0a Enable gradient when alias is cleared 2019-02-10 06:39:12 -06:00
Simon Jouet 5cd0fa3ce1 Basic GPIO expander using the ESP32 I2S peripheral (#12959) 2019-02-10 05:40:31 -06:00
Scott Lahteine 3983cacbcf No extern needed for func decl 2019-02-10 05:38:27 -06:00
Scott Lahteine 43b29c093b Update pinsDebug_list.h with XY PWM pins 2019-02-10 05:13:05 -06:00
Scott Lahteine 166e567ab8 Fix HAS_MOTOR_CURRENT_PWM 2019-02-10 05:06:46 -06:00
Scott Lahteine 6de3d34378 M166 Gradients, LCD Menu for 2-channel Mixer (Geeetech A10M/A20M) (#13022) 2019-02-10 04:54:23 -06:00
LinFor 7ee35c2611 PID_MENU option to save PROGMEM in LCD menus (#13095) 2019-02-10 04:03:18 -06:00
Ludy 936f982392 Update German Language (#13110) 2019-02-10 03:55:08 -06:00
AnHardt 0e37fe8776 Apply minimum C in M303 (#13113)
Apply minimum `C` in `M303`. `PID_autotune()` needs to be called with a 'C'ycles-parameter >2 to give meaningful (different from 0) PID-factors. Therefore silently raise C to 3. Fixing one aspect of #13104
2019-02-10 03:54:45 -06:00
Scott Lahteine 5a316664e5 Update chopper timing 2019-02-10 03:12:20 -06:00
Scott Lahteine fcb16ceb29 Update default config 2019-02-10 00:20:11 -06:00
Alain Martel 9ae7cca5e9 Disable RGB_LED for 3DFabXYZ (#13097) 2019-02-08 15:18:20 -06:00
Scott Lahteine f3b6cb4d34 Clean up, update config comments 2019-02-08 15:13:52 -06:00
Scott Lahteine ae03753ef1 Fix PCA9533 with PRINTER_EVENT_LEDS 2019-02-08 15:13:52 -06:00
Scott Lahteine 95d3f3953a DEFAULT_WEBSITE_URL => BOARD_WEBSITE_URL 2019-02-08 14:54:34 -06:00
Scott Lahteine 6ddd81c178 [2.0.x] Update German Language (#13100)
add MMU2
2019-02-08 14:25:24 -06:00
Giuliano Zaro 7c9ff322f3 Update Italian language (#13099) 2019-02-08 14:23:37 -06:00
Ludy ce8cb6a5d9 [2.0.x] Update German Language
add MMU2
2019-02-07 20:04:34 +01:00
Scott Lahteine f269766408 Put the MMU2 menu with the others 2019-02-06 17:38:46 -06:00
Marcio Teixeira e1604198ff G425 — Auto-calibrate Backlash and Nozzle Offsets (#13050) 2019-02-06 17:20:17 -06:00
Marcio Teixeira 113af46a1b Add ExtUI methods to babystep probe/nozzle offsets (#12590) 2019-02-06 07:16:54 -06:00
InsanityAutomation 413e303ad5 More Advanced Pause options (#12984) 2019-02-06 06:39:42 -06:00
Mark Zachmann 19cf72e057 Support individual solenoid disable with M381 (#13008) 2019-02-06 06:34:53 -06:00
teemuatlut d81342254a Support new TMC drivers (#13026) 2019-02-06 06:33:14 -06:00
Scott Lahteine e1587da228 Clean up HAL_spi_Due.cpp (#13087) 2019-02-06 06:31:31 -06:00
Rolf Werum 524c6c10bf MAGNETIC_PARKING_EXTRUDER (#12351) 2019-02-06 06:30:53 -06:00
Scott Lahteine 1bd9a63049 Add HAS_EXTRA_ENDSTOPS macro 2019-02-06 05:10:05 -06:00
Scott Lahteine 3c49396370 Fix compile error with DUE + MAX6675 (#13086) 2019-02-05 22:56:13 -06:00
Roxy-3D ab6908a513 Fix Probe Offset bug... 2019-02-05 20:30:20 -07:00
revilor 69aaf5d096 MMU2 fixes (#13082) 2019-02-05 20:56:22 -06:00
Scott Lahteine 2f8e89adc3 Remove extraneous ui. prefixes 2019-02-05 19:04:37 -06:00
Scott Lahteine 870757aa17 Tweaks to pins_GT2560_V3.h 2019-02-04 22:52:50 -06:00
Scott Lahteine b96cc30cd0 HAL spacing tweak 2019-02-04 21:51:06 -06:00
Scott Lahteine 9e394139e5 Followup to 90911104 2019-02-04 10:46:52 -06:00
Sam Lane b35a7c2c87 Fixed closed-loop planner stall (#13005) 2019-02-04 07:43:09 -06:00
Ludy 691e925adc Update German language (#13012) 2019-02-04 07:25:07 -06:00
Scott Lahteine 1497fb388a M29 match logic was reversed (#13013)
* M29 logic was reversed 

If in card-saving mode generate errors line errors for anything that's *NOT* "M29 ?"

* Update queue.cpp

* Update queue.cpp
2019-02-04 07:23:42 -06:00
Scott Lahteine b5fd2fb58b Allow M29 to be processed late 2019-02-04 07:23:02 -06:00
Scott Lahteine c03bac9ad4 Update queue.cpp 2019-02-04 07:17:40 -06:00
Scott Lahteine a49f0205ea Update queue.cpp 2019-02-04 07:11:08 -06:00
Andy Shaw 9091110460 LPC1768 - Don't change CS pin state (#13015) 2019-02-04 07:08:39 -06:00
Scott Lahteine 10d855cb21 Sanity check USER_GCODE formatting 2019-02-04 06:36:41 -06:00
Scott Lahteine d97bb4c41c Followup to e10943d0 2019-02-04 06:11:31 -06:00
jeffstaley 2f176d6fb8 Flush RX buffer on G-code line errors to prevent hang (#13018) 2019-02-04 06:03:49 -06:00
Scott Lahteine ca73b2f465 Add static assert to catch errors in COPY(a,b) 2019-02-04 05:52:32 -06:00
Nathan df1043516e Fix the delta homing issue (#12974) 2019-02-04 05:25:50 -06:00
Scott Lahteine 4200bd2fc1 Report on M92 with no arguments (#12833) 2019-02-04 05:24:15 -06:00
Scott Lahteine e10943d0d8 Minor tweak to main menu 2019-02-04 04:58:31 -06:00
Scott Lahteine d4d1b28a06 Fix some include paths 2019-02-04 03:57:15 -06:00
Scott Lahteine 0d720a6ff4 Tweak to emergency_parser.h 2019-02-04 03:56:56 -06:00
Scott Lahteine 0a7ea7063f Hide Resume Print when not relevant 2019-02-04 03:02:44 -06:00
Scott Lahteine afe79ba22b Minor code cleanup 2019-02-04 02:23:06 -06:00
Scott Lahteine fdb97a3e9c Add class and macro to save and auto-restore a variable 2019-02-04 02:23:06 -06:00
Scott Lahteine 433518de74 Prevent M420 error from disconnecting OctoPrint
Just echo the error instead of labeling it `Error:`.
2019-02-04 01:54:43 -06:00
Marcio Teixeira 5cfc1cdacc Support SWITCHING_NOZZLE with 2 servos (#13054) 2019-02-04 00:19:56 -06:00
Psycho 3c88cac2e9 Velleman Vertex Delta pins (#13072) 2019-02-04 00:15:08 -06:00
Nicolas G 6fb4001b58 Add option to disable fan speed slowing in M303 (#13066) 2019-02-04 00:12:41 -06:00
Scott Lahteine ca1be02bf0 Tweak some pins formatting 2019-02-04 00:06:41 -06:00
Scott Lahteine 38c2ca9281 Clean up trailing whitespace 2019-02-03 23:00:57 -06:00
Mark Zachmann 4d1093b386 Fix init of last_direction_bits (#13067) 2019-02-03 01:29:00 -06:00
Scott Lahteine 4fa1c52688 Tweak serial output code 2019-02-03 01:09:14 -06:00
Scott Lahteine a5e3384691 Pre-apply cosmetic changes to mixing 2019-02-03 01:09:14 -06:00
Scott Lahteine 0358ffcd4c Drop E element from homing_feedrate_mm_s 2019-02-02 15:55:00 -06:00
Scott Lahteine 95223cb28e Remove dead code from stepper.h
These values are always supplied by `Conditionals_post.h`.
2019-02-02 15:35:05 -06:00
Scott Lahteine 6fe39e6117 Add --quick option to mfqp, add BRANCH check to mfinfo 2019-02-02 14:06:01 -06:00
mattfredwill c3cb449990 TMC2130 dual-stepper Sensorless Homing (#13061) 2019-02-01 18:09:01 -06:00
Marcio Teixeira f6edd2c472 Move stepper settings to "Advanced Settings" menu (#13063) 2019-02-01 18:07:04 -06:00
InsanityAutomation 68bbac207e Update pins_FORMBOT_TREX3.h (#13058) 2019-02-01 18:06:02 -06:00
revilor 6a57d0b381 Prusa MMU2 (#12967) 2019-01-31 19:10:52 -06:00
Scott Lahteine 996f7d1642 Fix I2C_POSITION_ENCODERS commentary 2019-01-30 22:17:17 -06:00
raTmole 988b5aa4e6 Update GT2560 V3 pins (#13036) 2019-01-30 21:10:56 -06:00
InsanityAutomation 7d927b6691 Move Z Probe Z Offset from Advanced to basic Configuration (#13056) 2019-01-30 21:08:36 -06:00
Giuliano Zaro 31e213e427 Always show Tune sub-menu (#13049) 2019-01-30 21:05:55 -06:00
teemuatlut f0503372d9 Revert E_AXIS_N cast (#13055) 2019-01-30 20:55:05 -06:00
InsanityAutomation a1d03fe7ba Fix single nozzle fan (#13038) 2019-01-30 20:54:04 -06:00
Scott Lahteine 159d7eefda New boards entry for the A20M 2019-01-28 21:08:20 -06:00
Scott Lahteine 97da6c1da5 Use MIN/MAX for min/max 2019-01-28 20:36:13 -06:00
Scott Lahteine 17a8c37148 Label menu edit items 2019-01-28 20:20:46 -06:00
raTmole ddeca7a358 Fix resume from power loss G-Code. (#13035) 2019-01-28 13:19:26 -06:00
Thomas Moore 02ab66fca3 Update Cohesion3D Pins Files (#13027) 2019-01-27 23:11:33 -06:00
Giuliano Zaro a79d80c78e Minor cleanup of pause code (#13030) 2019-01-27 23:10:25 -06:00
jeffstaley 0da636e1a3 Set correct stepper direction on reset (#13032)
On a reset steppers were being initialized to incorrect direction. Original code wasn't respecting `INVERT_Z_DIR` define.
2019-01-27 23:02:38 -06:00
Scott Lahteine 3845baf398 Followup to #12982 2019-01-27 22:53:46 -06:00
InsanityAutomation 48a3502656 Remote streamer improvements (#12982) 2019-01-27 22:43:13 -06:00
Scott Lahteine 621fbe99de Followup to #12817 2019-01-27 20:48:58 -06:00
Marcio Teixeira f214118e45 Action to notify host of filament runout. (#12817) 2019-01-27 20:18:05 -06:00
Scott Lahteine aad770bce8 Bring default configs in sync 2019-01-26 16:44:42 -06:00
jeffstaley 3f91233f6d M29 logic was reversed
If in card-saving mode generate errors line errors for anything that's *NOT* "M29 ?"
2019-01-25 07:36:52 -08:00
jeffstaley 0e0cc13650 Fix M29 for Pronterface SD card upload (#13010) 2019-01-24 21:10:59 -06:00
Jiri 24fffb8d93 Fix undefined lcd_tmpfan_speed on NO_LCD_MENUS (#13006) 2019-01-24 16:34:40 -06:00
Scott Lahteine 8f9b246d0e Tweak some formatting, replace tabs 2019-01-24 13:18:56 -06:00
Bo Herrmannsen 808df82b36 Support for Anycubic I3 (#12972) 2019-01-24 12:40:49 -06:00
Scott Lahteine ae91914260 Prevent name conflicts with mixed stepper drivers 2019-01-24 01:25:28 -06:00
Scott Lahteine 2b54e98f50 Remove L6470 test for LPC176x 2019-01-24 00:59:05 -06:00
Scott Lahteine 0eca236dcd Fix L6470 config comments 2019-01-24 00:58:16 -06:00
InsanityAutomation f4d1f13358 Warn on cold extrusion, dont error 2019-01-24 00:16:14 -06:00
Scott Lahteine aa74a900f5 Bring Rostock 301 and ArmEd configs up to date 2019-01-23 23:37:37 -06:00
Scott Lahteine a073293b6a Add --quick option to mfrb 2019-01-23 23:10:32 -06:00
Scott Lahteine 2117a45d1a Tweak usage strings 2019-01-23 23:10:32 -06:00
Scott Lahteine 0f07ba4f09 Tweak some comments 2019-01-23 20:18:13 -06:00
Scott Lahteine 00cdd41b5f Clean up for recent changes 2019-01-23 20:08:58 -06:00
Roman Moravčík 7d53b79596 Update Slovak translation (#12991) 2019-01-23 19:48:16 -06:00
Giuliano Zaro 18c32996c1 [2.0.x] Updated Italian language (#12997) 2019-01-23 19:35:42 -06:00
Bob Kuhn 7c1a5e3c47 Fix TEMP_TIMER in pins_STEVAL.h (#12994) 2019-01-23 19:34:39 -06:00
Scott Lahteine b4994ad12e Update language_it.h 2019-01-23 19:28:57 -06:00
Bob Kuhn 2f35747f29 L6470 SPI daisy chain support (#12895) 2019-01-23 19:06:54 -06:00
Scott Lahteine 6453b82a5e Clean up trailing whitespace 2019-01-23 15:57:01 -06:00
Scott Lahteine 48a581ba2e Tweak some HAL Due code 2019-01-23 00:53:20 -06:00
Scott Lahteine f7d96c5b28 Update mfinfo to allow extra parameters 2019-01-23 00:03:47 -06:00
Marcio Teixeira 54fdf57b8c ExtUI: Fix fan wrapping around from 0 to 100 (#12987) 2019-01-22 23:33:10 -06:00
InsanityAutomation dbe4126e07 Update language_en.h (#12988) 2019-01-22 23:32:01 -06:00
teemuatlut e5801b75f8 Fix TMC-related compile issues. (#12971)
- `STEALTHOP_[XYZE]` configuration options now set the default state.
2019-01-20 23:54:57 -06:00
Gert-Jan Rodenburg bb30927549 Fix pins for ZONESTAR_LCD with Zonestar ZRIB (#12956) 2019-01-20 23:52:51 -06:00
Ludy dc65d96aca Fix TMC compile error (#12965) 2019-01-20 23:47:28 -06:00
InsanityAutomation a1cf49935d Add laser control menu (#12883) 2019-01-20 23:41:47 -06:00
InsanityAutomation 75f2665f2e LCD SD Card items near top when not using wheel (#12926) 2019-01-20 23:24:53 -06:00
Scott Lahteine e1f951813a Remove old block end comment 2019-01-20 02:30:03 -06:00
Scott Lahteine 52108192d1 Prevent L6470 class name conflict with drivers.h define
Fix #12824
2019-01-20 00:32:56 -06:00
Scott Lahteine 0495fcd475 Minor spacing fix 2019-01-20 00:10:50 -06:00
lanserge c2cf8ffa82 Add support for Arduino DUE Shield Kit (#12950) 2019-01-19 23:43:32 -06:00
Scott Lahteine 4e5a915ef8 Fix some Makefile comments 2019-01-19 23:41:30 -06:00
Scott Lahteine a5911765c3 Tweak some spacing 2019-01-19 20:27:57 -06:00
chrisly42 99e5e8362f Rapide Lite 200 config, pins_RL200 RUMBA clone (#12848) 2019-01-19 20:19:14 -06:00
Scott Lahteine 6411680364 Update some pins spacing 2019-01-19 19:21:52 -06:00
teemuatlut 8a3f1d6932 Fix chopper timing struct and initialization (#12943) 2019-01-19 18:57:02 -06:00
Ludy c6991109b7 Update German language (#12953) 2019-01-19 18:50:24 -06:00
Giuliano Zaro ca9eb14f6a Update Italian language (#12951) 2019-01-19 18:48:13 -06:00
Ludy acf266fe78 Fix a compile warning, etc. (#12955) 2019-01-19 18:47:29 -06:00
Scott Lahteine 424aa05cc2 Fix some file endings 2019-01-19 18:19:12 -06:00
Scott Lahteine ce563d7c2e Various general cleanups
Mostly from the L6470-oriented PR
2019-01-19 16:56:12 -06:00
Scott Lahteine 02cc63d6d4 Update CreatorPro Configuration_adv.h 2019-01-19 16:37:50 -06:00
Marcio Teixeira f4c16e683b Follow up fixes to #12884 (#12940) 2019-01-17 18:48:29 -06:00
Scott Lahteine 712e23c383 Fix up some whitespace 2019-01-17 18:05:36 -06:00
Ziemowit 20c20dacb7 MKS SBASE needs DRV8825 (#12911) 2019-01-17 13:21:53 -06:00
Giuliano Zaro 7bb5d4bfe8 Small LED code reorganization (#12929) 2019-01-17 13:20:26 -06:00
teemuatlut e6805582a6 M569 to change stepping mode. Add new TMC section to LCD. (#12884) 2019-01-17 13:17:16 -06:00
Bob Kuhn d08f27e27b Add support for STEVAL 3DP001V1 (#12894) 2019-01-15 18:59:36 -06:00
Alain Martel cdb562d558 Bring Migbot config up to date (#12916) 2019-01-15 18:53:07 -06:00
Giuliano Zaro 8f4c6e6d1a Fix case light on boot (#12919) 2019-01-15 18:50:56 -06:00
Marcio Teixeira f11c6d5d02 Fix M107 when dual-nozzles share fan (#12819) (#12909) 2019-01-15 18:45:18 -06:00
Karl Andersson 64a4649290 STM32 - Fix SD write (#12897) 2019-01-15 18:44:22 -06:00
Ludy 294521439e Clean up Configuration_adv.h (#12900) 2019-01-15 18:42:10 -06:00
InsanityAutomation 59b18aaeef Allow resume from pause with parking enabled (#12893)
Currently, Pause of an SD-Memory card print does not work.    This has been verified to resolve the issue by multiple people.   

I understand more work needs to be done to resolve some of the concerns...
2019-01-15 07:58:54 -07:00
Giuliano Zaro 85f149befe Save some progmem (#12913) 2019-01-14 20:56:30 -06:00
mikeshub 7fde8d9d1e Add CreatorPro / Makerbot / QIDI / etc and Mightboard RevE support (#12855)
- Fix a bug in MAXxxxx thermocouple temp reporting.
- Add support for 3-wire HD44780.
- Add support for PCA9533 RGB driver.
- Add configuration examples for FlashForge CreatorPro.
2019-01-14 14:29:55 -06:00
Scott Lahteine 3644c940bf Tweak SD section of Main Menu 2019-01-13 18:00:07 -06:00
1838 changed files with 721963 additions and 78330 deletions
+7 -8
View File
@@ -54,10 +54,9 @@ jobs:
generate_version ./Marlin/src/inc
cat ./Marlin/src/inc/_Version.h
#
# Backup pins_RAMPS.h
#
cp Marlin/src/pins/pins_RAMPS.h Marlin/src/pins/pins_RAMPS.h.backup
# Back up pins_RAMPS.h
#
backup_ramps
env_backup
@@ -241,14 +240,14 @@ jobs:
build_marlin_pio ./ ${TEST_PLATFORM}
restore_configs
echo testing STM32F1 targets...
export TEST_PLATFORM="-e STM32F1"
export TEST_PLATFORM="-e STM32F103RE"
restore_configs
echo use_example_configs STM32F10
use_example_configs STM32F10
echo use_example_configs STM32/STM32F103RE
use_example_configs STM32/STM32F103RE
build_marlin_pio ./ ${TEST_PLATFORM}
restore_configs
echo use_example_configs stm32f103ret6
use_example_configs stm32f103ret6
echo use_example_configs STM32/stm32f103ret6
use_example_configs STM32/stm32f103ret6
build_marlin_pio ./ ${TEST_PLATFORM}
restore_configs
-19
View File
@@ -1,19 +0,0 @@
# editorconfig.org
root = true
[{*.patch,syntax_test_*}]
trim_trailing_whitespace = false
[{*.c,*.cpp,*.h}]
charset = utf-8
[{*.c,*.cpp,*.h,Makefile}]
trim_trailing_whitespace = true
insert_final_newline = true
end_of_line = lf
indent_style = space
indent_size = 2
[{*.py,*.conf,*.sublime-project}]
indent_style = tab
indent_size = 4
+1
View File
@@ -0,0 +1 @@
custom: http://www.thinkyhead.com/donate-to-marlin
+2 -2
View File
@@ -1,8 +1,8 @@
<!--
Have you read Marlin's Code of Conduct? By filing an Issue, you are expected to comply with it, including treating everyone with respect: https://github.com/MarlinFirmware/Marlin/blob/master/.github/code_of_conduct.md
Have you read Marlin's Code of Conduct? By filing an Issue, you are expected to comply with it, including treating everyone with respect: https://github.com/MarlinFirmware/Marlin/blob/bugfix-2.0.x/.github/code_of_conduct.md
Do you want to ask a question? Are you looking for support? Please don't post here. Instead please use the Marlin Firmware forum at http://forums.reprap.org/list.php?415 or the Marlin Facebook Group https://www.facebook.com/groups/1049718498464482/.
Do you want to ask a question? Are you looking for support? Please don't post here. Instead please use the Marlin Firmware forum at http://forums.reprap.org/list.php?415 or the Marlin Facebook Group https://www.facebook.com/groups/1049718498464482/ or the Marlin Discord Server https://discord.gg/n5NJ59y.
Before filing an issue be sure to test the 1.1 and/or 2.0 "bugfix" branches to see whether the issue is already addressed.
+1 -4
View File
@@ -1,6 +1,6 @@
#
# Marlin 3D Printer Firmware
# Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
# Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
#
# Based on Sprinter and grbl.
# Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
@@ -146,9 +146,6 @@ Marlin/*/*/readme.txt
Marlin/*/*/*/readme.txt
Marlin/*/*/*/*/readme.txt
# Secure Credentials
Configuration_Secure.h
#Visual Studio
*.sln
*.vcxproj
+80
View File
@@ -0,0 +1,80 @@
dist: bionic
sudo: false
language: python
python:
- "3.7"
notifications:
email: false
env:
# Base Environments
- TEST_PLATFORM="DUE"
- TEST_PLATFORM="esp32"
- TEST_PLATFORM="linux_native"
- TEST_PLATFORM="LPC1768"
- TEST_PLATFORM="LPC1769"
- TEST_PLATFORM="megaatmega2560"
- TEST_PLATFORM="STM32F103RE"
- TEST_PLATFORM="teensy31"
- TEST_PLATFORM="teensy35"
# Extended AVR Environments
- TEST_PLATFORM="fysetc_f6_13"
- TEST_PLATFORM="megaatmega1280"
- TEST_PLATFORM="rambo"
- TEST_PLATFORM="sanguino_atmega1284p"
- TEST_PLATFORM="sanguino_atmega644p"
# Extended STM32 Environments
- TEST_PLATFORM="ARMED"
- TEST_PLATFORM="BIGTREE_BTT002"
- TEST_PLATFORM="BIGTREE_SKR_PRO"
- TEST_PLATFORM="STM32F103RC_bigtree"
- TEST_PLATFORM="jgaurora_a5s_a1"
- TEST_PLATFORM="STM32F103VE_longer"
- TEST_PLATFORM="STM32F407VE_black"
# Non-working environment tests
#- TEST_PLATFORM="at90usb1286_cdc"
#- TEST_PLATFORM="at90usb1286_dfu"
#- TEST_PLATFORM="STM32F103CB_malyan"
#- TEST_PLATFORM="mks_robin"
#- TEST_PLATFORM="mks_robin_lite"
#- TEST_PLATFORM="mks_robin_mini"
#- TEST_PLATFORM="mks_robin_nano"
#- TEST_PLATFORM="SAMD51_grandcentral_m4"
#- TEST_PLATFORM="STM32F103RC_bigtree"
#- TEST_PLATFORM="STM32F103RC_bigtree_USB"
#- TEST_PLATFORM="STM32F103RC_fysetc"
#- TEST_PLATFORM="STM32F4"
#- TEST_PLATFORM="STM32F7"
before_install:
#
# Fetch the tag information for the current branch
- git fetch origin --tags
#
# Publish the buildroot script folder
- chmod +x ${TRAVIS_BUILD_DIR}/buildroot/bin/*
- chmod +x ${TRAVIS_BUILD_DIR}/buildroot/share/tests/*
- export PATH=${TRAVIS_BUILD_DIR}/buildroot/bin/:${TRAVIS_BUILD_DIR}/buildroot/share/tests/:${PATH}
install:
#- pip install -U platformio
- pip install -U https://github.com/platformio/platformio-core/archive/master.zip
before_script:
# Update PlatformIO packages
- platformio update
#
# Change current working directory to the build dir
- cd ${TRAVIS_BUILD_DIR}
#
# Generate custom version include
- generate_version ${TRAVIS_BUILD_DIR}/Marlin/src/inc
- cat ${TRAVIS_BUILD_DIR}/Marlin/src/inc/_Version.h
#
script:
- run_tests ${TRAVIS_BUILD_DIR} ${TEST_PLATFORM}
Binary file not shown.
+9758
View File
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
Binary file not shown.
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+1052 -416
View File
File diff suppressed because it is too large Load Diff
+433 -887
View File
File diff suppressed because it is too large Load Diff
+56 -76
View File
@@ -92,9 +92,6 @@ U8GLIB ?= 1
# this defines whether to include the Trinamic TMCStepper library
TMC ?= 1
# this defines whether to include the AdaFruit NeoPixel library
NEOPIXEL ?= 0
############
# Try to automatically determine whether RELOC_WORKAROUND is needed based
# on GCC versions:
@@ -180,95 +177,80 @@ else ifeq ($(HARDWARE_MOTHERBOARD),1105)
else ifeq ($(HARDWARE_MOTHERBOARD),1106)
# MKS v1.5 with Allegro A4982 stepper drivers
else ifeq ($(HARDWARE_MOTHERBOARD),1107)
# MKS v1.6 with Allegro A4982 stepper drivers
else ifeq ($(HARDWARE_MOTHERBOARD),1108)
# MKS BASE 1.0 with Heroic HR4982 stepper drivers
else ifeq ($(HARDWARE_MOTHERBOARD),1109)
else ifeq ($(HARDWARE_MOTHERBOARD),1108)
# MKS GEN v1.3 or 1.4
else ifeq ($(HARDWARE_MOTHERBOARD),1110)
else ifeq ($(HARDWARE_MOTHERBOARD),1109)
# MKS GEN L
else ifeq ($(HARDWARE_MOTHERBOARD),1111)
else ifeq ($(HARDWARE_MOTHERBOARD),1110)
# zrib V2.0 control board (Chinese knock off RAMPS replica)
else ifeq ($(HARDWARE_MOTHERBOARD),1111)
# Bigtreetech or BIQU KFB2.0
else ifeq ($(HARDWARE_MOTHERBOARD),1112)
# BigTreeTech or BIQU KFB2.0
else ifeq ($(HARDWARE_MOTHERBOARD),1113)
# Felix 2.0+ Electronics Board (RAMPS like)
else ifeq ($(HARDWARE_MOTHERBOARD),1114)
else ifeq ($(HARDWARE_MOTHERBOARD),1113)
# Invent-A-Part RigidBoard
else ifeq ($(HARDWARE_MOTHERBOARD),1115)
else ifeq ($(HARDWARE_MOTHERBOARD),1114)
# Invent-A-Part RigidBoard V2
else ifeq ($(HARDWARE_MOTHERBOARD),1116)
else ifeq ($(HARDWARE_MOTHERBOARD),1115)
# Sainsmart 2-in-1 board
else ifeq ($(HARDWARE_MOTHERBOARD),1117)
else ifeq ($(HARDWARE_MOTHERBOARD),1116)
# Ultimaker
else ifeq ($(HARDWARE_MOTHERBOARD),1118)
else ifeq ($(HARDWARE_MOTHERBOARD),1117)
# Ultimaker (Older electronics. Pre 1.5.4. This is rare)
else ifeq ($(HARDWARE_MOTHERBOARD),1119)
else ifeq ($(HARDWARE_MOTHERBOARD),1118)
MCU ?= atmega1280
# Azteeg X3
else ifeq ($(HARDWARE_MOTHERBOARD),1120)
else ifeq ($(HARDWARE_MOTHERBOARD),1119)
# Azteeg X3 Pro
else ifeq ($(HARDWARE_MOTHERBOARD),1121)
else ifeq ($(HARDWARE_MOTHERBOARD),1120)
# Ultimainboard 2.x (Uses TEMP_SENSOR 20)
else ifeq ($(HARDWARE_MOTHERBOARD),1122)
else ifeq ($(HARDWARE_MOTHERBOARD),1121)
# Rumba
else ifeq ($(HARDWARE_MOTHERBOARD),1123)
else ifeq ($(HARDWARE_MOTHERBOARD),1122)
# Raise3D Rumba
else ifeq ($(HARDWARE_MOTHERBOARD),1124)
else ifeq ($(HARDWARE_MOTHERBOARD),1123)
# Rapide Lite RL200 Rumba
else ifeq ($(HARDWARE_MOTHERBOARD),1125)
else ifeq ($(HARDWARE_MOTHERBOARD),1124)
# Formbot T-Rex 2 Plus
else ifeq ($(HARDWARE_MOTHERBOARD),1126)
else ifeq ($(HARDWARE_MOTHERBOARD),1125)
# Formbot T-Rex 3
else ifeq ($(HARDWARE_MOTHERBOARD),1127)
else ifeq ($(HARDWARE_MOTHERBOARD),1126)
# Formbot Raptor
else ifeq ($(HARDWARE_MOTHERBOARD),1128)
else ifeq ($(HARDWARE_MOTHERBOARD),1127)
# Formbot Raptor 2
else ifeq ($(HARDWARE_MOTHERBOARD),1129)
else ifeq ($(HARDWARE_MOTHERBOARD),1128)
# bq ZUM Mega 3D
else ifeq ($(HARDWARE_MOTHERBOARD),1130)
else ifeq ($(HARDWARE_MOTHERBOARD),1129)
# MakeBoard Mini v2.1.2 is a control board sold by MicroMake
else ifeq ($(HARDWARE_MOTHERBOARD),1131)
else ifeq ($(HARDWARE_MOTHERBOARD),1130)
# TriGorilla Anycubic version 1.3 based on RAMPS EFB
else ifeq ($(HARDWARE_MOTHERBOARD),1132)
else ifeq ($(HARDWARE_MOTHERBOARD),1131)
# TriGorilla Anycubic version 1.4 based on RAMPS EFB
else ifeq ($(HARDWARE_MOTHERBOARD),1133)
else ifeq ($(HARDWARE_MOTHERBOARD),1132)
# TriGorilla Anycubic version 1.4 Rev 1.1
else ifeq ($(HARDWARE_MOTHERBOARD),1134)
else ifeq ($(HARDWARE_MOTHERBOARD),1133)
# Creality: Ender-4, CR-8
else ifeq ($(HARDWARE_MOTHERBOARD),1135)
else ifeq ($(HARDWARE_MOTHERBOARD),1134)
# Creality: CR10S, CR20, CR-X
else ifeq ($(HARDWARE_MOTHERBOARD),1136)
else ifeq ($(HARDWARE_MOTHERBOARD),1135)
# Dagoma F5
else ifeq ($(HARDWARE_MOTHERBOARD),1136)
# FYSETC F6
else ifeq ($(HARDWARE_MOTHERBOARD),1137)
# FYSETC F6 1.3
else ifeq ($(HARDWARE_MOTHERBOARD),1138)
# FYSETC F6 1.5
else ifeq ($(HARDWARE_MOTHERBOARD),1139)
# Duplicator i3 Plus
else ifeq ($(HARDWARE_MOTHERBOARD),1140)
else ifeq ($(HARDWARE_MOTHERBOARD),1138)
# VORON
else ifeq ($(HARDWARE_MOTHERBOARD),1141)
else ifeq ($(HARDWARE_MOTHERBOARD),1139)
# TRONXY V3 1.0
else ifeq ($(HARDWARE_MOTHERBOARD),1142)
else ifeq ($(HARDWARE_MOTHERBOARD),1140)
# Z-Bolt X Series
else ifeq ($(HARDWARE_MOTHERBOARD),1143)
else ifeq ($(HARDWARE_MOTHERBOARD),1141)
# TT OSCAR
else ifeq ($(HARDWARE_MOTHERBOARD),1144)
else ifeq ($(HARDWARE_MOTHERBOARD),1142)
# Overlord/Overlord Pro
else ifeq ($(HARDWARE_MOTHERBOARD),1145)
# ADIMLab Gantry v1
else ifeq ($(HARDWARE_MOTHERBOARD),1146)
# ADIMLab Gantry v2
else ifeq ($(HARDWARE_MOTHERBOARD),1147)
# BIQU Tango V1
else ifeq ($(HARDWARE_MOTHERBOARD),1148)
# MKS GEN L V2
else ifeq ($(HARDWARE_MOTHERBOARD),1149)
# Copymaster 3D
else ifeq ($(HARDWARE_MOTHERBOARD),1150)
else ifeq ($(HARDWARE_MOTHERBOARD),1143)
#
# RAMBo and derivatives
@@ -295,44 +277,42 @@ else ifeq ($(HARDWARE_MOTHERBOARD),1205)
else ifeq ($(HARDWARE_MOTHERBOARD),1300)
# Cartesio CN Controls V12
else ifeq ($(HARDWARE_MOTHERBOARD),1301)
# Cartesio CN Controls V15
else ifeq ($(HARDWARE_MOTHERBOARD),1302)
# Cheaptronic v1.0
else ifeq ($(HARDWARE_MOTHERBOARD),1303)
else ifeq ($(HARDWARE_MOTHERBOARD),1302)
# Cheaptronic v2.0
else ifeq ($(HARDWARE_MOTHERBOARD),1304)
else ifeq ($(HARDWARE_MOTHERBOARD),1303)
# Makerbot Mightyboard Revision E
else ifeq ($(HARDWARE_MOTHERBOARD),1305)
else ifeq ($(HARDWARE_MOTHERBOARD),1304)
# Megatronics
else ifeq ($(HARDWARE_MOTHERBOARD),1306)
else ifeq ($(HARDWARE_MOTHERBOARD),1305)
# Megatronics v2.0
else ifeq ($(HARDWARE_MOTHERBOARD),1307)
else ifeq ($(HARDWARE_MOTHERBOARD),1306)
# Megatronics v3.0
else ifeq ($(HARDWARE_MOTHERBOARD),1308)
else ifeq ($(HARDWARE_MOTHERBOARD),1307)
# Megatronics v3.1
else ifeq ($(HARDWARE_MOTHERBOARD),1309)
else ifeq ($(HARDWARE_MOTHERBOARD),1308)
# Megatronics v3.2
else ifeq ($(HARDWARE_MOTHERBOARD),1310)
else ifeq ($(HARDWARE_MOTHERBOARD),1309)
# Elefu Ra Board (v3)
else ifeq ($(HARDWARE_MOTHERBOARD),1311)
else ifeq ($(HARDWARE_MOTHERBOARD),1310)
# Leapfrog
else ifeq ($(HARDWARE_MOTHERBOARD),1312)
else ifeq ($(HARDWARE_MOTHERBOARD),1311)
# Mega controller
else ifeq ($(HARDWARE_MOTHERBOARD),1313)
else ifeq ($(HARDWARE_MOTHERBOARD),1312)
# Geeetech GT2560 Rev B for Mecreator2
else ifeq ($(HARDWARE_MOTHERBOARD),1314)
else ifeq ($(HARDWARE_MOTHERBOARD),1313)
# Geeetech GT2560 Rev. A
else ifeq ($(HARDWARE_MOTHERBOARD),1315)
else ifeq ($(HARDWARE_MOTHERBOARD),1314)
# Geeetech GT2560 Rev. A+ (with auto level probe)
else ifeq ($(HARDWARE_MOTHERBOARD),1316)
else ifeq ($(HARDWARE_MOTHERBOARD),1315)
# Geeetech GT2560 Rev B for A10(M/D)
else ifeq ($(HARDWARE_MOTHERBOARD),1317)
else ifeq ($(HARDWARE_MOTHERBOARD),1316)
# Geeetech GT2560 Rev B for A20(M/D)
else ifeq ($(HARDWARE_MOTHERBOARD),1318)
else ifeq ($(HARDWARE_MOTHERBOARD),1317)
# Einstart retrofit
else ifeq ($(HARDWARE_MOTHERBOARD),1319)
else ifeq ($(HARDWARE_MOTHERBOARD),1318)
# Wanhao 0ne+ i3 Mini
else ifeq ($(HARDWARE_MOTHERBOARD),1320)
else ifeq ($(HARDWARE_MOTHERBOARD),1319)
#
# ATmega1281, ATmega2561
@@ -686,7 +666,7 @@ ifeq ($(HARDWARE_VARIANT), Teensy)
else ifeq ($(HARDWARE_VARIANT), archim)
CDEFS += -DARDUINO_SAM_ARCHIM -DARDUINO_ARCH_SAM -D__SAM3X8E__ -DUSB_VID=0x27b1 -DUSB_PID=0x0001 -DUSBCON '-DUSB_MANUFACTURER="UltiMachine"' '-DUSB_PRODUCT="Archim"'
LIB_CXXSRC += variant.cpp IPAddress.cpp Reset.cpp RingBuffer.cpp Stream.cpp UARTClass.cpp USARTClass.cpp abi.cpp new.cpp watchdog.cpp CDC.cpp PluggableUSB.cpp USBCore.cpp
LIB_CXXSRC += variant.cpp IPAddress.cpp Reset.cpp RingBuffer.cpp Stream.cpp UARTClass.cpp USARTClass.cpp abi.cpp new.cpp watchdog.cpp CDC.cpp PluggableUSB.cpp USBCore.cpp
LIB_SRC += cortex_handlers.c iar_calls_sam3.c syscalls_sam3.c dtostrf.c itoa.c
ifeq ($(U8GLIB), 1)
@@ -707,7 +687,7 @@ CXXSTANDARD = -std=gnu++11
CDEBUG = -g$(DEBUG)
CWARN = -Wall -Wstrict-prototypes -Wno-packed-bitfield-compat -Wno-pragmas -Wunused-parameter
CXXWARN = -Wall -Wno-packed-bitfield-compat -Wno-pragmas -Wunused-parameter
CTUNING = -fsigned-char -funsigned-bitfields -fno-exceptions \
CTUNING = -fsigned-char -funsigned-bitfields -fpack-struct -fno-exceptions \
-fshort-enums -ffunction-sections -fdata-sections
ifneq ($(HARDWARE_MOTHERBOARD),)
CTUNING += -DMOTHERBOARD=${HARDWARE_MOTHERBOARD}
+5 -5
View File
@@ -3,7 +3,7 @@
Marlin Firmware
(c) 2011-2020 MarlinFirmware
(c) 2011-2019 MarlinFirmware
Portions of Marlin are (c) by their respective authors.
All code complies with GPLv2 and/or GPLv3
@@ -19,7 +19,7 @@ Before diving in, we recommend the following essential links:
Marlin Firmware Official Website
- https://marlinfw.org/
- http://marlinfw.org/
The official Marlin Firmware website contains the most up-to-date
documentation. Contributions are always welcome!
@@ -30,7 +30,7 @@ Configuration
(Applies to Marlin 1.0.x, so Jerk and Acceleration should be halved.)
Also... https://www.google.com/search?tbs=vid%3A1&q=configure+marlin
- https://marlinfw.org/docs/configuration/configuration.html
- http://marlinfw.org/docs/configuration/configuration.html
Marlin's configuration options are explained in more detail here.
Getting Help
@@ -45,9 +45,9 @@ Getting Help
Contributing
- https://marlinfw.org/docs/development/contributing.html
- http://marlinfw.org/docs/development/contributing.html
If you'd like to contribute to Marlin, read this first!
- https://marlinfw.org/docs/development/coding_standards.html
- http://marlinfw.org/docs/development/coding_standards.html
Before submitting code get to know the Coding Standards.
*/
-76
View File
@@ -1,76 +0,0 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2019 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/>.
*
*/
#pragma once
////////////////////////////
// VENDOR VERSION EXAMPLE //
////////////////////////////
/**
* Marlin release version identifier
*/
#define SHORT_BUILD_VERSION "2.0.5_SX4N"
/**
* 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 " TM3D"
/**
* 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 "2020-05-01"
/**
* Defines a generic printer name to be output to the LCD after booting Marlin.
*/
#define MACHINE_NAME "TM3D SX4"
/**
* The SOURCE_CODE_URL is the location where users will find the Marlin Source
* Code which is installed on the device. In most cases —unless the manufacturer
* has a distinct Github fork— the Source Code URL should just be the main
* Marlin repository.
*/
#define SOURCE_CODE_URL "https://github.com/InsanityAutomation/Marlin/tree/TM_SX4_2.0"
/**
* Default generic printer UUID.
*/
//#define DEFAULT_MACHINE_UUID "cede2a2f-41a2-4748-9b12-c55c62f367ff"
/**
* The WEBSITE_URL is the location where users can get more information such as
* documentation about a specific Marlin release.
*/
#define WEBSITE_URL "tinymachines3d.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
+1
View File
@@ -29,6 +29,7 @@
* - http://www.marlinfw.org/tools/u8glib/converter.html
* - http://www.digole.com/tools/PicturetoC_Hex_converter.php
*/
#include <avr/pgmspace.h>
#define CUSTOM_BOOTSCREEN_TIMEOUT 2500
#define CUSTOM_BOOTSCREEN_BMPWIDTH 128
-206
View File
@@ -1,206 +0,0 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
/**
* The PWM module is only used to generate interrupts at specified times. It
* is NOT used to directly toggle pins. The ISR writes to the pin assigned to
* that interrupt.
*
* All PWMs use the same repetition rate. The G2 needs about 10KHz min in order to
* not have obvious ripple on the Vref signals.
*
* The data structures are setup to minimize the computation done by the ISR which
* minimizes ISR execution time. Execution times are 0.8 to 1.1 microseconds.
*
* FIve PWM interrupt sources are used. Channel 0 sets the base period. All Vref
* signals are set active when this counter overflows and resets to zero. The compare
* values in channels 1-4 are set to give the desired duty cycle for that Vref pin.
* When counter 0 matches the compare value then that channel generates an interrupt.
* The ISR checks the source of the interrupt and sets the corresponding pin inactive.
*
* Some jitter in the Vref signal is OK so the interrupt priority is left at its default value.
*/
#include "../../../inc/MarlinConfig.h"
#if MB(PRINTRBOARD_G2)
#include "G2_PWM.h"
#if PIN_EXISTS(MOTOR_CURRENT_PWM_X)
#define G2_PWM_X 1
#else
#define G2_PWM_X 0
#endif
#if PIN_EXISTS(MOTOR_CURRENT_PWM_Y)
#define G2_PWM_Y 1
#else
#define G2_PWM_Y 0
#endif
#if PIN_EXISTS(MOTOR_CURRENT_PWM_Z)
#define G2_PWM_Z 1
#else
#define G2_PWM_Z 0
#endif
#if PIN_EXISTS(MOTOR_CURRENT_PWM_E)
#define G2_PWM_E 1
#else
#define G2_PWM_E 0
#endif
#define G2_MASK_X(V) (G2_PWM_X * (V))
#define G2_MASK_Y(V) (G2_PWM_Y * (V))
#define G2_MASK_Z(V) (G2_PWM_Z * (V))
#define G2_MASK_E(V) (G2_PWM_E * (V))
volatile uint32_t *SODR_A = &PIOA->PIO_SODR,
*SODR_B = &PIOB->PIO_SODR,
*CODR_A = &PIOA->PIO_CODR,
*CODR_B = &PIOB->PIO_CODR;
PWM_map ISR_table[NUM_PWMS] = PWM_MAP_INIT;
void Stepper::digipot_init() {
#if PIN_EXISTS(MOTOR_CURRENT_PWM_X)
OUT_WRITE(MOTOR_CURRENT_PWM_X_PIN, 0); // init pins
#endif
#if PIN_EXISTS(MOTOR_CURRENT_PWM_Y)
OUT_WRITE(MOTOR_CURRENT_PWM_Y_PIN, 0);
#endif
#if G2_PWM_Z
OUT_WRITE(MOTOR_CURRENT_PWM_Z_PIN, 0);
#endif
#if G2_PWM_E
OUT_WRITE(MOTOR_CURRENT_PWM_E_PIN, 0);
#endif
#define WPKEY (0x50574D << 8) // “PWM” in ASCII
#define WPCMD_DIS_SW 0 // command to disable Write Protect SW
#define WPRG_ALL (PWM_WPCR_WPRG0 | PWM_WPCR_WPRG1 | PWM_WPCR_WPRG2 | PWM_WPCR_WPRG3 | PWM_WPCR_WPRG4 | PWM_WPCR_WPRG5) // all Write Protect Groups
#define PWM_CLOCK_F F_CPU / 1000000UL // set clock to 1MHz
PMC->PMC_PCER1 = PMC_PCER1_PID36; // enable PWM controller clock (disabled on power up)
PWM->PWM_WPCR = WPKEY | WPRG_ALL | WPCMD_DIS_SW; // enable setting of all PWM registers
PWM->PWM_CLK = PWM_CLOCK_F; // enable CLK_A and set it to 1MHz, leave CLK_B disabled
PWM->PWM_CH_NUM[0].PWM_CMR = 0b1011; // set channel 0 to Clock A input & to left aligned
if (G2_PWM_X) PWM->PWM_CH_NUM[1].PWM_CMR = 0b1011; // set channel 1 to Clock A input & to left aligned
if (G2_PWM_Y) PWM->PWM_CH_NUM[2].PWM_CMR = 0b1011; // set channel 2 to Clock A input & to left aligned
if (G2_PWM_Z) PWM->PWM_CH_NUM[3].PWM_CMR = 0b1011; // set channel 3 to Clock A input & to left aligned
if (G2_PWM_E) PWM->PWM_CH_NUM[4].PWM_CMR = 0b1011; // set channel 4 to Clock A input & to left aligned
PWM->PWM_CH_NUM[0].PWM_CPRD = PWM_PERIOD_US; // set channel 0 Period
PWM->PWM_IER2 = PWM_IER1_CHID0; // generate interrupt when counter0 overflows
PWM->PWM_IER2 = PWM_IER2_CMPM0
| G2_MASK_X(PWM_IER2_CMPM1)
| G2_MASK_Y(PWM_IER2_CMPM2)
| G2_MASK_Z(PWM_IER2_CMPM3)
| G2_MASK_E(PWM_IER2_CMPM4)
; // generate interrupt on compare event
if (G2_PWM_X) PWM->PWM_CMP[1].PWM_CMPV = 0x010000000LL | G2_VREF_COUNT(G2_VREF(motor_current_setting[0])); // interrupt when counter0 == CMPV - used to set Motor 1 PWM inactive
if (G2_PWM_Y) PWM->PWM_CMP[2].PWM_CMPV = 0x010000000LL | G2_VREF_COUNT(G2_VREF(motor_current_setting[0])); // interrupt when counter0 == CMPV - used to set Motor 2 PWM inactive
if (G2_PWM_Z) PWM->PWM_CMP[3].PWM_CMPV = 0x010000000LL | G2_VREF_COUNT(G2_VREF(motor_current_setting[1])); // interrupt when counter0 == CMPV - used to set Motor 3 PWM inactive
if (G2_PWM_E) PWM->PWM_CMP[4].PWM_CMPV = 0x010000000LL | G2_VREF_COUNT(G2_VREF(motor_current_setting[2])); // interrupt when counter0 == CMPV - used to set Motor 4 PWM inactive
if (G2_PWM_X) PWM->PWM_CMP[1].PWM_CMPM = 0x0001; // enable compare event
if (G2_PWM_Y) PWM->PWM_CMP[2].PWM_CMPM = 0x0001; // enable compare event
if (G2_PWM_Z) PWM->PWM_CMP[3].PWM_CMPM = 0x0001; // enable compare event
if (G2_PWM_E) PWM->PWM_CMP[4].PWM_CMPM = 0x0001; // enable compare event
PWM->PWM_SCM = PWM_SCM_UPDM_MODE0 | PWM_SCM_SYNC0
| G2_MASK_X(PWM_SCM_SYNC1)
| G2_MASK_Y(PWM_SCM_SYNC2)
| G2_MASK_Z(PWM_SCM_SYNC3)
| G2_MASK_E(PWM_SCM_SYNC4)
; // sync 1-4 with 0, use mode 0 for updates
PWM->PWM_ENA = PWM_ENA_CHID0
| G2_MASK_X(PWM_ENA_CHID1)
| G2_MASK_Y(PWM_ENA_CHID2)
| G2_MASK_Z(PWM_ENA_CHID3)
| G2_MASK_E(PWM_ENA_CHID4)
; // enable channels used by G2
PWM->PWM_IER1 = PWM_IER1_CHID0
| G2_MASK_X(PWM_IER1_CHID1)
| G2_MASK_Y(PWM_IER1_CHID2)
| G2_MASK_Z(PWM_IER1_CHID3)
| G2_MASK_E(PWM_IER1_CHID4)
; // enable interrupts for channels used by G2
NVIC_EnableIRQ(PWM_IRQn); // Enable interrupt handler
NVIC_SetPriority(PWM_IRQn, NVIC_EncodePriority(0, 10, 0)); // normal priority for PWM module (can stand some jitter on the Vref signals)
}
void Stepper::digipot_current(const uint8_t driver, const int16_t current) {
if (!(PWM->PWM_CH_NUM[0].PWM_CPRD == PWM_PERIOD_US)) digipot_init(); // Init PWM system if needed
switch (driver) {
case 0:
if (G2_PWM_X) PWM->PWM_CMP[1].PWM_CMPVUPD = 0x010000000LL | G2_VREF_COUNT(G2_VREF(current)); // update X & Y
if (G2_PWM_Y) PWM->PWM_CMP[2].PWM_CMPVUPD = 0x010000000LL | G2_VREF_COUNT(G2_VREF(current));
if (G2_PWM_X) PWM->PWM_CMP[1].PWM_CMPMUPD = 0x0001; // enable compare event
if (G2_PWM_Y) PWM->PWM_CMP[2].PWM_CMPMUPD = 0x0001; // enable compare event
if (G2_PWM_X || G2_PWM_Y) PWM->PWM_SCUC = PWM_SCUC_UPDULOCK; // tell the PWM controller to update the values on the next cycle
break;
case 1:
if (G2_PWM_Z) {
PWM->PWM_CMP[3].PWM_CMPVUPD = 0x010000000LL | G2_VREF_COUNT(G2_VREF(current)); // update Z
PWM->PWM_CMP[3].PWM_CMPMUPD = 0x0001; // enable compare event
PWM->PWM_SCUC = PWM_SCUC_UPDULOCK; // tell the PWM controller to update the values on the next cycle
}
break;
default:
if (G2_PWM_E) {
PWM->PWM_CMP[4].PWM_CMPVUPD = 0x010000000LL | G2_VREF_COUNT(G2_VREF(current)); // update E
PWM->PWM_CMP[4].PWM_CMPMUPD = 0x0001; // enable compare event
PWM->PWM_SCUC = PWM_SCUC_UPDULOCK; // tell the PWM controller to update the values on the next cycle
}
break;
}
}
volatile uint32_t PWM_ISR1_STATUS, PWM_ISR2_STATUS;
void PWM_Handler() {
PWM_ISR1_STATUS = PWM->PWM_ISR1;
PWM_ISR2_STATUS = PWM->PWM_ISR2;
if (PWM_ISR1_STATUS & PWM_IER1_CHID0) { // CHAN_0 interrupt
if (G2_PWM_X) *ISR_table[0].set_register = ISR_table[0].write_mask; // set X to active
if (G2_PWM_Y) *ISR_table[1].set_register = ISR_table[1].write_mask; // set Y to active
if (G2_PWM_Z) *ISR_table[2].set_register = ISR_table[2].write_mask; // set Z to active
if (G2_PWM_E) *ISR_table[3].set_register = ISR_table[3].write_mask; // set E to active
}
else {
if (G2_PWM_X && (PWM_ISR2_STATUS & PWM_IER2_CMPM1)) *ISR_table[0].clr_register = ISR_table[0].write_mask; // set X to inactive
if (G2_PWM_Y && (PWM_ISR2_STATUS & PWM_IER2_CMPM2)) *ISR_table[1].clr_register = ISR_table[1].write_mask; // set Y to inactive
if (G2_PWM_Z && (PWM_ISR2_STATUS & PWM_IER2_CMPM3)) *ISR_table[2].clr_register = ISR_table[2].write_mask; // set Z to inactive
if (G2_PWM_E && (PWM_ISR2_STATUS & PWM_IER2_CMPM4)) *ISR_table[3].clr_register = ISR_table[3].write_mask; // set E to inactive
}
return;
}
#endif // PRINTRBOARD_G2
@@ -1,28 +0,0 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#pragma once
#if USE_FALLBACK_EEPROM
#define FLASH_EEPROM_EMULATION
#elif EITHER(I2C_EEPROM, SPI_EEPROM)
#define USE_SHARED_EEPROM 1
#endif
-18
View File
@@ -1,18 +0,0 @@
#
# Set upload_command
#
# Windows: bossac.exe
# Other: leave unchanged
#
import platform
current_OS = platform.system()
if current_OS == 'Windows':
Import("env")
# Use bossac.exe on Windows
env.Replace(
UPLOADCMD="bossac --info --unlock --write --verify --reset --erase -U false --boot"
)
-62
View File
@@ -1,62 +0,0 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifdef ARDUINO_ARCH_ESP32
#include "../../inc/MarlinConfig.h"
#if ENABLED(EEPROM_SETTINGS)
#include "../shared/eeprom_api.h"
#include <EEPROM.h>
#define EEPROM_SIZE 4096
bool PersistentStore::access_start() {
return EEPROM.begin(EEPROM_SIZE);
}
bool PersistentStore::access_finish() {
EEPROM.end();
return true;
}
bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, uint16_t *crc) {
for (size_t i = 0; i < size; i++) {
EEPROM.write(pos++, value[i]);
crc16(crc, &value[i], 1);
}
return false;
}
bool PersistentStore::read_data(int &pos, uint8_t* value, size_t size, uint16_t *crc, const bool writing/*=true*/) {
for (size_t i = 0; i < size; i++) {
uint8_t c = EEPROM.read(pos++);
if (writing) value[i] = c;
crc16(crc, &c, 1);
}
return false;
}
size_t PersistentStore::capacity() { return EEPROM_SIZE; }
#endif // EEPROM_SETTINGS
#endif // ARDUINO_ARCH_ESP32
-38
View File
@@ -1,38 +0,0 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#pragma once
#ifdef __cplusplus
extern "C" {
#endif
esp_err_t esp_task_wdt_reset();
#ifdef __cplusplus
}
#endif
// Initialize watchdog with a 4 second interrupt time
void watchdog_init();
// Reset watchdog.
inline void HAL_watchdog_refresh() { esp_task_wdt_reset(); }
+4 -8
View File
@@ -1,6 +1,6 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
@@ -25,12 +25,8 @@
#include HAL_PATH(.,HAL.h)
#define HAL_ADC_RANGE _BV(HAL_ADC_RESOLUTION)
#ifndef I2C_ADDRESS
#define I2C_ADDRESS(A) (A)
#endif
inline void watchdog_refresh() {
TERN_(USE_WATCHDOG, HAL_watchdog_refresh());
#if ENABLED(USE_WATCHDOG)
HAL_watchdog_refresh();
#endif
}
@@ -1,6 +1,6 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
@@ -19,6 +19,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifdef __AVR__
#include "../../inc/MarlinConfig.h"
@@ -1,6 +1,6 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2016 Bob Cousins bobcousins42@googlemail.com
*
* This program is free software: you can redistribute it and/or modify
@@ -25,7 +25,7 @@
#include "math.h"
#ifdef USBCON
#include <HardwareSerial.h>
#include "HardwareSerial.h"
#else
#define HardwareSerial_h // Hack to prevent HardwareSerial.h header inclusion
#include "MarlinSerial.h"
@@ -38,14 +38,6 @@
#include <avr/interrupt.h>
#include <avr/io.h>
#ifndef pgm_read_ptr
// Compatibility for avr-libc 1.8.0-4.1 included with Ubuntu for
// Windows Subsystem for Linux on Windows 10 as of 10/18/2019
#define pgm_read_ptr_far(address_long) (void*)__ELPM_word((uint32_t)(address_long))
#define pgm_read_ptr_near(address_short) (void*)__LPM_word((uint16_t)(address_short))
#define pgm_read_ptr(address_short) pgm_read_ptr_near(address_short)
#endif
// ------------------------
// Defines
// ------------------------
@@ -53,8 +45,8 @@
//#define analogInputToDigitalPin(IO) IO
#ifndef CRITICAL_SECTION_START
#define CRITICAL_SECTION_START() unsigned char _sreg = SREG; cli()
#define CRITICAL_SECTION_END() SREG = _sreg
#define CRITICAL_SECTION_START unsigned char _sreg = SREG; cli()
#define CRITICAL_SECTION_END SREG = _sreg
#endif
#define ISRS_ENABLED() TEST(SREG, SREG_I)
#define ENABLE_ISRS() sei()
@@ -91,37 +83,24 @@ typedef int8_t pin_t;
#define NUM_SERIAL 1
#else
#if !WITHIN(SERIAL_PORT, -1, 3)
#error "SERIAL_PORT must be from -1 to 3. Please update your configuration."
#error "SERIAL_PORT must be from -1 to 3"
#endif
#define MYSERIAL0 customizedSerial1
#ifdef SERIAL_PORT_2
#if !WITHIN(SERIAL_PORT_2, -1, 3)
#error "SERIAL_PORT_2 must be from -1 to 3. Please update your configuration."
#error "SERIAL_PORT_2 must be from -1 to 3"
#elif SERIAL_PORT_2 == SERIAL_PORT
#error "SERIAL_PORT_2 must be different than SERIAL_PORT. Please update your configuration."
#error "SERIAL_PORT_2 must be different than SERIAL_PORT"
#endif
#define MYSERIAL1 customizedSerial2
#define NUM_SERIAL 2
#define MYSERIAL1 customizedSerial2
#else
#define NUM_SERIAL 1
#endif
#endif
#ifdef DGUS_SERIAL_PORT
#if !WITHIN(DGUS_SERIAL_PORT, -1, 3)
#error "DGUS_SERIAL_PORT must be from -1 to 3. Please update your configuration."
#elif DGUS_SERIAL_PORT == SERIAL_PORT
#error "DGUS_SERIAL_PORT must be different than SERIAL_PORT. Please update your configuration."
#elif defined(SERIAL_PORT_2) && DGUS_SERIAL_PORT == SERIAL_PORT_2
#error "DGUS_SERIAL_PORT must be different than SERIAL_PORT_2. Please update your configuration."
#endif
#define DGUS_SERIAL internalDgusSerial
#define DGUS_SERIAL_GET_TX_BUFFER_FREE DGUS_SERIAL.get_tx_buffer_free
#endif
// ------------------------
// Public functions
// ------------------------
@@ -358,9 +337,9 @@ void TIMER0_COMPB_vect_bottom()
// ADC
#ifdef DIDR2
#define HAL_ANALOG_SELECT(ind) do{ if (ind < 8) SBI(DIDR0, ind); else SBI(DIDR2, ind & 0x07); }while(0)
#define HAL_ANALOG_SELECT(pin) do{ if (pin < 8) SBI(DIDR0, pin); else SBI(DIDR2, pin & 0x07); }while(0)
#else
#define HAL_ANALOG_SELECT(ind) SBI(DIDR0, ind);
#define HAL_ANALOG_SELECT(pin) do{ SBI(DIDR0, pin); }while(0)
#endif
inline void HAL_adc_init() {
@@ -371,14 +350,13 @@ inline void HAL_adc_init() {
#endif
}
#define SET_ADMUX_ADCSRA(ch) ADMUX = _BV(REFS0) | (ch & 0x07); SBI(ADCSRA, ADSC)
#define SET_ADMUX_ADCSRA(pin) ADMUX = _BV(REFS0) | (pin & 0x07); SBI(ADCSRA, ADSC)
#ifdef MUX5
#define HAL_START_ADC(ch) if (ch > 7) ADCSRB = _BV(MUX5); else ADCSRB = 0; SET_ADMUX_ADCSRA(ch)
#define HAL_START_ADC(pin) if (pin > 7) ADCSRB = _BV(MUX5); else ADCSRB = 0; SET_ADMUX_ADCSRA(pin)
#else
#define HAL_START_ADC(ch) ADCSRB = 0; SET_ADMUX_ADCSRA(ch)
#define HAL_START_ADC(pin) ADCSRB = 0; SET_ADMUX_ADCSRA(pin)
#endif
#define HAL_ADC_RESOLUTION 10
#define HAL_READ_ADC() ADC
#define HAL_ADC_READY() !TEST(ADCSRA, ADSC)
@@ -395,8 +373,6 @@ inline void HAL_adc_init() {
// AVR compatibility
#define strtof strtod
#define HAL_CAN_SET_PWM_FREQ // This HAL supports PWM Frequency adjustment
/**
* set_pwm_frequency
* Sets the frequency of the timer corresponding to the provided pin
@@ -1,6 +1,6 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
@@ -197,7 +197,7 @@ void spiBegin() {
// output pin high - like sending 0xFF
WRITE(MOSI_PIN, HIGH);
LOOP_L_N(i, 8) {
for (uint8_t i = 0; i < 8; i++) {
WRITE(SCK_PIN, HIGH);
nop; // adjust so SCK is nice
@@ -224,7 +224,7 @@ void spiBegin() {
void spiSend(uint8_t data) {
// no interrupts during byte send - about 8µs
cli();
LOOP_L_N(i, 8) {
for (uint8_t i = 0; i < 8; i++) {
WRITE(SCK_PIN, LOW);
WRITE(MOSI_PIN, data & 0x80);
data <<= 1;
@@ -1,6 +1,6 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
@@ -41,7 +41,7 @@
#if !defined(USBCON) && (defined(UBRRH) || defined(UBRR0H) || defined(UBRR1H) || defined(UBRR2H) || defined(UBRR3H))
#include "MarlinSerial.h"
#include "../../MarlinCore.h"
#include "../../Marlin.h"
template<typename Cfg> typename MarlinSerial<Cfg>::ring_buffer_r MarlinSerial<Cfg>::rx_buffer = { 0, 0, { 0 } };
template<typename Cfg> typename MarlinSerial<Cfg>::ring_buffer_t MarlinSerial<Cfg>::tx_buffer = { 0 };
@@ -55,7 +55,7 @@
// A SW memory barrier, to ensure GCC does not overoptimize loops
#define sw_barrier() asm volatile("": : :"memory");
#include "../../feature/e_parser.h"
#include "../../feature/emergency_parser.h"
// "Atomically" read the RX head index value without disabling interrupts:
// This MUST be called with RX interrupts enabled, and CAN'T be called
@@ -682,7 +682,7 @@
// Round correctly so that print(1.999, 2) prints as "2.00"
double rounding = 0.5;
LOOP_L_N(i, digits) rounding *= 0.1;
for (uint8_t i = 0; i < digits; ++i) rounding *= 0.1;
number += rounding;
// Extract the integer part of the number and print it
@@ -757,33 +757,6 @@
#endif
#ifdef DGUS_SERIAL_PORT
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.
h = tx_buffer.head; // next pos for queue.
int ret = t - h - 1;
if (ret < 0) ret += Cfg::TX_SIZE + 1;
return ret;
}
ISR(SERIAL_REGNAME(USART,DGUS_SERIAL_PORT,_RX_vect)) {
MarlinSerial<MarlinInternalSerialCfg<DGUS_SERIAL_PORT>>::store_rxd_char();
}
ISR(SERIAL_REGNAME(USART,DGUS_SERIAL_PORT,_UDRE_vect)) {
MarlinSerial<MarlinInternalSerialCfg<DGUS_SERIAL_PORT>>::_tx_udr_empty_irq();
}
// Preinstantiate
template class MarlinSerial<MarlinInternalSerialCfg<DGUS_SERIAL_PORT>>;
// Instantiate
MarlinSerial<MarlinInternalSerialCfg<DGUS_SERIAL_PORT>> internalDgusSerial;
#endif
// For AT90USB targets use the UART for BT interfacing
#if defined(USBCON) && ENABLED(BLUETOOTH)
HardwareSerial bluetoothSerial;
@@ -1,6 +1,6 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
@@ -31,9 +31,9 @@
* Templatized 01 October 2018 by Eduardo José Tagle to allow multiple instances
*/
#include <WString.h>
#include "../shared/MarlinSerial.h"
#include "../../inc/MarlinConfigPre.h"
#include <WString.h>
#ifndef SERIAL_PORT
#define SERIAL_PORT 0
@@ -217,9 +217,6 @@
static ring_buffer_pos_t available();
static void write(const uint8_t c);
static void flushTX();
#ifdef DGUS_SERIAL_PORT
static ring_buffer_pos_t get_tx_buffer_free();
#endif
FORCE_INLINE static uint8_t dropped() { return Cfg::DROPPED_RX ? rx_dropped_bytes : 0; }
FORCE_INLINE static uint8_t buffer_overruns() { return Cfg::RX_OVERRUNS ? rx_buffer_overruns : 0; }
@@ -261,12 +258,12 @@
static constexpr int PORT = serial;
static constexpr unsigned int RX_SIZE = RX_BUFFER_SIZE;
static constexpr unsigned int TX_SIZE = TX_BUFFER_SIZE;
static constexpr bool XONOFF = ENABLED(SERIAL_XON_XOFF);
static constexpr bool EMERGENCYPARSER = ENABLED(EMERGENCY_PARSER);
static constexpr bool DROPPED_RX = ENABLED(SERIAL_STATS_DROPPED_RX);
static constexpr bool RX_OVERRUNS = ENABLED(SERIAL_STATS_RX_BUFFER_OVERRUNS);
static constexpr bool RX_FRAMING_ERRORS = ENABLED(SERIAL_STATS_RX_FRAMING_ERRORS);
static constexpr bool MAX_RX_QUEUED = ENABLED(SERIAL_STATS_MAX_RX_QUEUED);
static constexpr bool XONOFF = bSERIAL_XON_XOFF;
static constexpr bool EMERGENCYPARSER = bEMERGENCY_PARSER;
static constexpr bool DROPPED_RX = bSERIAL_STATS_DROPPED_RX;
static constexpr bool RX_OVERRUNS = bSERIAL_STATS_RX_BUFFER_OVERRUNS;
static constexpr bool RX_FRAMING_ERRORS = bSERIAL_STATS_RX_FRAMING_ERRORS;
static constexpr bool MAX_RX_QUEUED = bSERIAL_STATS_MAX_RX_QUEUED;
};
extern MarlinSerial<MarlinSerialCfg<SERIAL_PORT>> customizedSerial1;
@@ -295,23 +292,6 @@
extern MarlinSerial<MarlinInternalSerialCfg<INTERNAL_SERIAL_PORT>> internalSerial;
#endif
#ifdef DGUS_SERIAL_PORT
template <uint8_t serial>
struct MarlinInternalSerialCfg {
static constexpr int PORT = serial;
static constexpr unsigned int RX_SIZE = 128;
static constexpr unsigned int TX_SIZE = 48;
static constexpr bool XONOFF = false;
static constexpr bool EMERGENCYPARSER = false;
static constexpr bool DROPPED_RX = false;
static constexpr bool RX_OVERRUNS = BOTH(HAS_DGUS_LCD, DGUS_SERIAL_STATS_RX_BUFFER_OVERRUNS);
static constexpr bool RX_FRAMING_ERRORS = false;
static constexpr bool MAX_RX_QUEUED = false;
};
extern MarlinSerial<MarlinInternalSerialCfg<DGUS_SERIAL_PORT>> internalDgusSerial;
#endif
// Use the UART for Bluetooth in AT90USB configurations
#if defined(USBCON) && ENABLED(BLUETOOTH)
extern HardwareSerial bluetoothSerial;
@@ -1,6 +1,6 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
@@ -59,6 +59,7 @@
#include <avr/interrupt.h>
#include "../shared/Marduino.h"
#include "../shared/servo.h"
#include "../shared/servo_private.h"
@@ -1,6 +1,6 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
@@ -1,6 +1,6 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
@@ -46,55 +46,39 @@ void endstop_ISR() { endstops.update(); }
/**
* Patch for pins_arduino.h (...\Arduino\hardware\arduino\avr\variants\mega\pins_arduino.h)
*
* These macros for the Arduino MEGA do not include the two connected pins on Port J (D14, D15).
* These macros for the Arduino MEGA do not include the two connected pins on Port J (D13, D14).
* So we extend them here because these are the normal pins for Y_MIN and Y_MAX on RAMPS.
* There are more PCI-enabled processor pins on Port J, but they are not connected to Arduino MEGA.
*/
#if defined(ARDUINO_AVR_MEGA2560) || defined(ARDUINO_AVR_MEGA)
#define digitalPinHasPCICR(p) (WITHIN(p, 10, 15) || WITHIN(p, 50, 53) || WITHIN(p, 62, 69))
#undef digitalPinToPCICR
#define digitalPinToPCICR(p) (digitalPinHasPCICR(p) ? (&PCICR) : nullptr)
#define digitalPinToPCICR(p) ( WITHIN(p, 10, 15) || \
WITHIN(p, 50, 53) || \
WITHIN(p, 62, 69) ? &PCICR : nullptr )
#undef digitalPinToPCICRbit
#define digitalPinToPCICRbit(p) (WITHIN(p, 10, 13) || WITHIN(p, 50, 53) ? 0 : \
WITHIN(p, 14, 15) ? 1 : \
WITHIN(p, 62, 69) ? 2 : \
0)
#define digitalPinToPCICRbit(p) ( WITHIN(p, 10, 13) || WITHIN(p, 50, 53) ? 0 : \
WITHIN(p, 14, 15) ? 1 : \
WITHIN(p, 62, 69) ? 2 : \
0 )
#undef digitalPinToPCMSK
#define digitalPinToPCMSK(p) (WITHIN(p, 10, 13) || WITHIN(p, 50, 53) ? (&PCMSK0) : \
WITHIN(p, 14, 15) ? (&PCMSK1) : \
WITHIN(p, 62, 69) ? (&PCMSK2) : \
nullptr)
#define digitalPinToPCMSK(p) ( WITHIN(p, 10, 13) || WITHIN(p, 50, 53) ? &PCMSK0 : \
WITHIN(p, 14, 15) ? &PCMSK1 : \
WITHIN(p, 62, 69) ? &PCMSK2 : \
nullptr )
#undef digitalPinToPCMSKbit
#define digitalPinToPCMSKbit(p) (WITHIN(p, 10, 13) ? ((p) - 6) : \
(p) == 14 || (p) == 51 ? 2 : \
(p) == 15 || (p) == 52 ? 1 : \
(p) == 50 ? 3 : \
(p) == 53 ? 0 : \
WITHIN(p, 62, 69) ? ((p) - 62) : \
0)
#elif defined(__AVR_ATmega164A__) || defined(__AVR_ATmega164P__) || defined(__AVR_ATmega324A__) || \
defined(__AVR_ATmega324P__) || defined(__AVR_ATmega324PA__) || defined(__AVR_ATmega324PB__) || \
defined(__AVR_ATmega644A__) || defined(__AVR_ATmega644P__) || defined(__AVR_ATmega1284__) || \
defined(__AVR_ATmega1284P__)
#define digitalPinHasPCICR(p) WITHIN(p, 0, NUM_DIGITAL_PINS)
#else
#error "Unsupported AVR variant!"
#define digitalPinToPCMSKbit(p) ( WITHIN(p, 10, 13) ? ((p) - 6) : \
(p) == 14 || (p) == 51 ? 2 : \
(p) == 15 || (p) == 52 ? 1 : \
(p) == 50 ? 3 : \
(p) == 53 ? 0 : \
WITHIN(p, 62, 69) ? ((p) - 62) : \
0 )
#endif
// Install Pin change interrupt for a pin. Can be called multiple times.
void pciSetup(const int8_t pin) {
if (digitalPinHasPCICR(pin)) {
if (digitalPinToPCMSK(pin) != nullptr) {
SBI(*digitalPinToPCMSK(pin), digitalPinToPCMSKbit(pin)); // enable pin
SBI(PCIFR, digitalPinToPCICRbit(pin)); // clear any outstanding interrupt
SBI(PCICR, digitalPinToPCICRbit(pin)); // enable interrupt for the group
@@ -124,7 +108,7 @@ void setup_endstop_interrupts() {
#if (digitalPinToInterrupt(X_MAX_PIN) != NOT_AN_INTERRUPT)
_ATTACH(X_MAX_PIN);
#else
static_assert(digitalPinHasPCICR(X_MAX_PIN), "X_MAX_PIN is not interrupt-capable");
static_assert(digitalPinToPCICR(X_MAX_PIN), "X_MAX_PIN is not interrupt-capable");
pciSetup(X_MAX_PIN);
#endif
#endif
@@ -132,7 +116,7 @@ void setup_endstop_interrupts() {
#if (digitalPinToInterrupt(X_MIN_PIN) != NOT_AN_INTERRUPT)
_ATTACH(X_MIN_PIN);
#else
static_assert(digitalPinHasPCICR(X_MIN_PIN), "X_MIN_PIN is not interrupt-capable");
static_assert(digitalPinToPCICR(X_MIN_PIN), "X_MIN_PIN is not interrupt-capable");
pciSetup(X_MIN_PIN);
#endif
#endif
@@ -140,7 +124,7 @@ void setup_endstop_interrupts() {
#if (digitalPinToInterrupt(Y_MAX_PIN) != NOT_AN_INTERRUPT)
_ATTACH(Y_MAX_PIN);
#else
static_assert(digitalPinHasPCICR(Y_MAX_PIN), "Y_MAX_PIN is not interrupt-capable");
static_assert(digitalPinToPCICR(Y_MAX_PIN), "Y_MAX_PIN is not interrupt-capable");
pciSetup(Y_MAX_PIN);
#endif
#endif
@@ -148,7 +132,7 @@ void setup_endstop_interrupts() {
#if (digitalPinToInterrupt(Y_MIN_PIN) != NOT_AN_INTERRUPT)
_ATTACH(Y_MIN_PIN);
#else
static_assert(digitalPinHasPCICR(Y_MIN_PIN), "Y_MIN_PIN is not interrupt-capable");
static_assert(digitalPinToPCICR(Y_MIN_PIN), "Y_MIN_PIN is not interrupt-capable");
pciSetup(Y_MIN_PIN);
#endif
#endif
@@ -156,7 +140,7 @@ void setup_endstop_interrupts() {
#if (digitalPinToInterrupt(Z_MAX_PIN) != NOT_AN_INTERRUPT)
_ATTACH(Z_MAX_PIN);
#else
static_assert(digitalPinHasPCICR(Z_MAX_PIN), "Z_MAX_PIN is not interrupt-capable");
static_assert(digitalPinToPCICR(Z_MAX_PIN), "Z_MAX_PIN is not interrupt-capable");
pciSetup(Z_MAX_PIN);
#endif
#endif
@@ -164,7 +148,7 @@ void setup_endstop_interrupts() {
#if (digitalPinToInterrupt(Z_MIN_PIN) != NOT_AN_INTERRUPT)
_ATTACH(Z_MIN_PIN);
#else
static_assert(digitalPinHasPCICR(Z_MIN_PIN), "Z_MIN_PIN is not interrupt-capable");
static_assert(digitalPinToPCICR(Z_MIN_PIN), "Z_MIN_PIN is not interrupt-capable");
pciSetup(Z_MIN_PIN);
#endif
#endif
@@ -172,7 +156,7 @@ void setup_endstop_interrupts() {
#if (digitalPinToInterrupt(X2_MAX_PIN) != NOT_AN_INTERRUPT)
_ATTACH(X2_MAX_PIN);
#else
static_assert(digitalPinHasPCICR(X2_MAX_PIN), "X2_MAX_PIN is not interrupt-capable");
static_assert(digitalPinToPCICR(X2_MAX_PIN), "X2_MAX_PIN is not interrupt-capable");
pciSetup(X2_MAX_PIN);
#endif
#endif
@@ -180,7 +164,7 @@ void setup_endstop_interrupts() {
#if (digitalPinToInterrupt(X2_MIN_PIN) != NOT_AN_INTERRUPT)
_ATTACH(X2_MIN_PIN);
#else
static_assert(digitalPinHasPCICR(X2_MIN_PIN), "X2_MIN_PIN is not interrupt-capable");
static_assert(digitalPinToPCICR(X2_MIN_PIN), "X2_MIN_PIN is not interrupt-capable");
pciSetup(X2_MIN_PIN);
#endif
#endif
@@ -188,7 +172,7 @@ void setup_endstop_interrupts() {
#if (digitalPinToInterrupt(Y2_MAX_PIN) != NOT_AN_INTERRUPT)
_ATTACH(Y2_MAX_PIN);
#else
static_assert(digitalPinHasPCICR(Y2_MAX_PIN), "Y2_MAX_PIN is not interrupt-capable");
static_assert(digitalPinToPCICR(Y2_MAX_PIN), "Y2_MAX_PIN is not interrupt-capable");
pciSetup(Y2_MAX_PIN);
#endif
#endif
@@ -196,7 +180,7 @@ void setup_endstop_interrupts() {
#if (digitalPinToInterrupt(Y2_MIN_PIN) != NOT_AN_INTERRUPT)
_ATTACH(Y2_MIN_PIN);
#else
static_assert(digitalPinHasPCICR(Y2_MIN_PIN), "Y2_MIN_PIN is not interrupt-capable");
static_assert(digitalPinToPCICR(Y2_MIN_PIN), "Y2_MIN_PIN is not interrupt-capable");
pciSetup(Y2_MIN_PIN);
#endif
#endif
@@ -204,7 +188,7 @@ void setup_endstop_interrupts() {
#if (digitalPinToInterrupt(Z2_MAX_PIN) != NOT_AN_INTERRUPT)
_ATTACH(Z2_MAX_PIN);
#else
static_assert(digitalPinHasPCICR(Z2_MAX_PIN), "Z2_MAX_PIN is not interrupt-capable");
static_assert(digitalPinToPCICR(Z2_MAX_PIN), "Z2_MAX_PIN is not interrupt-capable");
pciSetup(Z2_MAX_PIN);
#endif
#endif
@@ -212,7 +196,7 @@ void setup_endstop_interrupts() {
#if (digitalPinToInterrupt(Z2_MIN_PIN) != NOT_AN_INTERRUPT)
_ATTACH(Z2_MIN_PIN);
#else
static_assert(digitalPinHasPCICR(Z2_MIN_PIN), "Z2_MIN_PIN is not interrupt-capable");
static_assert(digitalPinToPCICR(Z2_MIN_PIN), "Z2_MIN_PIN is not interrupt-capable");
pciSetup(Z2_MIN_PIN);
#endif
#endif
@@ -220,7 +204,7 @@ void setup_endstop_interrupts() {
#if (digitalPinToInterrupt(Z3_MAX_PIN) != NOT_AN_INTERRUPT)
_ATTACH(Z3_MAX_PIN);
#else
static_assert(digitalPinHasPCICR(Z3_MAX_PIN), "Z3_MAX_PIN is not interrupt-capable");
static_assert(digitalPinToPCICR(Z3_MAX_PIN), "Z3_MAX_PIN is not interrupt-capable");
pciSetup(Z3_MAX_PIN);
#endif
#endif
@@ -228,31 +212,15 @@ void setup_endstop_interrupts() {
#if (digitalPinToInterrupt(Z3_MIN_PIN) != NOT_AN_INTERRUPT)
_ATTACH(Z3_MIN_PIN);
#else
static_assert(digitalPinHasPCICR(Z3_MIN_PIN), "Z3_MIN_PIN is not interrupt-capable");
static_assert(digitalPinToPCICR(Z3_MIN_PIN), "Z3_MIN_PIN is not interrupt-capable");
pciSetup(Z3_MIN_PIN);
#endif
#endif
#if HAS_Z4_MAX
#if (digitalPinToInterrupt(Z4_MAX_PIN) != NOT_AN_INTERRUPT)
_ATTACH(Z4_MAX_PIN);
#else
static_assert(digitalPinHasPCICR(Z4_MAX_PIN), "Z4_MAX_PIN is not interrupt-capable");
pciSetup(Z4_MAX_PIN);
#endif
#endif
#if HAS_Z4_MIN
#if (digitalPinToInterrupt(Z4_MIN_PIN) != NOT_AN_INTERRUPT)
_ATTACH(Z4_MIN_PIN);
#else
static_assert(digitalPinHasPCICR(Z4_MIN_PIN), "Z4_MIN_PIN is not interrupt-capable");
pciSetup(Z4_MIN_PIN);
#endif
#endif
#if HAS_Z_MIN_PROBE_PIN
#if (digitalPinToInterrupt(Z_MIN_PROBE_PIN) != NOT_AN_INTERRUPT)
_ATTACH(Z_MIN_PROBE_PIN);
#else
static_assert(digitalPinHasPCICR(Z_MIN_PROBE_PIN), "Z_MIN_PROBE_PIN is not interrupt-capable");
static_assert(digitalPinToPCICR(Z_MIN_PROBE_PIN), "Z_MIN_PROBE_PIN is not interrupt-capable");
pciSetup(Z_MIN_PROBE_PIN);
#endif
#endif
@@ -1,6 +1,6 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
@@ -23,7 +23,7 @@
#include "../../inc/MarlinConfigPre.h"
#if NEEDS_HARDWARE_PWM // Specific meta-flag for features that mandate PWM
#if ENABLED(FAST_PWM_FAN)
#include "HAL.h"
@@ -167,7 +167,7 @@ void set_pwm_frequency(const pin_t pin, int f_desired) {
uint16_t prescaler[] = { 0, 1, 8, /*TIMER2 ONLY*/32, 64, /*TIMER2 ONLY*/128, 256, 1024 };
// loop over prescaler values
LOOP_S_L_N(i, 1, 8) {
for (uint8_t i = 1; i < 8; i++) {
uint16_t res_temp_fast = 255, res_temp_phase_correct = 255;
if (timer.n == 2) {
// No resolution calculation for TIMER2 unless enabled USE_OCR2A_AS_TOP
@@ -278,5 +278,5 @@ void set_pwm_duty(const pin_t pin, const uint16_t v, const uint16_t v_size/*=255
}
}
#endif // NEEDS_HARDWARE_PWM
#endif // FAST_PWM_FAN
#endif // __AVR__
@@ -1,6 +1,6 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
@@ -1,6 +1,6 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
@@ -98,9 +98,9 @@
#define SET_INPUT(IO) _SET_INPUT(IO)
#define SET_INPUT_PULLUP(IO) do{ _SET_INPUT(IO); _WRITE(IO, HIGH); }while(0)
#define SET_INPUT_PULLDOWN SET_INPUT
#define SET_OUTPUT(IO) _SET_OUTPUT(IO)
#define SET_PWM SET_OUTPUT
#define SET_PWM(IO) SET_OUTPUT(IO)
#define IS_INPUT(IO) _IS_INPUT(IO)
#define IS_OUTPUT(IO) _IS_OUTPUT(IO)
@@ -279,25 +279,14 @@ enum ClockSource2 : char {
*/
// Determine which harware PWMs are already in use
#define _PWM_CHK_FAN_B(P) (P == E0_AUTO_FAN_PIN || P == E1_AUTO_FAN_PIN || P == E2_AUTO_FAN_PIN || P == E3_AUTO_FAN_PIN || P == E4_AUTO_FAN_PIN || P == E5_AUTO_FAN_PIN || P == E6_AUTO_FAN_PIN || P == E7_AUTO_FAN_PIN || P == CHAMBER_AUTO_FAN_PIN)
#if PIN_EXISTS(CONTROLLER_FAN)
#define PWM_CHK_FAN_B(P) (_PWM_CHK_FAN_B(P) || P == CONTROLLER_FAN_PIN)
#define PWM_CHK_FAN_B(P) (P == CONTROLLER_FAN_PIN || P == E0_AUTO_FAN_PIN || P == E1_AUTO_FAN_PIN || P == E2_AUTO_FAN_PIN || P == E3_AUTO_FAN_PIN || P == E4_AUTO_FAN_PIN || P == E5_AUTO_FAN_PIN || P == CHAMBER_AUTO_FAN_PIN)
#else
#define PWM_CHK_FAN_B(P) _PWM_CHK_FAN_B(P)
#define PWM_CHK_FAN_B(P) (P == E0_AUTO_FAN_PIN || P == E1_AUTO_FAN_PIN || P == E2_AUTO_FAN_PIN || P == E3_AUTO_FAN_PIN || P == E4_AUTO_FAN_PIN || P == E5_AUTO_FAN_PIN || P == CHAMBER_AUTO_FAN_PIN)
#endif
#if ANY_PIN(FAN, FAN1, FAN2, FAN3, FAN4, FAN5, FAN6, FAN7)
#if PIN_EXISTS(FAN7)
#define PWM_CHK_FAN_A(P) (P == FAN0_PIN || P == FAN1_PIN || P == FAN2_PIN || P == FAN3_PIN || P == FAN4_PIN || P == FAN5_PIN || P == FAN6_PIN || P == FAN7_PIN)
#elif PIN_EXISTS(FAN6)
#define PWM_CHK_FAN_A(P) (P == FAN0_PIN || P == FAN1_PIN || P == FAN2_PIN || P == FAN3_PIN || P == FAN4_PIN || P == FAN5_PIN || P == FAN6_PIN)
#elif PIN_EXISTS(FAN5)
#define PWM_CHK_FAN_A(P) (P == FAN0_PIN || P == FAN1_PIN || P == FAN2_PIN || P == FAN3_PIN || P == FAN4_PIN || P == FAN5_PIN)
#elif PIN_EXISTS(FAN4)
#define PWM_CHK_FAN_A(P) (P == FAN0_PIN || P == FAN1_PIN || P == FAN2_PIN || P == FAN3_PIN || P == FAN4_PIN)
#elif PIN_EXISTS(FAN3)
#define PWM_CHK_FAN_A(P) (P == FAN0_PIN || P == FAN1_PIN || P == FAN2_PIN || P == FAN3_PIN)
#elif PIN_EXISTS(FAN2)
#if ANY_PIN(FAN, FAN1, FAN2)
#if PIN_EXISTS(FAN2)
#define PWM_CHK_FAN_A(P) (P == FAN0_PIN || P == FAN1_PIN || P == FAN2_PIN)
#elif PIN_EXISTS(FAN1)
#define PWM_CHK_FAN_A(P) (P == FAN0_PIN || P == FAN1_PIN)
@@ -1,6 +1,6 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
@@ -26,7 +26,7 @@
*
* Hardware Pin : 02 03 06 07 01 05 15 16 17 18 23 24 25 26 64 63 13 12 46 45 44 43 78 77 76 75 74 73 72 71 60 59 58 57 56 55 54 53 50 70 52 51 42 41 40 39 38 37 36 35 22 21 20 19 97 96 95 94 93 92 91 90 89 88 87 86 85 84 83 82 | 04 08 09 10 11 14 27 28 29 30 31 32 33 34 47 48 49 61 62 65 66 67 68 69 79 80 81 98 99 100
* Port : E0 E1 E4 E5 G5 E3 H3 H4 H5 H6 B4 B5 B6 B7 J1 J0 H1 H0 D3 D2 D1 D0 A0 A1 A2 A3 A4 A5 A6 A7 C7 C6 C5 C4 C3 C2 C1 C0 D7 G2 G1 G0 L7 L6 L5 L4 L3 L2 L1 L0 B3 B2 B1 B0 F0 F1 F2 F3 F4 F5 F6 F7 K0 K1 K2 K3 K4 K5 K6 K7 | E2 E6 E7 xx xx H2 H7 G3 G4 xx xx xx xx xx D4 D5 D6 xx xx J2 J3 J4 J5 J6 J7 xx xx xx xx xx
* Logical Pin : 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | 78 79 80 xx xx 84 85 71 70 xx xx xx xx xx 81 82 83 xx xx 72 73 75 76 77 74 xx xx xx xx xx
* Logical Pin : 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | 78 79 80 xx xx 84 85 71 70 xx xx xx xx xx 81 82 83 xx xx 72 72 75 76 77 74 xx xx xx xx xx
*/
#include "../fastio.h"
@@ -1,6 +1,6 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
@@ -1,6 +1,6 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
@@ -1,6 +1,6 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
@@ -1,6 +1,6 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
@@ -1,6 +1,6 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
@@ -1,6 +1,6 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
@@ -1,6 +1,6 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
@@ -1,6 +1,6 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
@@ -25,11 +25,21 @@
* Test AVR-specific configuration values for errors at compile-time.
*/
/**
* Digipot requirement
*/
#if ENABLED(DIGIPOT_MCP4018)
#if !defined(DIGIPOTS_I2C_SDA_X) || !defined(DIGIPOTS_I2C_SDA_Y) || !defined(DIGIPOTS_I2C_SDA_Z) \
|| !defined(DIGIPOTS_I2C_SDA_E0) || !defined(DIGIPOTS_I2C_SDA_E1)
#error "DIGIPOT_MCP4018 requires DIGIPOTS_I2C_SDA_* pins to be defined."
#endif
#endif
/**
* Checks for FAST PWM
*/
#if ENABLED(FAST_PWM_FAN) && (ENABLED(USE_OCR2A_AS_TOP) && defined(TCCR2))
#error "USE_OCR2A_AS_TOP does not apply to devices with a single output TIMER2"
#error "USE_OCR2A_AS_TOP does not apply to devices with a single output TIMER2"
#endif
/**
@@ -46,10 +56,6 @@
/**
* The Trinamic library includes SoftwareSerial.h, leading to a compile error.
*/
#if BOTH(HAS_TRINAMIC_CONFIG, ENDSTOP_INTERRUPTS_FEATURE)
#if HAS_TRINAMIC && ENABLED(ENDSTOP_INTERRUPTS_FEATURE)
#error "TMCStepper includes SoftwareSerial.h which is incompatible with ENDSTOP_INTERRUPTS_FEATURE. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
#endif
#if BOTH(HAS_TMC_SW_SERIAL, MONITOR_DRIVER_STATUS)
#error "MONITOR_DRIVER_STATUS causes performance issues when used with SoftwareSerial-connected drivers. Disable MONITOR_DRIVER_STATUS or use hardware serial to continue."
#endif
@@ -1,6 +1,6 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
@@ -1,6 +1,6 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
@@ -25,15 +25,9 @@
#if EITHER(EEPROM_SETTINGS, SD_FIRMWARE_UPDATE)
/**
* PersistentStore for Arduino-style EEPROM interface
* with implementations supplied by the framework.
*/
#include "../shared/persistent_store_api.h"
#include "../shared/eeprom_api.h"
size_t PersistentStore::capacity() { return E2END + 1; }
bool PersistentStore::access_start() { return true; }
bool PersistentStore::access_start() { return true; }
bool PersistentStore::access_finish() { return true; }
bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, uint16_t *crc) {
@@ -45,7 +39,7 @@ bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, ui
if (v != eeprom_read_byte(p)) {
eeprom_write_byte(p, v);
if (eeprom_read_byte(p) != v) {
SERIAL_ECHO_MSG(STR_ERR_EEPROM_WRITE);
SERIAL_ECHO_MSG(MSG_ERR_EEPROM_WRITE);
return true;
}
}
@@ -67,5 +61,7 @@ bool PersistentStore::read_data(int &pos, uint8_t* value, size_t size, uint16_t
return false; // always assume success for AVR's
}
size_t PersistentStore::capacity() { return E2END + 1; }
#endif // EEPROM_SETTINGS || SD_FIRMWARE_UPDATE
#endif // __AVR__
@@ -1,6 +1,6 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -26,10 +26,7 @@
#define NUMBER_PINS_TOTAL NUM_DIGITAL_PINS
#define AVR_ATmega2560_FAMILY_PLUS_70 MB(BQ_ZUM_MEGA_3D, MIGHTYBOARD_REVE, MINIRAMBO, SCOOVO_X9H)
#if AVR_AT90USB1286_FAMILY
// Working with Teensyduino extension so need to re-define some things
#include "pinsDebug_Teensyduino.h"
// Can't use the "digitalPinToPort" function from the Teensyduino type IDEs
@@ -38,9 +35,7 @@
#define digitalPinToBitMask_DEBUG(p) digitalPinToBitMask(p)
#define digitalPinToPort_DEBUG(p) digitalPinToPort_Teensy(p)
#define GET_PINMODE(pin) (*portModeRegister(pin) & digitalPinToBitMask_DEBUG(pin))
#elif AVR_ATmega2560_FAMILY_PLUS_70 // So we can access/display all the pins on boards using more than 70
#include "pinsDebug_plus_70.h"
#define digitalPinToTimer_DEBUG(p) digitalPinToTimer_plus_70(p)
#define digitalPinToBitMask_DEBUG(p) digitalPinToBitMask_plus_70(p)
@@ -48,13 +43,11 @@
bool GET_PINMODE(int8_t pin) {return *portModeRegister(digitalPinToPort_DEBUG(pin)) & digitalPinToBitMask_DEBUG(pin); }
#else
#define digitalPinToTimer_DEBUG(p) digitalPinToTimer(p)
#define digitalPinToBitMask_DEBUG(p) digitalPinToBitMask(p)
#define digitalPinToPort_DEBUG(p) digitalPinToPort(p)
bool GET_PINMODE(int8_t pin) {return *portModeRegister(digitalPinToPort_DEBUG(pin)) & digitalPinToBitMask_DEBUG(pin); }
#define GET_ARRAY_PIN(p) pgm_read_byte(&pin_array[p].pin)
#endif
#define VALID_PIN(pin) (pin >= 0 && pin < NUM_DIGITAL_PINS ? 1 : 0)
@@ -70,12 +63,12 @@
void PRINT_ARRAY_NAME(uint8_t x) {
char *name_mem_pointer = (char*)pgm_read_ptr(&pin_array[x].name);
LOOP_L_N(y, MAX_NAME_LENGTH) {
for (uint8_t y = 0; y < MAX_NAME_LENGTH; y++) {
char temp_char = pgm_read_byte(name_mem_pointer + y);
if (temp_char != 0)
SERIAL_CHAR(temp_char);
else {
LOOP_L_N(i, MAX_NAME_LENGTH - y) SERIAL_CHAR(' ');
for (uint8_t i = 0; i < MAX_NAME_LENGTH - y; i++) SERIAL_CHAR(' ');
break;
}
}
@@ -231,10 +224,11 @@ static void err_is_interrupt() { SERIAL_ECHOPGM(" compare interrupt enabled"
static void err_prob_interrupt() { SERIAL_ECHOPGM(" overflow interrupt enabled"); }
static void print_is_also_tied() { SERIAL_ECHOPGM(" is also tied to this pin"); SERIAL_ECHO_SP(14); }
inline void com_print(const uint8_t N, const uint8_t Z) {
void com_print(uint8_t N, uint8_t Z) {
const uint8_t *TCCRA = (uint8_t*)TCCR_A(N);
SERIAL_ECHOPGM(" COM");
SERIAL_CHAR('0' + N, Z);
SERIAL_CHAR('0' + N);
SERIAL_CHAR('A' + Z);
SERIAL_ECHOPAIR(": ", int((*TCCRA >> (6 - Z * 2)) & 0x03));
}
@@ -246,7 +240,8 @@ void timer_prefix(uint8_t T, char L, uint8_t N) { // T - timer L - pwm N -
if (N == 4) WGM |= ((*TCCRB & _BV(WGM_3)) >> 1);
SERIAL_ECHOPGM(" TIMER");
SERIAL_CHAR(T + '0', L);
SERIAL_CHAR(T + '0');
SERIAL_CHAR(L);
SERIAL_ECHO_SP(3);
if (N == 3) {
@@ -1,6 +1,6 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -1,6 +1,6 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -1,6 +1,6 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
@@ -1,6 +1,6 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
@@ -88,7 +88,7 @@ void u8g_spiSend_sw_AVR_mode_0(uint8_t val) {
volatile uint8_t *outData = u8g_outData,
*outClock = u8g_outClock;
U8G_ATOMIC_START();
LOOP_L_N(i, 8) {
for (uint8_t i = 0; i < 8; i++) {
if (val & 0x80)
*outData |= bitData;
else
@@ -108,7 +108,7 @@ void u8g_spiSend_sw_AVR_mode_3(uint8_t val) {
volatile uint8_t *outData = u8g_outData,
*outClock = u8g_outClock;
U8G_ATOMIC_START();
LOOP_L_N(i, 8) {
for (uint8_t i = 0; i < 8; i++) {
*outClock &= bitNotClock;
if (val & 0x80)
*outData |= bitData;
@@ -1,6 +1,6 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
@@ -19,6 +19,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifdef __AVR__
#include "../../inc/MarlinConfig.h"
@@ -27,7 +28,7 @@
#include "watchdog.h"
#include "../../MarlinCore.h"
#include "../../Marlin.h"
// Initialize watchdog with 8s timeout, if possible. Otherwise, make it 4s.
void watchdog_init() {
@@ -61,7 +62,7 @@ void watchdog_init() {
#if ENABLED(WATCHDOG_RESET_MANUAL)
ISR(WDT_vect) {
sei(); // With the interrupt driven serial we need to allow interrupts.
SERIAL_ERROR_MSG(STR_WATCHDOG_FIRED);
SERIAL_ERROR_MSG(MSG_WATCHDOG_FIRED);
minkill(); // interrupt-safe final kill and infinite loop
}
#endif
@@ -1,6 +1,6 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
@@ -1,6 +1,6 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
@@ -19,6 +19,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifdef ARDUINO_ARCH_SAM
#include "../../core/macros.h"
@@ -1,34 +1,3 @@
/**
* Marlin 3D Printer Firmware
*
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2016 Bob Cousins bobcousins42@googlemail.com
* Copyright (c) 2015-2016 Nico Tonnhofer wurstnase.reprap@gmail.com
* Copyright (c) 2016 Victor Perez victor_pv@hotmail.com
*
* 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/>.
*
*/
#ifdef ARDUINO_ARCH_SAM
#include "../../inc/MarlinConfig.h"
#if ENABLED(FLASH_EEPROM_EMULATION)
#ifndef E2END
#define E2END 0xFFF // Default to Flash emulated EEPROM size (eeprom_emul.cpp)
#endif
/* EEPROM emulation over flash with reduced wear
*
@@ -60,7 +29,14 @@
*
*/
//#define EE_EMU_DEBUG
#ifdef ARDUINO_ARCH_SAM
#include "../../inc/MarlinConfig.h"
#if ENABLED(EEPROM_SETTINGS) && NONE(I2C_EEPROM, SPI_EEPROM)
#include "../shared/Marduino.h"
#include "../shared/persistent_store_api.h"
#define EEPROMSize 4096
#define PagesPerGroup 128
@@ -137,18 +113,15 @@ static uint8_t buffer[256] = {0}, // The RAM buffer to accumulate writes
curPage = 0, // Current FLASH page inside the group
curGroup = 0xFF; // Current FLASH group
#define DEBUG_OUT ENABLED(EE_EMU_DEBUG)
#include "../../core/debug_out.h"
static void ee_Dump(const int page, const void* data) {
#ifdef EE_EMU_DEBUG
//#define EE_EMU_DEBUG
#ifdef EE_EMU_DEBUG
static void ee_Dump(int page,const void* data) {
const uint8_t* c = (const uint8_t*) data;
char buffer[80];
sprintf_P(buffer, PSTR("Page: %d (0x%04x)\n"), page, page);
DEBUG_ECHO(buffer);
SERIAL_ECHO(buffer);
char* p = &buffer[0];
for (int i = 0; i< PageSize; ++i) {
@@ -158,16 +131,12 @@ static void ee_Dump(const int page, const void* data) {
if ((i & 0xF) == 0xF) {
*p++ = '\n';
*p = 0;
DEBUG_ECHO(buffer);
SERIAL_ECHO(buffer);
p = &buffer[0];
}
}
#else
UNUSED(page);
UNUSED(data);
#endif
}
}
#endif
/* Flash Writing Protection Key */
#define FWP_KEY 0x5Au
@@ -180,16 +149,17 @@ static void ee_Dump(const int page, const void* data) {
#define EEFC_ERROR_FLAGS (EEFC_FSR_FLOCKE | EEFC_FSR_FCMDE)
#endif
/**
* Writes the contents of the specified page (no previous erase)
* @param page (page #)
* @param data (pointer to the data buffer)
*/
__attribute__ ((long_call, section (".ramfunc")))
static bool ee_PageWrite(uint16_t page, const void* data) {
static bool ee_PageWrite(uint16_t page,const void* data) {
uint16_t i;
uint32_t addrflash = uint32_t(getFlashStorage(page));
uint32_t addrflash = ((uint32_t)getFlashStorage(page));
// Read the flash contents
uint32_t pageContents[PageSize>>2];
@@ -204,11 +174,13 @@ static bool ee_PageWrite(uint16_t page, const void* data) {
for (i = 0; i <PageSize >> 2; i++)
pageContents[i] = (((uint32_t*)data)[i]) | (~(pageContents[i] ^ ((uint32_t*)data)[i]));
DEBUG_ECHO_START();
DEBUG_ECHOLNPAIR("EEPROM PageWrite ", page);
DEBUG_ECHOLNPAIR(" in FLASH address ", (uint32_t)addrflash);
DEBUG_ECHOLNPAIR(" base address ", (uint32_t)getFlashStorage(0));
DEBUG_FLUSH();
#ifdef EE_EMU_DEBUG
SERIAL_ECHO_START();
SERIAL_ECHOLNPAIR("EEPROM PageWrite ", page);
SERIAL_ECHOLNPAIR(" in FLASH address ", (uint32_t)addrflash);
SERIAL_ECHOLNPAIR(" base address ", (uint32_t)getFlashStorage(0));
SERIAL_FLUSH();
#endif
// Get the page relative to the start of the EFC controller, and the EFC controller to use
Efc *efc;
@@ -250,8 +222,10 @@ static bool ee_PageWrite(uint16_t page, const void* data) {
// Reenable interrupts
__enable_irq();
DEBUG_ECHO_START();
DEBUG_ECHOLNPAIR("EEPROM Unlock failure for page ", page);
#ifdef EE_EMU_DEBUG
SERIAL_ECHO_START();
SERIAL_ECHOLNPAIR("EEPROM Unlock failure for page ", page);
#endif
return false;
}
@@ -275,9 +249,10 @@ static bool ee_PageWrite(uint16_t page, const void* data) {
// Reenable interrupts
__enable_irq();
DEBUG_ECHO_START();
DEBUG_ECHOLNPAIR("EEPROM Write failure for page ", page);
#ifdef EE_EMU_DEBUG
SERIAL_ECHO_START();
SERIAL_ECHOLNPAIR("EEPROM Write failure for page ", page);
#endif
return false;
}
@@ -291,11 +266,11 @@ static bool ee_PageWrite(uint16_t page, const void* data) {
if (memcmp(getFlashStorage(page),data,PageSize)) {
#ifdef EE_EMU_DEBUG
DEBUG_ECHO_START();
DEBUG_ECHOLNPAIR("EEPROM Verify Write failure for page ", page);
SERIAL_ECHO_START();
SERIAL_ECHOLNPAIR("EEPROM Verify Write failure for page ", page);
ee_Dump( page, (uint32_t *)addrflash);
ee_Dump(-page, data);
ee_Dump( page,(uint32_t *) addrflash);
ee_Dump(-page,data);
// Calculate count of changed bits
uint32_t* p1 = (uint32_t*)addrflash;
@@ -311,7 +286,7 @@ static bool ee_PageWrite(uint16_t page, const void* data) {
}
}
}
DEBUG_ECHOLNPAIR("--> Differing bits: ", count);
SERIAL_ECHOLNPAIR("--> Differing bits: ", count);
#endif
return false;
@@ -328,13 +303,15 @@ __attribute__ ((long_call, section (".ramfunc")))
static bool ee_PageErase(uint16_t page) {
uint16_t i;
uint32_t addrflash = uint32_t(getFlashStorage(page));
uint32_t addrflash = ((uint32_t)getFlashStorage(page));
DEBUG_ECHO_START();
DEBUG_ECHOLNPAIR("EEPROM PageErase ", page);
DEBUG_ECHOLNPAIR(" in FLASH address ", (uint32_t)addrflash);
DEBUG_ECHOLNPAIR(" base address ", (uint32_t)getFlashStorage(0));
DEBUG_FLUSH();
#ifdef EE_EMU_DEBUG
SERIAL_ECHO_START();
SERIAL_ECHOLNPAIR("EEPROM PageErase ", page);
SERIAL_ECHOLNPAIR(" in FLASH address ", (uint32_t)addrflash);
SERIAL_ECHOLNPAIR(" base address ", (uint32_t)getFlashStorage(0));
SERIAL_FLUSH();
#endif
// Get the page relative to the start of the EFC controller, and the EFC controller to use
Efc *efc;
@@ -375,9 +352,10 @@ static bool ee_PageErase(uint16_t page) {
// Reenable interrupts
__enable_irq();
DEBUG_ECHO_START();
DEBUG_ECHOLNPAIR("EEPROM Unlock failure for page ",page);
#ifdef EE_EMU_DEBUG
SERIAL_ECHO_START();
SERIAL_ECHOLNPAIR("EEPROM Unlock failure for page ",page);
#endif
return false;
}
@@ -399,9 +377,10 @@ static bool ee_PageErase(uint16_t page) {
// Reenable interrupts
__enable_irq();
DEBUG_ECHO_START();
DEBUG_ECHOLNPAIR("EEPROM Erase failure for page ",page);
#ifdef EE_EMU_DEBUG
SERIAL_ECHO_START();
SERIAL_ECHOLNPAIR("EEPROM Erase failure for page ",page);
#endif
return false;
}
@@ -415,17 +394,20 @@ static bool ee_PageErase(uint16_t page) {
uint32_t * aligned_src = (uint32_t *) addrflash;
for (i = 0; i < PageSize >> 2; i++) {
if (*aligned_src++ != 0xFFFFFFFF) {
DEBUG_ECHO_START();
DEBUG_ECHOLNPAIR("EEPROM Verify Erase failure for page ",page);
ee_Dump(page, (uint32_t *)addrflash);
#ifdef EE_EMU_DEBUG
SERIAL_ECHO_START();
SERIAL_ECHOLNPAIR("EEPROM Verify Erase failure for page ",page);
ee_Dump( page,(uint32_t *) addrflash);
#endif
return false;
}
}
return true;
}
static uint8_t ee_Read(uint32_t address, bool excludeRAMBuffer=false) {
static uint8_t ee_Read(uint32_t address, bool excludeRAMBuffer = false) {
uint32_t baddr;
uint32_t blen;
@@ -508,7 +490,7 @@ static uint8_t ee_Read(uint32_t address, bool excludeRAMBuffer=false) {
return 0xFF;
}
static uint32_t ee_GetAddrRange(uint32_t address, bool excludeRAMBuffer=false) {
static uint32_t ee_GetAddrRange(uint32_t address, bool excludeRAMBuffer = false) {
uint32_t baddr,
blen,
nextAddr = 0xFFFF,
@@ -600,7 +582,7 @@ static bool ee_IsPageClean(int page) {
return true;
}
static bool ee_Flush(uint32_t overrideAddress = 0xFFFFFFFF, uint8_t overrideData=0xFF) {
static bool ee_Flush(uint32_t overrideAddress = 0xFFFFFFFF, uint8_t overrideData = 0xFF) {
// Check if RAM buffer has something to be written
bool isEmpty = true;
@@ -926,9 +908,11 @@ static void ee_Init() {
// If all groups seem to be used, default to first group
if (curGroup >= GroupCount) curGroup = 0;
DEBUG_ECHO_START();
DEBUG_ECHOLNPAIR("EEPROM Current Group: ",curGroup);
DEBUG_FLUSH();
#ifdef EE_EMU_DEBUG
SERIAL_ECHO_START();
SERIAL_ECHOLNPAIR("EEPROM Current Group: ",curGroup);
SERIAL_FLUSH();
#endif
// Now, validate that all the other group pages are empty
for (int grp = 0; grp < GroupCount; grp++) {
@@ -936,9 +920,11 @@ static void ee_Init() {
for (int page = 0; page < PagesPerGroup; page++) {
if (!ee_IsPageClean(grp * PagesPerGroup + page)) {
DEBUG_ECHO_START();
DEBUG_ECHOLNPAIR("EEPROM Page ", page, " not clean on group ", grp);
DEBUG_FLUSH();
#ifdef EE_EMU_DEBUG
SERIAL_ECHO_START();
SERIAL_ECHOLNPAIR("EEPROM Page ", page, " not clean on group ", grp);
SERIAL_FLUSH();
#endif
ee_PageErase(grp * PagesPerGroup + page);
}
}
@@ -948,66 +934,66 @@ static void ee_Init() {
// and also validate that all the other ones are clean
for (curPage = 0; curPage < PagesPerGroup; curPage++) {
if (ee_IsPageClean(curGroup * PagesPerGroup + curPage)) {
ee_Dump(curGroup * PagesPerGroup + curPage, getFlashStorage(curGroup * PagesPerGroup + curPage));
#ifdef EE_EMU_DEBUG
ee_Dump(curGroup * PagesPerGroup + curPage, getFlashStorage(curGroup * PagesPerGroup + curPage));
#endif
break;
}
}
DEBUG_ECHO_START();
DEBUG_ECHOLNPAIR("EEPROM Active page: ", curPage);
DEBUG_FLUSH();
#ifdef EE_EMU_DEBUG
SERIAL_ECHO_START();
SERIAL_ECHOLNPAIR("EEPROM Active page: ", curPage);
SERIAL_FLUSH();
#endif
// Make sure the pages following the first clean one are also clean
for (int page = curPage + 1; page < PagesPerGroup; page++) {
if (!ee_IsPageClean(curGroup * PagesPerGroup + page)) {
DEBUG_ECHO_START();
DEBUG_ECHOLNPAIR("EEPROM Page ", page, " not clean on active group ", curGroup);
DEBUG_FLUSH();
ee_Dump(curGroup * PagesPerGroup + page, getFlashStorage(curGroup * PagesPerGroup + page));
#ifdef EE_EMU_DEBUG
SERIAL_ECHO_START();
SERIAL_ECHOLNPAIR("EEPROM Page ", page, " not clean on active group ", curGroup);
SERIAL_FLUSH();
ee_Dump(curGroup * PagesPerGroup + page, getFlashStorage(curGroup * PagesPerGroup + page));
#endif
ee_PageErase(curGroup * PagesPerGroup + page);
}
}
}
/* PersistentStore -----------------------------------------------------------*/
#include "../shared/eeprom_api.h"
size_t PersistentStore::capacity() { return E2END + 1; }
bool PersistentStore::access_start() { ee_Init(); return true; }
bool PersistentStore::access_finish() { ee_Flush(); return true; }
bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, uint16_t *crc) {
while (size--) {
uint8_t * const p = (uint8_t * const)pos;
uint8_t v = *value;
// EEPROM has only ~100,000 write cycles,
// so only write bytes that have changed!
if (v != ee_Read(uint32_t(p))) {
ee_Write(uint32_t(p), v);
delay(2);
if (ee_Read(uint32_t(p)) != v) {
SERIAL_ECHO_MSG(STR_ERR_EEPROM_WRITE);
return true;
}
}
crc16(crc, &v, 1);
pos++;
value++;
};
return false;
uint8_t eeprom_read_byte(uint8_t* addr) {
ee_Init();
return ee_Read((uint32_t)addr);
}
bool PersistentStore::read_data(int &pos, uint8_t* value, size_t size, uint16_t *crc, const bool writing/*=true*/) {
do {
uint8_t c = ee_Read(uint32_t(pos));
if (writing) *value = c;
crc16(crc, &c, 1);
pos++;
value++;
} while (--size);
return false;
void eeprom_write_byte(uint8_t* addr, uint8_t value) {
ee_Init();
ee_Write((uint32_t)addr, value);
}
#endif // FLASH_EEPROM_EMULATION
#endif // ARDUINO_ARCH_SAM
void eeprom_update_block(const void* __src, void* __dst, size_t __n) {
uint8_t* dst = (uint8_t*)__dst;
const uint8_t* src = (const uint8_t*)__src;
while (__n--) {
eeprom_write_byte(dst, *src);
++dst;
++src;
}
}
void eeprom_read_block(void* __dst, const void* __src, size_t __n) {
uint8_t* dst = (uint8_t*)__dst;
uint8_t* src = (uint8_t*)__src;
while (__n--) {
*dst = eeprom_read_byte(src);
++dst;
++src;
}
}
void eeprom_flush() {
ee_Flush();
}
#endif // EEPROM_SETTINGS && (!I2C_EEPROM && !SPI_EEPROM)
#endif // ARDUINO_ARCH_AVR
@@ -1,6 +1,6 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2016 Bob Cousins bobcousins42@googlemail.com
*
* This program is free software: you can redistribute it and/or modify
@@ -94,8 +94,8 @@ int freeMemory() {
// ADC
// ------------------------
void HAL_adc_start_conversion(const uint8_t ch) {
HAL_adc_result = analogRead(ch);
void HAL_adc_start_conversion(const uint8_t adc_pin) {
HAL_adc_result = analogRead(adc_pin);
}
uint16_t HAL_adc_get_result() {
@@ -1,7 +1,7 @@
/**
* Marlin 3D Printer Firmware
*
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2016 Bob Cousins bobcousins42@googlemail.com
* Copyright (c) 2015-2016 Nico Tonnhofer wurstnase.reprap@gmail.com
*
@@ -30,7 +30,6 @@
#define CPU_32_BIT
#include "../shared/Marduino.h"
#include "../shared/eeprom_if.h"
#include "../shared/math_32bit.h"
#include "../shared/HAL_SPI.h"
#include "fastio.h"
@@ -39,62 +38,26 @@
#include <stdint.h>
// Define MYSERIAL0/1 before MarlinSerial includes!
#if SERIAL_PORT == -1 || ENABLED(EMERGENCY_PARSER)
#define MYSERIAL0 customizedSerial1
#elif SERIAL_PORT == 0
#define MYSERIAL0 Serial
#elif SERIAL_PORT == 1
#define MYSERIAL0 Serial1
#elif SERIAL_PORT == 2
#define MYSERIAL0 Serial2
#elif SERIAL_PORT == 3
#define MYSERIAL0 Serial3
#else
#error "The required SERIAL_PORT must be from -1 to 3. Please update your configuration."
// Serial ports
#if !WITHIN(SERIAL_PORT, -1, 3)
#error "SERIAL_PORT must be from -1 to 3"
#endif
// MYSERIAL0 required before MarlinSerial includes!
#define MYSERIAL0 customizedSerial1
#ifdef SERIAL_PORT_2
#if SERIAL_PORT_2 == SERIAL_PORT
#error "SERIAL_PORT_2 must be different from SERIAL_PORT. Please update your configuration."
#elif SERIAL_PORT_2 == -1 || ENABLED(EMERGENCY_PARSER)
#define MYSERIAL1 customizedSerial2
#elif SERIAL_PORT_2 == 0
#define MYSERIAL1 Serial
#elif SERIAL_PORT_2 == 1
#define MYSERIAL1 Serial1
#elif SERIAL_PORT_2 == 2
#define MYSERIAL1 Serial2
#elif SERIAL_PORT_2 == 3
#define MYSERIAL1 Serial3
#else
#error "SERIAL_PORT_2 must be from -1 to 3. Please update your configuration."
#if !WITHIN(SERIAL_PORT_2, -1, 3)
#error "SERIAL_PORT_2 must be from -1 to 3"
#elif SERIAL_PORT_2 == SERIAL_PORT
#error "SERIAL_PORT_2 must be different than SERIAL_PORT"
#endif
#define NUM_SERIAL 2
#define MYSERIAL1 customizedSerial2
#else
#define NUM_SERIAL 1
#endif
#ifdef DGUS_SERIAL_PORT
#if DGUS_SERIAL_PORT == SERIAL_PORT
#error "DGUS_SERIAL_PORT must be different from SERIAL_PORT. Please update your configuration."
#elif defined(SERIAL_PORT_2) && DGUS_SERIAL_PORT == SERIAL_PORT_2
#error "DGUS_SERIAL_PORT must be different than SERIAL_PORT_2. Please update your configuration."
#elif DGUS_SERIAL_PORT == -1
#define DGUS_SERIAL internalDgusSerial
#elif DGUS_SERIAL_PORT == 0
#define DGUS_SERIAL Serial
#elif DGUS_SERIAL_PORT == 1
#define DGUS_SERIAL Serial1
#elif DGUS_SERIAL_PORT == 2
#define DGUS_SERIAL Serial2
#elif DGUS_SERIAL_PORT == 3
#define DGUS_SERIAL Serial3
#else
#error "DGUS_SERIAL_PORT must be from -1 to 3. Please update your configuration."
#endif
#endif
#include "MarlinSerial.h"
#include "MarlinSerialUSB.h"
@@ -119,8 +82,8 @@ typedef int8_t pin_t;
//
// Interrupts
//
#define CRITICAL_SECTION_START() uint32_t primask = __get_PRIMASK(); __disable_irq()
#define CRITICAL_SECTION_END() if (!primask) __enable_irq()
#define CRITICAL_SECTION_START uint32_t primask = __get_PRIMASK(); __disable_irq()
#define CRITICAL_SECTION_END if (!primask) __enable_irq()
#define ISRS_ENABLED() (!__get_PRIMASK())
#define ENABLE_ISRS() __enable_irq()
#define DISABLE_ISRS() __disable_irq()
@@ -131,6 +94,14 @@ void sei(); // Enable interrupts
void HAL_clear_reset_source(); // clear reset reason
uint8_t HAL_get_reset_source(); // get reset reason
//
// EEPROM
//
void eeprom_write_byte(uint8_t *pos, unsigned char value);
uint8_t eeprom_read_byte(uint8_t *pos);
void eeprom_read_block (void *__dst, const void *__src, size_t __n);
void eeprom_update_block (const void *__src, void *__dst, size_t __n);
//
// ADC
//
@@ -140,16 +111,15 @@ extern uint16_t HAL_adc_result; // result of last ADC conversion
#define analogInputToDigitalPin(p) ((p < 12u) ? (p) + 54u : -1)
#endif
#define HAL_ANALOG_SELECT(ch)
#define HAL_ANALOG_SELECT(pin)
inline void HAL_adc_init() {}//todo
#define HAL_START_ADC(ch) HAL_adc_start_conversion(ch)
#define HAL_ADC_RESOLUTION 10
#define HAL_START_ADC(pin) HAL_adc_start_conversion(pin)
#define HAL_READ_ADC() HAL_adc_result
#define HAL_ADC_READY() true
void HAL_adc_start_conversion(const uint8_t ch);
void HAL_adc_start_conversion(const uint8_t adc_pin);
uint16_t HAL_adc_get_result();
//
@@ -1,6 +1,6 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
@@ -240,7 +240,7 @@
}
// all the others
static uint32_t spiDelayCyclesX4 = (F_CPU) / 1000000; // 4µs => 125khz
static uint32_t spiDelayCyclesX4 = (F_CPU) / 1000000; // 4uS => 125khz
static uint8_t spiTransferX(uint8_t b) { // using Mode 0
int bits = 8;
@@ -1,6 +1,6 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
@@ -63,13 +63,13 @@ static pfnISR_Handler* get_relocated_table_addr() {
memcpy(&ram_tab, romtab, sizeof(ram_tab));
// Disable global interrupts
CRITICAL_SECTION_START();
CRITICAL_SECTION_START;
// Set the vector table base address to the SRAM copy
SCB->VTOR = (uint32_t)(&ram_tab);
// Reenable interrupts
CRITICAL_SECTION_END();
CRITICAL_SECTION_END;
// Return the address of the table
return (pfnISR_Handler*)(&ram_tab);
@@ -80,7 +80,7 @@ pfnISR_Handler install_isr(IRQn_Type irq, pfnISR_Handler newHandler) {
pfnISR_Handler *isrtab = get_relocated_table_addr();
// Disable global interrupts
CRITICAL_SECTION_START();
CRITICAL_SECTION_START;
// Get the original handler
pfnISR_Handler oldHandler = isrtab[irq + 16];
@@ -89,7 +89,7 @@ pfnISR_Handler install_isr(IRQn_Type irq, pfnISR_Handler newHandler) {
isrtab[irq + 16] = newHandler;
// Reenable interrupts
CRITICAL_SECTION_END();
CRITICAL_SECTION_END;
// Return the original one
return oldHandler;
@@ -1,6 +1,6 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
@@ -1,6 +1,6 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
@@ -31,7 +31,7 @@
#include "MarlinSerial.h"
#include "InterruptVectors.h"
#include "../../MarlinCore.h"
#include "../../Marlin.h"
template<typename Cfg> typename MarlinSerial<Cfg>::ring_buffer_r MarlinSerial<Cfg>::rx_buffer = { 0, 0, { 0 } };
template<typename Cfg> typename MarlinSerial<Cfg>::ring_buffer_t MarlinSerial<Cfg>::tx_buffer = { 0 };
@@ -45,7 +45,7 @@ template<typename Cfg> typename MarlinSerial<Cfg>::ring_buffer_pos_t MarlinSeria
// A SW memory barrier, to ensure GCC does not overoptimize loops
#define sw_barrier() asm volatile("": : :"memory");
#include "../../feature/e_parser.h"
#include "../../feature/emergency_parser.h"
// (called with RX interrupts disabled)
template<typename Cfg>
@@ -606,7 +606,7 @@ void MarlinSerial<Cfg>::printFloat(double number, uint8_t digits) {
// Round correctly so that print(1.999, 2) prints as "2.00"
double rounding = 0.5;
LOOP_L_N(i, digits) rounding *= 0.1;
for (uint8_t i = 0; i < digits; ++i) rounding *= 0.1;
number += rounding;
// Extract the integer part of the number and print it
@@ -629,13 +629,23 @@ void MarlinSerial<Cfg>::printFloat(double number, uint8_t digits) {
// If not using the USB port as serial port
#if SERIAL_PORT >= 0
template class MarlinSerial<MarlinSerialCfg<SERIAL_PORT>>; // Define
MarlinSerial<MarlinSerialCfg<SERIAL_PORT>> customizedSerial1; // Instantiate
// Preinstantiate
template class MarlinSerial<MarlinSerialCfg<SERIAL_PORT>>;
// Instantiate
MarlinSerial<MarlinSerialCfg<SERIAL_PORT>> customizedSerial1;
#endif
#if defined(SERIAL_PORT_2) && SERIAL_PORT_2 >= 0
template class MarlinSerial<MarlinSerialCfg<SERIAL_PORT_2>>; // Define
MarlinSerial<MarlinSerialCfg<SERIAL_PORT_2>> customizedSerial2; // Instantiate
#ifdef SERIAL_PORT_2
// Preinstantiate
template class MarlinSerial<MarlinSerialCfg<SERIAL_PORT_2>>;
// Instantiate
MarlinSerial<MarlinSerialCfg<SERIAL_PORT_2>> customizedSerial2;
#endif
#endif // ARDUINO_ARCH_SAM
@@ -1,6 +1,6 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
@@ -27,9 +27,9 @@
* Based on MarlinSerial for AVR, copyright (c) 2006 Nicholas Zambetti. All right reserved.
*/
#include <WString.h>
#include "../shared/MarlinSerial.h"
#include "../../inc/MarlinConfigPre.h"
#include <WString.h>
#define DEC 10
#define HEX 16
@@ -163,18 +163,22 @@ struct MarlinSerialCfg {
static constexpr int PORT = serial;
static constexpr unsigned int RX_SIZE = RX_BUFFER_SIZE;
static constexpr unsigned int TX_SIZE = TX_BUFFER_SIZE;
static constexpr bool XONOFF = ENABLED(SERIAL_XON_XOFF);
static constexpr bool EMERGENCYPARSER = ENABLED(EMERGENCY_PARSER);
static constexpr bool DROPPED_RX = ENABLED(SERIAL_STATS_DROPPED_RX);
static constexpr bool RX_OVERRUNS = ENABLED(SERIAL_STATS_RX_BUFFER_OVERRUNS);
static constexpr bool RX_FRAMING_ERRORS = ENABLED(SERIAL_STATS_RX_FRAMING_ERRORS);
static constexpr bool MAX_RX_QUEUED = ENABLED(SERIAL_STATS_MAX_RX_QUEUED);
static constexpr bool XONOFF = bSERIAL_XON_XOFF;
static constexpr bool EMERGENCYPARSER = bEMERGENCY_PARSER;
static constexpr bool DROPPED_RX = bSERIAL_STATS_DROPPED_RX;
static constexpr bool RX_OVERRUNS = bSERIAL_STATS_RX_BUFFER_OVERRUNS;
static constexpr bool RX_FRAMING_ERRORS = bSERIAL_STATS_RX_FRAMING_ERRORS;
static constexpr bool MAX_RX_QUEUED = bSERIAL_STATS_MAX_RX_QUEUED;
};
#if SERIAL_PORT >= 0
extern MarlinSerial<MarlinSerialCfg<SERIAL_PORT>> customizedSerial1;
#endif
#if defined(SERIAL_PORT_2) && SERIAL_PORT_2 >= 0
extern MarlinSerial<MarlinSerialCfg<SERIAL_PORT>> customizedSerial1;
#endif // SERIAL_PORT >= 0
#ifdef SERIAL_PORT_2
extern MarlinSerial<MarlinSerialCfg<SERIAL_PORT_2>> customizedSerial2;
#endif
@@ -1,6 +1,6 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
@@ -29,12 +29,12 @@
#include "../../inc/MarlinConfig.h"
#if HAS_USB_SERIAL
#if SERIAL_PORT == -1
#include "MarlinSerialUSB.h"
#if ENABLED(EMERGENCY_PARSER)
#include "../../feature/e_parser.h"
#include "../../feature/emergency_parser.h"
#endif
// Imports from Atmel USB Stack/CDC implementation
@@ -73,7 +73,9 @@ int MarlinSerialUSB::peek() {
pending_char = udi_cdc_getc();
TERN_(EMERGENCY_PARSER, emergency_parser.update(emergency_state, (char)pending_char));
#if ENABLED(EMERGENCY_PARSER)
emergency_parser.update(emergency_state, (char)pending_char);
#endif
return pending_char;
}
@@ -95,7 +97,9 @@ int MarlinSerialUSB::read() {
int c = udi_cdc_getc();
TERN_(EMERGENCY_PARSER, emergency_parser.update(emergency_state, (char)c));
#if ENABLED(EMERGENCY_PARSER)
emergency_parser.update(emergency_state, (char)c);
#endif
return c;
}
@@ -255,7 +259,7 @@ void MarlinSerialUSB::printFloat(double number, uint8_t digits) {
// Round correctly so that print(1.999, 2) prints as "2.00"
double rounding = 0.5;
LOOP_L_N(i, digits)
for (uint8_t i = 0; i < digits; ++i)
rounding *= 0.1;
number += rounding;
@@ -279,12 +283,8 @@ void MarlinSerialUSB::printFloat(double number, uint8_t digits) {
}
// Preinstantiate
#if SERIAL_PORT == -1
MarlinSerialUSB customizedSerial1;
#endif
#if SERIAL_PORT_2 == -1
MarlinSerialUSB customizedSerial2;
#endif
MarlinSerialUSB customizedSerial1;
#endif // SERIAL_PORT == -1
#endif // HAS_USB_SERIAL
#endif // ARDUINO_ARCH_SAM
@@ -1,6 +1,6 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
@@ -28,7 +28,7 @@
#include "../../inc/MarlinConfig.h"
#if HAS_USB_SERIAL
#if SERIAL_PORT == -1
#include <WString.h>
@@ -88,12 +88,6 @@ private:
static void printFloat(double, uint8_t);
};
#if SERIAL_PORT == -1
extern MarlinSerialUSB customizedSerial1;
#endif
extern MarlinSerialUSB customizedSerial1;
#if SERIAL_PORT_2 == -1
extern MarlinSerialUSB customizedSerial2;
#endif
#endif // HAS_USB_SERIAL
#endif // SERIAL_PORT == -1
@@ -1,6 +1,6 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
@@ -44,6 +44,7 @@
#if HAS_SERVOS
#include "../shared/Marduino.h"
#include "../shared/servo.h"
#include "../shared/servo_private.h"
@@ -1,6 +1,6 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
@@ -1,6 +1,6 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
@@ -63,7 +63,7 @@
#include <U8glib.h>
#include "../../../MarlinCore.h"
#include "../../../Marlin.h"
void spiBegin();
void spiInit(uint8_t spiRate);
@@ -1,6 +1,6 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
@@ -1,6 +1,6 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
@@ -1,6 +1,6 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
@@ -80,7 +80,7 @@ Pio *SCK_pPio, *MOSI_pPio;
uint32_t SCK_dwMask, MOSI_dwMask;
void u8g_spiSend_sw_DUE_mode_0(uint8_t val) { // 3MHz
LOOP_L_N(i, 8) {
for (uint8_t i = 0; i < 8; i++) {
if (val & 0x80)
MOSI_pPio->PIO_SODR = MOSI_dwMask;
else
@@ -94,7 +94,7 @@ void u8g_spiSend_sw_DUE_mode_0(uint8_t val) { // 3MHz
}
void u8g_spiSend_sw_DUE_mode_3(uint8_t val) { // 3.5MHz
LOOP_L_N(i, 8) {
for (uint8_t i = 0; i < 8; i++) {
SCK_pPio->PIO_CODR = SCK_dwMask;
DELAY_NS(50);
if (val & 0x80)
@@ -1,6 +1,6 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
@@ -1,6 +1,6 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
@@ -47,21 +47,37 @@ void endstop_ISR() { endstops.update(); }
void setup_endstop_interrupts() {
#define _ATTACH(P) attachInterrupt(digitalPinToInterrupt(P), endstop_ISR, CHANGE)
TERN_(HAS_X_MAX, _ATTACH(X_MAX_PIN));
TERN_(HAS_X_MIN, _ATTACH(X_MIN_PIN));
TERN_(HAS_Y_MAX, _ATTACH(Y_MAX_PIN));
TERN_(HAS_Y_MIN, _ATTACH(Y_MIN_PIN));
TERN_(HAS_Z_MAX, _ATTACH(Z_MAX_PIN));
TERN_(HAS_Z_MIN, _ATTACH(Z_MIN_PIN));
TERN_(HAS_X2_MAX, _ATTACH(X2_MAX_PIN));
TERN_(HAS_X2_MIN, _ATTACH(X2_MIN_PIN));
TERN_(HAS_Y2_MAX, _ATTACH(Y2_MAX_PIN));
TERN_(HAS_Y2_MIN, _ATTACH(Y2_MIN_PIN));
TERN_(HAS_Z2_MAX, _ATTACH(Z2_MAX_PIN));
TERN_(HAS_Z2_MIN, _ATTACH(Z2_MIN_PIN));
TERN_(HAS_Z3_MAX, _ATTACH(Z3_MAX_PIN));
TERN_(HAS_Z3_MIN, _ATTACH(Z3_MIN_PIN));
TERN_(HAS_Z4_MAX, _ATTACH(Z4_MAX_PIN));
TERN_(HAS_Z4_MIN, _ATTACH(Z4_MIN_PIN));
TERN_(HAS_Z_MIN_PROBE_PIN, _ATTACH(Z_MIN_PROBE_PIN));
#if HAS_X_MAX
_ATTACH(X_MAX_PIN);
#endif
#if HAS_X_MIN
_ATTACH(X_MIN_PIN);
#endif
#if HAS_Y_MAX
_ATTACH(Y_MAX_PIN);
#endif
#if HAS_Y_MIN
_ATTACH(Y_MIN_PIN);
#endif
#if HAS_Z_MAX
_ATTACH(Z_MAX_PIN);
#endif
#if HAS_Z_MIN
_ATTACH(Z_MIN_PIN);
#endif
#if HAS_Z2_MAX
_ATTACH(Z2_MAX_PIN);
#endif
#if HAS_Z2_MIN
_ATTACH(Z2_MIN_PIN);
#endif
#if HAS_Z3_MAX
_ATTACH(Z3_MAX_PIN);
#endif
#if HAS_Z3_MIN
_ATTACH(Z3_MIN_PIN);
#endif
#if HAS_Z_MIN_PROBE_PIN
_ATTACH(Z_MIN_PROBE_PIN);
#endif
}
@@ -1,6 +1,6 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
@@ -166,7 +166,7 @@
// Set pin as output (wrapper) - reads the pin and sets the output to that value
#define SET_OUTPUT(IO) _SET_OUTPUT(IO)
// Set pin as PWM
#define SET_PWM SET_OUTPUT
#define SET_PWM(IO) SET_OUTPUT(IO)
// Check if pin is an input
#define IS_INPUT(IO) ((digitalPinToPort(IO)->PIO_OSR & digitalPinToBitMask(IO)) == 0)
@@ -174,7 +174,7 @@
#define IS_OUTPUT(IO) ((digitalPinToPort(IO)->PIO_OSR & digitalPinToBitMask(IO)) != 0)
// Shorthand
#define OUT_WRITE(IO,V) do{ SET_OUTPUT(IO); WRITE(IO,V); }while(0)
#define OUT_WRITE(IO,V) { SET_OUTPUT(IO); WRITE(IO,V); }
// digitalRead/Write wrappers
#define extDigitalRead(IO) digitalRead(IO)
+145
View File
@@ -0,0 +1,145 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2019 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/>.
*
*/
/**
* The PWM module is only used to generate interrupts at specified times. It
* is NOT used to directly toggle pins. The ISR writes to the pin assigned to
* that interrupt.
*
* All PWMs use the same repetition rate. The G2 needs about 10KHz min in order to
* not have obvious ripple on the Vref signals.
*
* The data structures are setup to minimize the computation done by the ISR which
* minimizes ISR execution time. Execution times are 0.8 to 1.1 microseconds.
*
* FIve PWM interrupt sources are used. Channel 0 sets the base period. All Vref
* signals are set active when this counter overflows and resets to zero. The compare
* values in channels 1-4 are set to give the desired duty cycle for that Vref pin.
* When counter 0 matches the compare value then that channel generates an interrupt.
* The ISR checks the source of the interrupt and sets the corresponding pin inactive.
*
* Some jitter in the Vref signal is OK so the interrupt priority is left at its default value.
*/
#include "../../../inc/MarlinConfig.h"
#if MB(PRINTRBOARD_G2)
#include "G2_PWM.h"
volatile uint32_t *SODR_A = &PIOA->PIO_SODR,
*SODR_B = &PIOB->PIO_SODR,
*CODR_A = &PIOA->PIO_CODR,
*CODR_B = &PIOB->PIO_CODR;
PWM_map ISR_table[NUM_PWMS] = PWM_MAP_INIT;
void Stepper::digipot_init() {
OUT_WRITE(MOTOR_CURRENT_PWM_X_PIN, 0); // init pins
OUT_WRITE(MOTOR_CURRENT_PWM_Y_PIN, 0);
OUT_WRITE(MOTOR_CURRENT_PWM_Z_PIN, 0);
OUT_WRITE(MOTOR_CURRENT_PWM_E_PIN, 0);
#define WPKEY (0x50574D << 8) // “PWM” in ASCII
#define WPCMD_DIS_SW 0 // command to disable Write Protect SW
#define WPRG_ALL (PWM_WPCR_WPRG0 | PWM_WPCR_WPRG1 | PWM_WPCR_WPRG2 | PWM_WPCR_WPRG3 | PWM_WPCR_WPRG4 | PWM_WPCR_WPRG5) // all Write Protect Groups
#define PWM_CLOCK_F F_CPU / 1000000UL // set clock to 1MHz
PMC->PMC_PCER1 = PMC_PCER1_PID36; // enable PWM controller clock (disabled on power up)
PWM->PWM_WPCR = WPKEY | WPRG_ALL | WPCMD_DIS_SW; // enable setting of all PWM registers
PWM->PWM_CLK = PWM_CLOCK_F; // enable CLK_A and set it to 1MHz, leave CLK_B disabled
PWM->PWM_CH_NUM[0].PWM_CMR = 0b1011; // set channel 0 to Clock A input & to left aligned
PWM->PWM_CH_NUM[1].PWM_CMR = 0b1011; // set channel 1 to Clock A input & to left aligned
PWM->PWM_CH_NUM[2].PWM_CMR = 0b1011; // set channel 2 to Clock A input & to left aligned
PWM->PWM_CH_NUM[3].PWM_CMR = 0b1011; // set channel 3 to Clock A input & to left aligned
PWM->PWM_CH_NUM[4].PWM_CMR = 0b1011; // set channel 4 to Clock A input & to left aligned
PWM->PWM_CH_NUM[0].PWM_CPRD = PWM_PERIOD_US; // set channel 0 Period
PWM->PWM_IER2 = PWM_IER1_CHID0; // generate interrupt when counter0 overflows
PWM->PWM_IER2 = PWM_IER2_CMPM0 | PWM_IER2_CMPM1 | PWM_IER2_CMPM2 | PWM_IER2_CMPM3 | PWM_IER2_CMPM4; // generate interrupt on compare event
PWM->PWM_CMP[1].PWM_CMPV = 0x010000000LL | G2_VREF_COUNT(G2_VREF(motor_current_setting[0])); // interrupt when counter0 == CMPV - used to set Motor 1 PWM inactive
PWM->PWM_CMP[2].PWM_CMPV = 0x010000000LL | G2_VREF_COUNT(G2_VREF(motor_current_setting[0])); // interrupt when counter0 == CMPV - used to set Motor 2 PWM inactive
PWM->PWM_CMP[3].PWM_CMPV = 0x010000000LL | G2_VREF_COUNT(G2_VREF(motor_current_setting[1])); // interrupt when counter0 == CMPV - used to set Motor 3 PWM inactive
PWM->PWM_CMP[4].PWM_CMPV = 0x010000000LL | G2_VREF_COUNT(G2_VREF(motor_current_setting[2])); // interrupt when counter0 == CMPV - used to set Motor 4 PWM inactive
PWM->PWM_CMP[1].PWM_CMPM = 0x0001; // enable compare event
PWM->PWM_CMP[2].PWM_CMPM = 0x0001; // enable compare event
PWM->PWM_CMP[3].PWM_CMPM = 0x0001; // enable compare event
PWM->PWM_CMP[4].PWM_CMPM = 0x0001; // enable compare event
PWM->PWM_SCM = PWM_SCM_UPDM_MODE0 | PWM_SCM_SYNC0 | PWM_SCM_SYNC1 | PWM_SCM_SYNC2 | PWM_SCM_SYNC3 | PWM_SCM_SYNC4; // sync 1-4 with 0, use mode 0 for updates
PWM->PWM_ENA = PWM_ENA_CHID0 | PWM_ENA_CHID1 | PWM_ENA_CHID2 | PWM_ENA_CHID3 | PWM_ENA_CHID4; // enable the channels used by G2
PWM->PWM_IER1 = PWM_IER1_CHID0 | PWM_IER1_CHID1 | PWM_IER1_CHID2 | PWM_IER1_CHID3 | PWM_IER1_CHID4; // enable interrupts for the channels used by G2
NVIC_EnableIRQ(PWM_IRQn); // Enable interrupt handler
NVIC_SetPriority(PWM_IRQn, NVIC_EncodePriority(0, 10, 0)); // normal priority for PWM module (can stand some jitter on the Vref signals)
}
void Stepper::digipot_current(const uint8_t driver, const int16_t current) {
if (!(PWM->PWM_CH_NUM[0].PWM_CPRD == PWM_PERIOD_US)) digipot_init(); // Init PWM system if needed
switch (driver) {
case 0: PWM->PWM_CMP[1].PWM_CMPVUPD = 0x010000000LL | G2_VREF_COUNT(G2_VREF(current)); // update X & Y
PWM->PWM_CMP[2].PWM_CMPVUPD = 0x010000000LL | G2_VREF_COUNT(G2_VREF(current));
PWM->PWM_CMP[1].PWM_CMPMUPD = 0x0001; // enable compare event
PWM->PWM_CMP[2].PWM_CMPMUPD = 0x0001; // enable compare event
PWM->PWM_SCUC = PWM_SCUC_UPDULOCK; // tell the PWM controller to update the values on the next cycle
break;
case 1: PWM->PWM_CMP[3].PWM_CMPVUPD = 0x010000000LL | G2_VREF_COUNT(G2_VREF(current)); // update Z
PWM->PWM_CMP[3].PWM_CMPMUPD = 0x0001; // enable compare event
PWM->PWM_SCUC = PWM_SCUC_UPDULOCK; // tell the PWM controller to update the values on the next cycle
break;
default:PWM->PWM_CMP[4].PWM_CMPVUPD = 0x010000000LL | G2_VREF_COUNT(G2_VREF(current)); // update E
PWM->PWM_CMP[4].PWM_CMPMUPD = 0x0001; // enable compare event
PWM->PWM_SCUC = PWM_SCUC_UPDULOCK; // tell the PWM controller to update the values on the next cycle
break;
}
}
volatile uint32_t PWM_ISR1_STATUS, PWM_ISR2_STATUS;
void PWM_Handler() {
PWM_ISR1_STATUS = PWM->PWM_ISR1;
PWM_ISR2_STATUS = PWM->PWM_ISR2;
if (PWM_ISR1_STATUS & PWM_IER1_CHID0) { // CHAN_0 interrupt
*ISR_table[0].set_register = ISR_table[0].write_mask; // set X to active
*ISR_table[1].set_register = ISR_table[1].write_mask; // set Y to active
*ISR_table[2].set_register = ISR_table[2].write_mask; // set Z to active
*ISR_table[3].set_register = ISR_table[3].write_mask; // set E to active
}
else {
if (PWM_ISR2_STATUS & PWM_IER2_CMPM1) *ISR_table[0].clr_register = ISR_table[0].write_mask; // set X to inactive
if (PWM_ISR2_STATUS & PWM_IER2_CMPM2) *ISR_table[1].clr_register = ISR_table[1].write_mask; // set Y to inactive
if (PWM_ISR2_STATUS & PWM_IER2_CMPM3) *ISR_table[2].clr_register = ISR_table[2].write_mask; // set Z to inactive
if (PWM_ISR2_STATUS & PWM_IER2_CMPM4) *ISR_table[3].clr_register = ISR_table[3].write_mask; // set E to inactive
}
return;
}
#endif // PRINTRBOARD_G2
@@ -1,6 +1,6 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
@@ -63,7 +63,7 @@ extern PWM_map ISR_table[NUM_PWMS];
extern uint32_t motor_current_setting[3];
#define IR_BIT(p) (WITHIN(p, 0, 3) ? (p) : (p) + 4)
#define COPY_ACTIVE_TABLE() do{ LOOP_L_N(i, 6) work_table[i] = active_table[i]; }while(0)
#define COPY_ACTIVE_TABLE() do{ for (uint8_t i = 0; i < 6 ; i++) work_table[i] = active_table[i]; }while(0)
#define PWM_MR0 19999 // base repetition rate minus one count - 20mS
#define PWM_PR 24 // prescaler value - prescaler divide by 24 + 1 - 1 MHz output
@@ -1,6 +1,6 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
@@ -1,6 +1,6 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
@@ -1,6 +1,6 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
@@ -1,6 +1,6 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
@@ -1,6 +1,6 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
@@ -55,7 +55,3 @@
#if ENABLED(FAST_PWM_FAN)
#error "FAST_PWM_FAN is not yet implemented for this platform."
#endif
#if HAS_TMC_SW_SERIAL
#error "TMC220x Software Serial is not supported on this platform."
#endif
@@ -1,7 +1,7 @@
/**
* Marlin 3D Printer Firmware
*
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2016 Bob Cousins bobcousins42@googlemail.com
* Copyright (c) 2015-2016 Nico Tonnhofer wurstnase.reprap@gmail.com
* Copyright (c) 2016 Victor Perez victor_pv@hotmail.com
@@ -22,21 +22,27 @@
*/
#ifdef ARDUINO_ARCH_SAM
#include "../../inc/MarlinConfigPre.h"
#if ENABLED(EEPROM_SETTINGS)
#include "../../inc/MarlinConfig.h"
#include "../shared/persistent_store_api.h"
#if USE_WIRED_EEPROM
#if !defined(E2END) && NONE(I2C_EEPROM, SPI_EEPROM)
#define E2END 0xFFF // Default to Flash emulated EEPROM size (EepromEmulation_Due.cpp)
#endif
/**
* PersistentStore for Arduino-style EEPROM interface
* with simple implementations supplied by Marlin.
*/
extern void eeprom_flush();
#include "../shared/eeprom_if.h"
#include "../shared/eeprom_api.h"
bool PersistentStore::access_start() { return true; }
size_t PersistentStore::capacity() { return E2END + 1; }
bool PersistentStore::access_start() { return true; }
bool PersistentStore::access_finish() { return true; }
bool PersistentStore::access_finish() {
#if NONE(I2C_EEPROM, SPI_EEPROM)
eeprom_flush();
#endif
return true;
}
bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, uint16_t *crc) {
while (size--) {
@@ -48,7 +54,7 @@ bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, ui
eeprom_write_byte(p, v);
delay(2);
if (eeprom_read_byte(p) != v) {
SERIAL_ECHO_MSG(STR_ERR_EEPROM_WRITE);
SERIAL_ECHO_MSG(MSG_ERR_EEPROM_WRITE);
return true;
}
}
@@ -70,5 +76,7 @@ bool PersistentStore::read_data(int &pos, uint8_t* value, size_t size, uint16_t
return false;
}
#endif // USE_WIRED_EEPROM
size_t PersistentStore::capacity() { return E2END + 1; }
#endif // EEPROM_SETTINGS
#endif // ARDUINO_ARCH_SAM
@@ -1,6 +1,6 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -1,6 +1,6 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
@@ -1,7 +1,7 @@
/**
* Marlin 3D Printer Firmware
*
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2016 Bob Cousins bobcousins42@googlemail.com
* Copyright (c) 2015-2016 Nico Tonnhofer wurstnase.reprap@gmail.com
*
@@ -1,7 +1,7 @@
/**
* Marlin 3D Printer Firmware
*
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2016 Bob Cousins bobcousins42@googlemail.com
*
* This program is free software: you can redistribute it and/or modify
@@ -444,8 +444,8 @@ typedef struct
#define ENABLE 1
#ifndef __cplusplus
#ifndef __bool_true_false_are_defined
#define false (1==0)
#define true (1==1)
#define false 0
#define true 1
#endif
#endif
#ifndef PASS
@@ -48,7 +48,9 @@
#define _CONF_USB_H_
#undef UNUSED /* To avoid a macro clash as macros.h already defines it */
#include "../../../inc/MarlinConfigPre.h"
#include "../../../core/macros.h" /* For ENABLED()/DISABLED() */
#include "../../../core/boards.h" /* For MB() */
#include "../../../../Configuration.h" /* For CUSTOM_MACHINE_NAME definition - We just need the name, no C++ allowed! */
#include "compiler.h"
/**
@@ -57,6 +59,8 @@
*/
//! Device definition (mandatory)
#define USB_DEVICE_VENDOR_ID 0x03EB /* ATMEL VID */
#define USB_DEVICE_PRODUCT_ID 0x2424 /* MSC / CDC */
#define USB_DEVICE_MAJOR_VERSION 1
#define USB_DEVICE_MINOR_VERSION 0
#define USB_DEVICE_POWER 100 // Consumption on Vbus line (mA)
@@ -66,6 +70,15 @@
// (USB_CONFIG_ATTR_REMOTE_WAKEUP|USB_CONFIG_ATTR_SELF_POWERED)
// (USB_CONFIG_ATTR_REMOTE_WAKEUP|USB_CONFIG_ATTR_BUS_POWERED)
//! USB Device string definitions (Optional)
#define USB_DEVICE_MANUFACTURE_NAME "marlinfw.org"
#ifdef CUSTOM_MACHINE_NAME
#define USB_DEVICE_PRODUCT_NAME CUSTOM_MACHINE_NAME
#else
#define USB_DEVICE_PRODUCT_NAME "3D Printer"
#endif
#define USB_DEVICE_SERIAL_NAME "123985739853"
/**
* Device speeds support
* Low speed not supported by CDC and MSC
@@ -78,6 +91,10 @@
//! To define a Full speed device
//#define USB_DEVICE_FULL_SPEED
#if MB(ARCHIM1)
#define USB_DEVICE_FULL_SPEED
#endif
//! To authorize the High speed
#ifndef USB_DEVICE_FULL_SPEED
#if (UC3A3||UC3A4)

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