Compare commits

..

1677 Commits

Author SHA1 Message Date
Scott Lahteine
1dfa6cbc80 Marlin 2.0.8.1 2021-05-15 15:22:03 -05:00
Luu Lac
e3998dc3df M154 Position Auto-Report (#18427)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-05-15 15:06:59 -05:00
Moonglow
b6e1838fa6 Fix MKS UI missing font select condition (#21905) 2021-05-15 15:05:53 -05:00
ondrada
908caba735 Fix G29_RETRY_AND_RECOVER dependency (#21907)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-05-15 15:05:53 -05:00
Scott Lahteine
121f3b1096 🐛 Fix RR collision with MM (#21902) 2021-05-15 15:05:53 -05:00
Jamie
9e373617dc Instant Freeze/Resume Function (#17462)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-05-15 15:05:53 -05:00
ellensp
5298fa357c Fix nextion compile error (#21884) 2021-05-15 15:05:53 -05:00
Alexander D. Kanevskiy
2c15bc5d39 Fix compilation failure in M1001 (#21897) 2021-05-15 15:05:53 -05:00
Scott Lahteine
159f9c85a6 🔧 Improve SD_DETECT_STATE default (#21885) 2021-05-15 15:05:53 -05:00
Victor Oliveira
1d1f318752 Update Robin Pro TFT Pins (#21879, #21900) 2021-05-15 15:05:53 -05:00
Keith Bennett
40a9d82ae9 BigTreeTech Octopus (STM32F446ZET6) (#21826, #21882, #21883, #21901) 2021-05-15 15:05:53 -05:00
Elton Law
72c28d3462 🐛 Fix G5 IJ with Motion Mode (#21858) 2021-05-15 15:05:53 -05:00
vyacheslav-shubin
ed224ca7d8 🩹 G60-G61 Save E position (#21810) 2021-05-15 15:05:53 -05:00
Scott Lahteine
02e131b5fd 🎨 Misc. code cleanup 2021-05-15 15:05:53 -05:00
Scott Lahteine
5afb5e03b0 🎨 Additional utility macros 2021-05-15 15:05:53 -05:00
Scott Lahteine
52a23b969b 🎨 Better error message for bad array sizes 2021-05-15 15:05:53 -05:00
Scott Lahteine
afcc7ea22b Synchronize tests and actions 2021-05-15 15:05:53 -05:00
Victor Oliveira
c463b81819 BTT SKR Mini E3 for HAL/STM32 (#21488) 2021-05-15 15:05:53 -05:00
Scott Lahteine
f688c7d20d Simplify macro expansion with recursion (#21859) 2021-05-15 15:05:53 -05:00
Scott Lahteine
0167bba371 Fix L64xx init for Z4 2021-05-15 15:05:53 -05:00
Scott Lahteine
7004fb702d Use adafruit/Adafruit NeoPixel@~1.8.0 2021-05-15 15:05:53 -05:00
ellensp
2f2dd3322d update FLSUN_HISPEED env to flsun_hispeedv1 (#21510) 2021-05-15 15:05:53 -05:00
tobuh
31d3a781a8 Fix and improve Power-Loss Recovery (#21779, #21894)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-05-15 15:05:53 -05:00
Keith Bennett
a7fd6b68be Unify BTT Motor Expansion Options (#21823) 2021-05-15 15:05:53 -05:00
Scott Lahteine
6a1e78e614 Optimize G-code flag parameters (#21849) 2021-05-15 15:05:53 -05:00
charlespick
770edea577 Update Advanced Pause description (#21829)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-05-15 15:05:53 -05:00
Victor Oliveira
08a51b2820 🐛 Fix Lerdge USB Flash Drive envs (#21847) 2021-05-15 15:05:53 -05:00
BigTreeTech
ac11c689f7 Capacitive Touch Screen (GT911) for SKR SE BX (#21843)
Co-authored-by: Msq001 <alansayyeah@gmail.com>
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-05-15 15:05:53 -05:00
Scott Lahteine
f3e199fcd2 Fix TFT typo 2021-05-15 15:05:53 -05:00
Scott Lahteine
ffcbe68570 Move temp errors calling kill() out of ISR (#21832) 2021-05-15 15:05:53 -05:00
sanek88lbl
06e965e29c Lerdge K EEPROM and TFT (#21812)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-05-15 15:05:53 -05:00
Antonino Di Guardo
e865cc0249 Always prompt in M125 if host-prompt (as with Ext UI) (#21828)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-05-15 15:05:53 -05:00
Scott Lahteine
5d8d03da03 Update SKR 1.3 touch pins 2021-05-15 15:05:53 -05:00
Scott Lahteine
0b3da61ac7 TFT pins for BTT GTR V1
Proposed in #21772
2021-05-15 15:05:53 -05:00
Scott Lahteine
a24eb691fb Better opt_set comment of old val 2021-05-15 15:05:53 -05:00
Scott Lahteine
c5c8ef436c Signal SD completion later (#21840) 2021-05-15 15:05:53 -05:00
Adrian DC
83309c1ac8 Fix E3V2 Control Menu icon/text order (#21838)
Fixes #21837
2021-05-15 15:05:53 -05:00
charlespick
ec2f4f512e Active MMU slot indicator (#21842) 2021-05-15 15:05:53 -05:00
Scott Lahteine
ad991734c4 Add and apply REPEAT_1 macro 2021-05-15 15:05:53 -05:00
Scott Lahteine
03184e1c31 Distinct enumerated MF states 2021-05-15 15:05:53 -05:00
Scott Lahteine
cca5844ba9 Misc. code cleanup 2021-05-15 15:05:53 -05:00
Scott Lahteine
45d3866f97 Misc Power Loss cleanup 2021-05-15 15:05:53 -05:00
Scott Lahteine
94edfc0a8f Let M421 C select any point
Fixing #21147
2021-05-15 15:05:53 -05:00
ellensp
9fa9eebe51 Support a third serial port (#21784) 2021-05-15 15:05:53 -05:00
Scott Lahteine
4518506559 Serial and pins debug cleanup
- Rename some AVR / DUE / ESP32 serial types
- Reduce two #error to one static_assert
- Update AVR/DUE error messages
2021-05-15 15:05:53 -05:00
Scott Lahteine
c1fb84e1a6 Reformat features.ini 2021-05-15 15:05:53 -05:00
Scott Lahteine
ea34aa2d3e Add MKS_LCD12864B 2021-05-15 15:05:53 -05:00
sanek88lbl
d6cb657c85 Patches for CASE_LIGHT_USE_RGB_LED (#21811)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-05-15 15:05:53 -05:00
Luu Lac
0df9f30f14 TFT SPI for BTT SKR v1.3 (#21794) 2021-05-15 15:05:53 -05:00
Scott Lahteine
d3e902af76 Move ExtUI subfolders up a level (#21820) 2021-05-15 15:05:53 -05:00
Vert
0b3420a012 UBL Mesh Wizard (#21556, #21791)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-05-15 15:05:52 -05:00
ellensp
5cf0975913 Simplify / undef extra endstops (#21808)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-05-15 15:05:52 -05:00
Scott Lahteine
db90a180c2 Cleanup, hex formatting, includes 2021-05-15 15:05:52 -05:00
Scott Lahteine
d174d610bd Temperature cleanup 2021-05-15 15:05:52 -05:00
Scott Lahteine
e69e56ea52 Use ststm32@~12.1 2021-05-15 15:05:52 -05:00
Scott Lahteine
0c66c713b6 Debounce for Power-Loss pin 2021-05-15 15:05:52 -05:00
Scott Lahteine
95230c9792 Use SERIAL_ECHOLNPAIR for resend 2021-05-15 15:05:52 -05:00
Scott Lahteine
7eea0ac6de Tweak SKR pins comments 2021-05-15 15:05:52 -05:00
Victor Oliveira
b19a1f602a Fix multi volume config typo (#21880) 2021-05-14 23:21:41 -05:00
Giuliano Zaro
789235b925 🐛 Fix excessive MMU2 timeout (#21855) 2021-05-14 21:24:07 -05:00
Scott Lahteine
00722c3294 📝 Fix version reference 2021-05-12 02:51:25 -05:00
Scott Lahteine
cb4e3889ec Update Chart.js to 2.9.4
Addressing CVE-2020-7746
2021-05-10 22:57:56 -05:00
hannesweisbach
76ec7040f1 Allow undefined [XYZ]_ENABLE_PIN (for sensitive pins) (#21801) 2021-05-06 01:46:39 -05:00
Keith Bennett
b41365b495 Split up SKR V2 Rev A / B (#21805) 2021-05-06 01:46:37 -05:00
ManuelMcLure
6e18af6f81 Only look for target disk during Upload (#21804) 2021-05-06 01:46:36 -05:00
Scott Lahteine
12bc28bc8c Echo LCD message to serial in kill 2021-05-06 01:46:34 -05:00
ellensp
3fa3be1f31 Fix MMU2 compile with include (#21809) 2021-05-06 01:43:44 -05:00
Scott Lahteine
a468701511 Cleanup, hex formatting 2021-05-05 07:34:39 -05:00
Scott Lahteine
f67cd07328 Pause and PLR refinements
- Move `pause_print` argument `unload_length` after `show_lcd` so it's next to `DXC_ARGS`.
- Tweak the position and conditions of PLR save in `resume_print`.
- Add `Nozzle::park_mode_0_height` accessor to get the raised Z height.
- Remove extraneous `recovery.save` from `dwin.cpp`.
- Move PLR `info.volumetric...` to `flag`.
- Remove some G-code spaces in PLR code
- Document `pause.h` function declarations.
2021-05-05 07:31:48 -05:00
Scott Lahteine
5cbdf51b4a Apply SBI/CBI/TEST in HAL 2021-05-05 07:31:47 -05:00
Victor Oliveira
7378afc6d8 Prevent watchdog reset in setup() (#21776)
Cause `manage_heaters` to only reset the watchdog and return until `setup()` is completed.

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

Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-05-01 20:26:03 -05:00
ellensp
8abef30a75 Fix SDCARD_CONNECTION default for BTT SKR (#21755) 2021-05-01 20:24:53 -05:00
Scott Lahteine
158b26b875 Fix undefined abl_points 2021-05-01 20:23:33 -05:00
Scott Lahteine
d92decb774 Marlin 2.0.8 2021-04-30 08:31:33 -05:00
Scott Lahteine
af9d3c027e MKS Robin flash address 2021-04-30 08:31:33 -05:00
Scott Lahteine
47c148628e Restore workflows 2021-04-30 08:22:01 -05:00
Nikolay March
e7c2a3a1da Sanity-check for COREnn backlash (#21731) 2021-04-30 04:54:10 -05:00
lujios
d32575ee74 Fix compile with DISTINCT_E_FACTORS + SLIM_LCD_MENUS (#21733)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-30 04:54:08 -05:00
Scott Lahteine
f6b0398ca8 Heater error status 2021-04-30 03:32:32 -05:00
Keith Bennett
d5c6762332 Fix BTT E3 RRF and SKR V2 (Generic PIO) (#21741)
Follow-up to #21655
2021-04-30 03:32:31 -05:00
David
a1154b226d Fix Thermal Runaway false-alarm in M303, add HeaterWatch::check (#21743)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-30 03:32:30 -05:00
Scott Lahteine
731a018905 Silence warning in gcode_D 2021-04-30 03:32:28 -05:00
Scott Lahteine
f45f4a8d54 Merge branch 'bugfix_no_dates' into prepare_release_2073 2021-04-29 08:50:28 -05:00
David
e306abaf8a Color UI Move Screen for 320x240 TFT (#21708) 2021-04-29 08:45:20 -05:00
Keith Bennett
bc28aed5b1 Clean up TFT comments (#21723) 2021-04-29 08:45:20 -05:00
Keith Bennett
93afb02994 BTT SKR V2 probe and chamber pins (#21717) 2021-04-29 08:45:20 -05:00
Scott Lahteine
0db64af9b2 Rename, clean up boards/variants (#21655)
* Consolidate variant scripts
* Rename Marlin-local boards
* Simplify variants where possible
* Rename variants
* CHITU_F103 and MEEB_3DP: Maple platform `platformio-build-stm32f1.py` uses the 'board' name, not 'board_build.variant' so folder names match 'board' and not `board_build.variant`.
2021-04-29 08:45:20 -05:00
Keith Bennett
4da3f45f41 BTT SKR V2.0 / Stepper Driver Anti-Reverse Protection (#21503) 2021-04-29 08:45:20 -05:00
Adrian DC
8a8aeba17c Fix E3V2 Advanced Settings with PLR off (#21700)
Fixes #21534
2021-04-29 08:45:20 -05:00
Marcio T
e640d9246d FTDI EVE Touch UI fixes (#21706) 2021-04-29 08:45:20 -05:00
ellensp
81d7a6b81d Use temp_info_t for temp_redundant (#21715)
Fixes #21712

Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-04-29 08:45:20 -05:00
Victor Oliveira
08537dc891 Remove compiler flag merge-constants (#21711) 2021-04-29 08:45:20 -05:00
Sebastiaan Dammann
c2741affe9 Make Cancel Objects reporting optional (#21698) 2021-04-29 08:45:20 -05:00
hartmannathan
301cc85fec typo (#21710) 2021-04-29 08:45:20 -05:00
Vert
3433bfc3bd Help users confused by "bed size" (#21714) 2021-04-29 08:45:20 -05:00
Keith Bennett
62ec696cae Fix "continuous" typo (#21701) 2021-04-29 08:45:20 -05:00
Scott Lahteine
0d0ec3ec89 Prettier output from opt scripts (#21707) 2021-04-29 08:45:20 -05:00
Vert
1d4c2454bc Fix relocated LiquidCrystal library (#21699)
Followup to 770e539859
2021-04-29 08:45:20 -05:00
Scott Lahteine
0fb606fa0a whitespace 2021-04-29 08:45:20 -05:00
Scott Lahteine
0ec489d6f2 Fix HMI_HomeOffN axis
Followup to #21534
2021-04-29 08:45:20 -05:00
pinchies
7e3cf82a40 Fix usage, commentary of MANUAL_PROBE_START_Z, Z_AFTER_PROBING (#21692)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:20 -05:00
Miguel Risco-Castillo
84e8d4c603 E3V2 DWIN Advanced Settings (#21534)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:20 -05:00
Scott Lahteine
8373bd1b71 Use Adafruit LiquidCrystal 2021-04-29 08:45:20 -05:00
Scott Lahteine
6202b2d324 Remove extra platform_packages line 2021-04-29 08:45:20 -05:00
Scott Lahteine
e46f81af22 Add INO to .editorconfig 2021-04-29 08:45:20 -05:00
Vert
888cabff27 Sanity check MIXING_EXTRUDER + DISTINCT_E_FACTORS (#21689) 2021-04-29 08:45:20 -05:00
Scott Lahteine
c6b6437761 Drop Deviot workaround 2021-04-29 08:45:20 -05:00
Scott Lahteine
1830629472 Use temperature accessors 2021-04-29 08:45:20 -05:00
Nikolay March
12ca73947b Backlash Compensation for COREnn (#21612)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-04-29 08:45:20 -05:00
fedetony
c39c17c1b5 Soft Reset via Serial or post-kill button click (#21652)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:20 -05:00
Ramiro Polla
27a26fcfeb Avoid + 0.0f in menu items (#21642) 2021-04-29 08:45:20 -05:00
Malderin
48d5fae514 Fix Bed Tramming 5th point (#21646) 2021-04-29 08:45:20 -05:00
Scott Lahteine
3153080301 Move last bootscreen delay to end of setup (#21665) 2021-04-29 08:45:20 -05:00
Ryan Finnie
309d82b6aa Clean up / improve generate_version script (#21674) 2021-04-29 08:45:20 -05:00
vyacheslav-shubin
b9715c5a03 ExtUI::onPostprocessSettings (#21683) 2021-04-29 08:45:19 -05:00
Sebastiaan Dammann
3ae0557258 Prevent extrusion on M600 un-park (#21670)
Fixes #21669
2021-04-29 08:45:19 -05:00
unknownlamer
02b6c0e881 MCP4451 Digipot Support for Azteeg X5 GT (#21680) 2021-04-29 08:45:19 -05:00
ellensp
cf5ea1ccdc Fix MP_SCARA compile (#21686) 2021-04-29 08:45:19 -05:00
Jim Hyslop
011a344500 Don't display service prompt unless needed (#21654) 2021-04-29 08:45:19 -05:00
Victor Oliveira
1570005683 Fix Celsius precision, current temp accessors (#21678) 2021-04-29 08:45:19 -05:00
Scott Lahteine
899fcf51e6 Add whole-degree accessors, simplify some temperature-related features (#21685) 2021-04-29 08:45:19 -05:00
Scott Lahteine
7d5714fedd Let compiler do Temperature inlining 2021-04-29 08:45:19 -05:00
Scott Lahteine
9f22aaea2f Clean up formatting, wrap macros 2021-04-29 08:45:19 -05:00
Scott Lahteine
4ab19e7882 Update temperature types 2021-04-29 08:45:19 -05:00
Scott Lahteine
ecc419fce0 Nextion cleanup 2021-04-29 08:45:19 -05:00
Scott Lahteine
d5e62a8255 Use configured temp window for Chiron 2021-04-29 08:45:19 -05:00
BigTreeTech
5859860a02 Enable Purge More / Resume with EP + Host Prompt (#21671)
Co-authored-by: Msq001 <alansayyeah@gmail.com>
2021-04-29 08:45:19 -05:00
Mike La Spina
b8aeaa3bf4 M10-M11 Air Evacuation for Spindle/Laser (#21668)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:19 -05:00
Scott Lahteine
a866a8f2fb Fix Chiron typos, file nav 2021-04-29 08:45:19 -05:00
Scott Lahteine
214324aaa2 Fix mfconfig 'copying' message 2021-04-29 08:45:19 -05:00
Axel Sepúlveda
181e1280af Fix Grand Central SD dependency (#21660)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-04-29 08:45:19 -05:00
Scott Lahteine
2316fb2d05 Extra dependency script logging 2021-04-29 08:45:19 -05:00
Scott Lahteine
81ab756759 Changes supporting "Prussia3D" MK3 (#21617) 2021-04-29 08:45:19 -05:00
Scott Lahteine
c50a9ef055 Update mftest help 2021-04-29 08:45:19 -05:00
Scott Lahteine
3d3c0591e8 Trigorilla Pro: Allow for swapped Z-stops 2021-04-29 08:45:19 -05:00
Scott Lahteine
e0f60c3811 Update realtime, DLP comments 2021-04-29 08:45:19 -05:00
Nick
59e55ea6fb Support new style Anycubic Chiron TFT (#21597) 2021-04-29 08:45:19 -05:00
Scott Lahteine
df36d759fc Skip preflight checks only (#21658)
Followup to e8af38cc2d
2021-04-29 08:45:19 -05:00
Scott Lahteine
fe24aa2254 More detailed serial config error 2021-04-29 08:45:19 -05:00
Scott Lahteine
1a44270284 Fix CHDK warning 2021-04-29 08:45:19 -05:00
Scott Lahteine
a860f7f5f7 BTT E3 RRF Support 2021-04-29 08:45:19 -05:00
Scott Lahteine
e5fc3f3a62 Disable assert() by default 2021-04-29 08:45:19 -05:00
Scott Lahteine
276fd6b077 Misc. pio cleanup 2021-04-29 08:45:19 -05:00
Scott Lahteine
27754a76dc Skip scripts during 'platformio init' (#21643) 2021-04-29 08:45:19 -05:00
fedetony
b586b64119 Fix Realtime Reporting with G-code Motion Modes (#21630) 2021-04-29 08:45:19 -05:00
Scott Lahteine
9c86eef98b Leave Hybrid Threshold as-is for now
Reverting 253ee0c407
2021-04-29 08:45:19 -05:00
Scott Lahteine
db054ba757 Better chopper defaults 2021-04-29 08:45:19 -05:00
MangaValk
2e726c46c8 Tool sensors (#17239) 2021-04-29 08:45:19 -05:00
Scott Lahteine
791edd0cec Use itoa for sprintf int 2021-04-29 08:45:19 -05:00
Scott Lahteine
e4760ea2b0 Drop extraneous inlines 2021-04-29 08:45:19 -05:00
Scott Lahteine
61ee5b1d76 Init pwm_thrs to 0 when HYBRID_THRESHOLD is off (#21623) 2021-04-29 08:45:19 -05:00
Luca Zimmermann
b6ce7a9f74 Always swap with PRIME_FIRST_USED disabled (#21622) 2021-04-29 08:45:19 -05:00
Scott Lahteine
99fa641a24 SDIO cleanup 2021-04-29 08:45:19 -05:00
Scott Lahteine
c67e115f61 Revert experimental NAN patch
Hold changes from #21575 (24a095c) for more testing.
2021-04-29 08:45:19 -05:00
fedetony
027a5a872d Realtime Reporting, S000, P000, R000 (#19330) 2021-04-29 08:45:19 -05:00
Scott Lahteine
973f65f80c Use celsius_t for temperature accessors 2021-04-29 08:45:19 -05:00
Sola
643f04681c Fix MKS H43 compile (#21619) 2021-04-29 08:45:19 -05:00
Andrea
713e606b28 Fix Custom Menu audio and return (#21616) 2021-04-29 08:45:19 -05:00
Scott Lahteine
ce18713f57 Add E1 for RAMPS 1.4.4 / AGC 2021-04-29 08:45:19 -05:00
XDA-Bam
761d283d6d Space-separate scrolling Status Message (#21523)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-04-29 08:45:19 -05:00
Scott Lahteine
4512bcd72c Use sq 2021-04-29 08:45:19 -05:00
Scott Lahteine
47dbea9334 Fix long acceleration overflow 2021-04-29 08:45:19 -05:00
Scott Lahteine
326b1c1225 Misc. formatting, serial out 2021-04-29 08:45:19 -05:00
Marcio T
e26eebfb2f Enhance and fix FTDI Eve Touch UI (#21607) 2021-04-29 08:45:19 -05:00
Victor Oliveira
107dd313bd Multi-Volume. Select Media for LVGL (#21344) 2021-04-29 08:45:19 -05:00
gmarsh
02a99e3f0b Fix and improve Power Monitor (#21551) 2021-04-29 08:45:19 -05:00
Scott Lahteine
896123513e Followup to sprintf cleanup 2021-04-29 08:45:19 -05:00
Scott Lahteine
562f3e43bc Add fan percent accessors 2021-04-29 08:45:19 -05:00
Scott Lahteine
ed477abbd5 More MKS UI sprintf 2021-04-29 08:45:18 -05:00
Veisen
21518fbd4e Fix ANYCUBIC_LCD_I3MEGA compile (#21585) 2021-04-29 08:45:18 -05:00
Scott Lahteine
52f928700a Remove extraneous MKS UI sprintf 2021-04-29 08:45:18 -05:00
pinchies
c96340980a Fix Flash size (512KB) for STM32F103ZE (#21590) 2021-04-29 08:45:18 -05:00
ellensp
8384582116 Fix Max Temperature not enforced (#21592) 2021-04-29 08:45:18 -05:00
Scott Lahteine
ac5b39b354 Blocking move followup 2021-04-29 08:45:18 -05:00
Giuliano Zaro
0f7161785e Chamber Fan mode 3 (#21594) 2021-04-29 08:45:18 -05:00
Scott Lahteine
49fba5a82a Add 'blocking move' comments 2021-04-29 08:45:18 -05:00
espr14
fb7bdabb70 Fix Resume Print with UBL (#21564)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-04-29 08:45:18 -05:00
Scott Lahteine
5ab64708c5 Update old-style axis indexes 2021-04-29 08:45:18 -05:00
Mike La Spina
f14d0e0983 Tweak cooler / flowmeter icons (#21573) 2021-04-29 08:45:18 -05:00
Ramiro Polla
ca84e5b1f2 Add 'jump relaxing' compile flag to AVR targets (#21566) 2021-04-29 08:45:18 -05:00
Scott Lahteine
c66cbf0d69 Reduce math library code size by 3.4KB (#21575) 2021-04-29 08:45:18 -05:00
Malderin
f69ce3e02b MKS LVGL UI: Fix icon layout (#21595) 2021-04-29 08:45:18 -05:00
Scott Lahteine
2251038ab8 Clean up, update some variants 2021-04-29 08:45:18 -05:00
Scott Lahteine
42d63258e9 tick() => isr() to spotlight interrupt-time 2021-04-29 08:45:18 -05:00
Scott Lahteine
d34a143d82 EXP2_01_PIN for BTT BTT002 1.0 2021-04-29 08:45:18 -05:00
ellensp
4e9eb95830 Followup to "no status for serial::write" (#21577) 2021-04-29 08:45:18 -05:00
BigTreeTech
9a31702a75 Fix M114 E / R broken by LIN_ADVANCE (#21579) 2021-04-29 08:45:18 -05:00
Sola
34f7142323 Fix manual move with MKS H43 (#21511)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-04-29 08:45:18 -05:00
Ramiro Polla
00ea75ce82 Drop return value from Serial::write() (#21567) 2021-04-29 08:45:18 -05:00
Ramiro Polla
6d9aaf8de5 Macros to eliminate 'f + 0.0' (#21568) 2021-04-29 08:45:18 -05:00
ellensp
a82b3955bb Check for old Marlin files mixed in (#21574) 2021-04-29 08:45:18 -05:00
Victor Oliveira
c9a7fd1722 Delay U8glib init using U8glib-HAL 0.4.4 (#21496)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:18 -05:00
Scott Lahteine
1bd35072cb Fix axis char printing 2021-04-29 08:45:18 -05:00
ellensp
c8c83e9f52 Sanity Check newer Configs too (#21550)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:18 -05:00
Radim Karniš
ab2441c088 Park Magnetic Switching Toolhead at the very end (#21552) 2021-04-29 08:45:18 -05:00
BigTreeTech
2c73964b2b BTT SKR-SE-BX (STM32H743IIT6 ARM Cortex M7) and BIQU_BX_TFT70 (#21536) 2021-04-29 08:45:18 -05:00
Scott Lahteine
ee21e31a17 getHighESpeed => autotemp_task 2021-04-29 08:45:18 -05:00
Malderin
93dfd411fc Cast celsius to int for MKS LVGL UI (#21502) 2021-04-29 08:45:18 -05:00
Victor Oliveira
c197ecc99b Fix Rumba32 variant for Marlin (#21497) 2021-04-29 08:45:18 -05:00
Malderin
c2c73215b2 MKS LVGL UI: Display/edit fan percentage (#21544)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-04-29 08:45:18 -05:00
Mike La Spina
1ba0ed8121 Make DELAY_NS round up on AVR (#21546) 2021-04-29 08:45:18 -05:00
Scott Lahteine
c5ab0a66b7 write_command changes input 2021-04-29 08:45:18 -05:00
Scott Lahteine
f3510db367 Fix CardReader string args 2021-04-29 08:45:18 -05:00
Marcio T
c46c2c4f3c Touch UI Bed Mesh Screen refactor, enhancements (#21521)
- Split mesh view and edit screen into two screens
- The editor now live-updates the graphics
- Added Touch UI mesh progress feedback to `G26`
- Show positive / negative mesh values in different colors
2021-04-29 08:45:18 -05:00
vyacheslav-shubin
0b5c25aa7c Fix FAT delete of items with long name (#21528) 2021-04-29 08:45:18 -05:00
Scott Lahteine
ba5644376c misc. pointer formatting 2021-04-29 08:45:18 -05:00
InsanityAutomation
c4379db8fc Revert "Optimized string-to-number functions" (#21532)
This reverts #21484
2021-04-29 08:45:18 -05:00
InsanityAutomation
cdd2450a97 Fix Hotend-abort-on-idle Check (#21535) 2021-04-29 08:45:18 -05:00
Giuliano Zaro
84445b82e4 Update Italian language (#21537) 2021-04-29 08:45:18 -05:00
Scott Lahteine
05d7d37872 Suppress redundant serial errors 2021-04-29 08:45:18 -05:00
XDA-Bam
a8f8201c90 Update u8g / AVR display timing defaults (#21518) 2021-04-29 08:45:18 -05:00
Vert
7297cc13b0 GT2560 V3 followup (#21512) 2021-04-29 08:45:18 -05:00
Scott Lahteine
4f174afc1a Remove extraneous 'extern' hints (#21516) 2021-04-29 08:45:18 -05:00
Scott Lahteine
96bdc4c830 Requiring PIO >= 5.0.3 2021-04-29 08:45:18 -05:00
Scott Lahteine
9fbce867ee Split up platformio.ini (#21507) 2021-04-29 08:45:18 -05:00
Mike La Spina
fea4835941 Followup to Laser Flow Meter (#21498) 2021-04-29 08:45:17 -05:00
Sola
47a13263f6 MKS H43 fix, cleanup (#21500)
Followup to #21485
2021-04-29 08:45:17 -05:00
Marcio T
82e6a2ed62 G26 Hilbert Curve followup (#21480) 2021-04-29 08:45:17 -05:00
Vert
b1be96e40e Board IDs for G2560 Rev B, G2560 v4, GTM32 VD (#21499) 2021-04-29 08:45:17 -05:00
Scott Lahteine
a4d5f96e9a Replace 'const float &' with 'const_float_t' (#21505) 2021-04-29 08:45:17 -05:00
Sola
a4f1623012 MKS H43 fix, cleanup (#21485)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-04-29 08:45:17 -05:00
Scott Lahteine
fe99bb4b9b Update UBL param 2021-04-29 08:45:17 -05:00
Scott Lahteine
259115bb3f Move apply_rotation_xyz into matrix_3x3 2021-04-29 08:45:17 -05:00
Scott Lahteine
a572e2ed12 Put ABL state into a class 2021-04-29 08:45:17 -05:00
Marcio T
5ad7118aea FTDI Touch UI fix and reorganize (#21487) 2021-04-29 08:45:17 -05:00
Ramiro Polla
16af2148b9 Optimized string-to-number functions (#21484) 2021-04-29 08:45:17 -05:00
Marco van Wieringen
e787cdd1cb Fix FYSETC_S6 heaters pins (#21483)
When adding support FYSETC Spider board the S6 pins file was broken.
2021-04-29 08:45:17 -05:00
Scott Lahteine
2b0fcc79c5 Serial flags followup
Followup to #21318
2021-04-29 08:45:17 -05:00
Scott Lahteine
4e77fe50a4 Adjust microsteps alignment 2021-04-29 08:45:17 -05:00
Victor Oliveira
9902e6fb9f Fix and add STM32 SDIO DMA (#21476) 2021-04-29 08:45:17 -05:00
X-Ryl669
f18da95d38 Flags for MarlinSerial instance features (#21318) 2021-04-29 08:45:17 -05:00
Giuliano Zaro
368fcaee54 Generalize MMU (#21469) 2021-04-29 08:45:17 -05:00
Ste
badbb4a500 Align temp settings (#21329) 2021-04-29 08:45:17 -05:00
Ramiro Polla
b96c3a063f Optimize BLTouch code for size (#21477) 2021-04-29 08:45:17 -05:00
Scott Lahteine
84a2746d05 Improve uncrust script 2021-04-29 08:45:17 -05:00
Scott Lahteine
2059c6e4d0 Apply pointer formatting 2021-04-29 08:45:17 -05:00
ellensp
bf3fce3550 GT2560 Rev.A Plus Z Max Pin with BLTouch (#21375) 2021-04-29 08:45:17 -05:00
George Fu
19078966d9 FYSETC Spider board (#21458) 2021-04-29 08:45:17 -05:00
Scott Lahteine
f734f79f5b reduced verbiage 2021-04-29 08:45:17 -05:00
Malderin
627331aa68 Fix MKS LVGL UI Main screen / print buttons (#21468) 2021-04-29 08:45:17 -05:00
Scott Lahteine
3ed4503c30 Adjust mfconfig script 2021-04-29 08:45:17 -05:00
Mike La Spina
f1986545da Laser Coolant Flow Meter / Safety Shutdown (#21431)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:17 -05:00
Vert
9f48314cb4 YHCB2004 pins followup (#21472) 2021-04-29 08:45:17 -05:00
Marcio T
7c275285ea Refactor Hilbert curve. Enhance Touch UI Bed Level Screen. (#21453) 2021-04-29 08:45:17 -05:00
Leoric
4ffb95a736 MKS UI: Monitor state when idle (#21452)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:17 -05:00
Vert
943a8ebdc6 Fix for YHCB2004 (#21450) 2021-04-29 08:45:17 -05:00
Tomas Rimkus
8d73a6c4e2 Avoid watchdog reset in all wired EEPROMs (#21436)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-04-29 08:45:17 -05:00
Scott Lahteine
e817db62a4 Apply TMC UART to STM32, simplify 2021-04-29 08:45:17 -05:00
Scott Lahteine
85eb179acf Define HW serial ports needed for TMC UART (#21446) 2021-04-29 08:45:17 -05:00
Ramiro Polla
3d70b645b6 Optimize LSF for size, efficiency (#21443) 2021-04-29 08:45:17 -05:00
ldursw
c83b6217f9 Followup to SDIO patch (#21440) 2021-04-29 08:45:17 -05:00
espr14
a97f6c4c74 Endstops always on in G28 (#21441) 2021-04-29 08:45:17 -05:00
espr14
710b1bcb6d Endstops always on after delta homing (#21442) 2021-04-29 08:45:17 -05:00
Scott Lahteine
b4617e7904 Tweak disabled variant options 2021-04-29 08:45:17 -05:00
Scott Lahteine
a9f022dacf Update common-cxxflags.py comment 2021-04-29 08:45:17 -05:00
Scott Lahteine
5ff4476ccb Comment, clean up some PlatformIO scripts 2021-04-29 08:45:17 -05:00
Martijn Bosgraaf
98a6015d3a Extend M106/M107 for better laser module support (#16082)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:17 -05:00
Bryan Hunwardsen
05b281ad9e SKR E3 Mini V2.0 Fan Bug Fix (#21079)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-04-29 08:45:17 -05:00
Miguel Risco-Castillo
3c9ffa77f9 Ender 3 V2 Status Line (#21369)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:17 -05:00
ldursw
2a32d14dc4 Fix SDIO buffer alignment (#21396) 2021-04-29 08:45:17 -05:00
kpishere
e087271d48 Misc build fixes (#21413)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:17 -05:00
Ramiro Polla
375404290d Update Anet V1.0 display timing (#21425) 2021-04-29 08:45:17 -05:00
Ramiro Polla
5c8f7c7ea3 Optimize MarlinSettings with template methods (#21426) 2021-04-29 08:45:17 -05:00
Scott Lahteine
c6774812fa More IntelliSense-friendly declarations 2021-04-29 08:45:16 -05:00
Scott Lahteine
af13128430 Group UBL parameters, add comments 2021-04-29 08:45:16 -05:00
Scott Lahteine
6b7a92035c Misc LCD cleanup 2021-04-29 08:45:16 -05:00
Scott Lahteine
9e8b158ee1 Tweak mf helper scripts 2021-04-29 08:45:16 -05:00
Scott Lahteine
3226e12037 Add typedef celsius_t (#21374) 2021-04-29 08:45:16 -05:00
Scott Lahteine
2a011779e9 Max temp/target followup 2021-04-29 08:45:16 -05:00
Scott Lahteine
faa1118ca7 MKS / E3V2 LCD code cleanup 2021-04-29 08:45:16 -05:00
Scott Lahteine
3341e4f88c Add typedef extra_fan_t 2021-04-29 08:45:16 -05:00
Scott Lahteine
976403d10d Improve max temp / target 2021-04-29 08:45:16 -05:00
borland1
ff729744e5 Main / Config Custom Submenus (#18177)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:16 -05:00
Scott Lahteine
d924adef75 Followup to UBL Hilbert 2021-04-29 08:45:16 -05:00
ellensp
dca4c2904e Check NOZZLE_CLEAN_FEATURE settings (#21332)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-04-29 08:45:16 -05:00
Marcio T
e806c3376a UBL - Hilbert space-filling curve probing sequence (#21387) 2021-04-29 08:45:16 -05:00
Scott Lahteine
c9674cd809 Minor process_subcommands_now followup 2021-04-29 08:45:16 -05:00
mihtjel
259d8f19b3 Fix macros that call macros crashing (#21383)
When macros call macros, the null termination should remain in place until the macro is completed, and only then put back. Otherwise, the macro handler interprets this as setting the macro called to a new value.
2021-04-29 08:45:16 -05:00
Sola
9a1c4f91fe Fix MKS H43 sensorless homing (#21388) 2021-04-29 08:45:16 -05:00
Zs.Antal
4bdc303f6c Update Hungarian language (#21407) 2021-04-29 08:45:16 -05:00
Marcio T
5b0dc4d325 Mesh Editor for FTDI Eve Touch UI (#21381) 2021-04-29 08:45:16 -05:00
Scott Lahteine
39c30d6fd6 HAL eeprom cleanup 2021-04-29 08:45:16 -05:00
Scott Lahteine
e50af65a1b Fix bool++ warning 2021-04-29 08:45:16 -05:00
ellensp
c4d757c6f7 Fix preflight motherboard target check (#21372)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-04-29 08:45:16 -05:00
Skorpi08
ac4f3c0c7e Nextion TFT touch screen (#21324)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:16 -05:00
Scott Lahteine
107cc1f6a1 Followup to planner cleanup 2021-04-29 08:45:16 -05:00
Scott Lahteine
f49dc90655 Move web-ui out of Marlin root folder 2021-04-29 08:45:16 -05:00
Scott Lahteine
7cfaa50148 Revert "Fix small wired EEPROM (#21337)"
Reverting commit cc3e878f90 pending further investigation.
2021-04-29 08:45:16 -05:00
Scott Lahteine
dec9b9ad2f Minor E3 V2 dwin cleanup 2021-04-29 08:45:16 -05:00
Scott Lahteine
7973b954b4 E1+ Autotemp and Planner comments 2021-04-29 08:45:16 -05:00
Scott Lahteine
e0711d87a0 Un-pause fans on STOP 2021-04-29 08:45:16 -05:00
Scott Lahteine
3bbcfb0185 Update setup() description 2021-04-29 08:45:16 -05:00
Scott Lahteine
86a8e8970a mftest: usage with error 2021-04-29 08:45:16 -05:00
Scott Lahteine
f5d612b213 Detect extra ENVS in preflight checks (#21361) 2021-04-29 08:45:16 -05:00
K.3D
a2d2e19f84 KRATOS32 / K.32 board and LCD controllers (#21334) 2021-04-29 08:45:16 -05:00
X-Ryl669
35c32602f4 Teensy USB / serial followup (#21316) 2021-04-29 08:45:16 -05:00
Victor Oliveira
0d04dcd9ae Script to generate Marlin TFT Images (#21340) 2021-04-29 08:45:16 -05:00
X-Ryl669
f6f5ed166f Fix build with Meatpack only on 2nd port (#21336)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-04-29 08:45:16 -05:00
Scott Lahteine
b644aca98c Fix small wired EEPROM (#21337)
Co-Authored-By: jafal99 <26922965+jafal99@users.noreply.github.com>
2021-04-29 08:45:16 -05:00
XDA-Bam
e5ab4a7283 Update display timing for SKR Pro (#21346) 2021-04-29 08:45:16 -05:00
InsanityAutomation
f36eb4646b Custom menu items confirm option (#21338)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-04-29 08:45:16 -05:00
Victor Oliveira
0c3eb04a37 No extra build folder for st/jlink upload (#21341) 2021-04-29 08:45:16 -05:00
Scott Lahteine
09233129a8 Tweak opt_set, opt_enable 2021-04-29 08:45:16 -05:00
Scott Lahteine
2480c82d76 Add M207/8/9 reporting (#21335) 2021-04-29 08:45:16 -05:00
Scott Lahteine
7fb04b3656 MarlinSerial cleanup 2021-04-29 08:45:16 -05:00
Scott Lahteine
166d4a26f3 Pause SD queue early on M25 (#21317) 2021-04-29 08:45:16 -05:00
Scott Lahteine
b6169a957d Fix MarlinSerial typo 2021-04-29 08:45:16 -05:00
Scott Lahteine
ead6d99069 Clean up, optimize ExtUI/TFT code (#21333) 2021-04-29 08:45:16 -05:00
X-Ryl669
59a9be5f5a Undef unused 2nd serial option(s) (#21331)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-04-29 08:45:16 -05:00
Evgeny Z
d81838e9fa Lerdge-X I²C EEPROM pins, size (#21322) 2021-04-29 08:45:16 -05:00
ellensp
894688c547 Fix password menu stickiness before first auth (#21295) 2021-04-29 08:45:16 -05:00
Evgeny Z
059e6514ca Lerdge-K TMC 2208/9 UART pins (#21299) 2021-04-29 08:45:16 -05:00
Keith Bennett
a729999f55 Fix LERDGE 'extends' env references (#21305)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:16 -05:00
Cal1sto
f332cca4a7 Fix TouchMI stow in G34 (#21291) 2021-04-29 08:45:16 -05:00
X-Ryl669
242ef2b2b4 Fix MeatPack with per-serial-port instances (#21306) 2021-04-29 08:45:16 -05:00
Scott Lahteine
5c0f909949 Tricked-out declaration 2021-04-29 08:45:16 -05:00
Scott Lahteine
633491833c Update MEATPACK test 2021-04-29 08:45:16 -05:00
Scott Lahteine
b713ca2638 Number serial from 1 to match settings 2021-04-29 08:45:16 -05:00
Scott Lahteine
46246c8db6 Clean up spaces and words 2021-04-29 08:45:15 -05:00
Scott Lahteine
e1cca6d97b Fix serial index types 2021-04-29 08:45:15 -05:00
Scott Lahteine
01f3dc6d41 Add binary file transfer test 2021-04-29 08:45:15 -05:00
Victor Mateus Oliveira
0e1a1959de fix meat pack internal buffer for multi serial 2021-04-29 08:45:15 -05:00
Chris
6c70402161 Fix LPC + TMC boot loop (#21298) 2021-04-29 08:45:15 -05:00
X-Ryl669
6652c7c435 Distinguish serial index from mask (#21287) 2021-04-29 08:45:15 -05:00
Victor Oliveira
7f3208ba79 Host Keepalive followup (#21290)
Followup to #21283

Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-04-29 08:45:15 -05:00
ellensp
b680ddc66c CUSTOM_USER_BUTTONS followup (#21284)
Followup to #18389
2021-04-29 08:45:15 -05:00
Victor Oliveira
7a5a6ca53f Fix Host Keepalive serial target (#21283)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-04-29 08:45:15 -05:00
ellensp
b80ec493ed M303 followup (#21282)
Followup to f2ed18d150
2021-04-29 08:45:15 -05:00
Keith Bennett
d4a6014578 Extend Heater Overshoot Options (#21273)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:15 -05:00
ellensp
6ee61c8380 Update obsolete debug define (#21276) 2021-04-29 08:45:15 -05:00
Mike La Spina
db4d9b7fcf Cooler (for Laser) - M143, M193 (#21255) 2021-04-29 08:45:15 -05:00
Scott Lahteine
95136abc47 Fix DGUS include paths
Followup to #20609
2021-04-29 08:45:15 -05:00
Sola
5b586ea4d8 MKS H43 fixup (#21267)
Co-authored-by: makerbase <4164049@qq.com>
Co-authored-by: MKS-Sean <56996910+MKS-Sean@users.noreply.github.com>
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-04-29 08:45:15 -05:00
ellensp
05a124930e Fix Creality DWIN - Broken (bool)Serial ? (#21272)
Co-authored-by: ellensp <ellensp@hotmsil.com>
2021-04-29 08:45:15 -05:00
Scott Lahteine
423c4e4636 Pins/tests followup 2021-04-29 08:45:15 -05:00
Keith Bennett
6c6beeee70 Pins/tests followup (#21268)
Missing commit from #21254
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-04-29 08:45:15 -05:00
Zs.Antal
74457dc989 Update Hungarian language (#21266) 2021-04-29 08:45:15 -05:00
qwewer0
34b76c6f80 Link to bugfix tree (#21263) 2021-04-29 08:45:15 -05:00
Keith Bennett
35355d1f1b Tweak/Consolidate followup (#21261) 2021-04-29 08:45:15 -05:00
Scott Lahteine
7c37a82821 Tweak tests, consolidate pins target validation (#21254) 2021-04-29 08:45:15 -05:00
Victor Oliveira
5a01cdb81c Fix multi-serial CRC error crash (#21249) 2021-04-29 08:45:15 -05:00
Tanguy Pruvot
6cfd190107 Followup to MP_SCARA/TPARA patches (#21248) 2021-04-29 08:45:15 -05:00
Scott Lahteine
10ec13b2c3 Remove extra G42 2021-04-29 08:45:15 -05:00
Oleksii Zelivianskyi
8a3d0b23cf Correct fan pins for MKS Robin Nano v3 (#21238) 2021-04-29 08:45:15 -05:00
Keith Bennett
c90927cf54 SMUFF => SMuFF (#21243) 2021-04-29 08:45:15 -05:00
Scott Lahteine
f187a5304b Implement G42, after all 2021-04-29 08:45:15 -05:00
Scott Lahteine
d5b09fdbf5 MK2_MULTIPLEXER dependency 2021-04-29 08:45:15 -05:00
Scott Lahteine
c8b73b00be Update some py scripts 2021-04-29 08:45:15 -05:00
Scott Lahteine
ee74cee5d4 Parking Extruder solenoid fix/cleanup 2021-04-29 08:45:15 -05:00
Scott Lahteine
99eedf77b5 Fix teensy35 tests 2021-04-29 08:45:15 -05:00
Scott Lahteine
d61e7dd685 TPARA followup 2021-04-29 08:45:15 -05:00
Axel
864d27d460 TPARA - 3DOF robot arm IK (#21005)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-04-29 08:45:15 -05:00
Scott Lahteine
3c86eb18a5 misc. cleanup 2021-04-29 08:45:15 -05:00
Scott Lahteine
c4fe072751 Improve opt_set (etc.) used for tests 2021-04-29 08:45:15 -05:00
Sola
0e61b4a982 Fix MKS H43 compile (#21240) 2021-04-29 08:45:15 -05:00
Scott Lahteine
92da7659f4 Trust XY after Quiet Probing short sleep (#21237) 2021-04-29 08:45:15 -05:00
Scott Lahteine
be8b547261 Fix some config builds 2021-04-29 08:45:15 -05:00
Scott Lahteine
ef57a3e585 build_all_examples -c -s, silent mftest 2021-04-29 08:45:15 -05:00
Scott Lahteine
b71f1e1edd Better mftest order 2021-04-29 08:45:15 -05:00
MoellerDi
f3db2551a6 G-code Digital Buttons (#18389)
Co-Authored-By: android444 <24375898+android444@users.noreply.github.com>
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:15 -05:00
Scott Lahteine
7eace53eb7 Fewer warnings 2021-04-29 08:45:15 -05:00
Scott Lahteine
c6e82160e4 POWER_LOSS_ZHOME_POS followup 2021-04-29 08:45:15 -05:00
Nick
c8cd824be2 Safe Z homing for Power Loss Recovery (#16909) 2021-04-29 08:45:15 -05:00
Ilya
854ab04ee4 Default microsteps to axis first stepper (#21230) 2021-04-29 08:45:15 -05:00
Marcio T
4e6ed43198 Minor FTDI EVE Touch UI fixes (#21232) 2021-04-29 08:45:15 -05:00
Stephan
2d4a1cd428 Filament Runout handling for Mixing Extruder (#20327)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:15 -05:00
Scott Lahteine
fd5f1f1f5d Filament sensor cleanup 2021-04-29 08:45:15 -05:00
Scott Lahteine
fbb30a2570 Serial macros cleanup 2021-04-29 08:45:15 -05:00
Roman Moravčík
043bd34e2b Update Slovak language (#21224) 2021-04-29 08:45:15 -05:00
Fabio Viappiani
e4a67c8496 Fix TERN typo (#21229) 2021-04-29 08:45:15 -05:00
Scott Lahteine
0a097b7a1e Tweaks to build scripts 2021-04-29 08:45:15 -05:00
Giuliano Zaro
4343de3ee2 [SAMD51] Respect serial buffer size (#21194) 2021-04-29 08:45:15 -05:00
Scott Lahteine
3f34916c57 Tweaks to build scripts 2021-04-29 08:45:15 -05:00
Scott Lahteine
0e6e7b0608 whitespace 2021-04-29 08:45:15 -05:00
ldursw
334bafc9c1 ST STM32 platform version 12 (#21219) 2021-04-29 08:45:15 -05:00
RudolphRiedel
8eedec04a1 Two additional EVE displays (#18839) 2021-04-29 08:45:14 -05:00
Sola
5aa9cc82a8 MKS H43 controller (#20609) 2021-04-29 08:45:14 -05:00
LinFor
6183cd0731 RGB Caselight (#20341) 2021-04-29 08:45:14 -05:00
jbuck2005
971fb8729a SPEED => FEEDRATE (#21217) 2021-04-29 08:45:14 -05:00
Evgeny Z
124fb331cc Apply AUTO_POWER_CONTROL later in setup() (#21193)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:14 -05:00
Kachidoki
d20375c185 Duplicate fan speed in M106/7 IDEX Duplication Mode (#21208) 2021-04-29 08:45:14 -05:00
Arjan Mels
fff95b7173 Fix M876 when called from EP (#21210) 2021-04-29 08:45:14 -05:00
Giuliano Zaro
130dfbe11c [SAMD51] Postmortem Debugging not implemented (#21211) 2021-04-29 08:45:14 -05:00
Giuliano Zaro
68e50a725a [SMUFF] Use EXTRUDERS for extended commands (#21212) 2021-04-29 08:45:14 -05:00
X-Ryl669
3f9fe2dac4 Fix G-code Queue merge (#21213) 2021-04-29 08:45:14 -05:00
X-Ryl669
e1283b8a86 G-code Queue followup (#21214) 2021-04-29 08:45:14 -05:00
Alexander D. Kanevskiy
653608e931 Fix preflight complex extend handling (#21191) 2021-04-29 08:45:14 -05:00
X-Ryl669
80aac1b711 Make F_CPU a compile-time constant (#21051) 2021-04-29 08:45:14 -05:00
Victor Oliveira
b428a53b7a Fix GTR / SKR PRO + USB Flash Drive build (#21197) 2021-04-29 08:45:14 -05:00
Victor Oliveira
94d1637221 More LERDGE envs followup (#21205) 2021-04-29 08:45:14 -05:00
Fabio Viappiani
3a5ac12321 Fix M355 with NEOPIXEL (#21200) 2021-04-29 08:45:14 -05:00
ldursw
c9d757fc0e Init (stow) BLTouch before X/Y homing (#21192) 2021-04-29 08:45:14 -05:00
X-Ryl669
532dbb8064 Fix and improve G-code queue (#21122)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:14 -05:00
Scott Lahteine
adf26fd69e Chamber followup 2021-04-29 08:45:14 -05:00
Vi B-P
13dee4d059 Preheat Menu shortcut option (#20350) 2021-04-29 08:45:14 -05:00
swissnorp
fc09581aa3 Combine Z_AFTER_DEACTIVATE with UNKNOWN_Z_NO_RAISE (#20444)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:14 -05:00
Victor Oliveira
52c539eced Zero Endstops followup (#21188) 2021-04-29 08:45:14 -05:00
qwewer0
5fdab77cc2 Fix LEVEL_CORNERS_USE_PROBE with BLTOUCH_HS_MODE (#21161) 2021-04-29 08:45:14 -05:00
Scott Lahteine
00ceeeae7a Eryone Thinker V2 (#21190)
Co-Authored-By: Bryan Joshua Pedini <b.pedini@bjphoster.com>
2021-04-29 08:45:14 -05:00
Katelyn Schiesser
7240c2172b PROBING_HEATERS_OFF sub-option WAIT_FOR_HOTEND (#20835) 2021-04-29 08:45:14 -05:00
ellensp
f3d15b995c Preflight checks for PlatformIO builds (#21068)
Co-authored-by: Alexander D. Kanevskiy <alexander.kanevskiy@intel.com>
2021-04-29 08:45:14 -05:00
Katelyn Schiesser
b71af6a50f Use 'H' value for UBL G29 z-clearance (#21114) 2021-04-29 08:45:14 -05:00
Scott Lahteine
362776c38d Tweak case light comment 2021-04-29 08:45:14 -05:00
deirdreobyrne
e6bf89e82b Allow Zero Endstops (e.g., for CNC) (#21120)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:14 -05:00
Tanguy Pruvot
19c38f1a8a Add BOARD_PREINIT (for Longer3D open drain pins) (#21159) 2021-04-29 08:45:14 -05:00
Scott Lahteine
ac5f2a9300 Update BLTOUCH_HS_MODE comment 2021-04-29 08:45:14 -05:00
Nick
088b5cfec2 Fix Anycubic Chiron TFT SD menu (#21183) 2021-04-29 08:45:14 -05:00
X-Ryl669
b33afb790e Let libmaple accept RX/TX_BUFFER_SIZE (#21177) 2021-04-29 08:45:14 -05:00
X-Ryl669
73332f4df1 Combined LPC / Serial fixes (#21178)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:14 -05:00
Scott Lahteine
7cb286bb6e Expose more env builds in PlatformIO extension 2021-04-29 08:45:14 -05:00
Victor Oliveira
e9d62822bd Fix MKS Robin Nano V3 I2C pins (#21174) 2021-04-29 08:45:14 -05:00
Ken Sanislo
8d05a823e9 Chamber Heater PID (#21156)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:14 -05:00
Nick
c051a2ecae Fix Chiron TFT serial comms (#21152) 2021-04-29 08:45:14 -05:00
Scott Lahteine
dc0247c57e Outdent UBL code 2021-04-29 08:45:14 -05:00
Scott Lahteine
8fca59f63b G92, subcodes flag cleanup 2021-04-29 08:45:14 -05:00
Marcio T
1ab1c62f03 FTDI Touch UI followup (#21167) 2021-04-29 08:45:14 -05:00
Marcio T
a19c79d714 Enhance and fix FTDI Touch UI (#21148) 2021-04-29 08:45:14 -05:00
X-Ryl669
dc11874abe Postmortem Debugging to serial port (#20492) 2021-04-29 08:45:14 -05:00
kpishere
61753bb5e3 Fix SPI on SMART RAMPS with mega2560 (#21128) 2021-04-29 08:45:14 -05:00
ellensp
3f1a8c2a1c Fix G29 missing defines (#21145)
Co-authored-by: ellensp <ellensp@hotmsil.com>
2021-04-29 08:45:14 -05:00
espr14
bdb67b4397 Fix cleaning_buffer_counter check (#21115) 2021-04-29 08:45:14 -05:00
Scott Lahteine
c4fcf8bfd7 Fixes for MP_SCARA (#21113)
Co-Authored-By: svsergo <52426708+svsergo@users.noreply.github.com>
2021-04-29 08:45:14 -05:00
Vert
7e8b02145c YHCB2004 followup (#21111) 2021-04-29 08:45:14 -05:00
Scott Lahteine
a09d7a59b4 Fix IDEX broken endstop test (#21110) 2021-04-29 08:45:14 -05:00
jbuck2005
27721c564f Note FAN2_PIN silkscreen label (#21087) 2021-04-29 08:45:14 -05:00
Vert
2e040d03df GT2560 v4.1B, YHCB2004 SPI character LCD (#21091)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-04-29 08:45:14 -05:00
ellensp
2724816152 Swap Trigorilla Pro Z_MIN / MAX endstop pins (#21095) 2021-04-29 08:45:14 -05:00
X-Ryl669
03396922ab Fix/improve configs build script (#21086) 2021-04-29 08:45:14 -05:00
Allen Bauer
b4a3013c28 BTT002 pins for FYSETC mini12864 (#21096) 2021-04-29 08:45:14 -05:00
ellensp
903c2915ed Fix "BUTTON_CLICK redefined" warning (#21098) 2021-04-29 08:45:14 -05:00
jbuck2005
3ca2195ed0 Update platform ststm32 to 11.0 (#20928) 2021-04-29 08:45:14 -05:00
X-Ryl669
c759b2d2a6 Script to download & build Configurations (#20992)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:14 -05:00
ellensp
adbe152256 EXP headers for RAMPS 1.x (#21054)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:14 -05:00
Giuliano Zaro
3883853817 Fix MMU2 compile error (#21065) 2021-04-29 08:45:14 -05:00
ellensp
ead41ac491 Fix remaining time divide-by-zero (#21080) 2021-04-29 08:45:14 -05:00
Steven Haigh
8a35c9a1a0 E3V2 Status Area followup (#21072) 2021-04-29 08:45:14 -05:00
InsanityAutomation
10da0f92a0 E3V2 DWIN live movement (#21035) 2021-04-29 08:45:14 -05:00
InsanityAutomation
ca79af7a46 Use configuration website, fix edit color 2021-04-29 08:45:14 -05:00
Scott Lahteine
ba4ce63858 Fix a board comment 2021-04-29 08:45:14 -05:00
Scott Lahteine
f31a8f4086 anet_et4_openblt.py => openblt.py 2021-04-29 08:45:14 -05:00
Scott Lahteine
9c47a9256d Coolant Control sanity-checks 2021-04-29 08:45:14 -05:00
Giuliano Zaro
8ec86b810d Don't create unused Serial Port instances (#21066)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:14 -05:00
Scott Lahteine
69fcd9210f Allow mftest -t to select by number 2021-04-29 08:45:13 -05:00
Scott Lahteine
b95e60dbbd Update helpful links 2021-04-29 08:45:13 -05:00
Scott Lahteine
8bca8e5ba0 Minor serial code cleanup 2021-04-29 08:45:13 -05:00
X-Ryl669
92b5f06bf9 Use -g3 to include macros in debug symbols (#21052) 2021-04-29 08:45:13 -05:00
X-Ryl669
4316522146 Improve Delay test report (#21047) 2021-04-29 08:45:13 -05:00
kpishere
c0d1fd14f8 Fix AZSMZ_12864 on SMART RAMPS (#21056) 2021-04-29 08:45:13 -05:00
Jyers
f740226a82 Improved Ender 3 V2 display status area (#20983)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-04-29 08:45:13 -05:00
kpishere
54f401506b Support SMART RAMPS 1.4 with Mega2560 (#21059) 2021-04-29 08:45:13 -05:00
Scott Lahteine
4d75c2e0f9 Ender 3 V2 DWIN cleanup (#21061) 2021-04-29 08:45:13 -05:00
Michael Telatynski
7361fbfe28 Improve probe preheat behavior (#21033)
Co-authored-by: InsanityAutomation <d.menzel@insanityautomation.com>
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-04-29 08:45:13 -05:00
Scott Lahteine
897291c470 chmod and paths 2021-04-29 08:45:13 -05:00
Scott Lahteine
6320928795 Reheat bed first 2021-04-29 08:45:13 -05:00
Scott Lahteine
9acd2e176d Ender 3 V2 DWIN cleanup (#21026) 2021-04-29 08:45:13 -05:00
Scott Lahteine
c7efb2d964 Update M808 comment 2021-04-29 08:45:13 -05:00
JoAnn Manges
41ab63897f MAX Thermocouples rework (#20447)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-04-29 08:45:13 -05:00
X-Ryl669
77f48d2bad Serial refactor. Default 8-bit ECHO to int, not char (#20985)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:13 -05:00
Arjan Mels
897d29ea31 Fix STM32F1 emergency parser (#21011) 2021-04-29 08:45:13 -05:00
Alexander D. Kanevskiy
13f0e4729c Allow SERVO0_PIN override on Creality Melzi (#21007) 2021-04-29 08:45:13 -05:00
Scott Lahteine
86fd38ef42 Fix animated boot screen 2021-04-29 08:45:13 -05:00
MKS-Sean
127a4ada93 Fix: Unsupported use of %f in printf (#21001) 2021-04-29 08:45:13 -05:00
ellensp
1aae6395c6 Fix mini12864 v2.1 + PSU control + NeoPixel backlight (#21021) 2021-04-29 08:45:13 -05:00
Malderin
1bf469411a Fix LVGL "more" menu user items (#21004)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:13 -05:00
Scott Lahteine
47b872f5d0 Fix TEMP_0_TR_ENABLE, rename temp conditions (#21016) 2021-04-29 08:45:13 -05:00
Simon Jouet
80c1be919f Fix ESP32 I2S init placement (#21019) 2021-04-29 08:45:13 -05:00
Chris Pepper
243c8b4e1a Improve RPi host kernel panic mitigation
It was still possible to cause a Kernel panic, this additional 500ms delay before disconnect appears to mitigate it completely.
2021-04-29 08:45:13 -05:00
Scott Lahteine
d7fbb1512a Melzi, comments cleanup 2021-04-29 08:45:13 -05:00
Marcio Teixeira
8416edd127 Refactor FTDI EVE Touch Screen (#20987) 2021-04-29 08:45:13 -05:00
X-Ryl669
77966135e8 Fix ARM delay function (#20901) 2021-04-29 08:45:13 -05:00
Scott Lahteine
6054052248 Use 'false' 2021-04-29 08:45:13 -05:00
Chris Pepper
bbb49c43e1 Mitigate RPi hosts kernel panic on M997
Work around M997 sometimes causing a kernel panic on the host when sent from a Raspbery Pi, the root cause is currently unknown.
2021-04-29 08:45:13 -05:00
ellensp
9437c72ef6 Fix MKS SGen-L DOGLCD_MOSI pin for FYSETC_MINI_12864 LCD (#20998) 2021-04-29 08:45:13 -05:00
Zs.Antal
bb511195b8 Update Hungarian language (#20996) 2021-04-29 08:45:13 -05:00
Scott Lahteine
582458998f Use serial shorthand 2021-04-29 08:45:13 -05:00
Scott Lahteine
bb5c643dfb Nybbles & Bits 2021-04-29 08:45:13 -05:00
Scott Lahteine
bf631046c0 Fix some serial char, echo
Co-Authored-By: X-Ryl669 <3277165+X-Ryl669@users.noreply.github.com>
2021-04-29 08:45:13 -05:00
Victor Oliveira
0d7c02d2c6 Re-calibrate touch after EEPROM reset, if needed (#20934) 2021-04-29 08:45:13 -05:00
Malderin
129e9151da Add "more" menu in LVGL interface (#20940)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-04-29 08:45:13 -05:00
Scott Lahteine
4771379302 Evaluate ANY_SERIAL_IS in place 2021-04-29 08:45:13 -05:00
ellensp
62a65d3fdc Note (MarlinUI) limit on PREHEAT settings (#20966)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:13 -05:00
Giuliano Zaro
032152c41d Update a UBL comment (#20931) 2021-04-29 08:45:13 -05:00
Victor Oliveira
da80fd782c STM32 Shared Media - USB Mass Storage Device (#20956) 2021-04-29 08:45:13 -05:00
Tanguy Pruvot
460cdf4c09 Multi-language pertains to Color UI (#20972) 2021-04-29 08:45:13 -05:00
Victor Oliveira
0badef42d5 Touch Calibration Screen auto-save option (#20971) 2021-04-29 08:45:13 -05:00
Victor Oliveira
811b3d0f08 Include ui_common for MARLIN_LOGO_FULL_SIZE (#20963) 2021-04-29 08:45:13 -05:00
ellensp
8de850fd07 Fix host_response_handler compile (#20962) 2021-04-29 08:45:13 -05:00
X-Ryl669
1e5995335c LVGL UI G-code console (#20755) 2021-04-29 08:45:13 -05:00
Tanguy Pruvot
4153b6a30b Refresh screen on M22 (detach) (#20958) 2021-04-29 08:45:13 -05:00
X-Ryl669
c631fb79d5 Fix AutoReporter implementation (#20959) 2021-04-29 08:45:13 -05:00
X-Ryl669
9ae204df9c Serial refactor followup (#20932) 2021-04-29 08:45:13 -05:00
zeleps
e7658ec5f5 Init serial ports first (#20944) 2021-04-29 08:45:13 -05:00
qwewer0
b3656c387f Remove extra G29 V newlines (#20955) 2021-04-29 08:45:13 -05:00
ConstantijnCrijnen
164199614c Language selection auto-save option (#20915) 2021-04-29 08:45:13 -05:00
ellensp
219f92c4ca KILL, BEEPER pins for LCD_FOR_MELZI (#20924) 2021-04-29 08:45:13 -05:00
ellensp
0e37370b0c Fix G28_STR (#20925) 2021-04-29 08:45:13 -05:00
rafaljot
845b99feb7 MPX_ARM_MINI board (Mingda MD-16) (#20711) 2021-04-29 08:45:12 -05:00
Scott Lahteine
4b9f2f13b1 AutoReport class (Temperature, Cardreader) (#20913) 2021-04-29 08:45:12 -05:00
X-Ryl669
b44de74b91 Optimize serial output code for size (#20911) 2021-04-29 08:45:12 -05:00
George Fu
59d16eb189 FYSETC Cheetah 2.0 (#20897) 2021-04-29 08:45:12 -05:00
ellensp
c7004d100c Fix undefined G28_STR (#20912) 2021-04-29 08:45:12 -05:00
ellensp
07a3ed1d7e Fix LED_CONTROL_MENU compile (#20914) 2021-04-29 08:45:12 -05:00
Scott Lahteine
cc545a73a1 Serial refactor followup 2021-04-29 08:45:12 -05:00
X-Ryl669
efa1e56369 Refactor serial class with templates (#20783) 2021-04-29 08:45:12 -05:00
ellensp
8da8e7d17b Meatpack::report_state on serial port init (#20903)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-04-29 08:45:12 -05:00
ellensp
b10b76e882 MeatPack followup - unused command (#20893) 2021-04-29 08:45:12 -05:00
Scott Lahteine
be058430b4 Remove extra cast 2021-04-29 08:45:12 -05:00
Scott Mudge
7a559e4733 MeatPack followup (#20896) 2021-04-29 08:45:12 -05:00
ellensp
5fb8818ae5 ZONESTAR_LCD warning for RAMPS / ReARM (#20702) 2021-04-29 08:45:12 -05:00
ConstantijnCrijnen
cdefc19129 Configure / disable PRINTCOUNTER save interval (#20856)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-04-29 08:45:12 -05:00
Scott Lahteine
918894fd84 Custom G26 FR followup 2021-04-29 08:45:12 -05:00
Scott Lahteine
1bc65be70f Custom G26 FR followup 2021-04-29 08:45:12 -05:00
ScrewThisBanana
b9d19291fe Adding custom move feedrate for G26 Travel moves, Original #20729 (#20879)
* Adding custom move feedrate for G26

This commit adds an additional configuration parameter that can be used to specify the movement speed during the G26 validation pattern command during moves without extrusion.

Closes MarlinFirmware/Marlin#20615
2021-04-29 08:45:12 -05:00
Giuliano Zaro
2aaff47c9d Clean up MMU2 code (#20794)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:12 -05:00
Rockman18
a582d1dc2f Init KILL, SUICIDE, PSU earlier (#20810) 2021-04-29 08:45:12 -05:00
Gabriele Besta
5acd8f36a4 "Move … code" followup (#20869)
Fix regression from #20832
2021-04-29 08:45:12 -05:00
Scott Lahteine
efaff24145 Apply SEC_TO_MS and other fixes 2021-04-29 08:45:12 -05:00
Scott Lahteine
b059c9e5c0 Reformat abortSDPrinting 2021-04-29 08:45:12 -05:00
Alexander D. Kanevskiy
82122fe9cd Fix sign warning (#20872) 2021-04-29 08:45:12 -05:00
qwewer0
3beb6a9df3 Cosmetic changes (2) (#20876) 2021-04-29 08:45:12 -05:00
ellensp
a576ab83e9 "Move … code" followup (#20868)
Fix regression from #20832
2021-04-29 08:45:12 -05:00
Kairali
70ee5e94fd "Move … code" followup (#20874)
Fix regression from #20832
2021-04-29 08:45:12 -05:00
Tanguy Pruvot
69da8719cf Graphical TFT fixes, cleanup (#20861)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:12 -05:00
qwewer0
4ce87eeb91 🧻 Cosmetic changes (#20859) 2021-04-29 08:45:12 -05:00
Scott Lahteine
24a801b660 🛠Fix deps script version regex 2021-04-29 08:45:12 -05:00
Scott Lahteine
786bba39ff Fix Ender 3 V2 DWIN manual move (#20837) 2021-04-29 08:45:12 -05:00
Jason Smith
bed027f41f Fix LiquidCrystal CI failures (#20873)
Fix incorrect dependency syntax for LPC.
Disambiguate LiquidCrystal library names.
2021-04-29 08:45:12 -05:00
Roxy-3D
17a4ef6730 Revert "Adding custom move feedrate for G26 (#20729)" (#20870)
This reverts commit 14567f3459.
2021-04-29 08:45:12 -05:00
ellensp
56383d3ca0 MeatPack serial encoding (#20802)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:12 -05:00
Tanguy Pruvot
60c9a9e654 lcd_put_wchar_max for COLOR_UI (#20838)
Co-Authored-By: Victor Oliveira <github@victormo.com.br>
2021-04-29 08:45:12 -05:00
ScrewThisBanana
5398bfab36 Adding custom move feedrate for G26 (#20729)
* Adding custom move feedrate for G26

This commit adds an additional configuration parameter that can be used to specify the movement speed during the G26 validation pattern command during moves without extrusion.

Closes MarlinFirmware/Marlin#20615

* Fixing missing default 'G26_XY_FEEDRATE_MOVE' value

This commit adds a default 'G26_XY_FEEDRATE_MOVE' value (max movement speed / 1.5) in the G26.cpp - same behaviour as the default 'G26_XY_FEEDRATE' value

* Adding comment describing functionality in G26.cpp

* Renaming 'G26_XY_FEEDRATE_MOVE' to 'G26_XY_FEEDRATE_TRAVEL'

Configuration parameter renamed for better readability and consistency

MarlinFirmware/Marlin#20615

* Setting 'G26_XY_FEEDRATE_TRAVEL' to a safer value, aligned comments

Changed default value for 'G26_XY_FEEDRATE_TRAVEL' from 150 mm/s to 100 mm/s for safety purposes, comment alignment

MarlinFirmware/Marlin#20615
2021-04-29 08:45:12 -05:00
Scott Lahteine
a8a6040b78 🛠 Replace lib_deps for custom_marlin.FEATURE (#20858) 2021-04-29 08:45:12 -05:00
Giuliano Zaro
22db4c0448 "Move … code" followup (#20852)
Fix regression from #20832
2021-04-29 08:45:12 -05:00
Scott Lahteine
7bbf958e5c Add labels, condition for BTT GTR M5 pins (#20772)
Co-Authored-By: NAPCAL <47440988+NAPCAL@users.noreply.github.com>
2021-04-29 08:45:12 -05:00
Scott Lahteine
0b7de80a6f Move common strings (#20846) 2021-04-29 08:45:12 -05:00
Scott Lahteine
de37fbffa3 Fix undefined E_LBL 2021-04-29 08:45:12 -05:00
Jason Smith
f4a3db8db8 Ender 3 V2: Sync reset E in manual move (#20806) 2021-04-29 08:45:12 -05:00
Jason Smith
c409a6df5e Fix ANYCUBIC_LCD_CHIRON compilation (#20807)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:12 -05:00
Scott Lahteine
71be210795 Move some MarlinCore and MarlinUI code (#20832) 2021-04-29 08:45:12 -05:00
Katelyn Schiesser
67942622f1 Increase filament runout distance edit limit (#20828) 2021-04-29 08:45:12 -05:00
Keith Bennett
5252a32de4 USB Flash Drive env hints for ABM (#20592) 2021-04-29 08:45:12 -05:00
Keith Bennett
5e5c0d65f3 Lerdge K/S/X support for Flash Drive (#20593) 2021-04-29 08:45:12 -05:00
Scott Lahteine
3dde2722bd MarlinUI multi-language support (#20725) 2021-04-29 08:45:12 -05:00
Scott Lahteine
befcdeb74d Keep G29 N on the DL 2021-04-29 08:45:12 -05:00
ellensp
0c62fd02b0 More PlatformIO source filters (#20822) 2021-04-29 08:45:12 -05:00
Tanguy Pruvot
8d2f1851eb PSTR alias followup (#20831) 2021-04-29 08:45:12 -05:00
Scott Lahteine
b355f4605e Move singlenozzle temp/fan (#20829) 2021-04-29 08:45:12 -05:00
devin122
f6c4c26937 Fix reporting of TMC_S2VSA/B (#20730) 2021-04-29 08:45:12 -05:00
ellensp
c334151294 USE_M73_REMAINING_TIME sanity-check (#20751) 2021-04-29 08:45:12 -05:00
Giuliano Zaro
faf4cb1b74 MMU2 serial followup (#20811) 2021-04-29 08:45:12 -05:00
Scott Lahteine
ccbff12d6a Fix SINGLENOZZLE compile 2021-04-29 08:45:12 -05:00
EmilGustafsson
a02e884415 Swedish language for MarlinUI (#20826) 2021-04-29 08:45:12 -05:00
Rockman18
1fdf283e5d Fix MKS UI manual move (#20813) 2021-04-29 08:45:12 -05:00
Rockman18
910059adcb Fix, consolidate PSTR aliases (#20812)
Co-authored-by: Jason Smith <jason.inet@gmail.com>
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:12 -05:00
Katelyn Schiesser
a8bd376fd4 Raise Z on exit from 'Level Bed Corners' (#20817) 2021-04-29 08:45:12 -05:00
Scott Lahteine
c69f9b9883 Clean up whitespace, headings 2021-04-29 08:45:12 -05:00
Scott Lahteine
69b873b766 OS-native targets for "mftest -a" 2021-04-29 08:45:12 -05:00
Scott Lahteine
6162560b69 Internal G29N for G28+G29 (#20800) 2021-04-29 08:45:12 -05:00
George Fu
f101e19257 FYSETC_242 OLED 12864 for S6 (#20767) 2021-04-29 08:45:12 -05:00
Scott Lahteine
7836b85c96 Reduce some G-code strings 2021-04-29 08:45:12 -05:00
zeleps
522c78b5e6 Fix Tramming Wizard behavior (#20796) 2021-04-29 08:45:12 -05:00
Scott Lahteine
aabd40a7a2 Optimize some G-code strings 2021-04-29 08:45:11 -05:00
Scott Lahteine
e351ea2ee8 Apply bool to some MKS UI 2021-04-29 08:45:11 -05:00
Scott Lahteine
efc396bd05 General cleanup, use _BV 2021-04-29 08:45:11 -05:00
ellensp
ae53998a88 Fix Trigorilla Pro STOP pins (#20801) 2021-04-29 08:45:11 -05:00
Alexander D. Kanevskiy
d814d8f954 NEOPIXEL overridable on BTT SKR (#20797) 2021-04-29 08:45:11 -05:00
Martin
63e3117510 4 / 5 digits for some edit items (#20793) 2021-04-29 08:45:11 -05:00
Giuliano Zaro
cab93c2ad8 Update Italian language (#20789) 2021-04-29 08:45:11 -05:00
ellensp
3acf86510d Fix Ender-3 V2 DWIN LPC signed warnings (#20786) 2021-04-29 08:45:11 -05:00
RFBomb
418524b1be Configurable Corner Leveling point order (#20733) 2021-04-29 08:45:11 -05:00
Giuliano Zaro
a5d2180bf5 MMU2 as standard serial device (#20771) 2021-04-29 08:45:11 -05:00
Marcio Teixeira
0364ae4908 Improve filament runout handling in FTDI EVE Touch UI
- On filament runout, take the user to the tune menu where they can initiate a filament change or resume the print.
2021-04-29 08:45:11 -05:00
Marcio T
a7c97182f7 Fix compatibility macros 2021-04-29 08:45:11 -05:00
Marcio Teixeira
1e7426e549 Silence unused parameter warnings 2021-04-29 08:45:11 -05:00
Jelmer van der Stel
fd6501207f Fix Ender 3 V2 encoder (#20784) 2021-04-29 08:45:11 -05:00
EvilGremlin
7f8188ccb6 ESP32 Tone Generator (#20704) 2021-04-29 08:45:11 -05:00
vitaliy172
f5341da94d Update Ukrainian language (#20668) 2021-04-29 08:45:11 -05:00
Scott Lahteine
a588f69f16 MKS prelim. cleanup (2) 2021-04-29 08:45:11 -05:00
Scott Lahteine
86bf374fc4 More MKS UI prelim. cleanup 2021-04-29 08:45:11 -05:00
MKS-Sean
a3d6442d02 MKS WiFi for TFT_LVGL_UI (#20191) 2021-04-29 08:45:11 -05:00
Scott Lahteine
62d20c8b37 Ignore M22 during SD print 2021-04-29 08:45:11 -05:00
Scott Lahteine
726e2e9bc0 Move WRITE_FAN 2021-04-29 08:45:11 -05:00
Scott Lahteine
eedd9c2bda whitespace 2021-04-29 08:45:11 -05:00
Scott Lahteine
5c181562f6 MKS UI prelim. cleanup (#20763) 2021-04-29 08:45:11 -05:00
Scott Lahteine
104aceb44a Rotary encoder cleanup (#20753) 2021-04-29 08:45:11 -05:00
Giuliano Zaro
bee794e598 Fix comments (#20759) 2021-04-29 08:45:11 -05:00
Scott Lahteine
483804bafd Ok to use C++11 'auto' 2021-04-29 08:45:11 -05:00
Johan van der Vyver
55709b9d2c Multi-platform DWIN_CREALITY_LCD support (#20738)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:11 -05:00
devin122
8eb32cef24 Fix TMC220x short circuit (#20731) 2021-04-29 08:45:11 -05:00
Serhiy-K
92f847c8f7 Fixes for TFTGLCD (#20734) 2021-04-29 08:45:11 -05:00
Victor Oliveira
be3caa4686 NO_SD_DETECT option (#20741) 2021-04-29 08:45:11 -05:00
Scott Lahteine
fa6a2f52e2 Fix joystick include 2021-04-29 08:45:11 -05:00
Scott Lahteine
7e188c48e1 Tweak STM32F1 pin r/w/t 2021-04-29 08:45:11 -05:00
Scott Lahteine
928cd1b8ab Clean up some includes 2021-04-29 08:45:11 -05:00
Scott Lahteine
4145d85ef1 Update Slovak glyphs 2021-04-29 08:45:11 -05:00
Mike La Spina
9901b4e9f1 Laser Test Fire (#20452) 2021-04-29 08:45:11 -05:00
Anthony Rich
4e46de66d3 Wanhao One+ SD detect pin (#20724) 2021-04-29 08:45:11 -05:00
Scott Lahteine
7c7d28345e Optimize some G76 strings 2021-04-29 08:45:11 -05:00
Dmitry Katsubo
8690f4862d Fix misc. warnings (#20715) 2021-04-29 08:45:11 -05:00
Scott Lahteine
c9a9c00f61 Fix Python 2.7 compatibility
Fix regression from #20692
2021-04-29 08:45:11 -05:00
Markus
6a60d47b90 Up to 6 Tramming points (#20720) 2021-04-29 08:45:11 -05:00
qwewer0
f19a1833bd Fix M48 output (#20713) 2021-04-29 08:45:11 -05:00
TheCodeExorcist
074d3f6266 Improved MKS Robin support (#19333) 2021-04-29 08:45:11 -05:00
Java
92eee0386f Preheat before Power Loss Recovery homing (#20697) 2021-04-29 08:45:11 -05:00
Scott Lahteine
32caeecffb Custom build_flags by feature (#20692) 2021-04-29 08:45:11 -05:00
wilbur4321
5ef0475dc5 Multi-Z stepper inverting (#20678)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-04-29 08:45:11 -05:00
ellensp
aa5ac6c3b2 Fix Azteeg X3 macro typo (#20681) 2021-04-29 08:45:11 -05:00
ellensp
fd7e34312a Define SANGUINOLOLU 1.1 enable pins (#20682) 2021-04-29 08:45:11 -05:00
ellensp
d10c734730 No BTN_ENC_EN on Anet 10 (#20684) 2021-04-29 08:45:11 -05:00
Giuliano Zaro
c64a5a4b8f Temperature report followup (#20687)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:11 -05:00
FanDjango
e3cd293f4e Adjustable precision in M105 temperature report (#20602)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:11 -05:00
zeleps
d324f3b16a Don't apply hotend_offset.z to Z soft endstops (#20675)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:11 -05:00
Scott Lahteine
01c9d49f09 Indent tool_change_prime 2021-04-29 08:45:11 -05:00
Scott Lahteine
cc1b8c2d0b Clarify solenoid active / magnet-on state 2021-04-29 08:45:11 -05:00
FanDjango
ed7698efaa Defer "quiet probing" till the last Z bump (#20610) 2021-04-29 08:45:11 -05:00
Scott Lahteine
efe2859227 Solenoid cleanups
Followups to #20473 ahead of #20675
2021-04-29 08:45:11 -05:00
Scott Lahteine
4b4498be93 Remove untranslated strings 2021-04-29 08:45:11 -05:00
Scott Lahteine
eff2330ce1 G34/M422 cleanup 2021-04-29 08:45:11 -05:00
Scott Lahteine
8884b1f9a6 Move duplication_e_mask 2021-04-29 08:45:11 -05:00
Scott Lahteine
bb747bcd62 Fix delayed_move_time elapsed test 2021-04-29 08:45:11 -05:00
InsanityAutomation
b1f0671541 Fix IDEX reboot on travel after G28 X (#20654) 2021-04-29 08:45:10 -05:00
InsanityAutomation
abeefaac7f Fix SD SPI Speed override, FTDI mesh edit (#20657)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-04-29 08:45:10 -05:00
Scott Lahteine
90c04ee15d Rename FTDI EVE screen data structs 2021-04-29 08:45:10 -05:00
Marcio T
d3d8fd6d9b Fix thermal error protection, reporting (#20655) 2021-04-29 08:45:10 -05:00
Giuliano Zaro
c6c5cc7246 Update Italian language (#20663) 2021-04-29 08:45:10 -05:00
Scott Lahteine
d5465f1ad8 Creality 4.2.10 board (#20647) 2021-04-29 08:45:10 -05:00
Scott Lahteine
3f8a83b285 Add ALL_AXES manual move for UBL mesh editing
Co-Authored-By: Jason Smith <20053467+sjasonsmith@users.noreply.github.com>

#20620
2021-04-29 08:45:10 -05:00
Scott Lahteine
385152b3d2 Animated boot followup 2021-04-29 08:45:10 -05:00
ellensp
66c69aef6a Homing code followup (#20632)
Patching a87e5197cf
2021-04-29 08:45:10 -05:00
Scott Lahteine
f4f152bd01 Improved bootscreen animation 2021-04-29 08:45:10 -05:00
Scott Lahteine
eaeb9d1b20 Document, adjust some homing code 2021-04-29 08:45:10 -05:00
qwewer0
a42755a061 Fix a comment (#20629) 2021-04-29 08:45:10 -05:00
ellensp
5d35e3ccf5 Check for misplaced configs on build (#20599)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:10 -05:00
qwewer0
7ef03a761b Assisted Tramming improvements (#20298) 2021-04-29 08:45:10 -05:00
ellensp
f570791e19 Fix //action prefix (#20600) 2021-04-29 08:45:10 -05:00
Jason Smith
25152a8cef Fix UBL mesh edit delta moves (#20620)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:10 -05:00
Jason Smith
14b7eb1c5a Fix CHAMBER_FAN_MODE 0 build (#20621) 2021-04-29 08:45:10 -05:00
zeleps
3b4c5f982c Fix PARKING_EXTRUDER homing with solenoid (#20473) 2021-04-29 08:45:10 -05:00
Victor Oliveira
2c58d0881b Prefix SD SPI pins (SCK, MISO, MOSI, SS) (#20606)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:10 -05:00
Scott Lahteine
7a748bd565 SPI and pins cleanup 2021-04-29 08:45:10 -05:00
Victor Oliveira
cf996949fa Support 4.3" (480x272) Color UI display (#20334) 2021-04-29 08:45:10 -05:00
Victor Oliveira
79672d51f6 USB FD via native USB Host + MSC (#20571) 2021-04-29 08:45:10 -05:00
Scott Lahteine
c3dc74bba0 Pins, comment cleanup 2021-04-29 08:45:10 -05:00
Tanguy Pruvot
f539e319f0 Clarify sanity-check for custom status bitmap (#20588) 2021-04-29 08:45:10 -05:00
Victor Oliveira
eda5a884c6 LVGL G-code preview. Legacy MKS WiFi Cura plugin compatibility (#20589) 2021-04-29 08:45:10 -05:00
Keith Bennett
7b33ceebbb Apply SHOW_BOOTSCREEN to TFT_COLOR_UI (#20586) 2021-04-29 08:45:10 -05:00
Scott Lahteine
8aa453d75b Menu item index followup 2021-04-29 08:45:10 -05:00
Victor Oliveira
ed1c0b71df Fix Change Filament menu actions (#20565)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:10 -05:00
Victor Oliveira
63f083db96 Fix LVGL_UI G-code preview (#20564) 2021-04-29 08:45:10 -05:00
Victor Oliveira
a74d4609af Use ADC_RESOLUTION 12 for all STM32 (#20562) 2021-04-29 08:45:10 -05:00
Victor Oliveira
427a2fca4d Fix Menu Mixer for Color UI (#20566) 2021-04-29 08:45:10 -05:00
Victor Oliveira
910908fb32 Better defaults, compatibility for SDIO + STM32 (#20570) 2021-04-29 08:45:10 -05:00
Keith Bennett
a8800d5b0a Small / Large Boot Screen option for TFT_COLOR_UI (#20578) 2021-04-29 08:45:10 -05:00
Scott Lahteine
adca49e432 Remove URL scheme 2021-04-29 08:45:10 -05:00
Scott Lahteine
214f6cb6e3 Allow define HOMING_FEEDRATE_(XY|Z) 2021-04-29 08:45:10 -05:00
Scott Lahteine
3395d10e82 General cleanup 2021-04-29 08:45:10 -05:00
Jason Smith
2e93923e24 Validate defined probe points (#20572) 2021-04-29 08:45:10 -05:00
Scott Lahteine
892e83e872 Init tare pin once 2021-04-29 08:45:10 -05:00
Scott Lahteine
10482ca49c Add probe_switch_activated 2021-04-29 08:45:10 -05:00
Scott Lahteine
9947072d2d Remove CREALITY_TOUCH 2021-04-29 08:45:10 -05:00
Scott Lahteine
6d3e22dd4a Fix some comments 2021-04-29 08:45:10 -05:00
Ashammaru
e3d7603d54 Fix SPINDLE_LASER_FREQUENCY (#20509) 2021-04-29 08:45:10 -05:00
Mike La Spina
f9dd484381 Cutter Power in percent format (#20410)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
Co-authored-by: Jason Smith <jason.inet@gmail.com>
Co-authored-by: Luu Lac <45380455+shitcreek@users.noreply.github.com>
2021-04-29 08:45:10 -05:00
Vi B-P
48bf80d190 Apply NO_MOTION_BEFORE_HOMING to joystick motion (#20462)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:10 -05:00
Scott Lahteine
089bfad490 Fix, clean up FTDI EVE Touch UI (#20466)
Co-Authored-By: Marcio T. <mlt4356-github@yahoo.com>
2021-04-29 08:45:10 -05:00
Jason Smith
f1bf1e1835 Fix ST7920 timing for Rumba32, Fysetc S6 (#20556) 2021-04-29 08:45:10 -05:00
Victor Oliveira
35e1917655 Fix DOGM status message scrolling (#20557) 2021-04-29 08:45:10 -05:00
Scott Lahteine
121d4bf52a Add "End Repeat Loops" menu item 2021-04-29 08:45:10 -05:00
Victor Oliveira
fadc8a1944 LVGL and Classic UI for STM32 (#20552) 2021-04-29 08:45:10 -05:00
Scott Lahteine
a5dd4028ac Move BTT_SKR_CR6 2021-04-29 08:45:10 -05:00
ubik2
a510c16838 Add OPTIMIZED_MESH_STORAGE option (for UBL) (#20371)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:10 -05:00
LinFor
156b5f4749 Remaining Time for FTDI EVE, bp for ExtUI (#20549)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:10 -05:00
Scott Lahteine
fa89a7b0bc Apply ENABLED in ExiUI / FTDI 2021-04-29 08:45:10 -05:00
Darren Peter
a24298f625 Support ANET_FULL_GRAPHICS_LCD_ALT_WIRING on BTT SKR 1.4 (#20427) 2021-04-29 08:45:10 -05:00
Sebastiaan Dammann
ec83a96484 Probe Activation Switch followup (#20550) 2021-04-29 08:45:10 -05:00
BsCmOD
a03ebfda52 Enhanced Italian language (#20551) 2021-04-29 08:45:10 -05:00
LinFor
323bf47738 FTDI EVE: Cyrillic font, some minor fixes (#20517) 2021-04-29 08:45:10 -05:00
yysh12
ad15890a81 Improve plan_arc circle detection (#20440)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:09 -05:00
wmariz
60aeed99c6 Refactor 'Level Corners with Probe' (#20460)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:09 -05:00
Jan Krajdl
c529209c8f Support RGBW on PCA9632 (#20455)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:09 -05:00
Tanguy Pruvot
be3e45d759 Fix G28 leveling state, UBL compile (#20499) 2021-04-29 08:45:09 -05:00
Victor Oliveira
7c8cff0d3c Unify FYSETC F6 1.3 / 1.4 (#20507)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-04-29 08:45:09 -05:00
Serhiy-K
256e94980e STM32F1xx support for TFTGLCD (#20515) 2021-04-29 08:45:09 -05:00
Keith Bennett
aa65c6e477 Anet ET4 / ET4P and Anet TFT28 / TFT35 (#20280) 2021-04-29 08:45:09 -05:00
Sean McGroty
59b5cb6fe2 Creality v4.3.1 (Ender 6) board (#20512) 2021-04-29 08:45:09 -05:00
X-Ryl669
a33c689c40 Improve Touch Calibration screen (#20524) 2021-04-29 08:45:09 -05:00
Jason Smith
30d9839631 Overrides to prevent STM32 timer conflicts (#20545) 2021-04-29 08:45:09 -05:00
Chris Pepper
f0b7f27029 Fix UBL mesh inset Z position (#20538) 2021-04-29 08:45:09 -05:00
Jason Smith
a1313c7066 Improve STM32 timer conflict messages (#20544) 2021-04-29 08:45:09 -05:00
LinFor
31c84d4559 FTDI EVE custom user menus (#20518) 2021-04-29 08:45:09 -05:00
LinFor
076f12e82d 12-bit ADC resolution for STM32 (#20519) 2021-04-29 08:45:09 -05:00
LinFor
231e5a5eed Add Tune -> Advanced Settings to FTDI EVE (#20532) 2021-04-29 08:45:09 -05:00
Scott Lahteine
350dc4ca05 Tweak FTDI spacing 2021-04-29 08:45:09 -05:00
Scott Lahteine
ff2f6cb110 Robin pins followup 2021-04-29 08:45:09 -05:00
LinFor
b667722184 Fix some Russian (#20529) 2021-04-29 08:45:09 -05:00
cr20-123
bc3f2f246f Fix G34 compile with bed leveling disabled (#20537) 2021-04-29 08:45:09 -05:00
Sebastiaan Dammann
28548e7ea2 Add BTT SKR CR6 board (#20522) 2021-04-29 08:45:09 -05:00
Scott Lahteine
023ef753b9 Clean up some pins 2021-04-29 08:45:09 -05:00
Dick Streefland
b799d0d073 Apply HOME_AFTER_DEACTIVATE for 'G28 O' (#20525) 2021-04-29 08:45:09 -05:00
Dick Streefland
be6e1ccba2 Get E3V2 DWIN MACHINE_SIZE from config (#20526) 2021-04-29 08:45:09 -05:00
Scott Lahteine
2a58aa2181 Fix PIO typo 2021-04-29 08:45:09 -05:00
Serhiy-K
525cdeae19 Update Russian and Ukrainian languages (#20508) 2021-04-29 08:45:09 -05:00
Scott Lahteine
c831aabe14 Languages cleanup 2021-04-29 08:45:09 -05:00
Foxies
642110b072 Migrate Hispeedv1 (QQS-Pro) to HAL/STM32 (#20354) 2021-04-29 08:45:09 -05:00
Jason Smith
56e2f39175 Fix Creality EEPROM watchdog freq. (#20510) 2021-04-29 08:45:09 -05:00
InsanityAutomation
3e26e23e60 Probe Tare, Probe Activation Switch (#20379)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
Co-authored-by: Victor Mateus Oliveira <rhapsodyv@gmail.com>
Co-authored-by: Jason Smith <jason.inet@gmail.com>
2021-04-29 08:45:09 -05:00
InsanityAutomation
588fec6474 Minimum temp options for Probing and G12 Nozzle Clean (#20383)
Co-authored-by: Jason Smith <jason.inet@gmail.com>
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-04-29 08:45:09 -05:00
Keith Bennett
87fbb89330 Let boards set Default TMC Slave Addresses (#20498)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-04-29 08:45:09 -05:00
Scott Lahteine
a4701fbd3e Tweaks for pins_BTT_SKR_common.h 2021-04-29 08:45:09 -05:00
Scott Lahteine
e02fd232ba Rename QUIET_PROBING 2021-04-29 08:45:09 -05:00
Tanguy Pruvot
f7f531e59d DOGM: Slow down touchscreen calibration (#20454) 2021-04-29 08:45:09 -05:00
Victor Oliveira
51e3d8f08b MKS Robin Nano V3 and STM32F4x0Vx Variant (#20430) 2021-04-29 08:45:09 -05:00
grauerfuchs
02b65de6a2 Fix and optimize MightyBoard (#20493) 2021-04-29 08:45:09 -05:00
Jason Smith
c3a1cd10ab Balance CI tests (#20485) 2021-04-29 08:45:09 -05:00
nb-rapidia
e5d094d2bd Make M220 B / R a standard feature (#20355) 2021-04-29 08:45:09 -05:00
ellensp
d6efe75251 Fix ZoneStar LCD 2004 buttons (#20489) 2021-04-29 08:45:09 -05:00
rafaljot
f50abfcb1b Homing feedrates as XYZ array (#20426)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:09 -05:00
Scott Lahteine
bee6b8af8f Use homing_feedrate function 2021-04-29 08:45:09 -05:00
Tanguy Pruvot
1b6db623a7 Update French language (#20472) 2021-04-29 08:45:09 -05:00
Scott Lahteine
a45603a344 Update Hungarian language
Co-Authored-By: Zs.Antal <45710979+AntoszHUN@users.noreply.github.com>
2021-04-29 08:45:09 -05:00
Giuliano Zaro
fa9463528d Update Italian language (#20480) 2021-04-29 08:45:09 -05:00
Scott Lahteine
82b6044dbb Trust STM32 gcc versions 2021-04-29 08:45:09 -05:00
Scott Lahteine
be7aab204f Update some LCD includes 2021-04-29 08:45:09 -05:00
Scott Lahteine
f82b3f0f51 Update some pins errors 2021-04-29 08:45:09 -05:00
Sebastiaan Dammann
3d7680a426 Creality v4.5.3 (CR-6 SE, CR-6 MAX) (#20468) 2021-04-29 08:45:09 -05:00
JoAnn Manges
878305671b Fix RESTORE_LEVELING_AFTER_G28 (#20471) 2021-04-29 08:45:09 -05:00
Scott Lahteine
46d2dc9bee Please install the EditorConfig plugin 2021-04-29 08:45:09 -05:00
Scott Lahteine
e188b3e28c Auto-check followup 2021-04-29 08:45:09 -05:00
kisslorand
a59164d5c8 Fix M1001 auto-check logic (#20456) 2021-04-29 08:45:09 -05:00
Jason Smith
0b0eb6a119 Trust that script -x flags will always be set (#20453) 2021-04-29 08:45:09 -05:00
Scott Lahteine
e6b3c74069 Always enable leveling after G28 2021-04-29 08:45:09 -05:00
Scott Lahteine
20bd54f6d3 Preheat before leveling 2021-04-29 08:45:09 -05:00
Scott Lahteine
6599e4ea53 Fix formatting 2021-04-29 08:45:09 -05:00
Chris Pepper
5617d64119 LPC176x framework update (#20469) 2021-04-29 08:45:09 -05:00
Scott Lahteine
b81a9e54a3 SHORT_MANUAL_Z_MOVE => FINE_MANUAL_MOVE 2021-04-29 08:45:09 -05:00
Scott Lahteine
cbe27daafb Adjust planner debugging 2021-04-29 08:45:08 -05:00
FanDjango
430855fdca Probe Offset Wizard followupBack to PROBE_PT_RAISE/separate STOW, make "PROBING" msg appear (#20439)
* Go back to always use PROBE_PT_RAISE with a discrete stow. This ensures a raise above the bed, while stowing prior to exiting the wizard.
* Fix issue preventing text while moving to X/Y position
Co-authored-by: FanDjango <FanDjango@users.noreply.github.com>
2021-04-29 08:45:08 -05:00
qwewer0
e9bde7e6fc Improve ASSISTED_TRAMMING_WIZARD probe stowing (#20437)
* When BLTOUCH_HS_MODE enabled, stow pin before user interaction
* For all probes, ensure probe stows at end of wizard
2021-04-29 08:45:08 -05:00
ellensp
5aebc9fb0c Add HAS_PIN_27_BOARD for CREALITY_V4 (#20446)
Co-authored-by: ellensp <ellensp@hotmsil.com>
2021-04-29 08:45:08 -05:00
leodoener
d0c2b643f8 Fix SDCARD_SORT_ALPHA on Ender 3 V2 (#20443) 2021-04-29 08:45:08 -05:00
Scott Lahteine
c0ad4718a4 Better animated boot screen 2021-04-29 08:45:08 -05:00
Jason Smith
8f188adc32 SENSORLESS_PROBING sanity check followup (#20438) 2021-04-29 08:45:08 -05:00
FanDjango
74042d368e Probe offset wizard fixes (#20414)
* STOW probe, reverting incorrect earlier change from #20344
* Adjust soft endstop disables, to ensure travel below bed functions properly

Co-authored-by: FanDjango <FanDjango@users.noreply.github.com>
2021-04-29 08:45:08 -05:00
elasticdotventures
2a5b32f109 Z_SENSORLESS sanity checks (#20421)
Co-authored-by: Jason Smith <jason.inet@gmail.com>
2021-04-29 08:45:08 -05:00
ellensp
0c383b858f Fix UBL Debug Messages (#20423)
Co-authored-by: ellensp <ellensp@hotmsil.com>
2021-04-29 08:45:08 -05:00
Keith Bennett
aecfd95592 Clarify "not Interrupt-capable" error message (#20419) 2021-04-29 08:45:08 -05:00
Victor Oliveira
9f740d1872 MKS Robin Pins fixes for STM32 and STM32F1 (#20404)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:08 -05:00
InsanityAutomation
70d393b5cd Move ExtUI ABL mesh edit, limit to bilinear (#20381)
* Move ExtUI call

Co-authored-by: Scott Lahteine <github@thinkyhead.com>
Co-authored-by: Victor Mateus Oliveira <rhapsodyv@gmail.com>
Co-authored-by: Sebastiaan Dammann <sebastiaandammann@outlook.com>
2021-04-29 08:45:08 -05:00
Marcio T
f193cda03b Fixes and additions to FTDI EVE Touch UI (#20393)
- Fixed name conflict with "SUBSCRIPT_TWO"
- Fixed rendering bugs in "Leveling Menu"
- Only show "Bed Mesh Screen" when UBL is enabled
- Removed CocoaPress code from generic "Main Menu"
- Removed CocoaPress code from LulzBot Bio "Status" screen
- Moved generic "Move Axis" functionality into a base class
- Added CocoaPress custom screens:
   - Status Screen
   - Unload Cartridge
   - Load Chocolate
   - Main Menu
   - Advanced Settings
   - XYZ Move (based on "Move Axis" base class)
   - Extrusion Move (based on "Move Axis" base class)
- CocoaPress tweaks to "Temperature" screen
- Fix FTDI EVE Touch UI compilation errors when not using leveling.
2021-04-29 08:45:08 -05:00
Mike La Spina
e3e9982fec Fix Spindle/Laser Control menu (#20347) 2021-04-29 08:45:08 -05:00
swissnorp
4ca3c0bc86 Allow positive Z nozzle to probe offset (#20344)
* Allow a positive value for z offset from nozzle to probe without sanity checks
* Simplify menu_probe_offset.cpp (HOMING_Z_WITH_PROBE)
* Add some more explanation to Configuration Files
* Raise after probe_at_point as if homed

Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
Co-authored-by: Jason Smith <jason.inet@gmail.com>
2021-04-29 08:45:08 -05:00
Keith Bennett
38bb3b86d2 Clarify Delta & SCARA config location (#20403) 2021-04-29 08:45:08 -05:00
Scott Lahteine
ad7fe15154 Style, spacing, typo cleanup for recent changes 2021-04-29 08:45:08 -05:00
Victor Oliveira
91e9599554 SPI TFT for STM32F4 boards (#20384)
* fix pinsDebug for F1 boards

* add MKS Robin PRO V2 board - development board

* tft spi working with F4 boards

* pins formating

* sanity check for TFT on supported cores in STM32

* Fix tabs/spaces in pins file

Co-authored-by: Jason Smith <jason.inet@gmail.com>
2021-04-29 08:45:08 -05:00
ellensp
47fd7fcaea Allow BTT EXP-MOT be used with Displays that needs only EXP 1 (#20396)
Co-authored-by: ellensp <ellensp@ellensp-HP-ProBook-6470b.fritz.box>
Co-authored-by: Victor Mateus Oliveira <rhapsodyv@gmail.com>
2021-04-29 08:45:08 -05:00
ellensp
50247fc894 Shorten Filament Load/Unload Strings to Fit on Graphical Displays (#20369)
Co-authored-by: ellensp <ellensp@ellensp-HP-ProBook-6470b.fritz.box>
Co-authored-by: Victor Mateus Oliveira <rhapsodyv@gmail.com>
2021-04-29 08:45:08 -05:00
Scott Lahteine
37dd0fd2d6 Fix auto#.g file handling, add NO_SD_AUTOSTART (#20071) 2021-04-29 08:45:08 -05:00
Scott Lahteine
1932e70e72 More LPC P-string macros 2021-04-29 08:45:08 -05:00
Scott Lahteine
ea81790d48 Watch idle() depth over 5 2021-04-29 08:45:08 -05:00
Scott Lahteine
2384e5c9c9 Fix fileExists, use openFailed 2021-04-29 08:45:08 -05:00
Victor Oliveira
72eda1d3ae Avoid invalid memory optimizations (#20389)
When building for AVR, merge-all-constants can incorrectly combine constants stored in flash with constants stored in RAM. These have different access requirements, leading to undefined behavior during execution.
Co-authored-by: ellensp <ellensp@hotmail.com>
2021-04-29 08:45:08 -05:00
Scott Lahteine
3a73f04fd3 G28 followup 2021-04-29 08:45:08 -05:00
Scott Lahteine
107834f899 G28 tweaks 2021-04-29 08:45:08 -05:00
Scott Lahteine
b6cd7aaf17 Fix STM32F1 SERIAL_GET_TX_BUFFER_FREE 2021-04-29 08:45:08 -05:00
Scott Lahteine
4b6fa1b54d Move G29 3-point startup earlier 2021-04-29 08:45:08 -05:00
Scott Lahteine
284cc8f62d ExtUI homing / leveling additions 2021-04-29 08:45:08 -05:00
Scott Lahteine
ef35fc60c1 Use 'nearby' for 'near' 2021-04-29 08:45:08 -05:00
Scott Lahteine
ec2843bcf3 Creality 4.5.2 format and fix 2021-04-29 08:45:08 -05:00
LinFor
8a18bb8440 Fix FYSETC S6 I2C EEPROM size (#20340)
Both V1.2 and V2.0 boards have a 24LC16, which is a 2kB EEPROM.

Co-authored-by: PingWin <kirill@shashlov.ru>
Co-authored-by: Jason Smith <jason.inet@gmail.com>
2021-04-29 08:45:08 -05:00
InsanityAutomation
21b15a0a09 Add Creality 4.5.2 board (#20378)
Co-authored-by: Jason Smith <jason.inet@gmail.com>
2021-04-29 08:45:08 -05:00
Jason Smith
c400c54b86 Suspend Servos for STM32+NeoPixel (#19963) 2021-04-29 08:45:08 -05:00
Jason Smith
1a618b1b31 Fix TMC_HOME_PHASE divide by zero (#20368) 2021-04-29 08:45:08 -05:00
Scott Lahteine
a09d096b87 Improved Longer3D LKx Pro board (#20372)
Co-authored-by: mrv96 <marione96@live.it>
2021-04-29 08:45:08 -05:00
Tanguy Pruvot
c88a7935d6 Don’t use near keyword as variable name (#20374) 2021-04-29 08:45:08 -05:00
Belin Fieldson
43bbf04764 Loosen E on pause for fila-manipulation (#20346)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:08 -05:00
Jason Smith
10b8737c7d Fix MESH_BED_LEVELING w/o SEGMENT_LEVELED_MOVES (#20363) 2021-04-29 08:45:08 -05:00
Victor Oliveira
dab29dddc3 Require minimum PlatformIO version (#20361)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
Co-authored-by: Jason Smith <jason.inet@gmail.com>
2021-04-29 08:45:08 -05:00
Scott Lahteine
20ea00e7f6 Consolidate common pin includes 2021-04-29 08:45:08 -05:00
ellensp
6a8ab8f1e6 Fix up start, monitor baud (#20326) 2021-04-29 08:45:08 -05:00
yysh12
eba2937715 Fix circle arc condition (#20322) 2021-04-29 08:45:08 -05:00
Jason Smith
07954edadc Permit SD EEPROM emulation on E3V2 (#20353) 2021-04-29 08:45:08 -05:00
Jason Smith
1c695e130e Fix E3V2 DWIN Jerk Menu (#20352)
* Fix E3V2 DWIN build without CLASSIC_JERK
* Fix jerk edits applying to wrong index
2021-04-29 08:45:08 -05:00
Luu Lac
f42d15437b Help hosts when password-locked (#20348) 2021-04-29 08:45:08 -05:00
Mathias Rasmussen
564e2e865c Update to STM32 v10, optimize build (#20325) 2021-04-29 08:45:08 -05:00
Scott Lahteine
c76f179487 Level Bed Corners is a sub-menu 2021-04-29 08:45:08 -05:00
Scott Lahteine
29a962320c Tweak to EEPROM safe delay 2021-04-29 08:45:08 -05:00
Jason Smith
e927ef94a6 Fix E3V2 Control Menu when returning from Info (#20338) 2021-04-29 08:45:08 -05:00
Jason Smith
f929123a7b Prevent Watchdog reset writing Creality 4.x EEPROM (#20328) 2021-04-29 08:45:08 -05:00
Jason Smith
d34bbee304 Increase E3V2 DWIN steps/mm range to 999.9 (#20324) 2021-04-29 08:45:08 -05:00
Scott Lahteine
74c509d36e General cleanup 2021-04-29 08:45:08 -05:00
Scott Lahteine
448cf2c357 Adjust axis homed / trusted methods (#20323) 2021-04-29 08:45:08 -05:00
Jason Smith
f22b677906 Leveling Fade Height default setting (#20316) 2021-04-29 08:45:08 -05:00
Jason Smith
272265c636 Fix STM32F1 'freeMemory()' warnings (#20319) 2021-04-29 08:45:08 -05:00
Alexander D. Kanevskiy
a8ba3c4e2e SKR E3 Turbo Controller Fan (#20320) 2021-04-29 08:45:08 -05:00
yysh12
523bc7d355 Arc Direction followup for circles (#20314) 2021-04-29 08:45:08 -05:00
Thomas Niccolo Reyes
1dd17d857e Fix M73 LCD code typo (#20300) 2021-04-29 08:45:08 -05:00
Sergey1560
a54b07d3ae Group related homing options (#20283)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:08 -05:00
yysh12
f63a7b978d Fix G2/G3 arcs > 180° (#20292) 2021-04-29 08:45:08 -05:00
ellensp
04483dd307 Fix BTT GTR 1.0 endstop/DIAG pins (#20296) 2021-04-29 08:45:08 -05:00
BsCmOD
3c5c36de50 FIX TMC menu message (#20294) 2021-04-29 08:45:07 -05:00
Scott Lahteine
deb8df8eff M808 Repeat Markers (#20084) 2021-04-29 08:45:07 -05:00
Štěpán Dalecký
3231741cd2 [WIP] Fix Probe::offset_xy (#20290)
Co-authored-by: Jason Smith <jason.inet@gmail.com>
2021-04-29 08:45:07 -05:00
wmariz
747bde7e64 Level Corners with Probe option (#20241) 2021-04-29 08:45:07 -05:00
Scott Lahteine
7c9c897dac Optimize emergency parser check 2021-04-29 08:45:07 -05:00
Scott Lahteine
fc1deea2b8 No auto debug for EEPROM_CHITCHAT 2021-04-29 08:45:07 -05:00
Scott Lahteine
7421282d9a Finish HAL/STM32 cpp wrappers 2021-04-29 08:45:07 -05:00
mks-viva
9d5a391b54 MKS Robin E3 / E3D v1.1 (#20216) 2021-04-29 08:45:07 -05:00
Scott Lahteine
6ec6d1d39d Tweak some pin errors 2021-04-29 08:45:07 -05:00
Jason Smith
e2c57f6d47 Retire HAL for STM32F4 / F7 (#20153) 2021-04-29 08:45:07 -05:00
Scott Lahteine
664e9d6dfe Reduce warnings, extern "C" cleanup (#20279) 2021-04-29 08:45:07 -05:00
swissnorp
0c24347cdb Probe Offset Wizard improvements (#20239) 2021-04-29 08:45:07 -05:00
Victor Oliveira
c86ede8cfb Fix COLOR_UI without TOUCH_SCREEN_CALIBRATION (#20269) 2021-04-29 08:45:07 -05:00
Victor Oliveira
38a62f0d5b add missing header to use HAS_SD_HOST_DRIVE (#20270) 2021-04-29 08:45:07 -05:00
Scott Lahteine
27b2e2d3e7 Update TOUCH_UI_LULZBOT_BIO wrappers 2021-04-29 08:45:07 -05:00
Scott Lahteine
4e940ffcc2 Cosmetic G29 ABL tweak 2021-04-29 08:45:07 -05:00
Scott Lahteine
109c08e9e5 Consistent Probe XY offset type 2021-04-29 08:45:07 -05:00
Jason Smith
03cdfafc2a No Z_MULTI_ENDSTOPS when HOMING_Z_WITH_PROBE (#20254) 2021-04-29 08:45:07 -05:00
pseudex
6cca5a9f92 Allow cold Filament Load/Unload with M302 P1 (#20262)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:07 -05:00
ellensp
629f0e21c9 Set "lcd_move_e" index to fix the label (#20263) 2021-04-29 08:45:07 -05:00
rdhoggattjr
a711e22b17 LCD position in current units (#20145) 2021-04-29 08:45:07 -05:00
Jason Smith
82663c7d11 Fix Z4 in ENABLE/DISABLE_AXIS_Z (#20256)
This was accidentally broken in PR #20218
2021-04-29 08:45:07 -05:00
Jason Smith
8cd25f35c2 Fix dummy thermistors for Bed, Chamber, Probe (#20247) 2021-04-29 08:45:07 -05:00
Scott Lahteine
300a944af6 Allow Status Message without LCD (#20246) 2021-04-29 08:45:07 -05:00
Jason Smith
5e57e60692 Fix UBL manual mesh adjust behavior (#20248) 2021-04-29 08:45:07 -05:00
Scott Lahteine
28cd6eca88 Hide docker droppings 2021-04-29 08:45:07 -05:00
Scott Lahteine
82c1bac4e3 Move core conditionals earlier 2021-04-29 08:45:07 -05:00
Scott Lahteine
08717ef117 Put "$3" on all tests 2021-04-29 08:45:07 -05:00
qwewer0
56c0608e4d Clear menu history for browse media on insert (#20236)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-04-29 08:45:07 -05:00
Kurt Haenen
9c9fd8714e Proper pullup/pulldown configurability (#20242)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-04-29 08:45:07 -05:00
Victor Oliveira
69b61fef67 Fix Load Filament wait (#20243) 2021-04-29 08:45:07 -05:00
Orel
add6b836df Skip unnecessary (costly) SW Stepper Enable (#20218)
Co-authored-by: Jason Smith <jason.inet@gmail.com>
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-04-29 08:45:07 -05:00
Gurmeet Athwal
a95a41ef73 BTN_ENC_EN for many boards (#19890)
Enables CHECK_ENCODER_ACTIVE_SIGNAL for many more boards.

Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
Co-authored-by: Jason Smith <jason.inet@gmail.com>
2021-04-29 08:45:07 -05:00
Scott Lahteine
f3805edbd6 Power-Loss cleanup 2021-04-29 08:45:07 -05:00
Simone Primarosa
7f91ff07c4 Superscript substitution (#20219)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-04-29 08:45:07 -05:00
Simone Primarosa
d5e13f255d Fix bad SET_FAST_PWM_FREQ calls (#20227) 2021-04-29 08:45:07 -05:00
Kurt Haenen
9ebe050646 Fix backward Filament (Presence) Sensor pulls (#20228)
Co-authored-by: Kurt Haenen <Kurt.Haenen@quintux.com>
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-04-29 08:45:07 -05:00
Scott Lahteine
7f84a7a85e Printrboard labels 2021-04-29 08:45:07 -05:00
Victor Oliveira
264e921d3f SINGLE_TOUCH_NAVIGATION Follow Up (#20213) 2021-04-29 08:45:07 -05:00
Victor Oliveira
7ad127668d Missing header to use suicide() on LVGL UI (#20214) 2021-04-29 08:45:07 -05:00
Ajtak
35d3e74267 Longer LK Pro / Alfawise PRO board (#20185) 2021-04-29 08:45:07 -05:00
Orel
2abde8a068 Fix DAC setDrvPct (#20205) 2021-04-29 08:45:07 -05:00
Vitaliy
afd3ee264b Windows LPC Upload for non-admins (#20208)
Co-authored-by: Victor Mateus Oliveira <rhapsodyv@gmail.com>
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-04-29 08:45:07 -05:00
Scott Lahteine
2e193b9a29 Fix Z label 2021-04-29 08:45:07 -05:00
Scott Lahteine
48c2065a17 MKS WiFi strings 2021-04-29 08:45:07 -05:00
Scott Lahteine
7729a0c3bb More MKS WiFi 2021-04-29 08:45:07 -05:00
Scott Lahteine
f1b32b808f MKS WiFi preliminary changes 2021-04-29 08:45:06 -05:00
Till
5ef1d053eb Add Thermistor 20-21 notes (#19246) 2021-04-29 08:45:06 -05:00
Victor Oliveira
0264841dc4 Reduce RAM usage for TFT Color UI on SGen-L V2 (#20209) 2021-04-29 08:45:06 -05:00
Maciej Rutkowski
40071c3fb9 Fix GTR NeoPixel pin with FYSETC Mini12864 (#20203) 2021-04-29 08:45:06 -05:00
ellensp
d92f69f137 Remaining Time followup (#20199) 2021-04-29 08:45:06 -05:00
Victor Oliveira
15febdfe07 Fix Filament Change menu item labels (#20201) 2021-04-29 08:45:06 -05:00
Victor Oliveira
1040f14da4 Abort print on media removal (#20200) 2021-04-29 08:45:06 -05:00
JoAnn Manges
11f08804d1 Use RTD for MAX31865 reading (#20188) 2021-04-29 08:45:06 -05:00
bosd
29d45b1144 Fix broken #include (#20193) 2021-04-29 08:45:06 -05:00
Giuliano Zaro
bd38e59479 SMUFF (MMU2 clone) support (#19912) 2021-04-29 08:45:06 -05:00
Scott Lahteine
b6d2671260 USB Media Host followup
Restore HAS_SHARED_MEDIA
2021-04-29 08:45:06 -05:00
Jason Smith
5f9ccb361a Use MANUAL_PROBE_START_Z for UBL manual probing (#20160) 2021-04-29 08:45:06 -05:00
Philippe Cayrol
ef51bd16dc Better edit range for Linear Advance K (#20155) 2021-04-29 08:45:06 -05:00
Thomas Niccolo Reyes
125ad2003d Remaining Time for Prusa-style LCD layout (#20148)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:06 -05:00
Victor Oliveira
ccac37613b Improve USB Media Host conditions (#20176)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:06 -05:00
Foxies
292e83466e FLSun Hispeedv1 Board update (#19959)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:06 -05:00
Thomas Niccolo Reyes
172cc0dd03 Open File Browser on Media Insert (option) (#20151)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:06 -05:00
wmariz
26d3caf97c Probe Wizard XY position (#20167) 2021-04-29 08:45:06 -05:00
Jason Smith
7848096acb Fix NAN mesh entries with ABL_BILINEAR_SUBDIVISION (#20143) 2021-04-29 08:45:06 -05:00
Victor Oliveira
18869c666f COLOR_UI without TOUCH_SCREEN 👍🏻 (#20178) 2021-04-29 08:45:06 -05:00
Costas Basdekis
1c81a126c5 Local testing via Makefile & Docker (#19981) 2021-04-29 08:45:06 -05:00
Victor Oliveira
180fe914b6 Prevent #div0 error (#20183) 2021-04-29 08:45:06 -05:00
Victor Oliveira
dc644df9bc Reduce RAM usage for TFT Color UI on SGen-L (#20179) 2021-04-29 08:45:06 -05:00
Roman Moravčík
550306d1b6 Update Slovak language (#20181) 2021-04-29 08:45:06 -05:00
石立枫
78eb12958a Add FLY_CDY board (#19979)
Co-authored-by: FLYmaker <FLYmaker@users.noreply.github.com>
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
Co-authored-by: Jason Smith <jason.inet@gmail.com>
2021-04-29 08:45:06 -05:00
ellensp
cc9df782ce add ethernet to src filter (#20136)
Co-authored-by: ellensp <ellensp@ellensp-HP-ProBook-6470b.fritz.box>
2021-04-29 08:45:06 -05:00
Victor Oliveira
562c41af4e Use intptr types (simulator) (#20142) 2021-04-29 08:45:06 -05:00
Jason Smith
b5e7b8e29e Allow overriding servo pin for MKS Robin Mini (#20158) 2021-04-29 08:45:06 -05:00
Keith Bennett
2979504b9c Multi-Hotend Preheat Fixes (#20165)
* Return to Status Screen on Multi-Hotend Preheat All

Co-authored-by: Victor Oliveira <81722+rhapsodv@users.noreply.github.com>
2021-04-29 08:45:06 -05:00
Jason Smith
a01fab662c Allow dummy thermistors without pin definitions (#20159) 2021-04-29 08:45:06 -05:00
FanDjango
daa2a04fc9 Guards for large BLOCK_BUFFER_SIZE (>=128) (#20130)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:06 -05:00
InsanityAutomation
983bb89063 Update IDEX menus, add post-M605 event G-code (#20133)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:06 -05:00
Victor Oliveira
3d9b453000 Add Touch Calibration screen (#20049) 2021-04-29 08:45:06 -05:00
Scott Lahteine
90f647b6be Fix some LCD/serial strings 2021-04-29 08:45:06 -05:00
Scott Lahteine
7f7c27be30 Add parser.is_command(letter, code) 2021-04-29 08:45:06 -05:00
Minims
2b63a1b4e1 BTT Motor Expansion for SKR Pro (#20123) 2021-04-29 08:45:06 -05:00
Keith Bennett
90f3d1f7a6 UTF Filenames followup (#20135) 2021-04-29 08:45:06 -05:00
phcay
65a5eb47b3 Fix extraneous Linear Advance DIR change (#20131) 2021-04-29 08:45:06 -05:00
Luu Lac
6b5ddfe235 Fix "autotune" LCD message (#20127) 2021-04-29 08:45:06 -05:00
Scott Lahteine
2f57b1d529 Optimize M360 2021-04-29 08:45:06 -05:00
Scott Lahteine
7e535022ab Fix compile warnings, serial alias 2021-04-29 08:45:06 -05:00
Scott Lahteine
cb1d2de838 .gitignore for native / simulation 2021-04-29 08:45:06 -05:00
Scott Lahteine
96acbb2506 LCD_FIRST_TOOL status bitmaps 2021-04-29 08:45:06 -05:00
Gonçalo Pereira
030f745b08 Typo in MMU2 serial protocol description (#19949) 2021-04-29 08:45:06 -05:00
InsanityAutomation
dc949f5488 G34 Z stepper locking (#20091)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:06 -05:00
LinFor
7b745345f7 Fix UTF filename scroll (#20121)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:06 -05:00
Jason Smith
3ee61e2084 UTF longname followup (#20115) 2021-04-29 08:45:06 -05:00
Scott Lahteine
26a1cd9a00 Terse sanity messages 2021-04-29 08:45:06 -05:00
Scott Lahteine
27c74d2f72 Add HOME_Z_FIRST option (#20113) 2021-04-29 08:45:06 -05:00
LinFor
a5ee22baa2 Fix MAX6675 SPI init, conflicts (#20086) 2021-04-29 08:45:06 -05:00
JoAnn Manges
02c3c314fe Fix MAX31865 on SPI (PT100/1000) support (#20074) 2021-04-29 08:45:06 -05:00
Hebezo
012745b218 Option to ignore SD at startup (#20099)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:06 -05:00
Scott Lahteine
d4b86322a9 M32 followup 2021-04-29 08:45:06 -05:00
ellensp
ac74786c2b Fix compile with PLR, no fan (#20096) 2021-04-29 08:45:06 -05:00
Davidsg33k
cf43c9901f 400 Z steps-per-mm (#20104) 2021-04-29 08:45:06 -05:00
LinFor
3030bf4274 Handle UTF in long filenames (#20087)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:06 -05:00
Costas Basdekis
dc144fb910 Distinct runout states (#19965)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:06 -05:00
Costas Basdekis
45b242d5f7 Fix Linux GPIO logging (#20093)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:05 -05:00
ellensp
42b37da1e7 BTT driver expansion for SKR 1.3/1.4 (#20088)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:05 -05:00
Speaka
8eb5950ebd Tramming Wizard wait position (#20063) 2021-04-29 08:45:05 -05:00
Victor Oliveira
ccb5e34052 Fix UI compile issues (#20092) 2021-04-29 08:45:05 -05:00
Jason Smith
ee48fc6544 Fix Arduino DUE compilation (#20058) 2021-04-29 08:45:05 -05:00
qwewer0
2365df532f What if 8 was 9? (#20076) 2021-04-29 08:45:05 -05:00
qwewer0
24c2ce6a87 Update issues/support link (#20077)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:05 -05:00
Gustavo Alvarez
791fba3187 Fix SKR E3 DIP pin CLCD_SPI_CS (#20078) 2021-04-29 08:45:05 -05:00
Tanguy Pruvot
367c447ff8 Fix 320x240 touch buttons Y (#20079) 2021-04-29 08:45:05 -05:00
Scott Lahteine
ca730314e7 Ability to disable M32 2021-04-29 08:45:05 -05:00
Scott Lahteine
b2d6b8c567 Simplified temp sensor conditionals 2021-04-29 08:45:05 -05:00
Hebezo
170ba87648 Add POWER_OFF_DELAY option (#19987)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:05 -05:00
qwewer0
44f689320b Use extra G35 BLTouch HS Mode clearance in Tramming Wizard (#20057)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:05 -05:00
Alexander D. Kanevskiy
7da62cc9f7 POWER_LOSS_PIN for BTT SKR mini MZ / E3 2.0 (#20069) 2021-04-29 08:45:05 -05:00
Jason Smith
841f0d5778 Fix tool-change servo index for E2 and up (#20060) 2021-04-29 08:45:05 -05:00
Scott Lahteine
367e717aeb Add alternative TERN macros 2021-04-29 08:45:05 -05:00
Scott Lahteine
5bf82b34c6 Temperature 'autostart' => 'auto_job' 2021-04-29 08:45:05 -05:00
Scott Lahteine
734dd1c293 MSG_AUTOSTART => MSG_RUN_AUTO_FILES 2021-04-29 08:45:05 -05:00
Albert van Osch
4052ef7097 Zonestar Z8 XM2 support (#19991) 2021-04-29 08:45:05 -05:00
Scott Lahteine
dfb6dd2ad2 Apply some pins formatting 2021-04-29 08:45:05 -05:00
Scott Lahteine
426d555f6e TFT cleanup 2021-04-29 08:45:05 -05:00
LinFor
b129652597 Fix Endstop Interrupts with SPI endstops, sanity checks (#20051)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:05 -05:00
Speaka
ec5b2aab15 Tramming Wizard submenu option (#20000)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:05 -05:00
Victor Oliveira
af5cf823ea Color UI single touch menu navigation (#20053) 2021-04-29 08:45:05 -05:00
Darren Horrocks
7e94079b5b Optimized (non-optiboot) Melzi env (#20021)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:05 -05:00
Darren Horrocks
d81c1961c2 Anet 1.0 alternative graphical LCD wiring (#20022) 2021-04-29 08:45:05 -05:00
Scott Lahteine
45e0dd1966 Add 'mfconfig' script used to manage configs 2021-04-29 08:45:05 -05:00
Jason Smith
a1ec49feda Sanity-check illegal native USB (#20047)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:05 -05:00
Jason Smith
3afa6e526b STM32F1 cleanup, incl. SoftwareSerial removal (#20046) 2021-04-29 08:45:05 -05:00
Jason Smith
ecabbb6974 Fix FYSETC S6 timer conflict (#20044) 2021-04-29 08:45:05 -05:00
George Fu
989ef47bde FYSETC E4 board support (#20032) 2021-04-29 08:45:05 -05:00
Scott Lahteine
5a918e2b2e Update some file headers 2021-04-29 08:45:05 -05:00
Victor Oliveira
2dd1522e30 Standardize Marlin SPI (part 1) (#19989) 2021-04-29 08:45:05 -05:00
Scott Lahteine
e49f267c4a Use nullptr 2021-04-29 08:45:05 -05:00
Mauro
afed97bf0e Fix E4d@box pins, stepper i2s (#20055) 2021-04-29 08:45:05 -05:00
Scott Lahteine
9ba113bc05 Clean up corrected urls 2021-04-29 08:45:05 -05:00
Marc Jovaní González
35d7618117 Add Spanish translations (#20020) 2021-04-29 08:45:05 -05:00
Jason Smith
10c8647c1b Fix 0 extruders & bed compile (#20030) 2021-04-29 08:45:05 -05:00
Sergey1560
1767a3bd70 Don't close diveDir in fileExists (#20035) 2021-04-29 08:45:05 -05:00
Jason Smith
5082106145 Fix BTT002 PeripheralPins PWM assignments (#20036) 2021-04-29 08:45:05 -05:00
Scott Lahteine
b643a07b66 Comment, spacing cleanup 2021-04-29 08:45:05 -05:00
Josh Schroeder
dd92c79339 Wiring warning for ANET_FULL_GRAPHICS_LCD on SKR 1.4 (#20011) 2021-04-29 08:45:05 -05:00
Victor
b767a82bd8 FAST_PWM for STM32 (#20025) 2021-04-29 08:45:05 -05:00
Scott Lahteine
67d58ccb98 HAL support for 8s watchdog 2021-04-29 08:45:05 -05:00
Keith Bennett
bbfac75f19 Add note about TMC2225/6 (#20002) 2021-04-29 08:45:05 -05:00
Victor Oliveira
930aad6d31 Better Classic UI touch resolution (#20004) 2021-04-29 08:45:05 -05:00
Victor Oliveira
65383dd616 Show un-mounted media slot (#20005) 2021-04-29 08:45:05 -05:00
Scott Lahteine
2ae8014da7 DWIN cleanup, preserve Z offset 2021-04-29 08:45:04 -05:00
Victor Oliveira
b79e2d1e8d Add a filament runout note (#19973)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:04 -05:00
Victor Oliveira
172996f2b3 Fix STM32 HW Serial + EP compile (#19990) 2021-04-29 08:45:04 -05:00
Victor Oliveira
3c512648da Increase SPI Speed on LPC. Color and Classic UI for MKS SGEN L. (#19945) 2021-04-29 08:45:04 -05:00
Alexander D. Kanevskiy
e335e74379 Y-center GLCD status logo, reorganize (#19954)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:04 -05:00
Victor Oliveira
5c90d0d0ae Reset calibration screen touch timer on click (#19951) 2021-04-29 08:45:04 -05:00
Scott Lahteine
95fb749923 Clean up SPI and ST7920 defines (#19956) 2021-04-29 08:45:04 -05:00
Jason Smith
d9a47ec075 Get STM32 clock rates from framework (#19978)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:04 -05:00
Alexander Semion
c9c17b8863 Add SPINDLE_SERVO option (#19971) 2021-04-29 08:45:04 -05:00
Victor Oliveira
2a61ce80b8 Put PIO "debug" build in the corner (#19975) 2021-04-29 08:45:04 -05:00
Nick
3eaeaa8af3 Fix Chiron probe low point (#19962) 2021-04-29 08:45:04 -05:00
Scott Lahteine
261e8df837 Cutter power cleanup 2021-04-29 08:45:04 -05:00
Julien Lirochon
d18ab2d206 Fix SpindleLaser::cpwr_to_pct() maths (#19970) 2021-04-29 08:45:04 -05:00
Scott Lahteine
08f2735e86 Cutter enable inline at full power
Co-Authored-By: Luu Lac <45380455+shitcreek@users.noreply.github.com>
2021-04-29 08:45:04 -05:00
thinkyhead
aec215aaf3 Fix bilinear_line_to_destination definition
See #19431
2021-04-29 08:45:04 -05:00
Orel
4b08e06fa6 Rename, adjust Dagoma F5 (#19947) 2021-04-29 08:45:04 -05:00
Scott Lahteine
2774b70fbf gcode_D EEPROM size, cleanup
Fixes #19920

Co-Authored-By: Orel <37673727+0r31@users.noreply.github.com>
2021-04-29 08:45:04 -05:00
Victor
3dbe4ac593 FAST_PWM for STM32F1 (#19952) 2021-04-29 08:45:04 -05:00
Giuliano Zaro
ba28660acb Update Italian language (#19953) 2021-04-29 08:45:04 -05:00
Victor Oliveira
cec9075361 PIO env for MKS Nano boards in STM32 (#19905) 2021-04-29 08:45:04 -05:00
Marcio Teixeira
176cb29eab Improvement and fixes to FTDI touch UI
- Fixed incorrect LCD text string
- Fixed incorrect refresh of filament change screens
- Allow host control via touch UI
- Updates to leveling menu
- Modified ExtUI::isPrinting() to check if the job timer is running
- Added ExtUI method to check whether a host print is paused
2021-04-29 08:45:04 -05:00
Scott Lahteine
3cb7128116 Tweak code formatting 2021-04-29 08:45:04 -05:00
Victor Oliveira
88e88743b9 Color UI for MKS SGen-L V2 (#19919) 2021-04-29 08:45:04 -05:00
Scott Lahteine
e6092ad146 .bin and .woff are binary 2021-04-29 08:45:04 -05:00
Scott Lahteine
59914df5b7 Fix comments, spacing 2021-04-29 08:45:04 -05:00
Scott Lahteine
67fbee389e Add a note about substitution chars 2021-04-29 08:45:04 -05:00
Victor Oliveira
b590cee35a Keep SPI active on LPC176x (#19932) 2021-04-29 08:45:04 -05:00
Victor Oliveira
0c81d86cd4 Permit spaces in dependencies g++ path (#19929) 2021-04-29 08:45:04 -05:00
Alexander Fomichev
d6e93bb9c7 Generalize BTT SKR E3-DIP version (#19910) 2021-04-29 08:45:04 -05:00
ellensp
2bb94b4329 AZTEEG X5 mini LED pins (#19909) 2021-04-29 08:45:04 -05:00
Gurmeet Athwal
fa0614516a Update ExtUI path in config comment (#19908) 2021-04-29 08:45:04 -05:00
Victor Oliveira
d08511c5dc Color UI circular task queue (#19918) 2021-04-29 08:45:04 -05:00
Jason Smith
2a4cdf5a5d Fix LCD menus + DAC (#19907) 2021-04-29 08:45:04 -05:00
Orel
f5f6170858 Fix DAC-related bugs (#19921)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:04 -05:00
Lucas Seiki Oshiro
d7d1ef8228 "Sound: ON/OFF" menu item (#19901)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:04 -05:00
Speaka
d4669dbf6a Fix G35 PROGMEM strings (#19926) 2021-04-29 08:45:04 -05:00
Scott Lahteine
f43f71646e Archim test matching env 2021-04-29 08:45:04 -05:00
Scott Lahteine
aecf545446 Fix Archim 1, add Archim 1&2 tests 2021-04-29 08:45:04 -05:00
Victor Oliveira
3b42e0263a Keep watchdog refreshed in LVGL init (#19900) 2021-04-29 08:45:04 -05:00
Victor Oliveira
5a74114e23 Fix some LVGL bugs (#19904) 2021-04-29 08:45:04 -05:00
Marcio Teixeira
3bab0fccc2 Fix NO_WORKSPACE_OFFSETS compile 2021-04-29 08:45:04 -05:00
Scott Lahteine
2a8fdb8ee4 Followup for BTN_ENC_EN 2021-04-29 08:45:04 -05:00
Scott Lahteine
6c103b72a2 Clean up comments, USB flash, NULLs 2021-04-29 08:45:04 -05:00
Scott Lahteine
ea9e28bb69 Format Nucleo F767ZI pins 2021-04-29 08:45:04 -05:00
ellensp
c94afc7592 Fix PASSWORD compile w/out LCD (#19888) 2021-04-29 08:45:04 -05:00
René Pasold
80909e4424 Support Fysetc Mini 12864 + GT2560 A(+) (#19878) 2021-04-29 08:45:04 -05:00
ellensp
c59f64ce49 Use LiquidCrystal_I2C@1.1.4 for RA_CONTROL_PANEL (#19875) 2021-04-29 08:45:04 -05:00
Jason Smith
e232f93018 Update ZMIB_V2 env names (#19886) 2021-04-29 08:45:04 -05:00
Jason Smith
62d578de9e Ignore NativeEthernet on AT90USB1286 (#19885) 2021-04-29 08:45:04 -05:00
Gurmeet Athwal
a625fee035 Add 'BTN_ENC_EN' for SKR V1.4 with DOGM (#19796) 2021-04-29 08:45:04 -05:00
Victor Oliveira
b586a30e7b More LVGL UI code reduction (#19879) 2021-04-29 08:45:04 -05:00
Nick
676354f1d1 Fix Anycubic Chiron "Ready" detection (#19880)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:04 -05:00
Victor Oliveira
e44a97a096 Update PIO dependencies script 2021-04-29 08:45:04 -05:00
Victor Oliveira
35597ae336 More MKS UI cleanup, optimization (#19869)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:04 -05:00
Keith Bennett
c3e8b46284 Fix Chitu V5/V6 FAN2 pins (#19874) 2021-04-29 08:45:04 -05:00
Scott Lahteine
d3ee5d7dfe Fix warning in gcode_D 2021-04-29 08:45:04 -05:00
Scott Lahteine
2fed3982d6 Pins post-process header (#19860) 2021-04-29 08:45:04 -05:00
Scott Lahteine
f9b04af650 Case light brightness cleanup (#19856)
Co-authored-by: Chris <chris@chrisnovoa.com>
2021-04-29 08:45:04 -05:00
Scott Lahteine
b1b2ecba6c Shorten a method name 2021-04-29 08:45:04 -05:00
qwewer0
6601ca7a22 Fix Chopper Timing extra axis defaults (#19850) 2021-04-29 08:45:04 -05:00
Scott Lahteine
1b51000736 Slim down MKS UI code (#19843) 2021-04-29 08:45:04 -05:00
George Fu
994cda3b6b Fix TMC serial port for FYSETC AIO_II (#19842) 2021-04-29 08:45:04 -05:00
ManuelMcLure
2becb5ebf7 Configure TMC interpolation per driver (#19828) 2021-04-29 08:45:03 -05:00
Foxies
32433fae61 FLSUN Delta QQS-Pro pins (#19793) 2021-04-29 08:45:03 -05:00
Scott Lahteine
99ce660aed Add power-on/off G-code options (#19837)
Co-authored-by: Chris <chris@chrisnovoa.com>
2021-04-29 08:45:03 -05:00
Keith Bennett
01b9badb51 BigTreeTech SKR Mini MZ V1 (#19818) 2021-04-29 08:45:03 -05:00
Mauro
f27b61cb0f Fresh Web GUI (based on bootstrap.js) (#19812) 2021-04-29 08:45:03 -05:00
TheMichalcinOfficial
52bc509fcf Support for Ramps-S v1.2 (#19815) 2021-04-29 08:45:03 -05:00
Scott Lahteine
2984960793 General cleanup, mostly MKS UI (#19825) 2021-04-29 08:45:03 -05:00
Scott Lahteine
e32bdf6a93 ESP32: i2s_init requires I2S_STEPPER_STREAM 2021-04-29 08:45:03 -05:00
uwedamm
35d75c354e Fix G2/G3 P<circles> E and Z motion (#19797)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:03 -05:00
Tanguy Pruvot
9f85a15955 Longer3D: LONGER_LK_TFT28 now set by config (#19817) 2021-04-29 08:45:03 -05:00
ellensp
b1b8161447 Handle dependent Stepper Driver defaults later (#19820)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:03 -05:00
bilsef
c6f17ac01e Teensy 4.1 Ethernet support (#19801) 2021-04-29 08:45:03 -05:00
Scott Lahteine
53a4b8fa33 Misc. cleanup, serial strings 2021-04-29 08:45:03 -05:00
Scott Lahteine
a90b90e98d Tweak a host prompt call 2021-04-29 08:45:03 -05:00
Scott Lahteine
ff9a27ee9f Use PGM serial strings 2021-04-29 08:45:03 -05:00
ellensp
cf0a817db1 Ensure A4988 for unspecified driver type (#19798)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:03 -05:00
Scott Lahteine
e00745c548 Document M125 P 2021-04-29 08:45:03 -05:00
InsanityAutomation
af956bbb32 Apply home offsets to probing, Z Safe Homing (#19423)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:03 -05:00
Scott Lahteine
4343a96fac ABM Teensy 3.6 build 2021-04-29 08:45:03 -05:00
Jago Strong-Wright
9124f1d7c8 Distinct Chopper Timing settings (#19781)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-04-29 08:45:03 -05:00
Sten Uusvali
32ca42ead3 Fix M503 output for M907 motor current (#19777)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-04-29 08:45:03 -05:00
Curtis Jenkins
25bb249ac6 Fix Smoothieboard digipots i2c pin (#19784) 2021-04-29 08:45:03 -05:00
Scott Lahteine
332adafa23 MarlinUI followup 2021-04-29 08:45:03 -05:00
Scott Lahteine
a44aae268a Starting fan followup 2021-04-29 08:45:03 -05:00
Victor Oliveira
52c090dfbe Fix starting fan with bad material preset index (#19773) 2021-04-29 08:45:03 -05:00
Scott Lahteine
141f6825ce Rename ultralcd => marlinui 2021-04-29 08:45:03 -05:00
Scott Lahteine
fff5649b6a touch_ms followup 2021-04-29 08:45:03 -05:00
arminth
34c16bb395 Provide FYSETC F6 13 LCD pins for HD44780 (#19769) 2021-04-29 08:45:03 -05:00
Jason Smith
cedc5d340f LCD conditionals followup (#19766) 2021-04-29 08:45:03 -05:00
nb-rapidia
3becc3ad63 Fix IDEX layer shift and DIR states (#19756)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:03 -05:00
Serhiy-K
19498040ef Fix HAL/STM32 FastIO for analog pins (#19735) 2021-04-29 08:45:03 -05:00
Victor Oliveira
060b2f4989 Fix Color UI external_control, wait_for_release (#19771)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:03 -05:00
Victor Oliveira
2ecc3bb560 Handle M410 in the main task (#19752) 2021-04-29 08:45:03 -05:00
Jason Smith
d5340675ae Fix SAMD Serial name macro (#19765) 2021-04-29 08:45:03 -05:00
mks-viva
dea995e19f Update MKS SGen-L V2 RGB LED pins (#19762) 2021-04-29 08:45:03 -05:00
Andreas Setterlind
473abe8eb4 Add ESP32 160MHz to README (#19748) 2021-04-29 08:45:03 -05:00
Jason Smith
386e643179 Fix NUCLEO_F767ZI build, add tests (#19746) 2021-04-29 08:45:03 -05:00
Victor Oliveira
1fa19e1fc2 Sanity check unsupported EP (#19745) 2021-04-29 08:45:03 -05:00
Victor Oliveira
13720ce6b2 Fix TOUCH_SCREEN + TFT_LVGL_UI compile (#19754) 2021-04-29 08:45:03 -05:00
Victor Oliveira
02b668baf5 Update Probe Offset Wizard for Color UI (#19742) 2021-04-29 08:45:03 -05:00
rlojek
57dc1a0649 Fix ADVANCED_PAUSE && !PREVENT_COLD_EXTRUSION (#19740) 2021-04-29 08:45:03 -05:00
Peter Hall
8ae8e1e455 Default LASER_POWER_INLINE to OFF (#19727) 2021-04-29 08:45:03 -05:00
Scott Lahteine
7905aa64fa TFT Presets, Generic options, Sanity checks (#19723) 2021-04-29 08:45:03 -05:00
Jason Smith
d81abf1d50 Fix SET_SOFT_ENDSTOP_LOOSE w/out soft endstops (#19734) 2021-04-29 08:45:03 -05:00
Jason Smith
6a5799fc7d Revert at90usb1286 conditional (#19733) 2021-04-29 08:45:03 -05:00
Jason Smith
3e4d9aa9bb Fix digipot compilation (#19731) 2021-04-29 08:45:03 -05:00
Jason Smith
2004080c9d Fix mega2560ext environment (#19730) 2021-04-29 08:45:02 -05:00
Keith Bennett
70dc2ee9bb If needed, home before G34 (#19713) 2021-04-29 08:45:02 -05:00
Victor Oliveira
7825fc63a0 Watchdog Refresh for LVGL Asset Load (#19724) 2021-04-29 08:45:02 -05:00
Jason Smith
33b2f0700e Add NUCLEO-F767ZI dev board (#19373)
Co-authored-by: Lorenzo Delana <lorenzo.delana@gmail.com>
2021-04-29 08:45:02 -05:00
Scott Lahteine
647981ef44 Simple bool in soft_endstops_t 2021-04-29 08:45:02 -05:00
Victor Oliveira
252fd66b76 TFT followup fixes (#19710) 2021-04-29 08:45:02 -05:00
Scott Lahteine
1ef1ea0b3e Move @section temperature 2021-04-29 08:45:02 -05:00
Victor Oliveira
14fe7ee414 Fix UTF8 handling for Color UI (#19708) 2021-04-29 08:45:02 -05:00
Keith Bennett
bd22194438 Sanity-check mutually-exclusive G34 features (#19706) 2021-04-29 08:45:02 -05:00
Earle F. Philhower, III
ea65e10dc7 Add loose soft endstop state, apply to UBL fine-tune (#19681)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:02 -05:00
Jason Smith
48a24202ef Add D100 Watchdog Test (#19697) 2021-04-29 08:45:02 -05:00
Victor Oliveira
9b1ed45b3e TFT Refactoring (#19192)
* split tft folder in two: tft for color ui; tft_io for shared tft code

* after the files got moved, now the code was moved to the right place

* classic ui using TFT IO init lcd codes

* feature to compile tft_io when enabled

* compiling fix

* lvgl spi tft working with tft io init codes

* there is no need for separeted fsmc and spi class in lvgl anymore, as tft io handle everything

* remove debug

* base for TFT rotation and mirroring API, and ILI9488 support

* ST7796S rotate and mirror support

* ST7789V rotate and mirror support

* ST7735 rotate and mirror support

* ILI9341 rotate and mirror support

* ILI9328 rotate and mirror support

* R61505 rotate and mirror support

* MKS TFT definitions

* more configs for mks tfts

* update config

* naming typo

* to configure the user interface

* ANYCUBIC_TFT35

* tft configs

* support for SSD1963

* tft display types

* updated conditionals lcd; first board fully working with the new code - all 3 ui!

* compatiblity

* changed name

* move classic ui file name

* rename TURN -> ROTATE

* GRAPHICAL_TFT_ROTATE_180 deprecated

* first fsmc board fully working - chitu v5

* mks robin nano v1.2 + tft 35 ok!

* right pin name

* anycubic tft tested in a TRIGORILLA_PRO

* chitu v6

* nano 32 tft orientation

* mks tft43

* mks tft43 rotation

* fixed LONGER LK tft setup

* GRAPHICAL_TFT_UPSCALE defined by the display type

* better offsets defaults

* Update Configuration.h

* Update tft_fsmc.cpp

* Update Conditionals_LCD.h

* Tweak comments

* update nano tests

* Revert "update nano tests"

This reverts commit a071ebbfad30e28855a4a5695ec8a726542a1a65.

* default tft

* outdated comments

* to not break non-vscode builds

* upscale tft 35

* support tft 180 rotation for color ui

* Each TFT Driver is responsible for its default color mode.

* use auto detect in mks displays, because some of them could be shipped with diferent drivers

* extra s

* unused code

* wrong -1

* missing mirror options

* Smaller regex pattern

* Comment updates

* Clean up old defines

* Apply pins formatting

* GRAPHICAL_TFT_ROTATE_180 => TFT_ROTATE_180

* MKS_ROBIN_TFT_V1_1R

* merge fix

* correct resolution

* auto is default, dont need be there, and it will allow the user to configure it even for named displays

* to not use rotation with MKS_ROBIN_TFT_V1_1R

* i like () in macros

* avoid sleepy commits

* default for st7789 is rgb

* nano follow up

* to allow ili9328 rotation

* default is rgb

* boards merge follow up

* to match bootloader orientation

* HAS_TOUCH_XPT2046 is not hal specific anymore

* lets not forget LPC

* 180 rotation for ili9328 and R61505

* Clean up whitespace

Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-04-29 08:45:02 -05:00
Scott Lahteine
f163f1940d Fix screen click reading too often (#19696)
Co-authored-by: andreibobirica <39415547+andreibobirica@users.noreply.github.com>
2021-04-29 08:45:02 -05:00
Jason Smith
fdcd28a0ec Allow MAX31865 resistance values configuration (#19695) 2021-04-29 08:45:02 -05:00
InsanityAutomation
d2863466ac G34 Mechanical Gantry Calibration (like Prusa M915) (#18972)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:02 -05:00
qwewer0
5047979340 Add REPORT_TRAMMING_MM option (#19682)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:02 -05:00
Jason Smith
7ab74d22c4 Fix motion compile w/out probe-oriented settings (#19684) 2021-04-29 08:45:02 -05:00
Victor Oliveira
c1729330c5 Option to prevent (extra) Watchdog init on STM32 (#19693) 2021-04-29 08:45:02 -05:00
Victor Oliveira
2dafba1ad2 Implement wait_for_user for Color UI (#19694) 2021-04-29 08:45:02 -05:00
Jason Smith
67e0e6d5ad Fix I2C_ADDRESS sign warning (#19685) 2021-04-29 08:45:02 -05:00
Jason Smith
8b4f82cd07 Fix various errors, warnings in example config builds (#19686)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:02 -05:00
Jason Smith
2c7b5fe1f2 Fix at90usb1286 build (#19687)
* Skip check for USBCON during dependency detection
* Ignore incompatible Teensy_ADC library, which requires Teensy >= 3
* Add IS_AT90USB

Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:02 -05:00
Scott Lahteine
a30e8baf3e Digipots refactor / cleanup (#19690) 2021-04-29 08:45:02 -05:00
Scott Lahteine
2e01eb9189 Save PLR on resume from pause (#19676)
Co-Authored-By: shahab <32130261+SHBnik@users.noreply.github.com>
2021-04-29 08:45:02 -05:00
Victor Oliveira
2adac87c45 Restore correct STM32 port-bits code (#19678) 2021-04-29 08:45:02 -05:00
Serhiy-K
72f9fdc05f Fixes for TFTGLCD Panel, FastIO (#19614) 2021-04-29 08:45:02 -05:00
ellensp
cbed6f4241 HAS_CHARACTER_LCD => HAS_MARLINUI_HD44780 (#19673) 2021-04-29 08:45:02 -05:00
Victor Oliveira
50de8bd6fb Keep HAL tasks running during PID Autotune (#19671) 2021-04-29 08:45:02 -05:00
Scott Lahteine
7e09160ba3 Batch appercase hex values 2021-04-29 08:45:02 -05:00
Scott Lahteine
3facf34f5f Optional M42/M226; Add more features filters (#19664) 2021-04-29 08:45:02 -05:00
Victor Oliveira
2553a18f40 Support for Debug Codes - Dnnn (#19225)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:02 -05:00
石立枫
0b13608bad Support for FLY MINI (#19185) 2021-04-29 08:45:02 -05:00
Keith Bennett
8143d70829 Fix touch ifndefs (#19661) 2021-04-29 08:45:02 -05:00
Giuliano Zaro
92bbf3ba18 Update Italian language (#19654) 2021-04-29 08:45:02 -05:00
Samantaz Fox
5441ee5a7a Fix and improve Makefile / CMake (#19640) 2021-04-29 08:45:02 -05:00
Scott Lahteine
fde169d3ef Permit touch calibration override 2021-04-29 08:45:02 -05:00
Scott Lahteine
3516c3f936 Use 0xFF (not 'ff') for byte transfer 2021-04-29 08:45:02 -05:00
ellensp
e6de60d04e Apply env:mega2560ext to relevant boards (#19624) 2021-04-29 08:45:02 -05:00
qwewer0
cd839a251f Update PROBE_OFFSET_WIZARD comment (#19652) 2021-04-29 08:45:02 -05:00
qwewer0
fadee1b46b More accessible PROBE_OFFSET_WIZARD (#19647) 2021-04-29 08:45:02 -05:00
ellensp
3e9c6c6297 Restore ° to 6x9 small info font (#19645) 2021-04-29 08:45:02 -05:00
Scott Lahteine
45385e737c Chamber vent/fan followup 2021-04-29 08:45:02 -05:00
Scott Lahteine
c86e14c6ff Fix small font section directive, mixer warning 2021-04-29 08:45:01 -05:00
Scott Lahteine
b5da52007b Update language fonts 2021-04-29 08:45:01 -05:00
ladismrkolj
22ef4fe26c Add Chamber servo vent, auto fan (#19519) 2021-04-29 08:45:01 -05:00
signetica
ebca2efb24 Fix Ender-3 V2 DWIN Stop SD Print (#19642)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:01 -05:00
Scott Lahteine
61d500462c Improve retract / unretract labels 2021-04-29 08:45:01 -05:00
Scott Lahteine
6002dc634e Trailing whitespace 2021-04-29 08:45:01 -05:00
Scott Lahteine
563bd01789 Sync config to examples 2021-04-29 08:45:01 -05:00
Mathew Winters
cc863ba378 Z Probe Offset Wizard (#18866) 2021-04-29 08:45:01 -05:00
Cory Ory
fb28e0cba9 Allow bypass for cold E movement (#19606) 2021-04-29 08:45:01 -05:00
Ryan V1
cd33062a81 Fix Archim1 stepper timing (with new variant) (#19596) 2021-04-29 08:45:01 -05:00
Scott Lahteine
1ac7cf2ab6 Add HAS_FAST_MOVES 2021-04-29 08:45:01 -05:00
ellensp
53b7ad3a92 Fix Z_AFTER_HOMING without probe (#19607) 2021-04-29 08:45:01 -05:00
Scott Lahteine
01c161d380 Move SF_ARC_FIX option 2021-04-29 08:45:01 -05:00
Speaka
af4c2dab8d Fix German translation purging/unloading (#19615) 2021-04-29 08:45:01 -05:00
Scott Lahteine
2a755d68d9 Shared singlenozzle item 2021-04-29 08:45:01 -05:00
Scott Lahteine
770f2b1e02 Fix Tune/Fan edit items
- Fixes #19617
- Followup to #18400
2021-04-29 08:45:01 -05:00
Ryan V1
85c6ffb364 Fix 'bossac' upload on Windows (#19545) 2021-04-29 08:45:01 -05:00
Marcio T
bf3f7ae5b9 Touch UI support for X2, Y2 and Z2 (#19538) 2021-04-29 08:45:01 -05:00
ellensp
9804677669 Fix wrappers on HAL/STM32F1 .cpp files (#19581)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:01 -05:00
ellensp
c5614c8529 Fix TEMP_ADC_PROBE support for STM32F1 (#19582)
Co-authored-by: ellensp <ellensp@ellensp-HP-ProBook-6470b.fritz.box>
2021-04-29 08:45:01 -05:00
Andreas Setterlind
6bafa69f8f Add Configurations repo info to config/README.md (#19583)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:01 -05:00
ellensp
a2c4c4a916 Fix compile of MMU2 with S-mode disabled (#19584) 2021-04-29 08:45:01 -05:00
bilsef
de42ef017f Fix onboard SD card support for Teensy 3.6 & 4.1 (#19593) 2021-04-29 08:45:01 -05:00
Scott Lahteine
69917690f3 Adjust HAL platform defines, comments 2021-04-29 08:45:01 -05:00
Scott Lahteine
02b17886c9 Replace tabs with spaces 2021-04-29 08:45:01 -05:00
Victor Oliveira
0507df61b2 Minor SPI fixes, systick_callback for STM32F1 HAL compatibility (#19565) 2021-04-29 08:45:01 -05:00
swissnorp
0af95b188a G35 workaround for Pronterface "feature" (#19577) 2021-04-29 08:45:01 -05:00
Stéphane
bf3b36ae6a Fix Anycubic i3 Mega target temperature display (#19572)
Also includes a workaround for missing (probably un-fetched) long name in file listing
2021-04-29 08:45:01 -05:00
Ilya
58ce9a85c1 No move on Park = No move on Resume (#19569) 2021-04-29 08:45:01 -05:00
Roman Moravčík
dc5f86e039 Update Slovak language (#19561) 2021-04-29 08:45:01 -05:00
Victor Oliveira
46c8775542 Fix Buzzer (pin) init for uninitialized FastIO (#19559) 2021-04-29 08:45:01 -05:00
Victor Oliveira
059d966d7b Fix Move Screen with disabled Touch (#19558) 2021-04-29 08:45:01 -05:00
Nick
2069ab3a15 Anycubic Chiron full feature support (#19505) 2021-04-29 08:45:01 -05:00
Scott Lahteine
bb90bc6165 Fix up E3 DWIN Power Panic 2021-04-29 08:45:01 -05:00
Scott Lahteine
de4f882a22 Fetch longname when a file exists 2021-04-29 08:45:01 -05:00
Scott Lahteine
9aff5cb095 Add extra CardReader debugging 2021-04-29 08:45:01 -05:00
Scott Lahteine
782b9ce69e Improve Power-Loss Recovery (#19540) 2021-04-29 08:45:01 -05:00
Scott Lahteine
806c908091 Fix diveToFile with open Dir object (#19539)
* Fix CardReader diveToFile
* Add CardReader::fileExists
2021-04-29 08:45:01 -05:00
qwewer0
04a712dacc Multi-line comments cleanup (#19535) 2021-04-29 08:45:01 -05:00
Pavel Melnikov
3453d2d17a Change "Fr" on LCD to ">>" (#18830) 2021-04-29 08:45:00 -05:00
Scott Lahteine
25bf561aed Default E3 V2 to English 2021-04-29 08:45:00 -05:00
Scott Lahteine
ad3c475dd1 Tweaks to git helpers 2021-04-29 08:45:00 -05:00
Scott Lahteine
85573909d1 Update configs to 020007 2021-04-29 08:45:00 -05:00
Serhiy-K
63e6437d66 MarlinUI for SPI/I2C TFT-GLCD character-based display bridge (#19375) 2021-04-29 08:45:00 -05:00
Scott Lahteine
58deab1915 Rename LCD conditionals (#19533) 2021-04-29 08:45:00 -05:00
Scott Lahteine
ac900b17e0 Prettier INI 2021-04-29 08:45:00 -05:00
Scott Lahteine
a11ba51389 Menu tweak 2021-04-29 08:45:00 -05:00
Scott Lahteine
5cd004defe Update AnyCubic deps 2021-04-29 08:45:00 -05:00
Emperor
03a5c7f52a Thermistor: Kis3d Silicone heater + precision cast plate (#19528) 2021-04-29 08:45:00 -05:00
Tanguy Pruvot
717de1e703 Working LCD_USE_DMA_FSMC (#19522) 2021-04-29 08:45:00 -05:00
Siana Gearz
33f291d769 Fix Allen Key Probe pin test (#19520) 2021-04-29 08:45:00 -05:00
Victor Oliveira
7f93173659 LVGL followup fixing "C", etc. (#19517) 2021-04-29 08:45:00 -05:00
Scott Lahteine
4648351270 CardReader cleanup 2021-04-29 08:45:00 -05:00
Scott Lahteine
4bd1ecf8a7 E3 DWIN: "No Media" message 2021-04-29 08:45:00 -05:00
Scott Lahteine
584c836918 E3 DWIN: General cleanup 2021-04-29 08:45:00 -05:00
Scott Lahteine
ac0511f02a Allow M524 between M23 and M24 2021-04-29 08:45:00 -05:00
Scott Lahteine
32b854a98b Drop extra Bed PID 2021-04-29 08:45:00 -05:00
Scott Lahteine
943a594ba0 Tweak MMU beeps, misc. cleanup 2021-04-29 08:45:00 -05:00
Trocololo
def328eec1 MMU2 S Mode spins the BMG gears during C0 (#19429) 2021-04-29 08:45:00 -05:00
Victor Oliveira
e26edbc623 Allow ColorUI color customization (#19484) 2021-04-29 08:45:00 -05:00
Victor Oliveira
d06e526dc2 Fix MBL "Click to continue" on Color UI touchscreen (#19514) 2021-04-29 08:45:00 -05:00
Keith Bennett
9a2de1570c SKR E3 Turbo followup (#19513) 2021-04-29 08:45:00 -05:00
Luke Harrison
3065e4f941 Fix SKR 1.4 thermistor pin comments (#19510) 2021-04-29 08:45:00 -05:00
ellensp
0fedd76819 Fix MKS Robin undefined pins error (#19507) 2021-04-29 08:45:00 -05:00
Victor Oliveira
fd83407991 Escape the M33 string arg (#19515) 2021-04-29 08:45:00 -05:00
Victor Oliveira
3d521a2e34 TFT: No timeout on Move Screen (#19426) 2021-04-29 08:45:00 -05:00
Scott Lahteine
affb5e53df Sanity check old serial names 2021-04-29 08:45:00 -05:00
Keith Bennett
d6b1563655 BigTreeTech SKR E3 Turbo (#19500) 2021-04-29 08:45:00 -05:00
Jason Smith
9d02cedfed Fix and improve STM32F1 serial (#19464) 2021-04-29 08:45:00 -05:00
Scott Lahteine
449a31dea9 Fix some pin inits 2021-04-29 08:45:00 -05:00
Scott Lahteine
bfa6cd3693 HAL/serial followup 2021-04-29 08:45:00 -05:00
Scott Lahteine
f588d50d57 HAL and serial cleanup
Co-Authored-By: Jason Smith <20053467+sjasonsmith@users.noreply.github.com>
2021-04-29 08:45:00 -05:00
Scott Lahteine
27c067612c Whitespace cleanup 2021-04-29 08:45:00 -05:00
ellensp
a3a5b334c4 Define UART pins for LPC debug based on LPC_PINCFG_UART (#19475) 2021-04-29 08:45:00 -05:00
ellensp
cbaba010f2 Preserve brightness in EEPROM validate (#19485)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:45:00 -05:00
Scott Lahteine
8b69d697dd Teensy pins cleanup 2021-04-29 08:45:00 -05:00
Jason Smith
632ac54440 MKS Robin Mini uses ONBOARD_SPI_DEVICE (#19460) 2021-04-29 08:45:00 -05:00
Victor Oliveira
873b5db13d Include pins.h in dependencies script (#19468) 2021-04-29 08:45:00 -05:00
Marcio T
1978a29678 New Touch UI buttons (#19465) 2021-04-29 08:45:00 -05:00
Jason Smith
f34ea44d73 Catch a TMC address conflict early (#19458) 2021-04-29 08:45:00 -05:00
Scott Lahteine
bc081473f2 Fix up tests, warnings 2021-04-29 08:45:00 -05:00
Scott Lahteine
0b18034055 Fix Teensy 4.1 include 2021-04-29 08:45:00 -05:00
Jason Smith
d1eeb692c1 Update board/teensy comment (#19456) 2021-04-29 08:45:00 -05:00
makerbase
05680a4662 MKS SGEN L V2 adaptable heaters/fans (#19462) 2021-04-29 08:45:00 -05:00
Victor Oliveira
a08217a33c Define <u8,u8,u8>::softSPI (#19419) 2021-04-29 08:45:00 -05:00
riodoro1
5ccb2c62a9 Fix up K8800 pins (#19476) 2021-04-29 08:44:59 -05:00
Chris Pepper
9dd49b6c6a Update pins_ANET_10.h 2021-04-29 08:44:59 -05:00
Jason Smith
b52a2176fe Replace Serial with Serial1 in pins files (#19459) 2021-04-29 08:44:59 -05:00
qwewer0
d2a36b38ca Optional menu item for Assisted Tramming (#19447) 2021-04-29 08:44:59 -05:00
makerbase
33788c8405 Add MKS Robin E3P, improve LVGL UI (#19442) 2021-04-29 08:44:59 -05:00
Scott Lahteine
32cd5a3dc4 Add HAS_ROTARY_ENCODER 2021-04-29 08:44:59 -05:00
Scott Lahteine
ee1232051c Cleanup before MKS changes 2021-04-29 08:44:59 -05:00
Scott Lahteine
b3890d385c Add multi-extruder condition 2021-04-29 08:44:59 -05:00
Scott Lahteine
5a35595a3a Whitespace cleanup 2021-04-29 08:44:59 -05:00
enigmaquip
584a8cd1a8 Fix Creality DWIN Control menu icons (#19441) 2021-04-29 08:44:59 -05:00
ellensp
7a0d655292 Ultratronics Pro SPI pins (#19444) 2021-04-29 08:44:59 -05:00
qwewer0
2f483a25e9 Optional Host Start menu item (#19443) 2021-04-29 08:44:59 -05:00
Marcio T
7735be367f Fix case light brightness save/load (#19436) 2021-04-29 08:44:59 -05:00
InsanityAutomation
a50633d8e0 Fix compile for Taz Pro (#19424) 2021-04-29 08:44:59 -05:00
Scott Lahteine
dc7e2965d6 Change some dwin defines 2021-04-29 08:44:59 -05:00
Cole Markham
9065a8da89 Fix CoreXY compile with backlash cal. (#19422) 2021-04-29 08:44:59 -05:00
Keith Bennett
9d60047018 Fix missing include (#19418)
Co-authored-by: ellensp <530024+ellensp@users.noreply.github.com>
2021-04-29 08:44:59 -05:00
Victor Oliveira
9d5f978d00 Move screen for Color UI (#19386) 2021-04-29 08:44:59 -05:00
InsanityAutomation
23376b8a31 Host Action: Start (#19398) 2021-04-29 08:44:59 -05:00
jahartley
70c5871910 Expose JOYSTICK_DEBUG to the general user (#19394)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:44:59 -05:00
Victor Oliveira
9d1b1cf073 Fix MKS UI SPI flash typo (#19410) 2021-04-29 08:44:59 -05:00
Marcio Teixeira
90dea98a14 Add warning to ExtUI Bed Mesh Screen. (#19397)
- Show a warning on the Mesh Bed Leveling screen if some points aren't probed.
2021-04-29 08:44:59 -05:00
deram
9cdb8ca244 SHOW_REMAINING_TIME for HD44780 character LCD (#19416) 2021-04-29 08:44:59 -05:00
cosmoderp
7e56e6c4ea E3 V2 DWIN: Z-Offset, cleanup, versatility (#19384)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:44:59 -05:00
enigmaquip
c407c08b0b Add more DWIN commands, docs (#19395) 2021-04-29 08:44:59 -05:00
tovam
08a7dedbc9 Fix missing spaces in info menu (#19404) 2021-04-29 08:44:59 -05:00
Jason Smith
68c98811a1 Demo and test multiple PID defaults (#19413) 2021-04-29 08:44:59 -05:00
Scott Lahteine
07f13c28ee MarlinUI percent methods for all 2021-04-29 08:44:59 -05:00
Scott Lahteine
fbd812ebb3 More DWIN cleanup 2021-04-29 08:44:59 -05:00
Scott Lahteine
34d0b5de90 E3 V2 DWIN cleanup 2021-04-29 08:44:59 -05:00
Victor Oliveira
d3f88a2482 Only set up SPI pins as needed (#19372) 2021-04-29 08:44:59 -05:00
Zachary Annand
8debad803c More strict STATIC_ITEM_N (#19378) 2021-04-29 08:44:59 -05:00
Marcio T
9aceb3711b Add missing FTDI EVE menu source (#19382) 2021-04-29 08:44:59 -05:00
Scott Lahteine
8e3ac54de3 Allow E3 V2 DWIN without EEPROM, POWER_LOSS_RECOVERY 2021-04-29 08:44:59 -05:00
Scott Lahteine
2877dc9794 M115 strings 2021-04-29 08:44:59 -05:00
Scott Lahteine
c6e35ce066 Always show Compiled: 2021-04-29 08:44:59 -05:00
Scott Lahteine
7742e70865 Better choice of code
Followup to #19344
2021-04-29 08:44:59 -05:00
ellensp
4fdfdaf2e6 Improve temperature runaway, idle timeout (#19339)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:44:59 -05:00
Scott Lahteine
2396b4e27f heater_ind_t => heater_id_t 2021-04-29 08:44:59 -05:00
mmajoor
a941faccb0 Allow SWD debug on Robin Nano (#19345) 2021-04-29 08:44:59 -05:00
Marcio T
196a72b29e Touch UI "Leveling" menu, misc. fixes (#19349) 2021-04-29 08:44:59 -05:00
ellensp
c1dcbab932 Fix extra string substitution bug (#19351) 2021-04-29 08:44:59 -05:00
ManuelMcLure
4d14667266 Read from backup TMC StealthChop state (#19364) 2021-04-29 08:44:59 -05:00
Jason Smith
c517c2ea65 Fix EXP2 pin define for MKS SGEN_L (#19369) 2021-04-29 08:44:59 -05:00
Giuliano Zaro
ee32e3eb40 Update Italian language (#19365) 2021-04-29 08:44:59 -05:00
Jesse S
09d1bf37e7 Highlight Creality DWIN menu icons (#19368) 2021-04-29 08:44:59 -05:00
Neskik
bf6ce68ed1 M872 wait for probe temperature (#19344) 2021-04-29 08:44:59 -05:00
Haxk20
ad5e73d772 Fix Print Stats appearance (#19348) 2021-04-29 08:44:59 -05:00
Keith Bennett
26492ff0ea Fix Creality RET6 env - RE (#19340) 2021-04-29 08:44:59 -05:00
Scott Lahteine
ade9476721 Clean up W25QXXFlash class 2021-04-29 08:44:59 -05:00
Scott Lahteine
a2a53406c8 Use F() for Ender 3 V2 DWIN 2021-04-29 08:44:59 -05:00
Scott Lahteine
5e3d051b6a Translate encoder comments 2021-04-29 08:44:59 -05:00
riodoro1
e48b283e39 Fix missing BOARD_K8800 (#19331) 2021-04-29 08:44:59 -05:00
Giuliano Zaro
3adb07aa00 Fix "too cold" in M600 (#19332) 2021-04-29 08:44:59 -05:00
Scott Lahteine
136b7a5305 Warning if SDCARD_READONLY should be disabled 2021-04-29 08:44:59 -05:00
Scott Lahteine
d6bbcd020b General cleanup 2021-04-29 08:44:59 -05:00
Victor Oliveira
42619a3a81 LPC: Finish DMA transfer, use HW SPI class (#19191) 2021-04-29 08:44:59 -05:00
Victor Oliveira
8393c6a63d Raise STM32F1 UART IRQ Priority, add error handling (#19301)
(Error handling for Overrun, Framing and Parity.)
2021-04-29 08:44:59 -05:00
Zachary Annand
13f2915b65 Fix Separate Neopixel menu labels (#19303) 2021-04-29 08:44:58 -05:00
Keith Bennett
f7885bbdde Warn in platformio.ini about RCT6 512K (#19312) 2021-04-29 08:44:58 -05:00
Marcio Teixeira
ba6659f6be Fix ExtUI SD sorting, compile issues 2021-04-29 08:44:58 -05:00
makerbase
2af9e2f759 MKS Gen L V2.1 (#19314) 2021-04-29 08:44:58 -05:00
Keith Bennett
e6cf959170 Fix compile with Danish, Basque (#19325) 2021-04-29 08:44:58 -05:00
bilsef
ea39d3c45e Support for Teensy 4 (#19311) 2021-04-29 08:44:58 -05:00
Scott Lahteine
a8904d25ba Minor HAL cleanup 2021-04-29 08:44:58 -05:00
Jason Smith
784016a25e Update HAL/STM32 platform to 8.0 (#18496) 2021-04-29 08:44:58 -05:00
Giuliano Zaro
5fcfecc56e Make M600 heat up the nozzle. Reset runout on fail. (#19298)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-04-29 08:44:58 -05:00
Jason Smith
09a5014b3c TFT is neither "graphical" nor "character" (#19297) 2021-04-29 08:44:58 -05:00
Victor Oliveira
f5dc18730c Sanity-check BABYSTEP_DISPLAY_TOTAL with ColorUI (#19284) 2021-04-29 08:44:58 -05:00
Kadah
0bd7a2fc7e Fix M166 Gradient Mix for DELTA (#19285) 2021-04-29 08:44:58 -05:00
Zachary Annand
b186ab90a2 Separate Neopixel followup (#19287) 2021-04-29 08:44:58 -05:00
Scott Lahteine
c360705e6a Clean up LCD conditionals, DWIN 2021-04-29 08:44:58 -05:00
Scott Lahteine
9172271c7f Whitespace cleanup 2021-04-29 08:44:58 -05:00
Jason Smith
a1860ed680 Adjust GTR PeripheralPins to avoid timer conflicts (#19183) 2021-04-29 08:44:58 -05:00
Victor Oliveira
643f192515 STM32F1 EP with USB_COMPOSITE (#19281) 2021-04-29 08:44:58 -05:00
Zachary Annand
a8db9f52ec Menu items for Separate NeoPixel (#19280) 2021-04-29 08:44:58 -05:00
Keith Bennett
83dba77955 Clarify disabling StallGuard for axes (#19263) 2021-04-29 08:44:58 -05:00
Marcio T
e79af802b1 Touch UI long filenames fixes (#19262)
* Improvements to FTDI DLCache functionality.
* Better handling of long file names in Touch UI
- Long file names now truncated and shown with ellipsis.
- Increased display cache buffer to allow for longer filenames.
- Visual error message when display cache is exceeded.
2021-04-29 08:44:58 -05:00
cosmoderp
3a1145b999 Fix Ender 3 V2 (DWIN) buffer overrun (#19268) 2021-04-29 08:44:58 -05:00
Victor Oliveira
24fbfae0fd Fix STM32F1 SPI device init, MKS_LCD12864 (#19271) 2021-04-29 08:44:58 -05:00
Victor Oliveira
563bd5b5bc Emergency Parser for STM32F1 (#19279) 2021-04-29 08:44:58 -05:00
Scott Lahteine
c1d9e8d571 SD card debugging 2021-04-29 08:44:58 -05:00
Scott Lahteine
f7cb9455c8 No 'ls' if media isn't mounted 2021-04-29 08:44:58 -05:00
Scott Lahteine
d94b5b5ad0 Fix Creality V4 SD Detect 2021-04-29 08:44:58 -05:00
Keith Bennett
e2625db1dd Tweak ESP32 Wifi sanity-check message (#19257) 2021-04-29 08:44:58 -05:00
Victor Sokolov
47753d8a01 MarkForged kinematics (#19235) 2021-04-29 08:44:58 -05:00
Greg Nutt
94809feac7 Smoothieboard GLCD w/ SD support (#19241) 2021-04-29 08:44:58 -05:00
Victor Oliveira
6a511b6ea7 Only show "SD Init Fail" with detectable media (#19236) 2021-04-29 08:44:58 -05:00
Zachary Annand
ffba220ae8 Separate Neopixel followup (#19250) 2021-04-29 08:44:58 -05:00
Tanguy Pruvot
43e40524c4 Fix Longer3D TFT defines, disable DMA (#19251) 2021-04-29 08:44:58 -05:00
Scott Lahteine
4f1a14532b Hide multi-step G29 on Ender 3 V2 2021-04-29 08:44:58 -05:00
ManuelMcLure
c113984b32 Fix UBL 'G29 I' for large meshes (#19231) 2021-04-29 08:44:58 -05:00
makerbase
edba363d54 MKS SGEN L V2 (#18822) 2021-04-29 08:44:58 -05:00
Victor Oliveira
919ea2a76d Fail SD mount without SPI re-init (#19226) 2021-04-29 08:44:58 -05:00
Stéphane
755a4440e7 Fix Anycubic LCDs / Trigorilla 1.4 pins (#19220) 2021-04-29 08:44:58 -05:00
Zachary Annand
c7335bcd4d Separate Neopixel followup (#19224) 2021-04-29 08:44:58 -05:00
Giuliano Zaro
881bb7bf0a Delete old LCD strings (#19227) 2021-04-29 08:44:58 -05:00
Stéphane
2212bf85b7 Fix Anycubic I3 Mega (S) original screen % display (#19210) 2021-04-29 08:44:58 -05:00
Ludy
0c85e2838c Update German, fix Mix component index (#19206) 2021-04-29 08:44:58 -05:00
Martin
7967590682 Permit touch params override w/ Robin nano (#19196) 2021-04-29 08:44:58 -05:00
Zachary Annand
df7e35ccd7 Separate Neopixels followup (#19179) 2021-04-29 08:44:58 -05:00
ellensp
414136f33a Fix 'cmd' array warning (#19193) 2021-04-29 08:44:58 -05:00
Scott Lahteine
ee572856e9 Add set_all_homed 2021-04-29 08:44:58 -05:00
swissnorp
7d2e4481c7 Mark axes not-homed with HOME_AFTER_DEACTIVATE (#18907) 2021-04-29 08:44:58 -05:00
Scott Lahteine
d10f7eae31 set_axis_not_trusted => set_axis_never_homed 2021-04-29 08:44:58 -05:00
Zachary Annand
757ab484ac Independent Neopixel option (#19115) 2021-04-29 08:44:58 -05:00
Scott Lahteine
d62933fba5 Fix Creality V4 probe pin 2021-04-29 08:44:58 -05:00
Scott Lahteine
a6829838c6 Fix small typø 2021-04-29 08:44:58 -05:00
Scott Lahteine
fd1731a7b9 Allocate sufficient MSG_MOVE_Z_DIST buffer
See #19158
2021-04-29 08:44:58 -05:00
Victor Oliveira
9419331500 One MARLIN_DEV_MODE warning per rebuild (#19163) 2021-04-29 08:44:58 -05:00
George Fu
8a24c33151 FYSETC S6 2.0 (#19140) 2021-04-29 08:44:58 -05:00
thordarsen
f5e94cd7f1 Fix SINGLENOZZLE fan speed bug (#19152) 2021-04-29 08:44:58 -05:00
ellensp
7769f19bf5 Fix NEOPIXEL_STARTUP_TEST last delay (#19156) 2021-04-29 08:44:58 -05:00
Victor Oliveira
3b4779fa15 TFT (plus Hardware SPI) for LPC (#19139) 2021-04-29 08:44:58 -05:00
Scott Lahteine
5059586fc3 Prusa => Průša 2021-04-29 08:44:58 -05:00
Colin Godsey
8670f475b8 Direct Stepping update (#19135) 2021-04-29 08:44:57 -05:00
Marcio Teixeira
1b129ede4e Fixes to FTDI Touch UI (#19134)
- Fix unused variable warning
- Fix for filament runout sound
- Fix for developer menu access
- Fix compilation error when using CALIBRATION_GCODE
- Remove material labels in change filament screen
- Add decimals to status screen Z coordinate
- Add more descriptive message on heater timeout
2021-04-29 08:44:57 -05:00
Keith Bennett
6844ef21d4 Add Einsy Rambo Filament Runout Pin (#19136) 2021-04-29 08:44:57 -05:00
Jason Smith
6043f5d5d0 Fix SD pins for SKR Pro and GTR (#19047) 2021-04-29 08:44:57 -05:00
Scott Lahteine
0070a0642b Warn about MARLIN_DEV_MODE 2021-04-29 08:44:57 -05:00
Scott Lahteine
9bf6ddd4f1 No COM_PIN needed for DWIN 2021-04-29 08:44:57 -05:00
ellensp
0decb50fcd LEDs followup (#19133) 2021-04-29 08:44:57 -05:00
Victor Oliveira
40b89456af Color UI + Robin Nano test (#19118) 2021-04-29 08:44:57 -05:00
Giuliano Zaro
008362cd77 Fix auto-power in PID autotune (#19119) 2021-04-29 08:44:57 -05:00
Scott Lahteine
9d2241efe7 Minor cleanup w/r/t LEDs 2021-04-29 08:44:57 -05:00
Oleksii Zelivianskyi
f473145d42 TFT32 for MKS Robin Nano 1.2 (#19031) 2021-04-29 08:44:57 -05:00
qwewer0
b93a4bae45 Feedrate comment (#19116) 2021-04-29 08:44:57 -05:00
Scott Lahteine
42604cf4b2 Neopixel => NeoPixel 2021-04-29 08:44:57 -05:00
Scott Lahteine
19a237bbb0 Fix up conditions, comments 2021-04-29 08:44:57 -05:00
Scott Lahteine
ba3b995e58 Fix DUET_SMART_EFFECTOR 2021-04-29 08:44:57 -05:00
Scott Lahteine
e7b730528e Consistent static/value item macros 2021-04-29 08:44:57 -05:00
Scott Lahteine
db04bcb727 Fix probing margin sanity-check 2021-04-29 08:44:57 -05:00
Scott Lahteine
f3d0b49928 PGMSTR constexpr => const 2021-04-29 08:44:57 -05:00
Mathew Winters
fe89f5fdff NOZZLE_CLEAN_NO_Y (#18870) 2021-04-29 08:44:57 -05:00
qwewer0
05d2bb0df5 Change XY_PROBE_SPEED format to (x*60) (#18997) 2021-04-29 08:44:57 -05:00
Scott Lahteine
98ec7b61a9 Reformat pins files 2021-04-29 08:44:57 -05:00
mmajoor
8565f1e681 Permit ST7789V orientation override (#19044) 2021-04-29 08:44:57 -05:00
Giuliano Zaro
3aa5b45768 Prefer Servo AVR timer4 over 3 (#19025) 2021-04-29 08:44:57 -05:00
Greg Nutt
e02fb4a862 DIGIPOT_I2C pins for SMOOTHIEBOARD (#19098) 2021-04-29 08:44:57 -05:00
Steven Haigh
ee19e1d3ff Translatable strings on Ender-3 V2 DWIN (#19053)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:44:57 -05:00
Giuliano Zaro
fe1e880ffe HIGH/LOW naming of pin state settings (#19089) 2021-04-29 08:44:57 -05:00
Scott Lahteine
a5dc42c47c Update copy_marlin_variant_to_framework.py 2021-04-29 08:44:57 -05:00
mmajoor
070412a6a5 GRAPHICAL_TFT_ROTATE_180 for ST7789V (#19042) 2021-04-29 08:44:57 -05:00
Victor Oliveira
0ffd5aa743 CI with PIO-dev (#19058) 2021-04-29 08:44:57 -05:00
Scott Lahteine
744f74506f More menu header fu 2021-04-29 08:44:57 -05:00
ellensp
46744e8433 Creality3D v4.2.7 (#19088) 2021-04-29 08:44:57 -05:00
Giuliano Zaro
038945110f Optional homing in LCD Repeatability Test (#19104) 2021-04-29 08:44:57 -05:00
Scott Lahteine
7852b06038 Menu headers followup 2021-04-29 08:44:57 -05:00
Victor Oliveira
dded56c4bb Emulated DOGM via HAL TFT, XPT IO (#19017) 2021-04-29 08:44:57 -05:00
Scott Lahteine
7dea6c53ed Remove extraneous defines 2021-04-29 08:44:57 -05:00
Scott Lahteine
fd0a3df315 Header for individual menus 2021-04-29 08:44:57 -05:00
BigTreeTech
a1bdc1974a Broadcast SD Print Completion (#19102) 2021-04-29 08:44:57 -05:00
Keith Bennett
24636eb7f1 Fix M512 comment (#19108) 2021-04-29 08:44:57 -05:00
Scott Lahteine
737a5453d9 Allow 'ghtp' to set a specific remote 2021-04-29 08:44:57 -05:00
Scott Lahteine
f860152a35 Fix up mixer menu display 2021-04-29 08:44:57 -05:00
Scott Lahteine
87d2c471db Apply specific menu item types 2021-04-29 08:44:57 -05:00
Scott Lahteine
ca54d67814 Fix Select Screen cancel destination 2021-04-29 08:44:57 -05:00
Scott Lahteine
615af841f0 Update some comments 2021-04-29 08:44:57 -05:00
Scott Lahteine
c43d264d3e Add custom_verbose, custom_gcc deps flags 2021-04-29 08:44:57 -05:00
Scott Lahteine
d1aed52280 Move ExtUI displays to sub-folder (#19070) 2021-04-29 08:44:57 -05:00
Scott Lahteine
7e7e870eae Config adjustments 2021-04-29 08:44:57 -05:00
Giuliano Zaro
f7dade8c2c Configurable number of M106 fans (#18883) 2021-04-29 08:44:57 -05:00
ellensp
24139c6ff0 Env mega2560ext adds pins 70-85 (#19022) 2021-04-29 08:44:57 -05:00
Steven Haigh
16c1e80491 Default Filament Runout Sensor enabled state (#19013) 2021-04-29 08:44:57 -05:00
Giuliano Zaro
5a7979b435 Fix __ARM__ / __arm__ typo (#19063) 2021-04-29 08:44:57 -05:00
Serhiy-K
349bddc652 "SD init fail" status error (#19064) 2021-04-29 08:44:57 -05:00
Giuliano Zaro
acc90ad09f Fix PSU on for PID autotune (#19066) 2021-04-29 08:44:57 -05:00
Scott Lahteine
7a750156ef Creality DWIN cleanup 2021-04-29 08:44:57 -05:00
Scott Lahteine
8075eafe91 Creality DWIN simple beeper 2021-04-29 08:44:57 -05:00
ellensp
58975fc8b5 Checks for CR10_STOCKDISPLAY with Creality v4 (#19019) 2021-04-29 08:44:57 -05:00
Julius Mumme
8320c43589 Fix IS_PROBE_PIN macro (#19024) 2021-04-29 08:44:57 -05:00
Victor Oliveira
73d1a98ce6 Update build script for PIO 4.4 (#19034) 2021-04-29 08:44:57 -05:00
Scott Lahteine
f9f514a46c Fix ExtUI base methods 2021-04-29 08:44:57 -05:00
Giuliano Zaro
16f2f2bce7 Let laser/spindle use free AVR servo timers (#19011) 2021-04-29 08:44:57 -05:00
Robby Candra
8258a76c9b Wait for hotend temp before Resume move (#19009) 2021-04-29 08:44:56 -05:00
Tommy Hartmann
c9ddbaa2c0 ENDER2_STOCKDISPLAY for BTT SKR 1.4 (and Turbo) (#19002) 2021-04-29 08:44:56 -05:00
ellensp
a99c844296 Add option to arrange Neopixel sets in series (#18992) 2021-04-29 08:44:56 -05:00
Scott Lahteine
492f49c06a Unhide /src folders in Sublime 2021-04-29 08:44:56 -05:00
Scott Lahteine
80480ae919 M80 followup 2021-04-29 08:44:56 -05:00
Scott Lahteine
1327eaa83b Do runout.reset after EEPROM read 2021-04-29 08:44:56 -05:00
Scott Lahteine
eee101b9dd Clean up M80/M81, DWIN 2021-04-29 08:44:56 -05:00
Scott Lahteine
77ab354a5a Fix touch test 2021-04-29 08:44:56 -05:00
Scott Lahteine
1801eb6393 config-labels.py needs py3 2021-04-29 08:44:56 -05:00
swissnorp
28d6dc38af Fix 'sync_plan_position' call (#19016) 2021-04-29 08:44:56 -05:00
Tanguy Pruvot
dc6e3d083e TFT: Restore ILI9341 colors and reversed logic (#19010)
Followup to #18877, #18901, #18817
2021-04-29 08:44:56 -05:00
Victor Oliveira
4e7c5f19fe Optimize LVGL with HAL TFT IO (SPI and FSMC) (#18974) 2021-04-29 08:44:56 -05:00
Scott Lahteine
3dfbdbc66c String interpolation for 2-digit numbers (#18998) 2021-04-29 08:44:56 -05:00
qwewer0
95f373448d Mention units for MANUAL_FEEDRATE (#18993) 2021-04-29 08:44:56 -05:00
Robby Candra
648b253f41 EVENT_GCODE_SD_STOP => ABORT (#18978) 2021-04-29 08:44:56 -05:00
Anders Sahlman
3e2b272239 MKS Robin new 320x240 TFT Color UI support (#18985) 2021-04-29 08:44:56 -05:00
Scott Lahteine
489143f160 Add'l CI/git script tweaks, fixes 2021-04-29 08:44:56 -05:00
Marcio T
3eafce4683 For FTDI800 compatibility, remove VERTEX_FORMAT dependency (#18982) 2021-04-29 08:44:56 -05:00
InsanityAutomation
b23da503fa Fix Ender-3 V2 DWIN with manual mesh, host prompt (#18981) 2021-04-29 08:44:56 -05:00
Scott Lahteine
cae4c76b56 Fix scripts using gawk and wget 2021-04-29 08:44:56 -05:00
Giuliano Zaro
069993e880 Fix DISABLE_[XYZE] code (#18970)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:44:56 -05:00
ftk
a13834b9f9 Remaining Time for LIGHTWEIGHT_UI (#18875) 2021-04-29 08:44:56 -05:00
Scott Lahteine
c82ff17d3b Followup for SPI Flash 2021-04-29 08:44:56 -05:00
Scott Lahteine
ca8fbbc2be Shorthand values for M575 B 2021-04-29 08:44:56 -05:00
cbaugher
b94b3e6315 Tool-change Z move followup (#18963) 2021-04-29 08:44:56 -05:00
Scott Lahteine
ab61bcafa3 Password followup 2021-04-29 08:44:56 -05:00
sherwin-dc
9e44df9c5f Password via G-code and MarlinUI (#18399)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:44:56 -05:00
Victor Oliveira
438a9bb4aa W25QXX SPI Flash support (#18897)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:44:56 -05:00
Victor Oliveira
6f686b1801 Marlin Color UI for STM32F1 (SPI) (#18958) 2021-04-29 08:44:56 -05:00
Victor Oliveira
d7d3827f47 Fix compiler search in non-default PIO installs (#18960) 2021-04-29 08:44:56 -05:00
Scott Lahteine
ad30383b46 Fix up STATIC_ITEM (#18962) 2021-04-29 08:44:56 -05:00
Victor Oliveira
9af3b06fc2 Marlin Color UI (FSMC) for STM32F1 (#18952) 2021-04-29 08:44:56 -05:00
Scott Lahteine
f395960741 Patch hex_print 2021-04-29 08:44:56 -05:00
Scott Lahteine
02eb4bd806 General cleanup 2021-04-29 08:44:56 -05:00
Scott Lahteine
24f0c9da11 Clean up whitespace 2021-04-29 08:44:56 -05:00
Scott Lahteine
3dc0f9c0b4 configuration_store => settings 2021-04-29 08:44:56 -05:00
Scott Lahteine
8af8ef4404 Use uintptr_t for pointer-to-int 2021-04-29 08:44:56 -05:00
cbaugher
7a8e99de7d Fix Z height after tool change (#18951) 2021-04-29 08:44:56 -05:00
ellensp
8d6a263c1c HW PWM sanity checks for SPINDLE_LASER_FREQUENCY (#18947) 2021-04-29 08:44:56 -05:00
wmariz
cb18b858d4 ZoneStar Z6FB (#18918)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:44:56 -05:00
Victor Oliveira
cd977c70ca Fix / optimize FSMC init (#18941) 2021-04-29 08:44:56 -05:00
Victor Oliveira
57c3b0e0b7 Fix LVGL "C" brace (#18942) 2021-04-29 08:44:56 -05:00
Victor Oliveira
0e70d8bacb Followup fixes to LVGL for Chitu (#18940) 2021-04-29 08:44:56 -05:00
Victor Oliveira
8f0cd470ae Apply PIO-supported custom_option for deps (#18935) 2021-04-29 08:44:56 -05:00
Radek
48ddaf35fb Increase Manual E Move Feedrate to 2mm/s (#18937) 2021-04-29 08:44:56 -05:00
Victor Oliveira
9493682e49 MKS Robin Nano CI Tests (#18927) 2021-04-29 08:44:56 -05:00
Scott Lahteine
da6e5ce3db Optimize G-code / feature dependencies (#18919) 2021-04-29 08:44:56 -05:00
Marco Burato
f4894b7140 More Anycubic + Trigorilla mappings, ExtUI (#18903) 2021-04-29 08:44:56 -05:00
Scott Lahteine
7d3be90159 Conditions cleanup 2021-04-29 08:44:56 -05:00
Scott Lahteine
76eff24718 Simple rename of hex_print 2021-04-29 08:44:56 -05:00
Scott Lahteine
e8dc7cad18 General cleanup 2021-04-29 08:44:56 -05:00
Victor Oliveira
4201a48ecf Request files needed to test a PR (#18925) 2021-04-29 08:44:56 -05:00
Keith Bennett
c0d031cd1e Add Chitu 3D V6 2nd Filament Runout pin (#18922) 2021-04-29 08:44:56 -05:00
Victor Oliveira
1a50260ebd Followup to LVGL patch (#18920) 2021-04-29 08:44:56 -05:00
swissnorp
38a24ce6c9 Move Cancel Object menu, fix canceled item index (#18930) 2021-04-29 08:44:56 -05:00
Victor Oliveira
a0a87c2b81 SPI Flash data compression (#18879) 2021-04-29 08:44:55 -05:00
Scott Lahteine
a100306b00 Followup to #18906 Z_AFTER_DEACTIVATE 2021-04-29 08:44:55 -05:00
Claus Näveke
17bbcce52b Make ili9341 rotatable (e.g., Anycubic Predator) (#18877) 2021-04-29 08:44:55 -05:00
Jeff Eberl
0b2bd123ef Change include to <stddef.h> (#18880) 2021-04-29 08:44:55 -05:00
Roman Moravčík
ea53abbca7 Update Slovak language (#18884) 2021-04-29 08:44:55 -05:00
Giuliano Zaro
7f69f8e680 Update Italian language (#18886) 2021-04-29 08:44:55 -05:00
swissnorp
301569bee6 Add Z_AFTER_DEACTIVATE to account for gravity (#18906) 2021-04-29 08:44:55 -05:00
Victor Oliveira
e82e94be5b Fix MKS Nano v1.2 FSMC display (#18901) 2021-04-29 08:44:55 -05:00
Keith Bennett
0c07e7a96f Assisted Tramming requires a probe (#18912) 2021-04-29 08:44:55 -05:00
Scott Lahteine
7dd7d6dda6 Move scaled TFT / touch defines (#18915) 2021-04-29 08:44:55 -05:00
Scott Lahteine
3bb1f0a7df Clean up some PeripheralPins 2021-04-29 08:44:55 -05:00
Claus Näveke
a0d25379b2 No mks_robin extra_scripts in Trigorilla build (#18872) 2021-04-29 08:44:55 -05:00
ellensp
643b31a6a1 Fix Spindle/Laser PWM DC (#18871) 2021-04-29 08:44:55 -05:00
FLYmaker
0e2013d244 Fix FLYF407ZG pins (#18865) 2021-04-29 08:44:55 -05:00
Sebastien Andrivet
e6c95762ba Fix Duplicator i3 Plus pin diagram (#18862) 2021-04-29 08:44:55 -05:00
Slats
b66df5fa3c Translated DWIN screen titles (#18893)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:44:55 -05:00
Scott Lahteine
afb51d1de3 Repair config order 2021-04-29 08:44:55 -05:00
Scott Lahteine
db290201ea Add monitor_flags 2021-04-29 08:44:55 -05:00
Scott Lahteine
ed5ae0a2f7 Update include_tree 2021-04-29 08:44:55 -05:00
Alexander Gavrilenko
8f8b0d84ae Support for TFT & Touch Screens (#18130) 2021-04-29 08:44:55 -05:00
Victor Oliveira
3fbc002bad SanityCheck: No Adafruit NeoPixel for STM32F1 (#18833) 2021-04-29 08:44:55 -05:00
ellensp
60cc56b31c No HEATER_0_PIN needed with 0 EXTRUDERS (#18827) 2021-04-29 08:44:55 -05:00
Victor Oliveira
fc12ffcb30 SPI Emulated DOGM (like FSMC_GRAPHICAL_TFT, but SPI) (#18817) 2021-04-29 08:44:55 -05:00
Scott Lahteine
0c1bf01cf7 In G28 Z is sort-of known 2021-04-29 08:44:55 -05:00
Scott Lahteine
bb21d79321 Fix UNKNOWN_Z_NO_RAISE in G28
Bug introduced in 73fc0778b8
2021-04-29 08:44:55 -05:00
Diego von Deschwanden
c63c069d58 Fix URLs to websites and resources (#18844) 2021-04-29 08:44:55 -05:00
Scott Lahteine
513d3172cb Update keypad link 2021-04-29 08:44:55 -05:00
lethalwallabies
5c699ab406 Typo fix (#18856) 2021-04-29 08:44:55 -05:00
Giuliano Zaro
a87114fbfa Clarify Nozzle-to-Probe offset (#18828)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-29 08:44:55 -05:00
swissnorp
29e900977f Fix Cancel Objects index display (zero-based) (#18841) 2021-04-29 08:44:55 -05:00
Giuliano Zaro
796471a7c6 [SAMD51] ES Interrupt parity with other HALs (#18836) 2021-04-29 08:44:55 -05:00
Victor Oliveira
524613b610 DISABLE_DEBUG required to free Robin nano Z_DIR_PIN (#18832) 2021-04-29 08:44:55 -05:00
MoellerDi
b765bfa5a5 Fix NEOPIXEL_LED compile w/out PRINTER_EVENT_LEDS (#18824) 2021-04-29 08:44:55 -05:00
natemason
c0d8542a85 Add TEMP_PROBE_PIN for Einsy Rambo (#18823) 2021-04-29 08:44:55 -05:00
Scott Lahteine
36ef9327ef Keep -std=gnu++11 in stm32 build_unflags 2021-04-29 08:44:55 -05:00
Diego von Deschwanden
f2205b1725 Update more external links (#18819) 2021-04-29 08:44:55 -05:00
Victor Tseng
25c7577779 Fix DELTA + TMC sensorless homing + SPI endstops (#18811) 2021-04-29 08:44:55 -05:00
Victor Tseng
9ece3cfdaf Fix garbled print_xyz output (#18810) 2021-04-29 08:44:55 -05:00
ellensp
c5108687c5 Fix WiFi / ESP32 sanity check (#18808) 2021-04-29 08:44:55 -05:00
Scott Lahteine
e52bfeb491 Config for Anycubic Mega TFT 2021-04-29 08:44:54 -05:00
Scott Lahteine
dd1503d5a8 Merge remote-tracking branch 'upstream/bugfix-2.0.x' into prepare_release_2073 2021-04-29 08:11:03 -05:00
ldursw
e9618f1ba2 Fix SDIO buffer alignment (#21396) 2021-04-26 00:16:58 -05:00
Keith Bennett
0f9e096d6e Update Issue Templates (#21702) 2021-04-25 15:06:27 -05:00
Scott Lahteine
392d01555d 'issue_body' obsolete in templates 2021-04-22 19:38:05 -05:00
Scott Lahteine
89f7a19691 Fix check-pr action 2021-04-17 21:22:23 -05:00
Scott Lahteine
c0673dbdf1 Keep 'confirmed bug' open 2021-04-15 17:27:18 -05:00
ellensp
3e1b9e11d7 Sanity Check newer Configs too (#21550)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-04-07 15:44:39 -05:00
InsanityAutomation
dda2f58588 Fix Hotend-abort-on-idle Check (#21535) 2021-04-04 16:59:55 -05:00
Scott Lahteine
e3a12c3c28 Fix bool++ warning 2021-03-23 07:25:13 -05:00
Keith Bennett
b9065195f1 Auto-label Feature Requests (#21348) 2021-03-14 11:41:24 -05:00
Scott Lahteine
aba28ef0bc Enhance workflows 2021-03-13 04:57:47 -06:00
Scott Lahteine
e9f7003b70 Change issue templates to YML 2021-03-12 13:38:40 -06:00
Scott Lahteine
d3d1f82f73 Add emojis 2021-03-12 00:55:59 -06:00
Scott Lahteine
2439c44779 Emojis and donate link 2021-03-11 23:53:18 -06:00
Scott Lahteine
19b94ec325 Remove one label at a time 2021-03-11 11:23:14 -06:00
Keith Bennett
b9fa72d582 Token for "Clean Closed" action (#21320) 2021-03-11 09:55:42 -06:00
Scott Lahteine
b26516b3ac Clean up labels on close 2021-03-06 07:24:32 -06:00
Scott Lahteine
2f97505b93 Trust XY after Quiet Probing short sleep (#21237) 2021-03-01 19:38:45 -06:00
Scott Lahteine
5ee1087959 Ignore M22 during SD print 2021-01-13 21:29:38 -06:00
Scott Lahteine
6596a50c90 Fix PR template, lock action
Co-Authored-By: Jason Smith <20053467+sjasonsmith@users.noreply.github.com>
2021-01-11 15:06:55 -06:00
Serhiy-K
730833f96c Fixes for TFTGLCD (#20734) 2021-01-11 00:05:04 -06:00
Scott Lahteine
f74015b4e5 Fix TEMP_0_TR_ENABLE 2020-12-14 00:32:32 -06:00
Jason Smith
eb254ef70b Fix TMC_HOME_PHASE divide by zero (#20368) 2020-12-04 23:59:39 -06:00
Luu Lac
3327568142 Help hosts when password-locked (#20348) 2020-12-01 23:52:51 -06:00
ellensp
65983b4288 Set "lcd_move_e" index to fix the label (#20263) 2020-11-24 16:15:29 -06:00
Simone Primarosa
1d631b7280 Fix bad SET_FAST_PWM_FREQ calls (#20227) 2020-11-20 19:55:37 -06:00
phcay
072b15784f Fix extraneous Linear Advance DIR change (#20131) 2020-11-13 19:24:52 -06:00
thinkyhead
ba2939b1dc Fix bilinear_line_to_destination definition
See #19431
2020-10-30 00:24:29 -05:00
Jason Smith
ee7476a0bf Update "Bug Report" template (#19906) 2020-10-27 17:48:06 -05:00
Scott Lahteine
88a2ac92d5 Marlin 2.0.7.2 2020-10-21 18:16:38 -05:00
Jason Smith
3ccb3801f2 Fix SAMD Serial name macro (#19765) 2020-10-21 18:16:38 -05:00
Serhiy-K
cc7fbabc96 Fix HAL/STM32 FastIO for analog pins (#19735) 2020-10-21 18:16:38 -05:00
Scott Lahteine
28a9708ddb Don't define IS_ULTIPANEL empty 2020-10-21 18:16:00 -05:00
Jason Smith
d896dedf9b Add NUCLEO-F767ZI dev board (#19373)
Co-authored-by: Lorenzo Delana <lorenzo.delana@gmail.com>
2020-10-16 16:42:39 -05:00
Keith Bennett
00709017e2 If needed, home before G34 (#19713) 2020-10-16 16:42:39 -05:00
Victor Oliveira
b7d9b05952 TFT followup fixes (#19710) 2020-10-16 16:42:37 -05:00
Victor Oliveira
f7f1224941 Watchdog Refresh for LVGL Asset Load (#19724) 2020-10-16 16:42:15 -05:00
Jason Smith
fd8d83b7c8 Fix mega2560ext environment (#19730) 2020-10-16 16:42:15 -05:00
thinkyhead
52fc0b896d [cron] Bump distribution date (2020-10-15) 2020-10-16 16:42:15 -05:00
thinkyhead
ba045d6852 [cron] Bump distribution date (2020-10-14) 2020-10-16 16:42:15 -05:00
Jason Smith
54bdcb4691 Fix SET_SOFT_ENDSTOP_LOOSE w/out soft endstops (#19734) 2020-10-16 16:42:15 -05:00
Scott Lahteine
2a2666326b Simple bool in soft_endstops_t 2020-10-16 16:42:15 -05:00
thinkyhead
3bba5d55bf [cron] Bump distribution date (2020-10-13) 2020-10-16 16:42:15 -05:00
thinkyhead
5d07d83e78 [cron] Bump distribution date (2020-10-12) 2020-10-16 16:40:25 -05:00
Jason Smith
37f97bc013 Fix various errors, warnings in example config builds (#19686)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2020-10-16 16:40:14 -05:00
thinkyhead
6d31bbe2bf [cron] Bump distribution date (2020-10-11) 2020-10-16 16:39:55 -05:00
Victor Oliveira
e2e1776a14 Restore correct STM32 port-bits code (#19678) 2020-10-16 16:39:55 -05:00
Serhiy-K
bd196e7efc Fixes for TFTGLCD Panel, FastIO (#19614) 2020-10-16 16:39:55 -05:00
Earle F. Philhower, III
dffe7b9072 Add loose soft endstop state, apply to UBL fine-tune (#19681)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2020-10-16 16:39:55 -05:00
Jason Smith
2b326ebc84 Add D100 Watchdog Test (#19697) 2020-10-16 16:39:55 -05:00
Jason Smith
f4ff6a673f Allow MAX31865 resistance values configuration (#19695) 2020-10-16 16:39:55 -05:00
qwewer0
cc915a25ed Add REPORT_TRAMMING_MM option (#19682)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2020-10-16 16:39:55 -05:00
Jason Smith
600870f22b Fix motion compile w/out probe-oriented settings (#19684) 2020-10-16 16:39:55 -05:00
Jason Smith
04882e2f34 Fix I2C_ADDRESS sign warning (#19685) 2020-10-16 16:39:55 -05:00
Jason Smith
c6cf3da276 Fix various errors, warnings in example config builds (#19686)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2020-10-16 16:39:55 -05:00
Jason Smith
8a5c3782b8 Fix at90usb1286 build (#19687)
* Skip check for USBCON during dependency detection
* Ignore incompatible Teensy_ADC library, which requires Teensy >= 3
* Add IS_AT90USB

Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2020-10-16 16:39:55 -05:00
Scott Lahteine
beb17d8855 Digipots refactor / cleanup (#19690) 2020-10-16 16:39:55 -05:00
Scott Lahteine
4ee717f7c4 Save PLR on resume from pause (#19676)
Co-Authored-By: shahab <32130261+SHBnik@users.noreply.github.com>
2020-10-16 16:39:55 -05:00
Victor Oliveira
e680196c59 Restore correct STM32 port-bits code (#19678) 2020-10-16 16:39:55 -05:00
Serhiy-K
ce92abfe47 Fixes for TFTGLCD Panel, FastIO (#19614) 2020-10-16 16:39:55 -05:00
Victor Oliveira
50410aaeaa Fix UTF8 handling for Color UI (#19708) 2020-10-16 16:39:55 -05:00
Victor Oliveira
35c40bc376 Implement wait_for_user for Color UI (#19694) 2020-10-16 16:39:55 -05:00
Victor Oliveira
aae644c507 Option to prevent (extra) Watchdog init on STM32 (#19693) 2020-10-16 16:39:55 -05:00
Scott Lahteine
ce830f8a71 Fix screen click reading too often (#19696)
Co-authored-by: andreibobirica <39415547+andreibobirica@users.noreply.github.com>
2020-10-16 16:39:55 -05:00
Keith Bennett
d3d423a322 Sanity-check mutually-exclusive G34 features (#19706) 2020-10-16 16:39:55 -05:00
InsanityAutomation
8b060a3902 G34 Mechanical Gantry Calibration (like Prusa M915) (#18972)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2020-10-16 16:39:55 -05:00
Victor Oliveira
faae900747 TFT Refactoring (#19192)
* split tft folder in two: tft for color ui; tft_io for shared tft code

* after the files got moved, now the code was moved to the right place

* classic ui using TFT IO init lcd codes

* feature to compile tft_io when enabled

* compiling fix

* lvgl spi tft working with tft io init codes

* there is no need for separeted fsmc and spi class in lvgl anymore, as tft io handle everything

* remove debug

* base for TFT rotation and mirroring API, and ILI9488 support

* ST7796S rotate and mirror support

* ST7789V rotate and mirror support

* ST7735 rotate and mirror support

* ILI9341 rotate and mirror support

* ILI9328 rotate and mirror support

* R61505 rotate and mirror support

* MKS TFT definitions

* more configs for mks tfts

* update config

* naming typo

* to configure the user interface

* ANYCUBIC_TFT35

* tft configs

* support for SSD1963

* tft display types

* updated conditionals lcd; first board fully working with the new code - all 3 ui!

* compatiblity

* changed name

* move classic ui file name

* rename TURN -> ROTATE

* GRAPHICAL_TFT_ROTATE_180 deprecated

* first fsmc board fully working - chitu v5

* mks robin nano v1.2 + tft 35 ok!

* right pin name

* anycubic tft tested in a TRIGORILLA_PRO

* chitu v6

* nano 32 tft orientation

* mks tft43

* mks tft43 rotation

* fixed LONGER LK tft setup

* GRAPHICAL_TFT_UPSCALE defined by the display type

* better offsets defaults

* Update Configuration.h

* Update tft_fsmc.cpp

* Update Conditionals_LCD.h

* Tweak comments

* update nano tests

* Revert "update nano tests"

This reverts commit a071ebbfad30e28855a4a5695ec8a726542a1a65.

* default tft

* outdated comments

* to not break non-vscode builds

* upscale tft 35

* support tft 180 rotation for color ui

* Each TFT Driver is responsible for its default color mode.

* use auto detect in mks displays, because some of them could be shipped with diferent drivers

* extra s

* unused code

* wrong -1

* missing mirror options

* Smaller regex pattern

* Comment updates

* Clean up old defines

* Apply pins formatting

* GRAPHICAL_TFT_ROTATE_180 => TFT_ROTATE_180

* MKS_ROBIN_TFT_V1_1R

* merge fix

* correct resolution

* auto is default, dont need be there, and it will allow the user to configure it even for named displays

* to not use rotation with MKS_ROBIN_TFT_V1_1R

* i like () in macros

* avoid sleepy commits

* default for st7789 is rgb

* nano follow up

* to allow ili9328 rotation

* default is rgb

* boards merge follow up

* to match bootloader orientation

* HAS_TOUCH_XPT2046 is not hal specific anymore

* lets not forget LPC

* 180 rotation for ili9328 and R61505

* Clean up whitespace

Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2020-10-16 16:39:55 -05:00
Scott Lahteine
11662bf2b6 Marlin 2.0.7.1 2020-10-16 16:39:55 -05:00
Serhiy-K
887e2637c0 Fixes for TFTGLCD Panel, FastIO (#19614) 2020-10-16 16:39:55 -05:00
ellensp
958f05e4b4 HAS_CHARACTER_LCD => HAS_MARLINUI_HD44780 (#19673) 2020-10-16 16:39:55 -05:00
thinkyhead
9126a2e654 [cron] Bump distribution date (2020-10-10) 2020-10-16 16:39:55 -05:00
Scott Lahteine
5070fae231 Batch appercase hex values 2020-10-16 16:39:54 -05:00
Scott Lahteine
454f9d6319 Optional M42/M226; Add more features filters (#19664) 2020-10-16 16:39:54 -05:00
Victor Oliveira
59b6b32e6e Support for Debug Codes - Dnnn (#19225)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2020-10-16 16:39:54 -05:00
石立枫
6d9709e20d Support for FLY MINI (#19185) 2020-10-16 16:39:54 -05:00
Keith Bennett
7a484959d5 Fix touch ifndefs (#19661) 2020-10-16 16:39:54 -05:00
Giuliano Zaro
78060f55e6 Update Italian language (#19654) 2020-10-16 16:39:54 -05:00
thinkyhead
3fca19fbab [cron] Bump distribution date (2020-10-09) 2020-10-16 16:39:54 -05:00
Samantaz Fox
b8700e0aa8 Fix and improve Makefile / CMake (#19640) 2020-10-16 16:39:54 -05:00
Scott Lahteine
d66bc5cec2 Permit touch calibration override 2020-10-16 16:39:54 -05:00
Scott Lahteine
fb28c6041a Use 0xFF (not 'ff') for byte transfer 2020-10-16 16:39:54 -05:00
ellensp
0f9d57e03a Apply env:mega2560ext to relevant boards (#19624) 2020-10-16 16:39:54 -05:00
qwewer0
32377849da Update PROBE_OFFSET_WIZARD comment (#19652) 2020-10-16 16:39:54 -05:00
thinkyhead
0975c487f0 [cron] Bump distribution date (2020-10-08) 2020-10-16 16:39:54 -05:00
qwewer0
d07ad63016 More accessible PROBE_OFFSET_WIZARD (#19647) 2020-10-16 16:39:54 -05:00
ellensp
1a5a3cf253 Restore ° to 6x9 small info font (#19645) 2020-10-16 16:39:54 -05:00
Scott Lahteine
6f6901180c Chamber vent/fan followup 2020-10-16 16:39:54 -05:00
Scott Lahteine
9cc6297292 Fix small font section directive, mixer warning 2020-10-16 16:39:54 -05:00
thinkyhead
cf53bc2dd2 [cron] Bump distribution date (2020-10-07) 2020-10-16 16:39:54 -05:00
Scott Lahteine
f4f4ea05e1 Update language fonts 2020-10-16 16:39:54 -05:00
ladismrkolj
2b845e5a75 Add Chamber servo vent, auto fan (#19519) 2020-10-16 16:39:54 -05:00
signetica
6fcbf11454 Fix Ender-3 V2 DWIN Stop SD Print (#19642)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2020-10-16 16:39:54 -05:00
Scott Lahteine
8a69147adf Improve retract / unretract labels 2020-10-16 16:39:54 -05:00
thinkyhead
f8ceedea5c [cron] Bump distribution date (2020-10-06) 2020-10-16 16:39:54 -05:00
Scott Lahteine
a4e4226578 Trailing whitespace 2020-10-16 16:39:54 -05:00
Scott Lahteine
e76fd6bd33 Sync config to examples 2020-10-16 16:39:54 -05:00
Mathew Winters
437bee418b Z Probe Offset Wizard (#18866) 2020-10-16 16:39:54 -05:00
Cory Ory
31238de937 Allow bypass for cold E movement (#19606) 2020-10-16 16:39:54 -05:00
thinkyhead
cb8c99c4f8 [cron] Bump distribution date (2020-10-05) 2020-10-16 16:39:54 -05:00
Ryan V1
2fe81d0cb2 Fix Archim1 stepper timing (with new variant) (#19596) 2020-10-16 16:39:54 -05:00
Scott Lahteine
fb7d7ee7b4 Add HAS_FAST_MOVES 2020-10-16 16:39:54 -05:00
ellensp
d99fdcf526 Fix Z_AFTER_HOMING without probe (#19607) 2020-10-16 16:39:54 -05:00
Scott Lahteine
e4d2234a04 Move SF_ARC_FIX option 2020-10-16 16:39:54 -05:00
Speaka
bea919da6e Fix German translation purging/unloading (#19615) 2020-10-16 16:39:54 -05:00
Scott Lahteine
2fb22cc116 Shared singlenozzle item 2020-10-16 16:39:54 -05:00
Scott Lahteine
d4b6542ce1 Fix Tune/Fan edit items
- Fixes #19617
- Followup to #18400
2020-10-16 16:39:53 -05:00
thinkyhead
7d47ee732e [cron] Bump distribution date (2020-10-04) 2020-10-16 16:39:53 -05:00
thinkyhead
6ceacd62f9 [cron] Bump distribution date (2020-10-03) 2020-10-16 16:39:53 -05:00
Ryan V1
2ce6741731 Fix 'bossac' upload on Windows (#19545) 2020-10-16 16:39:53 -05:00
Marcio T
2213eb3317 Touch UI support for X2, Y2 and Z2 (#19538) 2020-10-16 16:39:53 -05:00
ellensp
b947590082 Fix wrappers on HAL/STM32F1 .cpp files (#19581)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2020-10-16 16:39:53 -05:00
ellensp
20bcaa78f6 Fix TEMP_ADC_PROBE support for STM32F1 (#19582)
Co-authored-by: ellensp <ellensp@ellensp-HP-ProBook-6470b.fritz.box>
2020-10-16 16:39:53 -05:00
ellensp
9834a36a17 Fix compile of MMU2 with S-mode disabled (#19584) 2020-10-16 16:39:24 -05:00
bilsef
90801f8815 Fix onboard SD card support for Teensy 3.6 & 4.1 (#19593) 2020-10-16 16:39:24 -05:00
Scott Lahteine
4d1357e318 Adjust HAL platform defines, comments 2020-10-16 16:39:23 -05:00
Scott Lahteine
8d090cbdbb Replace tabs with spaces 2020-10-16 16:38:59 -05:00
Victor Oliveira
ec5b78d18b Minor SPI fixes, systick_callback for STM32F1 HAL compatibility (#19565) 2020-10-16 16:38:59 -05:00
thinkyhead
d33317eadb [cron] Bump distribution date (2020-10-02) 2020-10-16 16:38:59 -05:00
swissnorp
f8375a3ea2 G35 workaround for Pronterface "feature" (#19577) 2020-10-16 16:38:59 -05:00
Stéphane
5a02959d18 Fix Anycubic i3 Mega target temperature display (#19572)
Also includes a workaround for missing (probably un-fetched) long name in file listing
2020-10-16 16:38:58 -05:00
Ilya
cc123bc657 No move on Park = No move on Resume (#19569) 2020-10-16 16:38:58 -05:00
Roman Moravčík
4f6a0605bf Update Slovak language (#19561) 2020-10-16 16:38:58 -05:00
Victor Oliveira
b89700ed35 Fix Buzzer (pin) init for uninitialized FastIO (#19559) 2020-10-16 16:38:58 -05:00
Victor Oliveira
ca853fbe19 Fix Move Screen with disabled Touch (#19558) 2020-10-16 16:38:58 -05:00
thinkyhead
1ba2548fb2 [cron] Bump distribution date (2020-10-01) 2020-10-16 16:38:58 -05:00
thinkyhead
1332be77a5 [cron] Bump distribution date (2020-09-30) 2020-10-16 16:38:58 -05:00
Victor Oliveira
a7f334387c Keep HAL tasks running during PID Autotune (#19671) 2020-10-09 23:37:43 -05:00
Scott Lahteine
e8177735a0 Marlin 2.0.7 2020-09-28 21:02:09 -05:00
Scott Lahteine
aac0326f7f Merge bugfix-2.0.x into 2.0.x 2020-09-28 20:59:49 -05:00
Jason Smith
a52afd2aeb Update stale issue message and parameters (#19412)
* Update stale issue bot

* Update close-stale.yml

* Update close-stale.yml

Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2020-09-17 06:35:10 -05:00
Keith Bennett
9913333c33 Auto-label Feature Requests (#19258) 2020-09-03 23:27:59 -05:00
Scott Lahteine
ca194ca52e Version 2.0.6.1 2020-08-27 23:45:37 -05:00
Scott Lahteine
b90e7c421f Merge remote-tracking branch 'upstream/bugfix-2.0.x' into 2.0.x 2020-08-27 22:17:50 -05:00
Julius Mumme
96e29cd7e5 Fix IS_PROBE_PIN macro (#19024) 2020-08-15 22:52:35 -05:00
ellensp
fd9c6983d3 HW PWM sanity checks for SPINDLE_LASER_FREQUENCY (#18947) 2020-08-07 18:14:40 -05:00
Roman Moravčík
da144dcf3b Update Slovak language (#18884) 2020-08-07 18:13:37 -05:00
Giuliano Zaro
1d92badecd Update Italian language (#18886) 2020-08-07 18:13:18 -05:00
swissnorp
242064fa99 Move Cancel Object menu, fix canceled item index (#18930) 2020-08-07 18:11:20 -05:00
cbaugher
ad2d1b6e31 Fix Z height after tool change (#18951) 2020-08-07 18:07:44 -05:00
Claus Näveke
978e0e49c7 No mks_robin extra_scripts in Trigorilla build (#18872) 2020-08-02 20:40:57 -05:00
ellensp
02a500dc93 Fix Spindle/Laser PWM DC (#18871) 2020-08-02 20:40:06 -05:00
FLYmaker
fa5ca8678c Fix FLYF407ZG pins (#18865) 2020-08-02 20:40:06 -05:00
Sebastien Andrivet
01359cff6b Fix Duplicator i3 Plus pin diagram (#18862) 2020-08-02 20:40:06 -05:00
Scott Lahteine
37b56d6347 Add monitor_flags 2020-07-30 02:24:34 -05:00
Scott Lahteine
ad59adfe24 Update include_tree 2020-07-30 01:51:57 -05:00
Scott Lahteine
121cd42c41 In G28 Z is sort-of known 2020-07-29 20:55:48 -05:00
Scott Lahteine
cf1c57a04d Fix UNKNOWN_Z_NO_RAISE in G28
Bug introduced in 73fc0778b8
2020-07-29 20:55:45 -05:00
swissnorp
5804761b5d Fix Cancel Objects index display (zero-based) (#18841) 2020-07-28 21:29:42 -05:00
natemason
3dd21a2770 Add TEMP_PROBE_PIN for Einsy Rambo (#18823) 2020-07-28 21:18:02 -05:00
MoellerDi
b160e8b93f Fix NEOPIXEL_LED compile w/out PRINTER_EVENT_LEDS (#18824) 2020-07-28 21:17:56 -05:00
Victor Oliveira
de37196760 DISABLE_DEBUG required to free Robin nano Z_DIR_PIN (#18832) 2020-07-28 21:16:21 -05:00
Scott Lahteine
84b96d3d47 Hotfix for first round of post-release hiccups 2020-07-27 20:16:34 -05:00
Scott Lahteine
92076c6560 Marlin Release 2.0.6 2020-07-26 20:03:06 -05:00
Scott Lahteine
5e5daf1ff2 Merge remote-tracking branch 'upstream/bugfix-2.0.x' into release_206 2020-07-26 20:01:40 -05:00
Scott Lahteine
8b637e436c Update links, README, contributing, etc. 2020-07-23 20:59:43 -05:00
Chris Pepper
b73ac40fa3 LPC fix NeoPixel fork 2020-07-14 15:15:19 +01:00
Scott Lahteine
7ed66d06a0 LiquidCrystal@1.0.0 for LPC 2020-07-12 22:35:13 -05:00
Scott Lahteine
c1b2379204 Specify supported library versions 2020-07-11 07:42:35 -05:00
Scott Lahteine
5e0958edbf Fix pid_debug_flag 2020-07-11 07:14:54 -05:00
Scott Lahteine
5513e67512 2.0.5.4 : Use ststm32 < 6.2 2020-07-08 19:36:09 -05:00
Scott Lahteine
354a9e5970 Lock threads updated 2020-07-08 04:38:35 -05:00
Scott Lahteine
ee4910c5d7 Temporarily use patched lock-threads 2020-07-05 19:56:33 -05:00
Scott Lahteine
697ef2636e Add CI for pushed commits
Co-Authored-By: thisiskeithb <13375512+thisiskeithb@users.noreply.github.com>
2020-07-05 15:45:14 -05:00
Scott Lahteine
481b8ff2d9 Limit actions to main 2020-07-05 15:23:07 -05:00
Scott Lahteine
7bf89f2b9f Two lock-closed per day 2020-07-04 17:35:48 -05:00
Scott Lahteine
ed7110838e Patch Bad PR action 2020-07-04 17:32:58 -05:00
Scott Lahteine
842dea4bd5 Updated lock / unlock actions 2020-07-02 17:38:31 -05:00
Scott Lahteine
a73e61078d Add Close / Lock actions 2020-06-23 19:58:00 -05:00
Daniel Aléxis
c352aeb32e Remove "dev" branch reference (for now) (#18242) 2020-06-09 15:27:57 -05:00
Mathias Gartner
e4d8336175 Fix XYZ types multiplication/division (#17826) 2020-05-02 16:17:02 -05:00
thisiskeithb
0518dec60d Correct link to Configurations (#17370) 2020-04-01 14:16:01 -05:00
Scott Lahteine
015c4e6fbd Version 2.0.5.3 2020-03-31 14:44:14 -05:00
Scott Lahteine
0f9a14dfda Merge latest patches 2020-03-31 14:43:42 -05:00
Scott Lahteine
7124b2164d Version 2.0.5.2 2020-03-24 17:11:59 -05:00
Scott Lahteine
efc19260a7 Merge patches from bugfix-2.0.x 2020-03-24 17:10:53 -05:00
Scott Lahteine
d37bfa3b4e Version 2.0.5.1 Release 2020-03-16 17:52:41 -05:00
Scott Lahteine
129b1bb8d4 Merge nightly patches 2020-03-16 17:50:43 -05:00
Scott Lahteine
8dbbcfd382 Version 2.0.5 Release 2020-03-14 00:49:12 -05:00
Scott Lahteine
fa48fbb9b8 Merge bugfix-2.0.x into 2.0.x 2020-03-14 00:35:11 -05:00
Scott Lahteine
d6e767e36b Version 2.0.4.4 Release 2020-02-27 04:15:00 -06:00
Scott Lahteine
b29aae6c0c Merge 'bugfix-2.0.x' into 2.0.x 2020-02-27 04:14:33 -06:00
Scott Lahteine
1955eea1b8 Version 2.0.4.3 Release 2020-02-24 11:01:52 -06:00
Scott Lahteine
42fa9fc570 Fix card_eof error 2020-02-24 11:01:52 -06:00
Marcio T
130d0395d0 Restore tabs in Makefile (#16944) 2020-02-24 11:01:52 -06:00
Marcio T
c5f1ff9ee1 Allow Z_SAFE_HOMING_POINT outside bed (#16945) 2020-02-24 11:01:52 -06:00
Scott Lahteine
089cc68a04 Merge nightly patches 2020-02-24 06:12:15 -06:00
Scott Lahteine
2b759b9e8d Suppress "packed member" warning 2020-02-22 19:26:52 -06:00
Scott Lahteine
5f27f7de47 Version 2.0.4.2 Release 2020-02-22 18:49:59 -06:00
Scott Lahteine
282f4678cd Merge nightly patches 2020-02-22 18:47:09 -06:00
Scott Lahteine
c41f3f8582 Version 2.0.4.1 Release 2020-02-22 07:02:55 -06:00
Scott Lahteine
8670df08a2 CoreXY Babystepping hotfix 2020-02-22 07:02:55 -06:00
Scott Lahteine
730690ea03 Hotfix for Babystepping 2020-02-22 02:55:26 -06:00
Scott Lahteine
3543873da7 Use moves_free in ok_to_send 2020-02-22 02:55:26 -06:00
thinkyhead
c505626c42 [cron] Bump distribution date (2020-02-22) 2020-02-22 02:55:26 -06:00
Scott Lahteine
7e8505fc11 Version 2.0.4 Release 2020-02-21 08:38:14 -06:00
Scott Lahteine
f9aec2685c Merge remote-tracking branch 'upstream/bugfix-2.0.x' into 2.0.x 2020-02-21 08:37:02 -06:00
Scott Lahteine
dd6a7ca197 Fix out-of-order M0 after SD printing
Fixes #14774

Co-Authored-By: tol2cj <tol2cj@users.noreply.github.com>
2020-02-10 16:36:31 -06:00
Scott Lahteine
62b9d7dc73 Direct link to version configs 2020-02-05 00:47:24 -06:00
Scott Lahteine
d83382eb55 Add "PR Bad Target" workflow action 2020-02-04 09:41:26 -06:00
Scott Lahteine
4c76314c26 Scheduled action to bump the date on bugfix-2.0.x 2020-02-03 19:31:41 -06:00
Scott Lahteine
64ab254f26 Use a different Configurations branch for CI 2020-02-03 18:11:52 -06:00
Scott Lahteine
e6a7be922b Version 2.0.3 2020-01-31 04:24:05 -06:00
Scott Lahteine
1525c2530e Merge commit 'dabf3939209fd8ea7f6a6327d764c16743aa22aa' into look_at_201 2020-01-31 04:23:45 -06:00
Scott Lahteine
016e4c0193 Version 2.0.2 2020-01-31 04:22:34 -06:00
Scott Lahteine
be642610ae Merge commit '8bd6b60a0141fa892984f2d5b61f06eadbbf9a5f' into look_at_201 2020-01-31 04:22:09 -06:00
Scott Lahteine
ee17051933 Version 2.0.1 2020-01-13 16:49:49 -06:00
Scott Lahteine
0673f335e1 Merge remote-tracking branch 'upstream/bugfix-2.0.x' into 2.0.x 2019-12-24 00:05:04 -06:00
Scott Lahteine
ac7ee4b94a Release version 2.0.0 2019-12-22 18:03:36 -06:00
2929 changed files with 130556 additions and 375845 deletions

View File

@@ -1,29 +0,0 @@
# See here for image contents: https://github.com/microsoft/vscode-dev-containers/tree/v0.187.0/containers/python-3/.devcontainer/base.Dockerfile
# [Choice] Python version: 3, 3.9, 3.8, 3.7, 3.6
ARG VARIANT="3.9.0-buster"
FROM python:${VARIANT}
# [Option] Install Node.js
ARG INSTALL_NODE="true"
ARG NODE_VERSION="lts/*"
RUN if [ "${INSTALL_NODE}" = "true" ]; then su vscode -c "umask 0002 && . /usr/local/share/nvm/nvm.sh && nvm install ${NODE_VERSION} 2>&1"; fi
# [Optional] If your pip requirements rarely change, uncomment this section to add them to the image.
# COPY requirements.txt /tmp/pip-tmp/
# RUN pip3 --disable-pip-version-check --no-cache-dir install -r /tmp/pip-tmp/requirements.txt \
# && rm -rf /tmp/pip-tmp
# [Optional] Uncomment this section to install additional OS packages.
# RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \
# && apt-get -y install --no-install-recommends <your-package-list-here>
# [Optional] Uncomment this line to install global node packages.
# RUN su vscode -c "source /usr/local/share/nvm/nvm.sh && npm install -g <your-package-here>" 2>&1
RUN pip install -U https://github.com/platformio/platformio-core/archive/develop.zip
RUN platformio update
# To get the test platforms
RUN pip install PyYaml
#ENV PATH /code/buildroot/bin/:/code/buildroot/tests/:${PATH}

View File

@@ -1,51 +0,0 @@
// For format details, see https://aka.ms/devcontainer.json. For config options, see the README at:
// https://github.com/microsoft/vscode-dev-containers/tree/v0.187.0/containers/python-3
{
"name": "Python 3",
"build": {
"dockerfile": "Dockerfile",
"context": "..",
"args": {
// Update 'VARIANT' to pick a Python version: 3, 3.6, 3.7, 3.8, 3.9
"VARIANT": "3.9.0-buster",
// Options
"INSTALL_NODE": "false",
"NODE_VERSION": "lts/*"
}
},
// Set *default* container specific settings.json values on container create.
"settings": {
"python.pythonPath": "/usr/local/bin/python",
"python.languageServer": "Pylance",
"python.linting.enabled": true,
"python.linting.pylintEnabled": true,
"python.formatting.autopep8Path": "/usr/local/py-utils/bin/autopep8",
"python.formatting.blackPath": "/usr/local/py-utils/bin/black",
"python.formatting.yapfPath": "/usr/local/py-utils/bin/yapf",
"python.linting.banditPath": "/usr/local/py-utils/bin/bandit",
"python.linting.flake8Path": "/usr/local/py-utils/bin/flake8",
"python.linting.mypyPath": "/usr/local/py-utils/bin/mypy",
"python.linting.pycodestylePath": "/usr/local/py-utils/bin/pycodestyle",
"python.linting.pydocstylePath": "/usr/local/py-utils/bin/pydocstyle",
"python.linting.pylintPath": "/usr/local/py-utils/bin/pylint"
},
// Add the IDs of extensions you want installed when the container is created.
"extensions": [
"ms-python.python",
"ms-python.vscode-pylance",
"platformio.platformio-ide",
"marlinfirmware.auto-build",
"editorconfig.editorconfig"
],
// Use 'forwardPorts' to make a list of ports inside the container available locally.
// "forwardPorts": [],
// Use 'postCreateCommand' to run commands after the container is created.
// "postCreateCommand": "pip3 install --user -r requirements.txt",
// Comment out connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root.
// "remoteUser": "vscode"
}

View File

@@ -1,33 +1,19 @@
# editorconfig.org
root = true
[*]
trim_trailing_whitespace = true
insert_final_newline = true
[{*.patch,syntax_test_*}]
trim_trailing_whitespace = false
[{*.c,*.cpp,*.h,*.ino,*.py,Makefile}]
end_of_line = lf
[{*.c,*.cpp,*.h,*.ino}]
charset = utf-8
[{*.c,*.cpp,*.h,*.ino,Makefile}]
trim_trailing_whitespace = true
insert_final_newline = true
end_of_line = lf
indent_style = space
indent_size = 2
[{Makefile}]
indent_style = tab
indent_size = 2
[*.md]
# Two spaces at the end of the line means newline in Markdown
trim_trailing_whitespace = false
[{*.py}]
indent_style = space
indent_size = 4
[{*.conf,*.sublime-project}]
[{*.py,*.conf,*.sublime-project}]
indent_style = tab
indent_size = 4

View File

@@ -1,7 +1,6 @@
name: 🪲 Report a bug
description: Create a bug report to help improve Marlin Firmware
title: "[BUG] (bug summary)"
labels: ["Bug: Potential ?"]
body:
- type: markdown
attributes:
@@ -15,13 +14,13 @@ body:
## Before Reporting a Bug
- Read and understand Marlin's [Code of Conduct](https://github.com/MarlinFirmware/Marlin/blob/bugfix-2.1.x/.github/code_of_conduct.md). You are expected to comply with it, including treating everyone with respect.
- Read and understand Marlin's [Code of Conduct](https://github.com/MarlinFirmware/Marlin/blob/master/.github/code_of_conduct.md). You are expected to comply with it, including treating everyone with respect.
- Test with the [`bugfix-2.1.x` branch](https://github.com/MarlinFirmware/Marlin/archive/bugfix-2.1.x.zip) to see whether the issue still exists.
- Test with the [`bugfix-2.0.x` branch](https://github.com/MarlinFirmware/Marlin/archive/bugfix-2.0.x.zip) to see whether the issue still exists.
## Instructions
Please follow the instructions below. Failure to do so may result in your issue being closed. See [Contributing to Marlin](https://github.com/MarlinFirmware/Marlin/blob/bugfix-2.1.x/.github/contributing.md) for additional guidelines.
Please follow the instructions below. Failure to do so may result in your issue being closed. See [Contributing to Marlin](https://github.com/MarlinFirmware/Marlin/blob/2.0.x/.github/contributing.md) for additional guidelines.
1. Provide a good title starting with [BUG].
2. Fill out all sections of this bug report form.
@@ -29,10 +28,10 @@ body:
- type: dropdown
attributes:
label: Did you test the latest `bugfix-2.1.x` code?
label: Did you test the latest `bugfix-2.0.x` code?
description: >-
Always try the latest code to make sure the issue you are reporting is not already fixed. To download
the latest code just [click this link](https://github.com/MarlinFirmware/Marlin/archive/bugfix-2.1.x.zip).
the latest code just [click this link](https://github.com/MarlinFirmware/Marlin/archive/bugfix-2.0.x.zip).
options:
- Yes, and the problem still exists.
- No, but I will test it now!
@@ -51,8 +50,6 @@ body:
Describe the bug in this section. Tell us what you were trying to do and what
happened that you did not expect. Provide a clear and concise description of the
problem and include as many details as possible.
When pasting formatted text don't forget to put ` ``` ` (on its own line) before and after to make it readable.
placeholder: |
Marlin doesn't work.
validations:
@@ -101,7 +98,7 @@ body:
- type: input
attributes:
label: Printer model
description: Creality Ender-3, Prusa mini, or Kossel Delta?
description: Creality Ender 3, Prusa mini, or Kossel Delta?
- type: input
attributes:
@@ -110,25 +107,8 @@ body:
- type: input
attributes:
label: LCD/Controller
description: Some Marlin behaviors are determined by the controller. Describe your LCD/Controller model and version.
- type: input
attributes:
label: Other add-ons
description: Please list any other hardware add-ons that could be involved.
- type: dropdown
attributes:
label: Bed Leveling
description: What kind of bed leveling compensation are you using?
options:
- UBL Bilinear mesh
- ABL Bilinear mesh
- ABL Linear grid
- ABL 3-point
- MBL Manual Bed Leveling
- No Bed Leveling
label: Add-ons
description: Please list any hardware add-ons that could be involved.
- type: dropdown
attributes:
@@ -157,28 +137,21 @@ body:
- type: markdown
attributes:
value: |
# Attachments
value: >-
## Other things to include
- type: checkboxes
attributes:
label: Don't forget to include
options:
- label: A ZIP file containing your `Configuration.h` and `Configuration_adv.h`.
required: true
Please also be sure to include these items to help with troubleshooting:
- type: markdown
attributes:
value: |
### Optional items to include:
- 'Log output from the host. (`M111 S247` for maximum logging.)'
- Images or videos demonstrating the problem, if it helps to make it clear.
- A G-Code file that exposes the problem, if not affecting _all_ G-code.
* **A ZIP file** containing your `Configuration.h` and `Configuration_adv.h`.
(Please don't paste lengthy configuration text here.)
* **Log output** from the host. (`M111 S247` for maximum logging.)
* **Images or videos** demonstrating the problem, if it helps to make it clear.
* **A G-Code file** that exposes the problem, if not affecting _all_ G-code.
If you've made any other modifications to the firmware, please describe them in detail in the space provided.
When pasting formatted text into the box below don't forget to put ` ``` ` (on its own line) before and after to make it readable.
- type: textarea
attributes:
label: Additional information & file uploads
description: >-
If you've made any other modifications to the firmware, please describe them in detail.
When pasting formatted text don't forget to put ` ``` ` (on its own line) before and after to make it readable.

View File

@@ -1,7 +1,7 @@
blank_issues_enabled: false
contact_links:
- name: 📖 Marlin Documentation
url: https://marlinfw.org/
url: http://marlinfw.org/
about: Lots of documentation on installing and using Marlin.
- name: 👤 MarlinFirmware Facebook group
url: https://www.facebook.com/groups/1049718498464482
@@ -10,7 +10,7 @@ contact_links:
url: https://discord.gg/n5NJ59y
about: Join the Discord server for support and discussion.
- name: 🔗 Marlin Discussion Forum
url: https://reprap.org/forum/list.php?415
url: http://forums.reprap.org/list.php?415
about: A searchable web forum hosted by RepRap dot org.
- name: 📺 Marlin Videos on YouTube
url: https://www.youtube.com/results?search_query=marlin+firmware

View File

@@ -1,7 +1,7 @@
name: ✨ Request a feature
description: Request a new Marlin Firmware feature
title: "[FR] (feature summary)"
labels: ["T: Feature Request"]
labels: 'T: Feature Request'
body:
- type: markdown
attributes:
@@ -17,7 +17,7 @@ body:
- Read and understand Marlin's [Code of Conduct](https://github.com/MarlinFirmware/Marlin/blob/master/.github/code_of_conduct.md). You are expected to comply with it, including treating everyone with respect.
- Check the latest [`bugfix-2.1.x` branch](https://github.com/MarlinFirmware/Marlin/archive/bugfix-2.1.x.zip) to see if the feature already exists.
- Check the latest [`bugfix-2.0.x` branch](https://github.com/MarlinFirmware/Marlin/archive/bugfix-2.0.x.zip) to see if the feature already exists.
- Before you proceed with your request, please consider if it is necessary to make it into a firmware feature, or if it may be better suited for a slicer or host feature.

View File

@@ -28,9 +28,15 @@ Project maintainers are responsible for clarifying the standards of acceptable b
Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.
## Scope
This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by following GitHub's [reporting abuse or spam article](https://docs.github.com/en/communities/maintaining-your-safety-on-github/reporting-abuse-or-spam). All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances.
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at [marlinfirmware@github.com](mailto:marlinfirmware@github.com). All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.
## Attribution

View File

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

35
.github/issue_template.md vendored Normal file
View File

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

40
.github/lock.yml vendored Normal file
View File

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

View File

@@ -1,41 +0,0 @@
#
# auto-label.yml
# - Find all open issues without a label and a title containing "[BUG]".
# - Apply the label "Bug: Potential ?" to these issues.
#
name: Label Old Bugs
on:
schedule:
- cron: "30 8 * * *"
jobs:
autolabel:
name: Auto Label
if: github.repository == 'MarlinFirmware/Marlin'
runs-on: ubuntu-latest
steps:
- name: Auto Label for [BUG]
uses: actions/github-script@v7
with:
script: |
// Get all open issues in this repository
const issueList = await github.rest.issues.listForRepo({
owner: context.repo.owner,
repo: context.repo.repo,
state: 'open'
});
// Filter issues without labels that have a title containing '[BUG]'.
const matchingIssues = issueList.data.filter(
issue => issue.title.includes('[BUG]') && issue.labels.length === 0
);
// Process the first 50
for (const issue of matchingIssues.slice(0, 50)) {
await github.rest.issues.addLabels({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: issue.number,
labels: ['Bug: Potential ?']
});
}

View File

@@ -7,7 +7,7 @@ name: Bump Distribution Date
on:
schedule:
- cron: '0 */6 * * *'
- cron: '0 0 * * *'
jobs:
bump_date:
@@ -19,41 +19,17 @@ jobs:
steps:
- name: Check out bugfix-2.0.x
uses: actions/checkout@v4
uses: actions/checkout@v2
with:
ref: bugfix-2.0.x
- name: Bump Date (bugfix-2.0.x)
- name: Bump Distribution Date
run: |
# Inline Bump Script
if [[ ! "$( git log -1 --pretty=%B )" =~ ^\[cron\] ]]; then
DIST=$( date +"%Y-%m-%d" )
eval "sed -E -i 's/(#define +STRING_DISTRIBUTION_DATE) .*$/\1 \"$DIST\"/g' Marlin/src/inc/Version.h" && \
eval "sed -E -i 's/(#define +STRING_DISTRIBUTION_DATE) .*$/\1 \"$DIST\"/g' Marlin/Version.h" && \
git config user.name "${GITHUB_ACTOR}" && \
git config user.email "${GITHUB_ACTOR}@users.noreply.github.com" && \
git add . && \
git commit -m "[cron] Bump distribution date ($DIST)" && \
git push
fi
exit 0
- name: Check out bugfix-2.1.x
uses: actions/checkout@v4
with:
ref: bugfix-2.1.x
- name: Bump Date (bugfix-2.1.x)
run: |
# Inline Bump Script
if [[ ! "$( git log -1 --pretty=%B )" =~ ^\[cron\] ]]; then
DIST=$( date +"%Y-%m-%d" )
eval "sed -E -i 's/(#define +STRING_DISTRIBUTION_DATE) .*$/\1 \"$DIST\"/g' Marlin/src/inc/Version.h" && \
eval "sed -E -i 's/(#define +STRING_DISTRIBUTION_DATE) .*$/\1 \"$DIST\"/g' Marlin/Version.h" && \
git config user.name "${GITHUB_ACTOR}" && \
git config user.email "${GITHUB_ACTOR}@users.noreply.github.com" && \
git add . && \
git commit -m "[cron] Bump distribution date ($DIST)" && \
git push
fi
exit 0
DIST=$( date +"%Y-%m-%d" )
eval "sed -E -i 's/(#define +STRING_DISTRIBUTION_DATE) .*$/\1 \"$DIST\"/g' Marlin/src/inc/Version.h" && \
git config user.name "${GITHUB_ACTOR}" && \
git config user.email "${GITHUB_ACTOR}@users.noreply.github.com" && \
git add . && \
git commit -m "[cron] Bump distribution date ($DIST)" && \
git push

View File

@@ -6,8 +6,7 @@
name: PR Bad Target
on:
pull_request_target:
types: [opened]
pull_request:
branches:
- 1.0.x
- 1.1.x
@@ -21,13 +20,15 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: superbrothers/close-pull-request@v3
- uses: peter-evans/close-pull@v1
with:
token: ${{ github.token }}
delete-branch: false
comment: >
Thanks for your contribution! Unfortunately we can't accept PRs directed at release branches. We make patches to the bugfix branches and only later do we push them out as releases.
Please redo this PR starting with the `bugfix-2.1.x` branch and be careful to target `bugfix-2.1.x` when resubmitting the PR. Patches may also target `bugfix-2.0.x` if they are specifically for 2.0.9.x.
Please redo this PR starting with the `bugfix-2.0.x` branch and be careful to target `bugfix-2.0.x` when resubmitting the PR.
It may help to set your fork's default branch to `bugfix-2.1.x`.
It may help to set your fork's default branch to `bugfix-2.0.x`.
See [this page](https://marlinfw.org/docs/development/getting_started_pull_requests.html) for full instructions.
See [this page](http://marlinfw.org/docs/development/getting_started_pull_requests.html) for full instructions.

View File

@@ -1,187 +0,0 @@
#
# ci-build-tests.yml
# Do test builds to catch compile errors
#
name: CI - Build Tests
on:
pull_request:
branches:
- bugfix-2.1.x
- 2.1.x
paths-ignore:
- config/**
- data/**
- docs/**
- test/**
- Marlin/tests/**
- '**/*.md'
push:
branches:
- bugfix-2.1.x
- 2.1.x
paths-ignore:
- config/**
- data/**
- docs/**
- test/**
- Marlin/tests/**
- '**/*.md'
jobs:
test_builds:
name: Build Test
if: github.repository == 'MarlinFirmware/Marlin'
runs-on: ubuntu-latest
strategy:
fail-fast: true
matrix:
test-platform:
# Native
- linux_native
# AVR
- mega2560
- mega1280
- at90usb1286_dfu
# AVR Extended
- FYSETC_F6
- melzi_optiboot
- rambo
- sanguino1284p
- sanguino644p
# SAM3X8E
- DUE
- DUE_archim
# SAMD21
- SAMD51_grandcentral_m4
- SAMD21_minitronics20
# ESP32
- esp32
- mks_tinybee
# Teensy 2
#- at90usb1286_cdc
# Teensy MK20DX256
- teensy31
# Teensy MK64FX512, MK66FX1M0
- teensy35
# Teensy IMXRT1062DVx6A
- teensy41
# STM32F0
- malyan_M300
- STM32F070CB_malyan
- STM32F070RB_malyan
# STM32F1
- chitu_f103
- mks_robin
- mks_robin_nano_v1v2
- PANDA_PI_V29
- STM32F103RC_btt
- STM32F103RC_fysetc
- STM32F103RE_btt
- STM32F103RE_btt_USB
- STM32F103RE_creality
- STM32F103VE_longer
#- mks_robin_mini
#- mks_robin_nano_v1_3_f4_usbmod
#- mks_robin_nano_v1v2_usbmod
#- STM32F103CB_malyan
#- STM32F103RC_btt_USB
#- STM32F103RE
# STM32F4
- ARMED
- BIGTREE_BTT002
- BIGTREE_GTR_V1_0
- BIGTREE_SKR_PRO
- FLYF407ZG
- FYSETC_S6
- LERDGEK
- LERDGEX
- mks_robin_pro2
- Opulo_Lumen_REV3
- rumba32
- STM32F401RC_creality
- STM32F407VE_black
- I3DBEEZ9_V1
# STM32F7
- NUCLEO_F767ZI
- REMRAM_V1
# STM32H7
- BTT_SKR_SE_BX
- STM32H743VI_btt
# STM32F1 (Maple)
- jgaurora_a5s_a1_maple
- mks_robin_lite_maple
- mks_robin_pro_maple
- STM32F103RC_btt_USB_maple
- STM32F103RC_fysetc_maple
- STM32F103RC_meeb_maple
- STM32F103VE_longer_maple
- STM32F103VE_ZM3E4V2_USB_maple
#- mks_robin_maple
#- mks_robin_nano_v1v2_maple
#- STM32F103RC_btt_maple
#- STM32F103RE_creality_maple
# STM32G0
- STM32G0B1RE_btt
# HC32
- HC32F460C_aquila_101
# LPC176x - Lengthy tests
- LPC1768
- LPC1769
steps:
- name: Check out the PR
uses: actions/checkout@v4
- name: Cache pip
uses: actions/cache@v4
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }}
restore-keys: |
${{ runner.os }}-pip-
- name: Cache PlatformIO
uses: actions/cache@v4
with:
path: ~/.platformio
key: ${{ runner.os }}-${{ hashFiles('**/lockfiles') }}
- name: Select Python 3.9
uses: actions/setup-python@v5
with:
python-version: '3.9'
architecture: 'x64'
- name: Install PlatformIO
run: |
pip install -U platformio
pio upgrade --dev
pio pkg update --global
- name: Run ${{ matrix.test-platform }} Tests
run: |
make tests-single-ci TEST_TARGET=${{ matrix.test-platform }}

View File

@@ -1,73 +0,0 @@
#
# ci-unit-tests.yml
# Build and execute unit tests to catch functional issues in code
#
name: CI - Unit Tests
on:
pull_request:
branches:
- bugfix-2.1.x
# Cannot be enabled on 2.1.x until it contains the unit test framework
#- 2.1.x
paths-ignore:
- config/**
- data/**
- docs/**
- '**/*.md'
push:
branches:
- bugfix-2.1.x
# Cannot be enabled on 2.1.x until it contains the unit test framework
#- 2.1.x
paths-ignore:
- config/**
- data/**
- docs/**
- '**/*.md'
jobs:
# This runs all unit tests as a single job. While it should be possible to break this up into
# multiple jobs, they currently run quickly and finish long before the compilation tests.
run_unit_tests:
name: Unit Test
# These tests will only be able to run on the bugfix-2.1.x branch, until the next release
# pulls them into additional branches.
if: github.repository == 'MarlinFirmware/Marlin'
runs-on: ubuntu-latest
steps:
- name: Check out the PR
uses: actions/checkout@v4
- name: Cache pip
uses: actions/cache@v4
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }}
restore-keys: |
${{ runner.os }}-pip-
- name: Cache PlatformIO
uses: actions/cache@v4
with:
path: ~/.platformio
key: ${{ runner.os }}-${{ hashFiles('**/lockfiles') }}
- name: Select Python 3.9
uses: actions/setup-python@v5
with:
python-version: '3.9'
architecture: 'x64'
- name: Install PlatformIO
run: |
pip install -U platformio
pio upgrade --dev
pio pkg update --global
- name: Run All Unit Tests
run: |
make unit-test-all-local

View File

@@ -1,51 +0,0 @@
#
# ci-validate-pins.yml
# Validate that all of the pins files are unchanged by pinsformat.py
#
name: CI - Validate Pins Files
on:
pull_request:
branches:
- bugfix-2.1.x
# Cannot be enabled on 2.1.x until it contains the unit test framework
#- 2.1.x
paths:
- 'Marlin/src/pins/*/**'
push:
branches:
- bugfix-2.1.x
# Cannot be enabled on 2.1.x until it contains the unit test framework
#- 2.1.x
paths:
- 'Marlin/src/pins/*/**'
jobs:
validate_pins_files:
name: Validate Pins Files
if: github.repository == 'MarlinFirmware/Marlin'
runs-on: ubuntu-latest
steps:
- name: Check out the PR
uses: actions/checkout@v4
- name: Cache pip
uses: actions/cache@v4
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }}
restore-keys: |
${{ runner.os }}-pip-
- name: Select Python 3.9
uses: actions/setup-python@v5
with:
python-version: '3.9'
architecture: 'x64'
- name: Validate all pins files
run: |
make validate-pins -j

View File

@@ -23,7 +23,6 @@ jobs:
- "S: Please Merge"
- "S: Please Test"
- "help wanted"
- "Bug: Potential ?"
- "Needs: Discussion"
- "Needs: Documentation"
- "Needs: More Data"
@@ -32,7 +31,7 @@ jobs:
- "Needs: Work"
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v2
- name: Remove Labels
uses: actions-ecosystem/action-remove-labels@v1
with:

View File

@@ -17,24 +17,12 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/stale@v9
- uses: actions/stale@v3
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
stale-issue-message: |
Greetings from the Marlin AutoBot!
This issue has had no activity for the last 90 days.
Do you still see this issue with the latest `bugfix-2.1.x` code?
Please add a reply within 14 days or this issue will be automatically closed.
To keep a confirmed issue open we can also add a "Bug: Confirmed" tag.
Disclaimer: This is an open community project with lots of activity and limited
resources. The main project contributors will do a bug sweep ahead of the next
release, but any skilled member of the community may jump in at any time to fix
this issue. That can take a while depending on our busy lives so please be patient,
and take advantage of other resources such as the MarlinFirmware Discord to help
solve the issue.
days-before-stale: 90
days-before-close: 14
stale-issue-message: 'This issue has had no activity in the last 60 days. Please add a reply if you want to keep this issue active, otherwise it will be automatically closed within 10 days.'
days-before-stale: 60
days-before-close: 10
stale-issue-label: 'stale-closing-soon'
exempt-all-assignees: true
exempt-issue-labels: 'Bug: Confirmed !,T: Feature Request,Needs: More Data,Needs: Discussion,Needs: Documentation,Needs: Patch,Needs: Work,Needs: Testing,help wanted,no-locking'
exempt-issue-labels: 'Bug: Confirmed !,T: Feature Request,Needs: Discussion,Needs: Documentation,Needs: More Data,Needs: Patch,Needs: Work,Needs: Testing,help wanted,no-locking'

View File

@@ -17,15 +17,15 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: dessant/lock-threads@v5
- uses: dessant/lock-threads@v2
with:
github-token: ${{ github.token }}
process-only: 'issues'
issue-inactive-days: '60'
exclude-issue-created-before: ''
exclude-any-issue-labels: 'no-locking'
add-issue-labels: ''
issue-comment: >
issue-lock-inactive-days: '60'
issue-exclude-created-before: '2017-07-01T00:00:00Z'
issue-exclude-labels: 'no-locking'
issue-lock-labels: ''
issue-lock-comment: >
This issue has been automatically locked since there
has not been any recent activity after it was closed.
Please open a new issue for related bugs.

126
.github/workflows/test-builds.yml vendored Normal file
View File

@@ -0,0 +1,126 @@
#
# test-builds.yml
# Do test builds to catch compile errors
#
name: CI
on:
pull_request:
branches:
- bugfix-2.0.x
paths-ignore:
- config/**
- data/**
- docs/**
- '**/*.md'
push:
branches:
- bugfix-2.0.x
paths-ignore:
- config/**
- data/**
- docs/**
- '**/*.md'
jobs:
test_builds:
name: Run All Tests
if: github.repository == 'MarlinFirmware/Marlin'
runs-on: ubuntu-latest
strategy:
matrix:
test-platform:
# Base Environments
- DUE
- DUE_archim
- esp32
- linux_native
- mega2560
- at90usb1286_dfu
- teensy31
- teensy35
- teensy41
- SAMD51_grandcentral_m4
# Extended AVR Environments
- FYSETC_F6
- mega1280
- rambo
- sanguino1284p
- sanguino644p
# STM32F1 (Maple) Environments
- STM32F103RC_btt
- STM32F103RC_btt_USB
- STM32F103RE_btt
- STM32F103RE_btt_USB
- STM32F103RC_fysetc
- STM32F103RC_meeb
- jgaurora_a5s_a1
- STM32F103VE_longer
- mks_robin
- mks_robin_lite
- mks_robin_pro
- STM32F103RET6_creality
- mks_robin_nano35
# STM32 (ST) Environments
- STM32F103RC_btt_stm32
- STM32F407VE_black
- STM32F401VE_STEVAL
- BIGTREE_BTT002
- BIGTREE_SKR_PRO
- BIGTREE_GTR_V1_0
- mks_robin_stm32
- ARMED
- FYSETC_S6
- STM32F070CB_malyan
- STM32F070RB_malyan
- malyan_M300
- FLYF407ZG
- rumba32
- LERDGEX
- LERDGEK
- mks_robin_nano35_stm32
- NUCLEO_F767ZI
- REMRAM_V1
- BTT_SKR_SE_BX
- chitu_f103
# Put lengthy tests last
- LPC1768
- LPC1769
# Non-working environment tests
#- at90usb1286_cdc
#- STM32F103CB_malyan
#- STM32F103RE
#- mks_robin_mini
steps:
- name: Select Python 3.7
uses: actions/setup-python@v1
with:
python-version: '3.7' # Version range or exact version of a Python version to use, using semvers version range syntax.
architecture: 'x64' # optional x64 or x86. Defaults to x64 if not specified
- name: Install PlatformIO
run: |
pip install -U https://github.com/platformio/platformio-core/archive/develop.zip
platformio update
- name: Check out the PR
uses: actions/checkout@v2
- name: Run ${{ matrix.test-platform }} Tests
run: |
make tests-single-ci TEST_TARGET=${{ matrix.test-platform }}

71
.gitignore vendored
View File

@@ -21,21 +21,32 @@
# Generated files
_Version.h
bdf2u8g.exe
genpages.exe
marlin_config.json
mczip.h
language*.csv
out-csv/
out-language/
*.gen
*.sublime-workspace
bdf2u8g
#
# OS
#
applet/
.DS_Store
*.DS_Store
# Compiled C++ Object files
#
# Misc
#
*~
*.orig
*.rej
*.bak
*.idea
*.s
*.i
*.ii
*.swp
tags
#
# C++
#
# Compiled Object files
*.slo
*.lo
*.o
@@ -66,7 +77,10 @@ applet/
*.out
*.app
# Compiled C Object files
#
# C
#
# Object files
*.o
*.ko
*.obj
@@ -123,22 +137,16 @@ __vm/
vc-fileutils.settings
# Visual Studio Code
.vscode/*
!.vscode/extensions.json
.vscode
.vscode/.browse.c_cpp.db*
.vscode/c_cpp_properties.json
.vscode/launch.json
.vscode/*.db
# Simulation files
imgui.ini
eeprom.dat
spi_flash.bin
fs.img
# CMake
buildroot/share/cmake/*
# cmake
CMakeLists.txt
!buildroot/share/cmake/CMakeLists.txt
src/CMakeLists.txt
CMakeListsPrivate.txt
build/
# CLion
cmake-build-*
@@ -156,15 +164,6 @@ __pycache__
# IOLogger logs
*_log.csv
# Misc.
*~
*.orig
*.rej
*.bak
*.idea
*.i
*.ii
*.swp
tags
*.logs
*.bak
# Simulation / Native
eeprom.dat
imgui.ini

View File

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

View File

@@ -1,24 +1,11 @@
SCRIPTS_DIR := buildroot/share/scripts
CONTAINER_RT_BIN := docker
CONTAINER_RT_OPTS := --rm -v $(PWD):/code -v platformio-cache:/root/.platformio
CONTAINER_IMAGE := marlin-dev
UNIT_TEST_CONFIG ?= default
help:
@echo "Tasks for local development:"
@echo "make marlin : Build marlin for the configured board"
@echo "make format-pins -j : Reformat all pins files (-j for parallel execution)"
@echo "make validate-pins -j : Validate all pins files, fails if any require reformatting"
@echo "make tests-single-ci : Run a single test from inside the CI"
@echo "make tests-single-local : Run a single test locally"
@echo "make tests-single-local-docker : Run a single test locally, using docker"
@echo "make tests-all-local : Run all tests locally"
@echo "make tests-all-local-docker : Run all tests locally, using docker"
@echo "make unit-test-single-local : Run unit tests for a single config locally"
@echo "make unit-test-single-local-docker : Run unit tests for a single config locally, using docker"
@echo "make unit-test-all-local : Run all code tests locally"
@echo "make unit-test-all-local-docker : Run all code tests locally, using docker"
@echo "make setup-local-docker : Setup local docker using buildx"
@echo "* tests-single-ci: Run a single test from inside the CI"
@echo "* tests-single-local: Run a single test locally"
@echo "* tests-single-local-docker: Run a single test locally, using docker-compose"
@echo "* tests-all-local: Run all tests locally"
@echo "* tests-all-local-docker: Run all tests locally, using docker-compose"
@echo "* setup-local-docker: Setup local docker-compose"
@echo ""
@echo "Options for testing:"
@echo " TEST_TARGET Set when running tests-single-*, to select the"
@@ -28,77 +15,38 @@ help:
@echo " run on GitHub CI"
@echo " ONLY_TEST Limit tests to only those that contain this, or"
@echo " the index of the test (1-based)"
@echo " UNIT_TEST_CONFIG Set the name of the config from the test folder, without"
@echo " the leading number. Default is 'default'". Used with the
@echo " unit-test-single-* tasks"
@echo " VERBOSE_PLATFORMIO If you want the full PIO output, set any value"
@echo " GIT_RESET_HARD Used by CI: reset all local changes. WARNING:"
@echo " THIS WILL UNDO ANY CHANGES YOU'VE MADE!"
marlin:
./buildroot/bin/mftest -a
.PHONY: marlin
.PHONY: help
tests-single-ci:
export GIT_RESET_HARD=true
$(MAKE) tests-single-local TEST_TARGET=$(TEST_TARGET) PLATFORMIO_BUILD_FLAGS=-DGITHUB_ACTION
$(MAKE) tests-single-local TEST_TARGET=$(TEST_TARGET)
.PHONY: tests-single-ci
tests-single-local:
@if ! test -n "$(TEST_TARGET)" ; then echo "***ERROR*** Set TEST_TARGET=<your-module> or use make tests-all-local" ; return 1; fi
export PATH="./buildroot/bin/:./buildroot/tests/:${PATH}" \
export PATH=./buildroot/bin/:./buildroot/tests/:${PATH} \
&& export VERBOSE_PLATFORMIO=$(VERBOSE_PLATFORMIO) \
&& run_tests . $(TEST_TARGET) "$(ONLY_TEST)"
.PHONY: tests-single-local
tests-single-local-docker:
@if ! test -n "$(TEST_TARGET)" ; then echo "***ERROR*** Set TEST_TARGET=<your-module> or use make tests-all-local-docker" ; return 1; fi
@if ! $(CONTAINER_RT_BIN) images -q $(CONTAINER_IMAGE) > /dev/null ; then $(MAKE) setup-local-docker ; fi
$(CONTAINER_RT_BIN) run $(CONTAINER_RT_OPTS) $(CONTAINER_IMAGE) make tests-single-local TEST_TARGET=$(TEST_TARGET) VERBOSE_PLATFORMIO=$(VERBOSE_PLATFORMIO) GIT_RESET_HARD=$(GIT_RESET_HARD) ONLY_TEST="$(ONLY_TEST)"
docker-compose run --rm marlin $(MAKE) tests-single-local TEST_TARGET=$(TEST_TARGET) VERBOSE_PLATFORMIO=$(VERBOSE_PLATFORMIO) GIT_RESET_HARD=$(GIT_RESET_HARD) ONLY_TEST="$(ONLY_TEST)"
.PHONY: tests-single-local-docker
tests-all-local:
@python -c "import yaml" 2>/dev/null || (echo 'pyyaml module is not installed. Install it with "python -m pip install pyyaml"' && exit 1)
export PATH="./buildroot/bin/:./buildroot/tests/:${PATH}" \
export PATH=./buildroot/bin/:./buildroot/tests/:${PATH} \
&& export VERBOSE_PLATFORMIO=$(VERBOSE_PLATFORMIO) \
&& for TEST_TARGET in $$(python $(SCRIPTS_DIR)/get_test_targets.py) ; do \
if [ "$$TEST_TARGET" = "linux_native" ] && [ "$$(uname)" = "Darwin" ]; then \
echo "Skipping tests for $$TEST_TARGET on macOS" ; \
continue ; \
fi ; \
echo "Running tests for $$TEST_TARGET" ; \
run_tests . $$TEST_TARGET || exit 1 ; \
sleep 5; \
done
&& for TEST_TARGET in $$(./get_test_targets.py) ; do echo "Running tests for $$TEST_TARGET" ; run_tests . $$TEST_TARGET ; done
.PHONY: tests-all-local
tests-all-local-docker:
@if ! $(CONTAINER_RT_BIN) images -q $(CONTAINER_IMAGE) > /dev/null ; then $(MAKE) setup-local-docker ; fi
$(CONTAINER_RT_BIN) run $(CONTAINER_RT_OPTS) $(CONTAINER_IMAGE) make tests-all-local VERBOSE_PLATFORMIO=$(VERBOSE_PLATFORMIO) GIT_RESET_HARD=$(GIT_RESET_HARD)
unit-test-single-local:
platformio run -t marlin_$(UNIT_TEST_CONFIG) -e linux_native_test
unit-test-single-local-docker:
@if ! $(CONTAINER_RT_BIN) images -q $(CONTAINER_IMAGE) > /dev/null ; then $(MAKE) setup-local-docker ; fi
$(CONTAINER_RT_BIN) run $(CONTAINER_RT_OPTS) $(CONTAINER_IMAGE) make unit-test-single-local UNIT_TEST_CONFIG=$(UNIT_TEST_CONFIG)
unit-test-all-local:
platformio run -t test-marlin -e linux_native_test
unit-test-all-local-docker:
@if ! $(CONTAINER_RT_BIN) images -q $(CONTAINER_IMAGE) > /dev/null ; then $(MAKE) setup-local-docker ; fi
$(CONTAINER_RT_BIN) run $(CONTAINER_RT_OPTS) $(CONTAINER_IMAGE) make unit-test-all-local
docker-compose run --rm marlin $(MAKE) tests-all-local VERBOSE_PLATFORMIO=$(VERBOSE_PLATFORMIO) GIT_RESET_HARD=$(GIT_RESET_HARD)
.PHONY: tests-all-local-docker
setup-local-docker:
$(CONTAINER_RT_BIN) buildx build -t $(CONTAINER_IMAGE) -f docker/Dockerfile .
PINS := $(shell find Marlin/src/pins -mindepth 2 -name '*.h')
.PHONY: $(PINS) format-pins validate-pins
$(PINS): %:
@echo "Formatting $@"
@python $(SCRIPTS_DIR)/pinsformat.py $< $@
format-pins: $(PINS)
validate-pins: format-pins
@echo "Validating pins files"
@git diff --exit-code || (git status && echo "\nError: Pins files are not formatted correctly. Run \"make format-pins\" to fix.\n" && exit 1)
docker-compose build
.PHONY: setup-local-docker

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -63,8 +63,8 @@ HARDWARE_MOTHERBOARD ?= 1020
ifeq ($(OS),Windows_NT)
# Windows
ARDUINO_INSTALL_DIR ?= ${HOME}/AppData/Local/Arduino
ARDUINO_USER_DIR ?= ${HOME}/Documents/Arduino
ARDUINO_INSTALL_DIR ?= ${HOME}/Arduino
ARDUINO_USER_DIR ?= ${HOME}/Arduino
else
UNAME_S := $(shell uname -s)
ifeq ($(UNAME_S),Linux)
@@ -82,11 +82,11 @@ endif
# Arduino source install directory, and version number
# On most linuxes this will be /usr/share/arduino
ARDUINO_INSTALL_DIR ?= ${HOME}/AppData/Local/Arduino # C:/Users/${USERNAME}/AppData/Local/Arduino
ARDUINO_VERSION ?= 10819
ARDUINO_INSTALL_DIR ?= ${HOME}/Arduino
ARDUINO_VERSION ?= 106
# The installed Libraries are in the User folder
ARDUINO_USER_DIR ?= ${HOME}/Documents/Arduino
ARDUINO_USER_DIR ?= ${HOME}/Arduino
# You can optionally set a path to the avr-gcc tools.
# Requires a trailing slash. For example, /usr/local/avr-gcc/bin/
@@ -109,8 +109,8 @@ LIQUID_TWI2 ?= 0
# This defines if Wire is needed
WIRE ?= 0
# This defines if Tone is needed (i.e., SPEAKER is defined in Configuration.h)
# Disabling this (and SPEAKER) saves approximately 350 bytes of memory.
# This defines if Tone is needed (i.e SPEAKER is defined in Configuration.h)
# Disabling this (and SPEAKER) saves approximatively 350 bytes of memory.
TONE ?= 1
# This defines if U8GLIB is needed (may require RELOC_WORKAROUND)
@@ -132,7 +132,7 @@ CC_MIN:=$(shell $(CC) -dM -E - < /dev/null | grep __GNUC_MINOR__ | cut -f3 -d\ )
CC_PATCHLEVEL:=$(shell $(CC) -dM -E - < /dev/null | grep __GNUC_PATCHLEVEL__ | cut -f3 -d\ )
CC_VER:=$(shell echo $$(( $(CC_MAJ) * 10000 + $(CC_MIN) * 100 + $(CC_PATCHLEVEL) )))
ifeq ($(shell test $(CC_VER) -lt 40901 && echo 1),1)
$(warning This GCC version $(CC_VER) is likely broken. Enabling relocation workaround.)
@echo This version of GCC is likely broken. Enabling relocation workaround.
RELOC_WORKAROUND = 1
endif
@@ -207,11 +207,11 @@ else ifeq ($(HARDWARE_MOTHERBOARD),1105)
else ifeq ($(HARDWARE_MOTHERBOARD),1106)
# MKS BASE v1.0
else ifeq ($(HARDWARE_MOTHERBOARD),1107)
# MKS BASE v1.4 with Allegro A4982 stepper drivers
# MKS v1.4 with A4982 stepper drivers
else ifeq ($(HARDWARE_MOTHERBOARD),1108)
# MKS BASE v1.5 with Allegro A4982 stepper drivers
# MKS v1.5 with Allegro A4982 stepper drivers
else ifeq ($(HARDWARE_MOTHERBOARD),1109)
# MKS BASE v1.6 with Allegro A4982 stepper drivers
# MKS v1.6 with Allegro A4982 stepper drivers
else ifeq ($(HARDWARE_MOTHERBOARD),1110)
# MKS BASE 1.0 with Heroic HR4982 stepper drivers
else ifeq ($(HARDWARE_MOTHERBOARD),1111)
@@ -219,110 +219,93 @@ else ifeq ($(HARDWARE_MOTHERBOARD),1111)
else ifeq ($(HARDWARE_MOTHERBOARD),1112)
# MKS GEN L
else ifeq ($(HARDWARE_MOTHERBOARD),1113)
# BigTreeTech or BIQU KFB2.0
# zrib V2.0 control board (Chinese RAMPS replica)
else ifeq ($(HARDWARE_MOTHERBOARD),1114)
# zrib V2.0 (Chinese RAMPS replica)
# BigTreeTech or BIQU KFB2.0
else ifeq ($(HARDWARE_MOTHERBOARD),1115)
# zrib V5.2 (Chinese RAMPS replica)
else ifeq ($(HARDWARE_MOTHERBOARD),1116)
# Felix 2.0+ Electronics Board (RAMPS like)
else ifeq ($(HARDWARE_MOTHERBOARD),1117)
else ifeq ($(HARDWARE_MOTHERBOARD),1116)
# Invent-A-Part RigidBoard
else ifeq ($(HARDWARE_MOTHERBOARD),1118)
else ifeq ($(HARDWARE_MOTHERBOARD),1117)
# Invent-A-Part RigidBoard V2
else ifeq ($(HARDWARE_MOTHERBOARD),1119)
else ifeq ($(HARDWARE_MOTHERBOARD),1118)
# Sainsmart 2-in-1 board
else ifeq ($(HARDWARE_MOTHERBOARD),1120)
else ifeq ($(HARDWARE_MOTHERBOARD),1119)
# Ultimaker
else ifeq ($(HARDWARE_MOTHERBOARD),1121)
else ifeq ($(HARDWARE_MOTHERBOARD),1120)
# Ultimaker (Older electronics. Pre 1.5.4. This is rare)
else ifeq ($(HARDWARE_MOTHERBOARD),1122)
else ifeq ($(HARDWARE_MOTHERBOARD),1121)
MCU ?= atmega1280
PROG_MCU ?= m1280
# Azteeg X3
else ifeq ($(HARDWARE_MOTHERBOARD),1123)
else ifeq ($(HARDWARE_MOTHERBOARD),1122)
# Azteeg X3 Pro
else ifeq ($(HARDWARE_MOTHERBOARD),1124)
else ifeq ($(HARDWARE_MOTHERBOARD),1123)
# Ultimainboard 2.x (Uses TEMP_SENSOR 20)
else ifeq ($(HARDWARE_MOTHERBOARD),1125)
else ifeq ($(HARDWARE_MOTHERBOARD),1124)
# Rumba
else ifeq ($(HARDWARE_MOTHERBOARD),1125)
# Raise3D Rumba
else ifeq ($(HARDWARE_MOTHERBOARD),1126)
# Raise3D N series Rumba derivative
# Rapide Lite RL200 Rumba
else ifeq ($(HARDWARE_MOTHERBOARD),1127)
# Rapide Lite 200 (v1, low-cost RUMBA clone with drv)
else ifeq ($(HARDWARE_MOTHERBOARD),1128)
# Formbot T-Rex 2 Plus
else ifeq ($(HARDWARE_MOTHERBOARD),1129)
else ifeq ($(HARDWARE_MOTHERBOARD),1128)
# Formbot T-Rex 3
else ifeq ($(HARDWARE_MOTHERBOARD),1130)
else ifeq ($(HARDWARE_MOTHERBOARD),1129)
# Formbot Raptor
else ifeq ($(HARDWARE_MOTHERBOARD),1131)
else ifeq ($(HARDWARE_MOTHERBOARD),1130)
# Formbot Raptor 2
else ifeq ($(HARDWARE_MOTHERBOARD),1132)
else ifeq ($(HARDWARE_MOTHERBOARD),1131)
# bq ZUM Mega 3D
else ifeq ($(HARDWARE_MOTHERBOARD),1132)
# MakeBoard Mini v2.1.2 is a control board sold by MicroMake
else ifeq ($(HARDWARE_MOTHERBOARD),1133)
# MakeBoard Mini v2.1.2 by MicroMake
# TriGorilla Anycubic version 1.3 based on RAMPS EFB
else ifeq ($(HARDWARE_MOTHERBOARD),1134)
# TriGorilla Anycubic version 1.3-based on RAMPS EFB
# TriGorilla Anycubic version 1.4 based on RAMPS EFB
else ifeq ($(HARDWARE_MOTHERBOARD),1135)
# ... Ver 1.4
# TriGorilla Anycubic version 1.4 Rev 1.1
else ifeq ($(HARDWARE_MOTHERBOARD),1136)
# ... Rev 1.1 (new servo pin order)
else ifeq ($(HARDWARE_MOTHERBOARD),1137)
# Creality: Ender-4, CR-8
else ifeq ($(HARDWARE_MOTHERBOARD),1138)
else ifeq ($(HARDWARE_MOTHERBOARD),1137)
# Creality: CR10S, CR20, CR-X
else ifeq ($(HARDWARE_MOTHERBOARD),1139)
else ifeq ($(HARDWARE_MOTHERBOARD),1138)
# Dagoma F5
else ifeq ($(HARDWARE_MOTHERBOARD),1140)
else ifeq ($(HARDWARE_MOTHERBOARD),1139)
# FYSETC F6 1.3
else ifeq ($(HARDWARE_MOTHERBOARD),1140)
# FYSETC F6 1.5
else ifeq ($(HARDWARE_MOTHERBOARD),1141)
# FYSETC F6 1.4
# Duplicator i3 Plus
else ifeq ($(HARDWARE_MOTHERBOARD),1142)
# Wanhao Duplicator i3 Plus
# VORON
else ifeq ($(HARDWARE_MOTHERBOARD),1143)
# VORON Design
# TRONXY V3 1.0
else ifeq ($(HARDWARE_MOTHERBOARD),1144)
# Tronxy TRONXY-V3-1.0
else ifeq ($(HARDWARE_MOTHERBOARD),1145)
# Z-Bolt X Series
else ifeq ($(HARDWARE_MOTHERBOARD),1146)
else ifeq ($(HARDWARE_MOTHERBOARD),1145)
# TT OSCAR
else ifeq ($(HARDWARE_MOTHERBOARD),1147)
else ifeq ($(HARDWARE_MOTHERBOARD),1146)
# Overlord/Overlord Pro
else ifeq ($(HARDWARE_MOTHERBOARD),1148)
else ifeq ($(HARDWARE_MOTHERBOARD),1147)
# ADIMLab Gantry v1
else ifeq ($(HARDWARE_MOTHERBOARD),1149)
else ifeq ($(HARDWARE_MOTHERBOARD),1148)
# ADIMLab Gantry v2
else ifeq ($(HARDWARE_MOTHERBOARD),1150)
else ifeq ($(HARDWARE_MOTHERBOARD),1149)
# BIQU Tango V1
else ifeq ($(HARDWARE_MOTHERBOARD),1151)
else ifeq ($(HARDWARE_MOTHERBOARD),1150)
# MKS GEN L V2
else ifeq ($(HARDWARE_MOTHERBOARD),1152)
else ifeq ($(HARDWARE_MOTHERBOARD),1151)
# MKS GEN L V2.1
else ifeq ($(HARDWARE_MOTHERBOARD),1153)
else ifeq ($(HARDWARE_MOTHERBOARD),1152)
# Copymaster 3D
else ifeq ($(HARDWARE_MOTHERBOARD),1154)
else ifeq ($(HARDWARE_MOTHERBOARD),1153)
# Ortur 4
else ifeq ($(HARDWARE_MOTHERBOARD),1154)
# Tenlog D3 Hero
else ifeq ($(HARDWARE_MOTHERBOARD),1155)
# Tenlog D3 Hero IDEX printer
else ifeq ($(HARDWARE_MOTHERBOARD),1156)
# Tenlog D3,5,6 Pro IDEX printers
else ifeq ($(HARDWARE_MOTHERBOARD),1157)
# Ramps S 1.2 by Sakul.cz (Power outputs: Hotend0, Hotend1, Fan, Bed)
else ifeq ($(HARDWARE_MOTHERBOARD),1158)
# Ramps S 1.2 by Sakul.cz (Power outputs: Hotend0, Hotend1, Hotend2, Bed)
else ifeq ($(HARDWARE_MOTHERBOARD),1159)
# Ramps S 1.2 by Sakul.cz (Power outputs: Hotend, Fan0, Fan1, Bed)
else ifeq ($(HARDWARE_MOTHERBOARD),1160)
# Longer LK1 PRO / Alfawise U20 Pro (PRO version)
else ifeq ($(HARDWARE_MOTHERBOARD),1161)
# Longer LKx PRO / Alfawise Uxx Pro (PRO version)
else ifeq ($(HARDWARE_MOTHERBOARD),1162)
# Zonestar zrib V5.3 (Chinese RAMPS replica)
else ifeq ($(HARDWARE_MOTHERBOARD),1163)
# Pxmalion Core I3
else ifeq ($(HARDWARE_MOTHERBOARD),1164)
#
# RAMBo and derivatives
@@ -375,38 +358,20 @@ else ifeq ($(HARDWARE_MOTHERBOARD),1311)
else ifeq ($(HARDWARE_MOTHERBOARD),1312)
# Mega controller
else ifeq ($(HARDWARE_MOTHERBOARD),1313)
# Geeetech GT2560 Rev A
else ifeq ($(HARDWARE_MOTHERBOARD),1314)
# Geeetech GT2560 Rev A+ (with auto level probe)
else ifeq ($(HARDWARE_MOTHERBOARD),1315)
# Geeetech GT2560 Rev B
else ifeq ($(HARDWARE_MOTHERBOARD),1316)
# Geeetech GT2560 Rev B for A10(M/T/D)
else ifeq ($(HARDWARE_MOTHERBOARD),1317)
# Geeetech GT2560 Rev B for A10(M/T/D)
else ifeq ($(HARDWARE_MOTHERBOARD),1318)
# Geeetech GT2560 Rev B for Mecreator2
else ifeq ($(HARDWARE_MOTHERBOARD),1319)
# Geeetech GT2560 Rev B for A20(M/T/D)
else ifeq ($(HARDWARE_MOTHERBOARD),1320)
else ifeq ($(HARDWARE_MOTHERBOARD),1314)
# Geeetech GT2560 Rev. A
else ifeq ($(HARDWARE_MOTHERBOARD),1315)
# Geeetech GT2560 Rev. A+ (with auto level probe)
else ifeq ($(HARDWARE_MOTHERBOARD),1316)
# Geeetech GT2560 Rev B for A10(M/D)
else ifeq ($(HARDWARE_MOTHERBOARD),1317)
# Geeetech GT2560 Rev B for A20(M/D)
else ifeq ($(HARDWARE_MOTHERBOARD),1318)
# Einstart retrofit
else ifeq ($(HARDWARE_MOTHERBOARD),1321)
else ifeq ($(HARDWARE_MOTHERBOARD),1319)
# Wanhao 0ne+ i3 Mini
else ifeq ($(HARDWARE_MOTHERBOARD),1322)
# Leapfrog Xeed 2015
else ifeq ($(HARDWARE_MOTHERBOARD),1323)
# PICA Shield (original version)
else ifeq ($(HARDWARE_MOTHERBOARD),1324)
# PICA Shield (rev C or later)
else ifeq ($(HARDWARE_MOTHERBOARD),1325)
# Intamsys 4.0 (Funmat HT)
else ifeq ($(HARDWARE_MOTHERBOARD),1326)
# Malyan M180 Mainboard Version 2 (no display function, direct G-code only)
else ifeq ($(HARDWARE_MOTHERBOARD),1327)
# Geeetech GT2560 Rev B for A20(M/T/D)
else ifeq ($(HARDWARE_MOTHERBOARD),1328)
# Mega controller & Protoneer CNC Shield V3.00
else ifeq ($(HARDWARE_MOTHERBOARD),1329)
else ifeq ($(HARDWARE_MOTHERBOARD),1320)
#
# ATmega1281, ATmega2561
@@ -480,11 +445,6 @@ else ifeq ($(HARDWARE_MOTHERBOARD),1510)
HARDWARE_VARIANT ?= Sanguino
MCU ?= atmega1284p
PROG_MCU ?= m1284p
# ZoneStar ZMIB V2
else ifeq ($(HARDWARE_MOTHERBOARD),1511)
HARDWARE_VARIANT ?= Sanguino
MCU ?= atmega1284p
PROG_MCU ?= m1284p
#
# Other ATmega644P, ATmega644, ATmega1284P
@@ -656,18 +616,18 @@ ifeq ($(HARDWARE_VARIANT), $(filter $(HARDWARE_VARIANT),arduino Teensy Sanguino)
# Old libraries (avr-core 1.6.21 < / Arduino < 1.6.8)
VPATH += $(ARDUINO_INSTALL_DIR)/hardware/arduino/avr/libraries/SPI
# New libraries (avr-core >= 1.6.21 / Arduino >= 1.6.8)
VPATH += $(ARDUINO_INSTALL_DIR)/packages/arduino/hardware/arduino/avr/1.8.6/libraries/SPI/src
VPATH += $(ARDUINO_INSTALL_DIR)/hardware/arduino/avr/libraries/SPI/src
endif
ifeq ($(IS_MCU),1)
VPATH += $(ARDUINO_INSTALL_DIR)/packages/arduino/hardware/arduino/avr/1.8.6/cores/arduino
VPATH += $(ARDUINO_INSTALL_DIR)/hardware/arduino/avr/cores/arduino
# Old libraries (avr-core 1.6.21 < / Arduino < 1.6.8)
VPATH += $(ARDUINO_INSTALL_DIR)/hardware/arduino/avr/libraries/SPI
VPATH += $(ARDUINO_INSTALL_DIR)/hardware/arduino/avr/libraries/SoftwareSerial
# New libraries (avr-core >= 1.6.21 / Arduino >= 1.6.8)
VPATH += $(ARDUINO_INSTALL_DIR)/packages/arduino/hardware/arduino/avr/1.8.6/libraries/SPI/src
VPATH += $(ARDUINO_INSTALL_DIR)/packages/arduino/hardware/arduino/avr/1.8.6/libraries/SoftwareSerial/src
VPATH += $(ARDUINO_INSTALL_DIR)/hardware/arduino/avr/libraries/SPI/src
VPATH += $(ARDUINO_INSTALL_DIR)/hardware/arduino/avr/libraries/SoftwareSerial/src
endif
VPATH += $(ARDUINO_INSTALL_DIR)/libraries/LiquidCrystal/src
@@ -681,17 +641,17 @@ ifeq ($(WIRE), 1)
VPATH += $(ARDUINO_INSTALL_DIR)/hardware/arduino/avr/libraries/Wire
VPATH += $(ARDUINO_INSTALL_DIR)/hardware/arduino/avr/libraries/Wire/utility
# New libraries (avr-core >= 1.6.21 / Arduino >= 1.6.8)
VPATH += $(ARDUINO_INSTALL_DIR)/packages/arduino/hardware/avr/1.8.6/libraries/Wire/src
VPATH += $(ARDUINO_INSTALL_DIR)/packages/arduino/hardware/avr/1.8.6/libraries/Wire/src/utility
VPATH += $(ARDUINO_INSTALL_DIR)/hardware/arduino/avr/libraries/Wire/src
VPATH += $(ARDUINO_INSTALL_DIR)/hardware/arduino/avr/libraries/Wire/src/utility
endif
ifeq ($(NEOPIXEL), 1)
VPATH += $(ARDUINO_INSTALL_DIR)/libraries/Adafruit_NeoPixel
endif
ifeq ($(U8GLIB), 1)
VPATH += $(ARDUINO_INSTALL_DIR)/libraries/U8glib-HAL
VPATH += $(ARDUINO_INSTALL_DIR)/libraries/U8glib-HAL/src
# VPATH += $(ARDUINO_INSTALL_DIR)/libraries/U8glib
# VPATH += $(ARDUINO_INSTALL_DIR)/libraries/U8glib/src
VPATH += $(ARDUINO_INSTALL_DIR)/libraries/U8glib
VPATH += $(ARDUINO_INSTALL_DIR)/libraries/U8glib/csrc
VPATH += $(ARDUINO_INSTALL_DIR)/libraries/U8glib/cppsrc
VPATH += $(ARDUINO_INSTALL_DIR)/libraries/U8glib/fntsrc
endif
ifeq ($(TMC), 1)
VPATH += $(ARDUINO_INSTALL_DIR)/libraries/TMCStepper/src
@@ -700,9 +660,9 @@ endif
ifeq ($(HARDWARE_VARIANT), arduino)
HARDWARE_SUB_VARIANT ?= mega
VPATH += $(ARDUINO_INSTALL_DIR)/packages/arduino/hardware/avr/1.8.6/variants/$(HARDWARE_SUB_VARIANT)
VPATH += $(ARDUINO_INSTALL_DIR)/hardware/arduino/avr/variants/$(HARDWARE_SUB_VARIANT)
else ifeq ($(HARDWARE_VARIANT), Sanguino)
VPATH += $(ARDUINO_INSTALL_DIR)/packages/arduino/hardware/avr/1.8.6/variants/sanguino
VPATH += $(ARDUINO_INSTALL_DIR)/hardware/marlin/avr/variants/sanguino
else ifeq ($(HARDWARE_VARIANT), archim)
VPATH += $(ARDUINO_INSTALL_DIR)/packages/ultimachine/hardware/sam/1.6.9-b/system/libsam
VPATH += $(ARDUINO_INSTALL_DIR)/packages/ultimachine/hardware/sam/1.6.9-b/system/CMSIS/CMSIS/Include/
@@ -718,7 +678,7 @@ else ifeq ($(HARDWARE_VARIANT), archim)
LDLIBS = $(ARDUINO_INSTALL_DIR)/packages/ultimachine/hardware/sam/1.6.9-b/variants/archim/libsam_sam3x8e_gcc_rel.a
else
HARDWARE_SUB_VARIANT ?= standard
VPATH += $(ARDUINO_INSTALL_DIR)/packages/arduino/hardware/avr/1.8.6/variants/$(HARDWARE_SUB_VARIANT)
VPATH += $(ARDUINO_INSTALL_DIR)/hardware/$(HARDWARE_VARIANT)/variants/$(HARDWARE_SUB_VARIANT)
endif
LIB_SRC = wiring.c \
@@ -733,7 +693,7 @@ endif
ifeq ($(HARDWARE_VARIANT), Teensy)
LIB_SRC = wiring.c
VPATH += $(ARDUINO_INSTALL_DIR)/packages/arduino/hardware/teensy/cores/teensy
VPATH += $(ARDUINO_INSTALL_DIR)/hardware/teensy/cores/teensy
endif
LIB_CXXSRC = WMath.cpp WString.cpp Print.cpp SPI.cpp
@@ -880,7 +840,7 @@ AVRDUDE_WRITE_FLASH = -Uflash:w:$(BUILD_DIR)/$(TARGET).hex:i
ifeq ($(shell uname -s), Linux)
AVRDUDE_CONF = /etc/avrdude/avrdude.conf
else
AVRDUDE_CONF = $(ARDUINO_INSTALL_DIR)/packages/arduino/tools/avrdude/6.3.0-arduino17/etc/avrdude.conf
AVRDUDE_CONF = $(ARDUINO_INSTALL_DIR)/hardware/tools/avr/etc/avrdude.conf
endif
AVRDUDE_FLAGS = -D -C$(AVRDUDE_CONF) \
-p$(PROG_MCU) -P$(AVRDUDE_PORT) -c$(AVRDUDE_PROGRAMMER) \

View File

@@ -2,7 +2,7 @@
Marlin Firmware
(c) 2011-2024 MarlinFirmware
(c) 2011-2020 MarlinFirmware
Portions of Marlin are (c) by their respective authors.
All code complies with GPLv2 and/or GPLv3
@@ -27,7 +27,7 @@ Configuration
- https://github.com/MarlinFirmware/Configurations
Example configurations for several printer models.
- https://youtu.be/3gwWVFtdg-4
- https://www.youtube.com/watch?v=3gwWVFtdg-4
A good 20-minute overview of Marlin configuration by Tom Sanladerer.
(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

View File

@@ -28,7 +28,7 @@
/**
* Marlin release version identifier
*/
//#define SHORT_BUILD_VERSION "bugfix-2.1.x"
//#define SHORT_BUILD_VERSION "2.0.8.1"
/**
* Verbose version identifier which should contain a reference to the location
@@ -41,7 +41,7 @@
* here we define this default string as the date where the latest release
* version was tagged.
*/
//#define STRING_DISTRIBUTION_DATE "2024-07-13"
//#define STRING_DISTRIBUTION_DATE "2021-05-15"
/**
* Defines a generic printer name to be output to the LCD after booting Marlin.

View File

@@ -1,247 +0,0 @@
#
# Marlin Firmware
# config.ini - Options to apply before the build
#
[config:base]
#
# ini_use_config - A comma-separated list of actions to apply to the Configuration files.
# The actions will be applied in the listed order.
# - none
# Ignore this file and don't apply any configuration options
#
# - base
# Just apply the options in config:base to the configuration
#
# - minimal
# Just apply the options in config:minimal to the configuration
#
# - all
# Apply all 'config:*' sections in this file to the configuration
#
# - another.ini
# Load another INI file with a path relative to this config.ini file (i.e., within Marlin/)
#
# - https://me.myserver.com/path/to/configs
# Fetch configurations from any URL.
#
# - example/Creality/Ender-5 Plus @ bugfix-2.1.x
# Fetch example configuration files from the MarlinFirmware/Configurations repository
# https://raw.githubusercontent.com/MarlinFirmware/Configurations/bugfix-2.1.x/config/examples/Creality/Ender-5%20Plus/
#
# - example/default @ release-2.0.9.7
# Fetch default configuration files from the MarlinFirmware/Configurations repository
# https://raw.githubusercontent.com/MarlinFirmware/Configurations/release-2.0.9.7/config/default/
#
# - [disable]
# Comment out all #defines in both Configuration.h and Configuration_adv.h. This is useful
# to start with a clean slate before applying any config: options, so only the options explicitly
# set in config.ini will be enabled in the configuration.
#
# - [flatten] (Not yet implemented)
# Produce a flattened set of Configuration.h and Configuration_adv.h files with only the enabled
# #defines and no comments. A clean look, but context-free.
#
ini_use_config = none
# Load all config: sections in this file
;ini_use_config = all
# Disable everything and apply subsequent config:base options
;ini_use_config = [disable], base
# Load config file relative to Marlin/
;ini_use_config = another.ini
# Download configurations from GitHub
;ini_use_config = example/Creality/Ender-5 Plus @ bugfix-2.1.x
# Download configurations from your server
;ini_use_config = https://me.myserver.com/path/to/configs
# Evaluate config:base and do a config dump
;ini_use_config = base
;config_export = 2
[config:minimal]
motherboard = BOARD_RAMPS_14_EFB
serial_port = 0
baudrate = 250000
use_watchdog = on
thermal_protection_hotends = on
thermal_protection_hysteresis = 4
thermal_protection_period = 40
bufsize = 4
block_buffer_size = 16
max_cmd_size = 96
extruders = 1
temp_sensor_0 = 1
temp_hysteresis = 3
heater_0_mintemp = 5
heater_0_maxtemp = 275
preheat_1_temp_hotend = 180
bang_max = 255
pidtemp = on
pid_k1 = 0.95
pid_max = 255
pid_functional_range = 10
default_kp = 22.20
default_ki = 1.08
default_kd = 114.00
x_driver_type = A4988
y_driver_type = A4988
z_driver_type = A4988
e0_driver_type = A4988
x_bed_size = 200
x_min_pos = 0
x_max_pos = X_BED_SIZE
y_bed_size = 200
y_min_pos = 0
y_max_pos = Y_BED_SIZE
z_min_pos = 0
z_max_pos = 200
x_home_dir = -1
y_home_dir = -1
z_home_dir = -1
x_min_endstop_hit_state = HIGH
y_min_endstop_hit_state = HIGH
z_min_endstop_hit_state = HIGH
default_axis_steps_per_unit = { 80, 80, 400, 500 }
axis_relative_modes = { false, false, false, false }
default_max_feedrate = { 300, 300, 5, 25 }
default_max_acceleration = { 3000, 3000, 100, 10000 }
homing_feedrate_mm_m = { (50*60), (50*60), (4*60) }
homing_bump_divisor = { 2, 2, 4 }
x_enable_on = 0
y_enable_on = 0
z_enable_on = 0
e_enable_on = 0
invert_x_dir = false
invert_y_dir = true
invert_z_dir = false
invert_e0_dir = false
step_state_e = HIGH
step_state_x = HIGH
step_state_y = HIGH
step_state_z = HIGH
disable_x = off
disable_y = off
disable_z = off
disable_e = off
proportional_font_ratio = 1.0
default_nominal_filament_dia = 1.75
junction_deviation_mm = 0.013
default_acceleration = 3000
default_travel_acceleration = 3000
default_retract_acceleration = 3000
default_minimumfeedrate = 0.0
default_mintravelfeedrate = 0.0
minimum_planner_speed = 0.05
min_steps_per_segment = 6
default_minsegmenttime = 20000
[config:basic]
bed_overshoot = 10
busy_while_heating = on
default_ejerk = 5.0
default_keepalive_interval = 2
default_leveling_fade_height = 0.0
disable_other_extruders = on
display_charset_hd44780 = JAPANESE
eeprom_boot_silent = on
eeprom_chitchat = on
endstoppullups = on
extrude_maxlength = 200
extrude_mintemp = 170
host_keepalive_feature = on
hotend_overshoot = 15
jd_handle_small_segments = on
lcd_info_screen_style = 0
lcd_language = en
max_bed_power = 255
mesh_inset = 0
min_software_endstops = on
max_software_endstops = on
min_software_endstop_x = on
min_software_endstop_y = on
min_software_endstop_z = on
max_software_endstop_x = on
max_software_endstop_y = on
max_software_endstop_z = on
preheat_1_fan_speed = 0
preheat_1_label = "PLA"
preheat_1_temp_bed = 70
prevent_cold_extrusion = on
prevent_lengthy_extrude = on
printjob_timer_autostart = on
probing_margin = 10
show_bootscreen = on
soft_pwm_scale = 0
string_config_h_author = "(none, default config)"
temp_bed_hysteresis = 3
temp_bed_residency_time = 10
temp_bed_window = 1
temp_residency_time = 10
temp_window = 1
validate_homing_endstops = on
xy_probe_feedrate = (133*60)
z_clearance_between_probes = 5
z_clearance_deploy_probe = 10
z_clearance_multi_probe = 5
[config:advanced]
arc_support = on
auto_report_temperatures = on
autotemp = on
autotemp_oldweight = 0.98
bed_check_interval = 5000
default_stepper_timeout_sec = 120
default_volumetric_extruder_limit = 0.00
disable_idle_x = on
disable_idle_y = on
disable_idle_z = on
disable_idle_e = on
e0_auto_fan_pin = -1
encoder_100x_steps_per_sec = 80
encoder_10x_steps_per_sec = 30
encoder_rate_multiplier = on
extended_capabilities_report = on
extruder_auto_fan_speed = 255
extruder_auto_fan_temperature = 50
fanmux0_pin = -1
fanmux1_pin = -1
fanmux2_pin = -1
faster_gcode_parser = on
homing_bump_mm = { 5, 5, 2 }
max_arc_segment_mm = 1.0
min_arc_segment_mm = 0.1
min_circle_segments = 72
n_arc_correction = 25
serial_overrun_protection = on
slowdown = on
slowdown_divisor = 2
temp_sensor_bed = 0
thermal_protection_bed_hysteresis = 2
thermocouple_max_errors = 15
tx_buffer_size = 0
watch_bed_temp_increase = 2
watch_bed_temp_period = 60
watch_temp_increase = 2
watch_temp_period = 20

View File

@@ -23,7 +23,6 @@
#include "../../inc/MarlinConfig.h"
#include "HAL.h"
#include <avr/wdt.h>
#ifdef USBCON
DefaultSerial1 MSerial0(false, Serial);
@@ -36,74 +35,30 @@
// Public Variables
// ------------------------
// Don't initialize/override variable (which would happen in .init4)
uint8_t MarlinHAL::reset_reason __attribute__((section(".noinit")));
//uint8_t MCUSR;
// ------------------------
// Public functions
// ------------------------
__attribute__((naked)) // Don't output function pro- and epilogue
__attribute__((used)) // Output the function, even if "not used"
__attribute__((section(".init3"))) // Put in an early user definable section
void save_reset_reason() {
#if ENABLED(OPTIBOOT_RESET_REASON)
__asm__ __volatile__(
A("STS %0, r2")
: "=m"(hal.reset_reason)
);
#else
hal.reset_reason = MCUSR;
#endif
// Clear within 16ms since WDRF bit enables a 16ms watchdog timer -> Boot loop
hal.clear_reset_source();
wdt_disable();
}
#include "registers.h"
MarlinHAL::MarlinHAL() {
TERN_(HAL_AVR_DIRTY_INIT, _ATmega_resetperipherals()); // Clean-wipe the device state.
}
void MarlinHAL::init() {
void HAL_init() {
// Init Servo Pins
#define INIT_SERVO(N) OUT_WRITE(SERVO##N##_PIN, LOW)
#if HAS_SERVO_0
OUT_WRITE(SERVO0_PIN, LOW);
INIT_SERVO(0);
#endif
#if HAS_SERVO_1
OUT_WRITE(SERVO1_PIN, LOW);
INIT_SERVO(1);
#endif
#if HAS_SERVO_2
OUT_WRITE(SERVO2_PIN, LOW);
INIT_SERVO(2);
#endif
#if HAS_SERVO_3
OUT_WRITE(SERVO3_PIN, LOW);
#endif
#if HAS_SERVO_4
OUT_WRITE(SERVO4_PIN, LOW);
#endif
#if HAS_SERVO_5
OUT_WRITE(SERVO5_PIN, LOW);
#endif
init_pwm_timers(); // Init user timers to default frequency - 1000HZ
#if PIN_EXISTS(BEEPER) && ENABLED(HAL_AVR_DIRTY_INIT) && DISABLED(ATMEGA_NO_BEEPFIX)
// Make sure no alternative is locked onto the BEEPER.
// This fixes the issue where the ATmega is constantly beeping.
// Might disable other peripherals using the pin; to circumvent that please undefine one of the above things!
// The true culprit is the AVR ArduinoCore that enables peripherals redundantly.
// (USART1 on the GeeeTech GT2560)
// https://www.youtube.com/watch?v=jMgCvRXkexk
_ATmega_savePinAlternate(BEEPER_PIN);
OUT_WRITE(BEEPER_PIN, LOW);
INIT_SERVO(3);
#endif
}
void MarlinHAL::reboot() {
void HAL_reboot() {
#if ENABLED(USE_WATCHDOG)
while (1) { /* run out the watchdog */ }
#else
@@ -112,84 +67,28 @@ void MarlinHAL::reboot() {
#endif
}
// ------------------------
// Watchdog Timer
// ------------------------
#if ENABLED(USE_WATCHDOG)
#include <avr/wdt.h>
#include "../../MarlinCore.h"
// Initialize watchdog with 8s timeout, if possible. Otherwise, make it 4s.
void MarlinHAL::watchdog_init() {
#if ENABLED(WATCHDOG_DURATION_8S) && defined(WDTO_8S)
#define WDTO_NS WDTO_8S
#else
#define WDTO_NS WDTO_4S
#endif
#if ENABLED(WATCHDOG_RESET_MANUAL)
// Enable the watchdog timer, but only for the interrupt.
// Take care, as this requires the correct order of operation, with interrupts disabled.
// See the datasheet of any AVR chip for details.
wdt_reset();
cli();
_WD_CONTROL_REG = _BV(_WD_CHANGE_BIT) | _BV(WDE);
_WD_CONTROL_REG = _BV(WDIE) | (WDTO_NS & 0x07) | ((WDTO_NS & 0x08) << 2); // WDTO_NS directly does not work. bit 0-2 are consecutive in the register but the highest value bit is at bit 5
// So worked for up to WDTO_2S
sei();
wdt_reset();
#else
wdt_enable(WDTO_NS); // The function handles the upper bit correct.
#endif
//delay(10000); // test it!
}
//===========================================================================
//=================================== ISR ===================================
//===========================================================================
// Watchdog timer interrupt, called if main program blocks >4sec and manual reset is enabled.
#if ENABLED(WATCHDOG_RESET_MANUAL)
ISR(WDT_vect) {
sei(); // With the interrupt driven serial we need to allow interrupts.
SERIAL_ERROR_MSG(STR_WATCHDOG_FIRED);
minkill(); // interrupt-safe final kill and infinite loop
}
#endif
// Reset watchdog. MUST be called at least every 4 seconds after the
// first watchdog_init or AVR will go into emergency procedures.
void MarlinHAL::watchdog_refresh() { wdt_reset(); }
#endif // USE_WATCHDOG
// ------------------------
// Free Memory Accessor
// ------------------------
#if HAS_MEDIA
#if ENABLED(SDSUPPORT)
#include "../../sd/SdFatUtil.h"
int freeMemory() { return SdFatUtil::FreeRam(); }
#else // !HAS_MEDIA
#else // !SDSUPPORT
extern "C" {
extern char __bss_end;
extern char __heap_start;
extern void* __brkval;
extern "C" {
extern char __bss_end;
extern char __heap_start;
extern void* __brkval;
int freeMemory() {
int free_memory;
if ((int)__brkval == 0)
free_memory = ((int)&free_memory) - ((int)&__bss_end);
else
free_memory = ((int)&free_memory) - ((int)__brkval);
return free_memory;
}
int freeMemory() {
int free_memory;
if ((int)__brkval == 0)
free_memory = ((int)&free_memory) - ((int)&__bss_end);
else
free_memory = ((int)&free_memory) - ((int)__brkval);
return free_memory;
}
}
#endif // !HAS_MEDIA
#endif // !SDSUPPORT
#endif // __AVR__

View File

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

View File

@@ -34,21 +34,21 @@
#include "../../inc/MarlinConfig.h"
void spiBegin() {
#if PIN_EXISTS(SD_SS)
// Do not init HIGH for boards with pin 4 used as Fans or Heaters or otherwise, not likely to have multiple SPI devices anyway.
#if defined(__AVR_ATmega644__) || defined(__AVR_ATmega644P__) || defined(__AVR_ATmega644PA__) || defined(__AVR_ATmega1284P__)
// SS must be in output mode even it is not chip select
SET_OUTPUT(SD_SS_PIN);
#else
// set SS high - may be chip select for another SPI device
OUT_WRITE(SD_SS_PIN, HIGH);
#endif
#endif
OUT_WRITE(SD_SS_PIN, HIGH);
SET_OUTPUT(SD_SCK_PIN);
SET_INPUT(SD_MISO_PIN);
SET_OUTPUT(SD_MOSI_PIN);
IF_DISABLED(SOFTWARE_SPI, spiInit(SPI_HALF_SPEED));
#if DISABLED(SOFTWARE_SPI)
// SS must be in output mode even it is not chip select
//SET_OUTPUT(SD_SS_PIN);
// set SS high - may be chip select for another SPI device
//#if SET_SPI_SS_HIGH
//WRITE(SD_SS_PIN, HIGH);
//#endif
// set a default rate
spiInit(1);
#endif
}
#if NONE(SOFTWARE_SPI, FORCE_SOFT_SPI)
@@ -74,8 +74,7 @@ void spiBegin() {
#elif defined(PRR0)
PRR0
#endif
, PRSPI
);
, PRSPI);
SPCR = _BV(SPE) | _BV(MSTR) | (spiRate >> 1);
SPSR = spiRate & 1 || spiRate == 6 ? 0 : _BV(SPI2X);
@@ -119,6 +118,7 @@ void spiBegin() {
while (!TEST(SPSR, SPIF)) { /* Intentionally left empty */ }
}
/** begin spi transaction */
void spiBeginTransaction(uint32_t spiClock, uint8_t bitOrder, uint8_t dataMode) {
// Based on Arduino SPI library
@@ -174,6 +174,7 @@ void spiBegin() {
SPSR = clockDiv | 0x01;
}
#else // SOFTWARE_SPI || FORCE_SOFT_SPI
// ------------------------
@@ -196,7 +197,7 @@ void spiBegin() {
// output pin high - like sending 0xFF
WRITE(SD_MOSI_PIN, HIGH);
for (uint8_t i = 0; i < 8; ++i) {
LOOP_L_N(i, 8) {
WRITE(SD_SCK_PIN, HIGH);
nop; // adjust so SCK is nice
@@ -223,7 +224,7 @@ void spiBegin() {
void spiSend(uint8_t data) {
// no interrupts during byte send - about 8µs
cli();
for (uint8_t i = 0; i < 8; ++i) {
LOOP_L_N(i, 8) {
WRITE(SD_SCK_PIN, LOW);
WRITE(SD_MOSI_PIN, data & 0x80);
data <<= 1;

View File

@@ -486,7 +486,7 @@ void MarlinSerial<Cfg>::write(const uint8_t c) {
const uint8_t i = (tx_buffer.head + 1) & (Cfg::TX_SIZE - 1);
// If global interrupts are disabled (as the result of being called from an ISR)...
if (!hal.isr_state()) {
if (!ISRS_ENABLED()) {
// Make room by polling if it is possible to transmit, and do so!
while (i == tx_buffer.tail) {
@@ -534,7 +534,7 @@ void MarlinSerial<Cfg>::flushTX() {
if (!_written) return;
// If global interrupts are disabled (as the result of being called from an ISR)...
if (!hal.isr_state()) {
if (!ISRS_ENABLED()) {
// Wait until everything was transmitted - We must do polling, as interrupts are disabled
while (tx_buffer.head != tx_buffer.tail || !B_TXC) {
@@ -629,7 +629,7 @@ MSerialT1 customizedSerial1(MSerialT1::HasEmergencyParser);
template class MarlinSerial< LCDSerialCfg<LCD_SERIAL_PORT> >;
MSerialLCD lcdSerial(MSerialLCD::HasEmergencyParser);
#if ANY(HAS_DGUS_LCD, EXTENSIBLE_UI)
#if HAS_DGUS_LCD
template<typename Cfg>
typename MarlinSerial<Cfg>::ring_buffer_pos_t MarlinSerial<Cfg>::get_tx_buffer_free() {
const ring_buffer_pos_t t = tx_buffer.tail, // next byte to send.

View File

@@ -34,9 +34,12 @@
#include <WString.h>
#include "../../inc/MarlinConfigPre.h"
#include "../../core/types.h"
#include "../../core/serial_hook.h"
#ifndef SERIAL_PORT
#define SERIAL_PORT 0
#endif
#ifndef USBCON
// The presence of the UBRRH register is used to detect a UART.
@@ -135,6 +138,10 @@
#define BYTE 0
// Templated type selector
template<bool b, typename T, typename F> struct TypeSelector { typedef T type;} ;
template<typename T, typename F> struct TypeSelector<false, T, F> { typedef F type; };
template<typename Cfg>
class MarlinSerial {
protected:
@@ -157,7 +164,7 @@
static constexpr B_U2Xx<Cfg::PORT> B_U2X = 0;
// Base size of type on buffer size
typedef uvalue_t(Cfg::RX_SIZE - 1) ring_buffer_pos_t;
typedef typename TypeSelector<(Cfg::RX_SIZE>256), uint16_t, uint8_t>::type ring_buffer_pos_t;
struct ring_buffer_r {
volatile ring_buffer_pos_t head, tail;
@@ -184,13 +191,13 @@
rx_framing_errors;
static ring_buffer_pos_t rx_max_enqueued;
FORCE_INLINE static ring_buffer_pos_t atomic_read_rx_head();
static FORCE_INLINE ring_buffer_pos_t atomic_read_rx_head();
static volatile bool rx_tail_value_not_stable;
static volatile uint16_t rx_tail_value_backup;
FORCE_INLINE static void atomic_set_rx_tail(ring_buffer_pos_t value);
FORCE_INLINE static ring_buffer_pos_t atomic_read_rx_tail();
static FORCE_INLINE void atomic_set_rx_tail(ring_buffer_pos_t value);
static FORCE_INLINE ring_buffer_pos_t atomic_read_rx_tail();
public:
FORCE_INLINE static void store_rxd_char();
@@ -205,12 +212,12 @@
static ring_buffer_pos_t available();
static void write(const uint8_t c);
static void flushTX();
#if ANY(HAS_DGUS_LCD, EXTENSIBLE_UI)
#if HAS_DGUS_LCD
static ring_buffer_pos_t get_tx_buffer_free();
#endif
enum { HasEmergencyParser = Cfg::EMERGENCYPARSER };
static bool emergency_parser_enabled() { return Cfg::EMERGENCYPARSER; }
static inline bool emergency_parser_enabled() { return Cfg::EMERGENCYPARSER; }
FORCE_INLINE static uint8_t dropped() { return Cfg::DROPPED_RX ? rx_dropped_bytes : 0; }
FORCE_INLINE static uint8_t buffer_overruns() { return Cfg::RX_OVERRUNS ? rx_buffer_overruns : 0; }
@@ -276,7 +283,7 @@
static constexpr bool DROPPED_RX = false;
static constexpr bool RX_FRAMING_ERRORS = false;
static constexpr bool MAX_RX_QUEUED = false;
static constexpr bool RX_OVERRUNS = ALL(HAS_DGUS_LCD, SERIAL_STATS_RX_BUFFER_OVERRUNS);
static constexpr bool RX_OVERRUNS = BOTH(HAS_DGUS_LCD, SERIAL_STATS_RX_BUFFER_OVERRUNS);
};
typedef Serial1Class< MarlinSerial< LCDSerialCfg<LCD_SERIAL_PORT> > > MSerialLCD;

View File

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

View File

@@ -23,7 +23,7 @@
#include "../../inc/MarlinConfig.h"
#if ANY(EEPROM_SETTINGS, SD_FIRMWARE_UPDATE)
#if EITHER(EEPROM_SETTINGS, SD_FIRMWARE_UPDATE)
/**
* PersistentStore for Arduino-style EEPROM interface
@@ -35,14 +35,14 @@
#ifndef MARLIN_EEPROM_SIZE
#define MARLIN_EEPROM_SIZE size_t(E2END + 1)
#endif
size_t PersistentStore::capacity() { return MARLIN_EEPROM_SIZE - eeprom_exclude_size; }
size_t PersistentStore::capacity() { return MARLIN_EEPROM_SIZE; }
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) {
uint16_t written = 0;
while (size--) {
uint8_t * const p = (uint8_t * const)REAL_EEPROM_ADDR(pos);
uint8_t * const p = (uint8_t * const)pos;
uint8_t v = *value;
if (v != eeprom_read_byte(p)) { // EEPROM has only ~100,000 write cycles, so only write bytes that have changed!
eeprom_write_byte(p, v);
@@ -61,7 +61,7 @@ bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, ui
bool PersistentStore::read_data(int &pos, uint8_t *value, size_t size, uint16_t *crc, const bool writing/*=true*/) {
do {
const uint8_t c = eeprom_read_byte((uint8_t*)REAL_EEPROM_ADDR(pos));
uint8_t c = eeprom_read_byte((uint8_t*)pos);
if (writing) *value = c;
crc16(crc, &c, 1);
pos++;

View File

@@ -91,6 +91,7 @@ void endstop_ISR() { endstops.update(); }
#endif
// Install Pin change interrupt for a pin. Can be called multiple times.
void pciSetup(const int8_t pin) {
if (digitalPinHasPCICR(pin)) {
@@ -119,7 +120,7 @@ void pciSetup(const int8_t pin) {
void setup_endstop_interrupts() {
#define _ATTACH(P) attachInterrupt(digitalPinToInterrupt(P), endstop_ISR, CHANGE)
#if USE_X_MAX
#if HAS_X_MAX
#if (digitalPinToInterrupt(X_MAX_PIN) != NOT_AN_INTERRUPT)
_ATTACH(X_MAX_PIN);
#else
@@ -127,7 +128,7 @@ void setup_endstop_interrupts() {
pciSetup(X_MAX_PIN);
#endif
#endif
#if USE_X_MIN
#if HAS_X_MIN
#if (digitalPinToInterrupt(X_MIN_PIN) != NOT_AN_INTERRUPT)
_ATTACH(X_MIN_PIN);
#else
@@ -135,7 +136,7 @@ void setup_endstop_interrupts() {
pciSetup(X_MIN_PIN);
#endif
#endif
#if USE_Y_MAX
#if HAS_Y_MAX
#if (digitalPinToInterrupt(Y_MAX_PIN) != NOT_AN_INTERRUPT)
_ATTACH(Y_MAX_PIN);
#else
@@ -143,7 +144,7 @@ void setup_endstop_interrupts() {
pciSetup(Y_MAX_PIN);
#endif
#endif
#if USE_Y_MIN
#if HAS_Y_MIN
#if (digitalPinToInterrupt(Y_MIN_PIN) != NOT_AN_INTERRUPT)
_ATTACH(Y_MIN_PIN);
#else
@@ -151,7 +152,7 @@ void setup_endstop_interrupts() {
pciSetup(Y_MIN_PIN);
#endif
#endif
#if USE_Z_MAX
#if HAS_Z_MAX
#if (digitalPinToInterrupt(Z_MAX_PIN) != NOT_AN_INTERRUPT)
_ATTACH(Z_MAX_PIN);
#else
@@ -159,7 +160,7 @@ void setup_endstop_interrupts() {
pciSetup(Z_MAX_PIN);
#endif
#endif
#if USE_Z_MIN
#if HAS_Z_MIN
#if (digitalPinToInterrupt(Z_MIN_PIN) != NOT_AN_INTERRUPT)
_ATTACH(Z_MIN_PIN);
#else
@@ -167,97 +168,7 @@ void setup_endstop_interrupts() {
pciSetup(Z_MIN_PIN);
#endif
#endif
#if USE_I_MAX
#if (digitalPinToInterrupt(I_MAX_PIN) != NOT_AN_INTERRUPT)
_ATTACH(I_MAX_PIN);
#else
static_assert(digitalPinHasPCICR(I_MAX_PIN), "I_MAX_PIN is not interrupt-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue.");
pciSetup(I_MAX_PIN);
#endif
#elif USE_I_MIN
#if (digitalPinToInterrupt(I_MIN_PIN) != NOT_AN_INTERRUPT)
_ATTACH(I_MIN_PIN);
#else
static_assert(digitalPinHasPCICR(I_MIN_PIN), "I_MIN_PIN is not interrupt-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue.");
pciSetup(I_MIN_PIN);
#endif
#endif
#if USE_J_MAX
#if (digitalPinToInterrupt(J_MAX_PIN) != NOT_AN_INTERRUPT)
_ATTACH(J_MAX_PIN);
#else
static_assert(digitalPinHasPCICR(J_MAX_PIN), "J_MAX_PIN is not interrupt-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue.");
pciSetup(J_MAX_PIN);
#endif
#elif USE_J_MIN
#if (digitalPinToInterrupt(J_MIN_PIN) != NOT_AN_INTERRUPT)
_ATTACH(J_MIN_PIN);
#else
static_assert(digitalPinHasPCICR(J_MIN_PIN), "J_MIN_PIN is not interrupt-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue.");
pciSetup(J_MIN_PIN);
#endif
#endif
#if USE_K_MAX
#if (digitalPinToInterrupt(K_MAX_PIN) != NOT_AN_INTERRUPT)
_ATTACH(K_MAX_PIN);
#else
static_assert(digitalPinHasPCICR(K_MAX_PIN), "K_MAX_PIN is not interrupt-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue.");
pciSetup(K_MAX_PIN);
#endif
#elif USE_K_MIN
#if (digitalPinToInterrupt(K_MIN_PIN) != NOT_AN_INTERRUPT)
_ATTACH(K_MIN_PIN);
#else
static_assert(digitalPinHasPCICR(K_MIN_PIN), "K_MIN_PIN is not interrupt-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue.");
pciSetup(K_MIN_PIN);
#endif
#endif
#if USE_U_MAX
#if (digitalPinToInterrupt(U_MAX_PIN) != NOT_AN_INTERRUPT)
_ATTACH(U_MAX_PIN);
#else
static_assert(digitalPinHasPCICR(U_MAX_PIN), "U_MAX_PIN is not interrupt-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue.");
pciSetup(U_MAX_PIN);
#endif
#elif USE_U_MIN
#if (digitalPinToInterrupt(U_MIN_PIN) != NOT_AN_INTERRUPT)
_ATTACH(U_MIN_PIN);
#else
static_assert(digitalPinHasPCICR(U_MIN_PIN), "U_MIN_PIN is not interrupt-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue.");
pciSetup(U_MIN_PIN);
#endif
#endif
#if USE_V_MAX
#if (digitalPinToInterrupt(V_MAX_PIN) != NOT_AN_INTERRUPT)
_ATTACH(V_MAX_PIN);
#else
static_assert(digitalPinHasPCICR(V_MAX_PIN), "V_MAX_PIN is not interrupt-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue.");
pciSetup(V_MAX_PIN);
#endif
#elif USE_V_MIN
#if (digitalPinToInterrupt(V_MIN_PIN) != NOT_AN_INTERRUPT)
_ATTACH(V_MIN_PIN);
#else
static_assert(digitalPinHasPCICR(V_MIN_PIN), "V_MIN_PIN is not interrupt-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue.");
pciSetup(V_MIN_PIN);
#endif
#endif
#if USE_W_MAX
#if (digitalPinToInterrupt(W_MAX_PIN) != NOT_AN_INTERRUPT)
_ATTACH(W_MAX_PIN);
#else
static_assert(digitalPinHasPCICR(W_MAX_PIN), "W_MAX_PIN is not interrupt-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue.");
pciSetup(W_MAX_PIN);
#endif
#elif USE_W_MIN
#if (digitalPinToInterrupt(W_MIN_PIN) != NOT_AN_INTERRUPT)
_ATTACH(W_MIN_PIN);
#else
static_assert(digitalPinHasPCICR(W_MIN_PIN), "W_MIN_PIN is not interrupt-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue.");
pciSetup(W_MIN_PIN);
#endif
#endif
#if USE_X2_MAX
#if HAS_X2_MAX
#if (digitalPinToInterrupt(X2_MAX_PIN) != NOT_AN_INTERRUPT)
_ATTACH(X2_MAX_PIN);
#else
@@ -265,7 +176,7 @@ void setup_endstop_interrupts() {
pciSetup(X2_MAX_PIN);
#endif
#endif
#if USE_X2_MIN
#if HAS_X2_MIN
#if (digitalPinToInterrupt(X2_MIN_PIN) != NOT_AN_INTERRUPT)
_ATTACH(X2_MIN_PIN);
#else
@@ -273,7 +184,7 @@ void setup_endstop_interrupts() {
pciSetup(X2_MIN_PIN);
#endif
#endif
#if USE_Y2_MAX
#if HAS_Y2_MAX
#if (digitalPinToInterrupt(Y2_MAX_PIN) != NOT_AN_INTERRUPT)
_ATTACH(Y2_MAX_PIN);
#else
@@ -281,7 +192,7 @@ void setup_endstop_interrupts() {
pciSetup(Y2_MAX_PIN);
#endif
#endif
#if USE_Y2_MIN
#if HAS_Y2_MIN
#if (digitalPinToInterrupt(Y2_MIN_PIN) != NOT_AN_INTERRUPT)
_ATTACH(Y2_MIN_PIN);
#else
@@ -289,7 +200,7 @@ void setup_endstop_interrupts() {
pciSetup(Y2_MIN_PIN);
#endif
#endif
#if USE_Z2_MAX
#if HAS_Z2_MAX
#if (digitalPinToInterrupt(Z2_MAX_PIN) != NOT_AN_INTERRUPT)
_ATTACH(Z2_MAX_PIN);
#else
@@ -297,7 +208,7 @@ void setup_endstop_interrupts() {
pciSetup(Z2_MAX_PIN);
#endif
#endif
#if USE_Z2_MIN
#if HAS_Z2_MIN
#if (digitalPinToInterrupt(Z2_MIN_PIN) != NOT_AN_INTERRUPT)
_ATTACH(Z2_MIN_PIN);
#else
@@ -305,7 +216,7 @@ void setup_endstop_interrupts() {
pciSetup(Z2_MIN_PIN);
#endif
#endif
#if USE_Z3_MAX
#if HAS_Z3_MAX
#if (digitalPinToInterrupt(Z3_MAX_PIN) != NOT_AN_INTERRUPT)
_ATTACH(Z3_MAX_PIN);
#else
@@ -313,7 +224,7 @@ void setup_endstop_interrupts() {
pciSetup(Z3_MAX_PIN);
#endif
#endif
#if USE_Z3_MIN
#if HAS_Z3_MIN
#if (digitalPinToInterrupt(Z3_MIN_PIN) != NOT_AN_INTERRUPT)
_ATTACH(Z3_MIN_PIN);
#else
@@ -321,7 +232,7 @@ void setup_endstop_interrupts() {
pciSetup(Z3_MIN_PIN);
#endif
#endif
#if USE_Z4_MAX
#if HAS_Z4_MAX
#if (digitalPinToInterrupt(Z4_MAX_PIN) != NOT_AN_INTERRUPT)
_ATTACH(Z4_MAX_PIN);
#else
@@ -329,7 +240,7 @@ void setup_endstop_interrupts() {
pciSetup(Z4_MAX_PIN);
#endif
#endif
#if USE_Z4_MIN
#if HAS_Z4_MIN
#if (digitalPinToInterrupt(Z4_MIN_PIN) != NOT_AN_INTERRUPT)
_ATTACH(Z4_MIN_PIN);
#else
@@ -337,7 +248,7 @@ void setup_endstop_interrupts() {
pciSetup(Z4_MIN_PIN);
#endif
#endif
#if USE_Z_MIN_PROBE
#if HAS_Z_MIN_PROBE_PIN
#if (digitalPinToInterrupt(Z_MIN_PROBE_PIN) != NOT_AN_INTERRUPT)
_ATTACH(Z_MIN_PROBE_PIN);
#else
@@ -345,14 +256,6 @@ void setup_endstop_interrupts() {
pciSetup(Z_MIN_PROBE_PIN);
#endif
#endif
#if USE_CALIBRATION
#if (digitalPinToInterrupt(CALIBRATION_PIN) != NOT_AN_INTERRUPT)
_ATTACH(CALIBRATION_PIN);
#else
static_assert(digitalPinHasPCICR(CALIBRATION_PIN), "CALIBRATION_PIN is not interrupt-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue.");
pciSetup(CALIBRATION_PIN);
#endif
#endif
// If we arrive here without raising an assertion, each pin has either an EXT-interrupt or a PCI.
}

View File

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

View File

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

View File

@@ -118,7 +118,7 @@
*/
// Waveform Generation Modes
enum WaveGenMode : uint8_t {
enum WaveGenMode : char {
WGM_NORMAL, // 0
WGM_PWM_PC_8, // 1
WGM_PWM_PC_9, // 2
@@ -138,19 +138,19 @@ enum WaveGenMode : uint8_t {
};
// Wavefore Generation Modes (Timer 2 only)
enum WaveGenMode2 : uint8_t {
WGM2_NORMAL, // 0
WGM2_PWM_PC, // 1
WGM2_CTC_OCR2A, // 2
WGM2_FAST_PWM, // 3
WGM2_reserved_1, // 4
WGM2_PWM_PC_OCR2A, // 5
WGM2_reserved_2, // 6
WGM2_FAST_PWM_OCR2A, // 7
enum WaveGenMode2 : char {
WGM2_NORMAL, // 0
WGM2_PWM_PC, // 1
WGM2_CTC_OCR2A, // 2
WGM2_FAST_PWM, // 3
WGM2_reserved_1, // 4
WGM2_PWM_PC_OCR2A, // 5
WGM2_reserved_2, // 6
WGM2_FAST_PWM_OCR2A, // 7
};
// Compare Modes
enum CompareMode : uint8_t {
enum CompareMode : char {
COM_NORMAL, // 0
COM_TOGGLE, // 1 Non-PWM: OCnx ... Both PWM (WGM 9,11,14,15): OCnA only ... else NORMAL
COM_CLEAR_SET, // 2 Non-PWM: OCnx ... Fast PWM: OCnx/Bottom ... PF-FC: OCnx Up/Down
@@ -158,7 +158,7 @@ enum CompareMode : uint8_t {
};
// Clock Sources
enum ClockSource : uint8_t {
enum ClockSource : char {
CS_NONE, // 0
CS_PRESCALER_1, // 1
CS_PRESCALER_8, // 2
@@ -170,7 +170,7 @@ enum ClockSource : uint8_t {
};
// Clock Sources (Timer 2 only)
enum ClockSource2 : uint8_t {
enum ClockSource2 : char {
CS2_NONE, // 0
CS2_PRESCALER_1, // 1
CS2_PRESCALER_8, // 2
@@ -203,33 +203,40 @@ enum ClockSource2 : uint8_t {
TCCR##T##B = (TCCR##T##B & ~(0x3 << WGM##T##2)) | (((int(V) >> 2) & 0x3) << WGM##T##2); \
}while(0)
#define SET_WGM(T,V) _SET_WGM(T,WGM_##V)
// Runtime (see set_pwm_frequency):
#define _SET_WGMnQ(TCCRnQ, V) do{ \
*(TCCRnQ)[0] = (*(TCCRnQ)[0] & ~(0x3 << 0)) | (( int(V) & 0x3) << 0); \
*(TCCRnQ)[1] = (*(TCCRnQ)[1] & ~(0x3 << 3)) | (((int(V) >> 2) & 0x3) << 3); \
}while(0)
// Set Clock Select bits
// Ex: SET_CS3(PRESCALER_64);
#ifdef TCCR2
#define HAS_TCCR2 1
#endif
#define _SET_CS(T,V) (TCCR##T##B = (TCCR##T##B & ~(0x7 << CS##T##0)) | ((int(V) & 0x7) << CS##T##0))
#define _SET_CS0(V) _SET_CS(0,V)
#define _SET_CS1(V) _SET_CS(1,V)
#ifdef TCCR2
#define _SET_CS2(V) (TCCR2 = (TCCR2 & ~(0x7 << CS20)) | (int(V) << CS20))
#else
#define _SET_CS2(V) _SET_CS(2,V)
#endif
#define _SET_CS3(V) _SET_CS(3,V)
#define _SET_CS4(V) _SET_CS(4,V)
#define _SET_CS5(V) _SET_CS(5,V)
#define SET_CS0(V) _SET_CS0(CS_##V)
#define SET_CS1(V) _SET_CS1(CS_##V)
#if HAS_TCCR2
#define _SET_CS2(V) (TCCR2 = (TCCR2 & ~(0x7 << CS20)) | (int(V) << CS20))
#ifdef TCCR2
#define SET_CS2(V) _SET_CS2(CS2_##V)
#else
#define _SET_CS2(V) _SET_CS(2,V)
#define SET_CS2(V) _SET_CS2(CS_##V)
#endif
#define SET_CS3(V) _SET_CS3(CS_##V)
#define SET_CS4(V) _SET_CS4(CS_##V)
#define SET_CS5(V) _SET_CS5(CS_##V)
#define SET_CS(T,V) SET_CS##T(V)
// Runtime (see set_pwm_frequency)
#define _SET_CSn(TCCRnQ, V) do{ \
(*(TCCRnQ)[1] = (*(TCCRnQ[1]) & ~(0x7 << 0)) | ((int(V) & 0x7) << 0)); \
}while(0)
// Set Compare Mode bits
// Ex: SET_COMS(4,CLEAR_SET,CLEAR_SET,CLEAR_SET);
@@ -239,6 +246,22 @@ enum ClockSource2 : uint8_t {
#define SET_COMB(T,V) SET_COM(T,B,V)
#define SET_COMC(T,V) SET_COM(T,C,V)
#define SET_COMS(T,V1,V2,V3) do{ SET_COMA(T,V1); SET_COMB(T,V2); SET_COMC(T,V3); }while(0)
// Runtime (see set_pwm_duty)
#define _SET_COMnQ(TCCRnQ, Q, V) do{ \
(*(TCCRnQ)[0] = (*(TCCRnQ)[0] & ~(0x3 << (6-2*(Q)))) | (int(V) << (6-2*(Q)))); \
}while(0)
// Set OCRnQ register
// Runtime (see set_pwm_duty):
#define _SET_OCRnQ(OCRnQ, Q, V) do{ \
(*(OCRnQ)[(Q)] = (0x0000) | (int(V) & 0xFFFF)); \
}while(0)
// Set ICRn register (one per timer)
// Runtime (see set_pwm_frequency)
#define _SET_ICRn(ICRn, V) do{ \
(*(ICRn) = (0x0000) | (int(V) & 0xFFFF)); \
}while(0)
// Set Noise Canceler bit
// Ex: SET_ICNC(2,1)
@@ -255,6 +278,84 @@ enum ClockSource2 : uint8_t {
#define SET_FOCB(T,V) SET_FOC(T,B,V)
#define SET_FOCC(T,V) SET_FOC(T,C,V)
#if 0
/**
* PWM availability macros
*/
// 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 || P == COOLER_AUTO_FAN_PIN)
#if PIN_EXISTS(CONTROLLER_FAN)
#define PWM_CHK_FAN_B(P) (_PWM_CHK_FAN_B(P) || P == CONTROLLER_FAN_PIN)
#else
#define PWM_CHK_FAN_B(P) _PWM_CHK_FAN_B(P)
#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)
#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)
#else
#define PWM_CHK_FAN_A(P) (P == FAN0_PIN)
#endif
#else
#define PWM_CHK_FAN_A(P) false
#endif
#if HAS_MOTOR_CURRENT_PWM
#if PIN_EXISTS(MOTOR_CURRENT_PWM_XY)
#define PWM_CHK_MOTOR_CURRENT(P) (P == MOTOR_CURRENT_PWM_E || P == MOTOR_CURRENT_PWM_Z || P == MOTOR_CURRENT_PWM_XY)
#elif PIN_EXISTS(MOTOR_CURRENT_PWM_Z)
#define PWM_CHK_MOTOR_CURRENT(P) (P == MOTOR_CURRENT_PWM_E || P == MOTOR_CURRENT_PWM_Z)
#else
#define PWM_CHK_MOTOR_CURRENT(P) (P == MOTOR_CURRENT_PWM_E)
#endif
#else
#define PWM_CHK_MOTOR_CURRENT(P) false
#endif
#ifdef NUM_SERVOS
#if AVR_ATmega2560_FAMILY
#define PWM_CHK_SERVO(P) (P == 5 || (NUM_SERVOS > 12 && P == 6) || (NUM_SERVOS > 24 && P == 46)) // PWMS 3A, 4A & 5A
#elif AVR_ATmega2561_FAMILY
#define PWM_CHK_SERVO(P) (P == 5) // PWM3A
#elif AVR_ATmega1284_FAMILY
#define PWM_CHK_SERVO(P) false
#elif AVR_AT90USB1286_FAMILY
#define PWM_CHK_SERVO(P) (P == 16) // PWM3A
#elif AVR_ATmega328_FAMILY
#define PWM_CHK_SERVO(P) false
#endif
#else
#define PWM_CHK_SERVO(P) false
#endif
#if ENABLED(BARICUDA)
#if HAS_HEATER_1 && HAS_HEATER_2
#define PWM_CHK_HEATER(P) (P == HEATER_1_PIN || P == HEATER_2_PIN)
#elif HAS_HEATER_1
#define PWM_CHK_HEATER(P) (P == HEATER_1_PIN)
#endif
#else
#define PWM_CHK_HEATER(P) false
#endif
#define PWM_CHK(P) (PWM_CHK_HEATER(P) || PWM_CHK_SERVO(P) || PWM_CHK_MOTOR_CURRENT(P) || PWM_CHK_FAN_A(P) || PWM_CHK_FAN_B(P))
#endif // PWM_CHK is not used in Marlin
// define which hardware PWMs are available for the current CPU
// all timer 1 PWMS deleted from this list because they are never available
#if AVR_ATmega2560_FAMILY

View File

@@ -27,41 +27,43 @@
* 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
* Analog Input : 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
*/
#include "../fastio.h"
// change for your board
#define DEBUG_LED DIO21
// UART
#define RXD 0
#define TXD 1
#define RXD DIO0
#define TXD DIO1
// SPI
#define MISO 50
#define MOSI 51
#define SCK 52
#define SS 53
#define SCK DIO52
#define MISO DIO50
#define MOSI DIO51
#define SS DIO53
// TWI (I2C)
#define SCL 21
#define SDA 20
#define SCL DIO21
#define SDA DIO20
// Timers and PWM
#define OC0A 13
#define OC0B 4
#define OC1A 11
#define OC1B 12
#define OC2A 10
#define OC2B 9
#define OC3A 5
#define OC3B 2
#define OC3C 3
#define OC4A 6
#define OC4B 7
#define OC4C 8
#define OC5A 46
#define OC5B 45
#define OC5C 44
#define OC0A DIO13
#define OC0B DIO4
#define OC1A DIO11
#define OC1B DIO12
#define OC2A DIO10
#define OC2B DIO9
#define OC3A DIO5
#define OC3B DIO2
#define OC3C DIO3
#define OC4A DIO6
#define OC4B DIO7
#define OC4C DIO8
#define OC5A DIO46
#define OC5B DIO45
#define OC5C DIO44
// Digital I/O

View File

@@ -30,29 +30,32 @@
#include "../fastio.h"
// change for your board
#define DEBUG_LED DIO46
// UART
#define RXD 0
#define TXD 1
#define RXD DIO0
#define TXD DIO1
// SPI
#define SCK 10
#define MISO 12
#define MOSI 11
#define SS 16
#define SCK DIO10
#define MISO DIO12
#define MOSI DIO11
#define SS DIO16
// TWI (I2C)
#define SCL 17
#define SDA 18
#define SCL DIO17
#define SDA DIO18
// Timers and PWM
#define OC0A 9
#define OC0B 4
#define OC1A 7
#define OC1B 8
#define OC2A 6
#define OC3A 5
#define OC3B 2
#define OC3C 3
#define OC0A DIO9
#define OC0B DIO4
#define OC1A DIO7
#define OC1B DIO8
#define OC2A DIO6
#define OC3A DIO5
#define OC3B DIO2
#define OC3C DIO3
// Digital I/O

View File

@@ -30,27 +30,29 @@
#include "../fastio.h"
#define DEBUG_LED AIO5
// UART
#define RXD 0
#define TXD 1
#define RXD DIO0
#define TXD DIO1
// SPI
#define SS 10
#define MOSI 11
#define MISO 12
#define SCK 13
#define SCK DIO13
#define MISO DIO12
#define MOSI DIO11
#define SS DIO10
// TWI (I2C)
#define SCL AIO5
#define SDA AIO4
// Timers and PWM
#define OC0A 6
#define OC0B 5
#define OC1A 9
#define OC1B 10
#define OC2A 11
#define OC2B 3
#define OC0A DIO6
#define OC0B DIO5
#define OC1A DIO9
#define OC1B DIO10
#define OC2A DIO11
#define OC2B DIO3
// Digital I/O

View File

@@ -56,32 +56,34 @@
#include "../fastio.h"
// UART
#define RXD 8
#define TXD 9
#define RXD0 8
#define TXD0 9
#define DEBUG_LED DIO0
#define RXD1 10
#define TXD1 11
// UART
#define RXD DIO8
#define TXD DIO9
#define RXD0 DIO8
#define TXD0 DIO9
#define RXD1 DIO10
#define TXD1 DIO11
// SPI
#define SS 4
#define MOSI 5
#define MISO 6
#define SCK 7
#define SCK DIO7
#define MISO DIO6
#define MOSI DIO5
#define SS DIO4
// TWI (I2C)
#define SCL 16
#define SDA 17
#define SCL DIO16
#define SDA DIO17
// Timers and PWM
#define OC0A 3
#define OC0B 4
#define OC1A 13
#define OC1B 12
#define OC2A 15
#define OC2B 14
#define OC0A DIO3
#define OC0B DIO4
#define OC1A DIO13
#define OC1B DIO12
#define OC2A DIO15
#define OC2B DIO14
// Digital I/O

View File

@@ -31,11 +31,14 @@
#include "../fastio.h"
// change for your board
#define DEBUG_LED DIO31 /* led D5 red */
// SPI
#define SS 20 // 8
#define SCK 21 // 9
#define MOSI 22 // 10
#define MISO 23 // 11
#define SCK DIO21 // 9
#define MISO DIO23 // 11
#define MOSI DIO22 // 10
#define SS DIO20 // 8
// Digital I/O
@@ -676,6 +679,7 @@
#define PF7_PWM 0
#define PF7_DDR DDRF
/**
* Some of the pin mapping functions of the Teensduino extension to the Arduino IDE
* do not function the same as the other Arduino extensions.

View File

@@ -21,6 +21,6 @@
*/
#pragma once
#ifndef SERIAL_PORT
#define SERIAL_PORT 0
#if HAS_SPI_TFT || HAS_FSMC_TFT
#error "Sorry! TFT displays are not available for HAL/AVR."
#endif

View File

@@ -1,22 +0,0 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2024 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
*/
#pragma once

View File

@@ -25,81 +25,35 @@
* Test AVR-specific configuration values for errors at compile-time.
*/
#if HAS_SPI_TFT || HAS_FSMC_TFT
#error "Sorry! TFT displays are not available for HAL/AVR."
#endif
/**
* Check for common serial pin conflicts
*/
#define CHECK_SERIAL_PIN(N) ( \
X_STOP_PIN == N || Y_STOP_PIN == N || Z_STOP_PIN == N \
|| X_MIN_PIN == N || Y_MIN_PIN == N || Z_MIN_PIN == N \
|| X_MAX_PIN == N || Y_MAX_PIN == N || Z_MAX_PIN == N \
|| X_STEP_PIN == N || Y_STEP_PIN == N || Z_STEP_PIN == N \
|| X_DIR_PIN == N || Y_DIR_PIN == N || Z_DIR_PIN == N \
|| X_ENA_PIN == N || Y_ENA_PIN == N || Z_ENA_PIN == N \
|| BTN_EN1 == N || BTN_EN2 == N || LCD_PINS_EN == N \
)
#if SERIAL_IN_USE(0)
// D0-D1. No known conflicts.
#endif
#if SERIAL_IN_USE(1)
#if NOT_TARGET(__AVR_ATmega644P__, __AVR_ATmega1284P__)
#if CHECK_SERIAL_PIN(18) || CHECK_SERIAL_PIN(19)
#error "Serial Port 1 pin D18 and/or D19 conflicts with another pin on the board."
#endif
#else
#if CHECK_SERIAL_PIN(10) || CHECK_SERIAL_PIN(11)
#error "Serial Port 1 pin D10 and/or D11 conflicts with another pin on the board."
#endif
#endif
#endif
#if SERIAL_IN_USE(2) && (CHECK_SERIAL_PIN(16) || CHECK_SERIAL_PIN(17))
#error "Serial Port 2 pin D16 and/or D17 conflicts with another pin on the board."
#endif
#if SERIAL_IN_USE(3) && (CHECK_SERIAL_PIN(14) || CHECK_SERIAL_PIN(15))
#error "Serial Port 3 pin D14 and/or D15 conflicts with another pin on the board."
#endif
#undef CHECK_SERIAL_PIN
/**
* Checks for FAST PWM
*/
#if ALL(FAST_PWM_FAN, USE_OCR2A_AS_TOP, HAS_TCCR2)
#error "USE_OCR2A_AS_TOP does not apply to devices with a single output TIMER2."
#endif
/**
* Checks for SOFT PWM
*/
#if HAS_FAN0 && FAN0_PIN == 9 && DISABLED(FAN_SOFT_PWM) && ENABLED(SPEAKER)
#error "FAN0_PIN 9 Hardware PWM uses Timer 2 which conflicts with Arduino AVR Tone Timer (for SPEAKER)."
#error "Disable SPEAKER or enable FAN_SOFT_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"
#endif
/**
* Sanity checks for Spindle / Laser PWM
*/
#if ENABLED(SPINDLE_LASER_USE_PWM)
#if ENABLED(SPINDLE_LASER_PWM)
#include "../ServoTimers.h" // Needed to check timer availability (_useTimer3)
#if SPINDLE_LASER_PWM_PIN == 4 || WITHIN(SPINDLE_LASER_PWM_PIN, 11, 13)
#error "Counter/Timer for SPINDLE_LASER_PWM_PIN is used by a system interrupt."
#elif NUM_SERVOS > 0 && defined(_useTimer3) && (WITHIN(SPINDLE_LASER_PWM_PIN, 2, 3) || SPINDLE_LASER_PWM_PIN == 5)
#error "Counter/Timer for SPINDLE_LASER_PWM_PIN is used by the servo system."
#endif
#elif SPINDLE_LASER_FREQUENCY
#error "SPINDLE_LASER_FREQUENCY requires SPINDLE_LASER_USE_PWM."
#elif defined(SPINDLE_LASER_FREQUENCY)
#error "SPINDLE_LASER_FREQUENCY requires SPINDLE_LASER_PWM."
#endif
/**
* The Trinamic library includes SoftwareSerial.h, leading to a compile error.
*/
#if ALL(HAS_TRINAMIC_CONFIG, ENDSTOP_INTERRUPTS_FEATURE)
#if BOTH(HAS_TRINAMIC_CONFIG, ENDSTOP_INTERRUPTS_FEATURE)
#error "TMCStepper includes SoftwareSerial.h which is incompatible with ENDSTOP_INTERRUPTS_FEATURE. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
#endif
#if ALL(HAS_TMC_SW_SERIAL, MONITOR_DRIVER_STATUS)
#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
@@ -109,7 +63,3 @@
#if ENABLED(POSTMORTEM_DEBUGGING)
#error "POSTMORTEM_DEBUGGING is not supported on AVR boards."
#endif
#if USING_PULLDOWNS
#error "PULLDOWN pin mode is not available on AVR boards."
#endif

View File

@@ -27,16 +27,15 @@
// intRes = longIn1 * longIn2 >> 24
// uses:
// r1, r0 for the result of mul.
// [tmp1] to store 0.
// [tmp2] to store bits 16-23 of the 56 bit result. The top bit of [tmp2] is used for rounding.
// Note that the lower two bytes and the upper two bytes of the 56 bit result are not calculated.
// This can cause the result to be out by one as the lower bytes may cause carries into the upper ones.
// [intRes] (A B) is bits 24-39 and is the returned value.
// [longIn1] (C B A) is a 24 bit parameter.
// [longIn2] (D C B A) is a 32 bit parameter.
// A[tmp] to store 0
// B[tmp] to store bits 16-23 of the 48bit result. The top bit is used to round the two byte result.
// note that the lower two bytes and the upper byte of the 48bit result are not calculated.
// this can cause the result to be out by one as the lower bytes may cause carries into the upper ones.
// B A are bits 24-39 and are the returned value
// C B A is longIn1
// D C B A is longIn2
//
FORCE_INLINE static uint16_t MultiU24X32toH16(uint32_t longIn1, uint32_t longIn2) {
static FORCE_INLINE uint16_t MultiU24X32toH16(uint32_t longIn1, uint32_t longIn2) {
uint8_t tmp1;
uint8_t tmp2;
uint16_t intRes;
@@ -67,9 +66,11 @@ FORCE_INLINE static uint16_t MultiU24X32toH16(uint32_t longIn1, uint32_t longIn2
A("add %[tmp2], r1")
A("adc %A[intRes], %[tmp1]")
A("adc %B[intRes], %[tmp1]")
A("lsr %[tmp2]")
A("adc %A[intRes], %[tmp1]")
A("adc %B[intRes], %[tmp1]")
A("mul %D[longIn2], %A[longIn1]")
A("lsl %[tmp2]")
A("adc %A[intRes], r0")
A("add %A[intRes], r0")
A("adc %B[intRes], r1")
A("mul %D[longIn2], %B[longIn1]")
A("add %B[intRes], r0")
@@ -84,26 +85,29 @@ FORCE_INLINE static uint16_t MultiU24X32toH16(uint32_t longIn1, uint32_t longIn2
return intRes;
}
// charRes = charIn1 * charIn2 >> 8
// intRes = intIn1 * intIn2 >> 16
// uses:
// r1, r0 for the result of mul. After the mul, r0 holds bits 0-7 of the 16 bit result,
// and the top bit of r0 is used for rounding.
// [charRes] is bits 8-15 and is the returned value.
// [charIn1] is an 8 bit parameter.
// [charIn2] is an 8 bit parameter.
//
FORCE_INLINE static uint8_t MultiU8X8toH8(uint8_t charIn1, uint8_t charIn2) {
uint8_t charRes;
// r26 to store 0
// r27 to store the byte 1 of the 24 bit result
static FORCE_INLINE uint16_t MultiU16X8toH16(uint8_t charIn1, uint16_t intIn2) {
uint8_t tmp;
uint16_t intRes;
__asm__ __volatile__ (
A("mul %[charIn1], %[charIn2]")
A("mov %[charRes], r1")
A("clr %[tmp]")
A("mul %[charIn1], %B[intIn2]")
A("movw %A[intRes], r0")
A("mul %[charIn1], %A[intIn2]")
A("add %A[intRes], r1")
A("adc %B[intRes], %[tmp]")
A("lsr r0")
A("adc %A[intRes], %[tmp]")
A("adc %B[intRes], %[tmp]")
A("clr r1")
A("lsl r0")
A("adc %[charRes], r1")
: [charRes] "=&r" (charRes)
: [intRes] "=&r" (intRes),
[tmp] "=&r" (tmp)
: [charIn1] "d" (charIn1),
[charIn2] "d" (charIn2)
[intIn2] "d" (intIn2)
: "cc"
);
return charRes;
return intRes;
}

View File

@@ -2,9 +2,6 @@
* 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
@@ -41,7 +38,7 @@
// portModeRegister takes a different argument
#define digitalPinToTimer_DEBUG(p) digitalPinToTimer(p)
#define digitalPinToBitMask_DEBUG(p) digitalPinToBitMask(p)
#define digitalPinToPort_DEBUG(p) digitalPinToPort(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
@@ -64,25 +61,23 @@
#define VALID_PIN(pin) (pin >= 0 && pin < NUM_DIGITAL_PINS ? 1 : 0)
#if AVR_ATmega1284_FAMILY
#define IS_ANALOG(P) WITHIN(P, analogInputToDigitalPin(7), analogInputToDigitalPin(0))
#define DIGITAL_PIN_TO_ANALOG_PIN(P) int(IS_ANALOG(P) ? (P) - analogInputToDigitalPin(7) : -1)
#define DIGITAL_PIN_TO_ANALOG_PIN(P) int(analogInputToDigitalPin(0) - (P))
#define IS_ANALOG(P) ((P) >= analogInputToDigitalPin(7) && (P) <= analogInputToDigitalPin(0))
#else
#define _ANALOG1(P) WITHIN(P, analogInputToDigitalPin(0), analogInputToDigitalPin(7))
#define _ANALOG2(P) WITHIN(P, analogInputToDigitalPin(8), analogInputToDigitalPin(15))
#define IS_ANALOG(P) (_ANALOG1(P) || _ANALOG2(P))
#define DIGITAL_PIN_TO_ANALOG_PIN(P) int(_ANALOG1(P) ? (P) - analogInputToDigitalPin(0) : _ANALOG2(P) ? (P) - analogInputToDigitalPin(8) + 8 : -1)
#define DIGITAL_PIN_TO_ANALOG_PIN(P) int((P) - analogInputToDigitalPin(0))
#define IS_ANALOG(P) ((P) >= analogInputToDigitalPin(0) && ((P) <= analogInputToDigitalPin(15) || (P) <= analogInputToDigitalPin(7)))
#endif
#define GET_ARRAY_PIN(p) pgm_read_byte(&pin_array[p].pin)
#define MULTI_NAME_PAD 26 // space needed to be pretty if not first name assigned to a pin
void PRINT_ARRAY_NAME(uint8_t x) {
PGM_P const name_mem_pointer = (PGM_P)pgm_read_ptr(&pin_array[x].name);
for (uint8_t y = 0; y < MAX_NAME_LENGTH; ++y) {
char *name_mem_pointer = (char*)pgm_read_ptr(&pin_array[x].name);
LOOP_L_N(y, MAX_NAME_LENGTH) {
char temp_char = pgm_read_byte(name_mem_pointer + y);
if (temp_char != 0)
SERIAL_CHAR(temp_char);
else {
for (uint8_t i = 0; i < MAX_NAME_LENGTH - y; ++i) SERIAL_CHAR(' ');
LOOP_L_N(i, MAX_NAME_LENGTH - y) SERIAL_CHAR(' ');
break;
}
}
@@ -90,6 +85,7 @@ void PRINT_ARRAY_NAME(uint8_t x) {
#define GET_ARRAY_IS_DIGITAL(x) pgm_read_byte(&pin_array[x].is_digital)
#if defined(__AVR_ATmega1284P__) // 1284 IDE extensions set this to the number of
#undef NUM_DIGITAL_PINS // digital only pins while all other CPUs have it
#define NUM_DIGITAL_PINS 32 // set to digital only + digital/analog
@@ -103,18 +99,18 @@ void PRINT_ARRAY_NAME(uint8_t x) {
return true; \
} else return false
#define ABTEST(N) defined(TCCR##N##A) && defined(COM##N##A1)
/**
* Print a pin's PWM status.
* Return true if it's currently a PWM pin.
*/
bool pwm_status(uint8_t pin) {
static bool pwm_status(uint8_t pin) {
char buffer[20]; // for the sprintf statements
switch (digitalPinToTimer_DEBUG(pin)) {
#if ABTEST(0)
#if defined(TCCR0A) && defined(COM0A1)
#ifdef TIMER0A
#if !AVR_AT90USB1286_FAMILY // not available in Teensyduino type IDEs
PWM_CASE(0, A);
@@ -123,20 +119,20 @@ bool pwm_status(uint8_t pin) {
PWM_CASE(0, B);
#endif
#if ABTEST(1)
#if defined(TCCR1A) && defined(COM1A1)
PWM_CASE(1, A);
PWM_CASE(1, B);
#if defined(COM1C1) && defined(TIMER1C)
PWM_CASE(1, C);
#endif
#if defined(COM1C1) && defined(TIMER1C)
PWM_CASE(1, C);
#endif
#endif
#if ABTEST(2)
#if defined(TCCR2A) && defined(COM2A1)
PWM_CASE(2, A);
PWM_CASE(2, B);
#endif
#if ABTEST(3)
#if defined(TCCR3A) && defined(COM3A1)
PWM_CASE(3, A);
PWM_CASE(3, B);
#ifdef COM3C1
@@ -150,7 +146,7 @@ bool pwm_status(uint8_t pin) {
PWM_CASE(4, C);
#endif
#if ABTEST(5)
#if defined(TCCR5A) && defined(COM5A1)
PWM_CASE(5, A);
PWM_CASE(5, B);
PWM_CASE(5, C);
@@ -163,23 +159,25 @@ bool pwm_status(uint8_t pin) {
SERIAL_ECHO_SP(2);
} // pwm_status
const volatile uint8_t* const PWM_other[][3] PROGMEM = {
{ &TCCR0A, &TCCR0B, &TIMSK0 },
{ &TCCR1A, &TCCR1B, &TIMSK1 },
#if ABTEST(2)
#if defined(TCCR2A) && defined(COM2A1)
{ &TCCR2A, &TCCR2B, &TIMSK2 },
#endif
#if ABTEST(3)
#if defined(TCCR3A) && defined(COM3A1)
{ &TCCR3A, &TCCR3B, &TIMSK3 },
#endif
#ifdef TCCR4A
{ &TCCR4A, &TCCR4B, &TIMSK4 },
#endif
#if ABTEST(5)
#if defined(TCCR5A) && defined(COM5A1)
{ &TCCR5A, &TCCR5B, &TIMSK5 },
#endif
};
const volatile uint8_t* const PWM_OCR[][3] PROGMEM = {
#ifdef TIMER0A
@@ -194,11 +192,11 @@ const volatile uint8_t* const PWM_OCR[][3] PROGMEM = {
{ (const uint8_t*)&OCR1A, (const uint8_t*)&OCR1B, 0 },
#endif
#if ABTEST(2)
#if defined(TCCR2A) && defined(COM2A1)
{ &OCR2A, &OCR2B, 0 },
#endif
#if ABTEST(3)
#if defined(TCCR3A) && defined(COM3A1)
#ifdef COM3C1
{ (const uint8_t*)&OCR3A, (const uint8_t*)&OCR3B, (const uint8_t*)&OCR3C },
#else
@@ -210,11 +208,12 @@ const volatile uint8_t* const PWM_OCR[][3] PROGMEM = {
{ (const uint8_t*)&OCR4A, (const uint8_t*)&OCR4B, (const uint8_t*)&OCR4C },
#endif
#if ABTEST(5)
#if defined(TCCR5A) && defined(COM5A1)
{ (const uint8_t*)&OCR5A, (const uint8_t*)&OCR5B, (const uint8_t*)&OCR5C },
#endif
};
#define TCCR_A(T) pgm_read_word(&PWM_other[T][0])
#define TCCR_B(T) pgm_read_word(&PWM_other[T][1])
#define TIMSK(T) pgm_read_word(&PWM_other[T][2])
@@ -229,16 +228,16 @@ const volatile uint8_t* const PWM_OCR[][3] PROGMEM = {
#define OCR_VAL(T, L) pgm_read_word(&PWM_OCR[T][L])
void err_is_counter() { SERIAL_ECHOPGM(" non-standard PWM mode"); }
void err_is_interrupt() { SERIAL_ECHOPGM(" compare interrupt enabled"); }
void err_prob_interrupt() { SERIAL_ECHOPGM(" overflow interrupt enabled"); }
void print_is_also_tied() { SERIAL_ECHOPGM(" is also tied to this pin"); SERIAL_ECHO_SP(14); }
static void err_is_counter() { SERIAL_ECHOPGM(" non-standard PWM mode"); }
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); }
void com_print(const uint8_t N, const uint8_t Z) {
inline void com_print(const uint8_t N, const uint8_t Z) {
const uint8_t *TCCRA = (uint8_t*)TCCR_A(N);
SERIAL_ECHOPGM(" COM", AS_DIGIT(N));
SERIAL_ECHOPAIR(" COM", AS_CHAR('0' + N));
SERIAL_CHAR(Z);
SERIAL_ECHOPGM(": ", int((*TCCRA >> (6 - Z * 2)) & 0x03));
SERIAL_ECHOPAIR(": ", int((*TCCRA >> (6 - Z * 2)) & 0x03));
}
void timer_prefix(uint8_t T, char L, uint8_t N) { // T - timer L - pwm N - WGM bit layout
@@ -248,7 +247,7 @@ void timer_prefix(uint8_t T, char L, uint8_t N) { // T - timer L - pwm N -
uint8_t WGM = (((*TCCRB & _BV(WGM_2)) >> 1) | (*TCCRA & (_BV(WGM_0) | _BV(WGM_1))));
if (N == 4) WGM |= ((*TCCRB & _BV(WGM_3)) >> 1);
SERIAL_ECHOPGM(" TIMER", AS_DIGIT(T));
SERIAL_ECHOPAIR(" TIMER", AS_CHAR(T + '0'));
SERIAL_CHAR(L);
SERIAL_ECHO_SP(3);
@@ -260,14 +259,14 @@ void timer_prefix(uint8_t T, char L, uint8_t N) { // T - timer L - pwm N -
const uint16_t *OCRVAL16 = (uint16_t*)OCR_VAL(T, L - 'A');
PWM_PRINT(*OCRVAL16);
}
SERIAL_ECHOPGM(" WGM: ", WGM);
SERIAL_ECHOPAIR(" WGM: ", WGM);
com_print(T,L);
SERIAL_ECHOPGM(" CS: ", (*TCCRB & (_BV(CS_0) | _BV(CS_1) | _BV(CS_2)) ));
SERIAL_ECHOPGM(" TCCR", AS_DIGIT(T), "A: ", *TCCRA);
SERIAL_ECHOPGM(" TCCR", AS_DIGIT(T), "B: ", *TCCRB);
SERIAL_ECHOPAIR(" CS: ", (*TCCRB & (_BV(CS_0) | _BV(CS_1) | _BV(CS_2)) ));
SERIAL_ECHOPAIR(" TCCR", AS_CHAR(T + '0'), "A: ", *TCCRA);
SERIAL_ECHOPAIR(" TCCR", AS_CHAR(T + '0'), "B: ", *TCCRB);
const uint8_t *TMSK = (uint8_t*)TIMSK(T);
SERIAL_ECHOPGM(" TIMSK", AS_DIGIT(T), ": ", *TMSK);
SERIAL_ECHOPAIR(" TIMSK", AS_CHAR(T + '0'), ": ", *TMSK);
const uint8_t OCIE = L - 'A' + 1;
if (N == 3) { if (WGM == 0 || WGM == 2 || WGM == 4 || WGM == 6) err_is_counter(); }
@@ -276,10 +275,10 @@ void timer_prefix(uint8_t T, char L, uint8_t N) { // T - timer L - pwm N -
if (TEST(*TMSK, TOIE)) err_prob_interrupt();
}
void pwm_details(uint8_t pin) {
static void pwm_details(uint8_t pin) {
switch (digitalPinToTimer_DEBUG(pin)) {
#if ABTEST(0)
#if defined(TCCR0A) && defined(COM0A1)
#ifdef TIMER0A
#if !AVR_AT90USB1286_FAMILY // not available in Teensyduino type IDEs
case TIMER0A: timer_prefix(0, 'A', 3); break;
@@ -288,7 +287,7 @@ void pwm_details(uint8_t pin) {
case TIMER0B: timer_prefix(0, 'B', 3); break;
#endif
#if ABTEST(1)
#if defined(TCCR1A) && defined(COM1A1)
case TIMER1A: timer_prefix(1, 'A', 4); break;
case TIMER1B: timer_prefix(1, 'B', 4); break;
#if defined(COM1C1) && defined(TIMER1C)
@@ -296,12 +295,12 @@ void pwm_details(uint8_t pin) {
#endif
#endif
#if ABTEST(2)
#if defined(TCCR2A) && defined(COM2A1)
case TIMER2A: timer_prefix(2, 'A', 3); break;
case TIMER2B: timer_prefix(2, 'B', 3); break;
#endif
#if ABTEST(3)
#if defined(TCCR3A) && defined(COM3A1)
case TIMER3A: timer_prefix(3, 'A', 4); break;
case TIMER3B: timer_prefix(3, 'B', 4); break;
#ifdef COM3C1
@@ -315,7 +314,7 @@ void pwm_details(uint8_t pin) {
case TIMER4C: timer_prefix(4, 'C', 4); break;
#endif
#if ABTEST(5)
#if defined(TCCR5A) && defined(COM5A1)
case TIMER5A: timer_prefix(5, 'A', 4); break;
case TIMER5B: timer_prefix(5, 'B', 4); break;
case TIMER5C: timer_prefix(5, 'C', 4); break;
@@ -349,44 +348,48 @@ void pwm_details(uint8_t pin) {
#endif
} // pwm_details
#ifndef digitalRead_mod // Use Teensyduino's version of digitalRead - it doesn't disable the PWMs
int digitalRead_mod(const pin_t pin) { // same as digitalRead except the PWM stop section has been removed
int digitalRead_mod(const int8_t pin) { // same as digitalRead except the PWM stop section has been removed
const uint8_t port = digitalPinToPort_DEBUG(pin);
return (port != NOT_A_PIN) && (*portInputRegister(port) & digitalPinToBitMask_DEBUG(pin)) ? HIGH : LOW;
}
#endif
void print_port(const pin_t pin) { // print port number
#ifdef digitalPinToPort_DEBUG
uint8_t x;
SERIAL_ECHOPGM(" Port: ");
#if AVR_AT90USB1286_FAMILY
x = (pin == 46 || pin == 47) ? 'E' : digitalPinToPort_DEBUG(pin) + 64;
#else
x = digitalPinToPort_DEBUG(pin) + 64;
#endif
SERIAL_CHAR(x);
#ifndef PRINT_PORT
#if AVR_AT90USB1286_FAMILY
if (pin == 46)
x = '2';
else if (pin == 47)
x = '3';
else {
void print_port(int8_t pin) { // print port number
#ifdef digitalPinToPort_DEBUG
uint8_t x;
SERIAL_ECHOPGM(" Port: ");
#if AVR_AT90USB1286_FAMILY
x = (pin == 46 || pin == 47) ? 'E' : digitalPinToPort_DEBUG(pin) + 64;
#else
x = digitalPinToPort_DEBUG(pin) + 64;
#endif
SERIAL_CHAR(x);
#if AVR_AT90USB1286_FAMILY
if (pin == 46)
x = '2';
else if (pin == 47)
x = '3';
else {
uint8_t temp = digitalPinToBitMask_DEBUG(pin);
for (x = '0'; x < '9' && temp != 1; x++) temp >>= 1;
}
#else
uint8_t temp = digitalPinToBitMask_DEBUG(pin);
for (x = '0'; x < '9' && temp != 1; x++) temp >>= 1;
}
#endif
SERIAL_CHAR(x);
#else
uint8_t temp = digitalPinToBitMask_DEBUG(pin);
for (x = '0'; x < '9' && temp != 1; x++) temp >>= 1;
SERIAL_ECHO_SP(10);
#endif
SERIAL_CHAR(x);
#else
SERIAL_ECHO_SP(10);
#endif
}
}
#define PRINT_PORT(p) print_port(p)
#endif
#define PRINT_PIN(p) do{ sprintf_P(buffer, PSTR("%3d "), p); SERIAL_ECHO(buffer); }while(0)
#define PRINT_PIN_ANALOG(p) do{ sprintf_P(buffer, PSTR(" (A%2d) "), DIGITAL_PIN_TO_ANALOG_PIN(pin)); SERIAL_ECHO(buffer); }while(0)
#undef ABTEST

View File

@@ -2,9 +2,6 @@
* Marlin 3D Printer Firmware
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
@@ -22,10 +19,11 @@
#pragma once
//
// Some of the pin mapping functions of the Arduino IDE Teensduino extension
// function differently from other Arduino extensions.
// some of the pin mapping functions of the Teensduino extension to the Arduino IDE
// do not function the same as the other Arduino extensions
//
#define TEENSYDUINO_IDE
//digitalPinToTimer(pin) function works like Arduino but Timers are not defined
@@ -47,6 +45,8 @@
#define PE 5
#define PF 6
#undef digitalPinToPort
const uint8_t PROGMEM digital_pin_to_port_PGM[] = {
PD, // 0 - PD0 - INT0 - PWM
PD, // 1 - PD1 - INT1 - PWM
@@ -98,7 +98,7 @@ const uint8_t PROGMEM digital_pin_to_port_PGM[] = {
PE, // 47 - PE3 (not defined in teensyduino)
};
#define digitalPinToPort(P) pgm_read_byte(digital_pin_to_port_PGM[P])
#define digitalPinToPort(P) ( pgm_read_byte( digital_pin_to_port_PGM + (P) ) )
// digitalPinToBitMask(pin) is OK

View File

@@ -2,9 +2,6 @@
* 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
@@ -231,6 +228,7 @@ const uint8_t PROGMEM digital_pin_to_bit_mask_PGM_plus_70[] = {
#define digitalPinToBitMask_plus_70(P) ( pgm_read_byte( digital_pin_to_bit_mask_PGM_plus_70 + (P) ) )
const uint8_t PROGMEM digital_pin_to_timer_PGM_plus_70[] = {
// TIMERS
// ------------------------

View File

@@ -1,979 +0,0 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
*/
#ifdef __AVR__
#include "../../inc/MarlinConfigPre.h"
#if ENABLED(HAL_AVR_DIRTY_INIT)
#include "registers.h"
// Since the compiler could be creating multiple copies of function code-graphs for each header inline-inclusion,
// we want to off-load the function definitions that define static memory into this solitary compilation unit.
// This way the ROM is NOT bloated (who knows if the compiler is optimizing same-content constant objects into one?)
ATmegaPinFunctions _ATmega_getPinFunctions(int pin) {
if (pin < 0) return {};
ATmegaPinInfo info = _ATmega_getPinInfo((unsigned int)pin);
#ifdef __AVR_TRM01__
if (info.port == eATmegaPort::PORT_A) {
if (info.pinidx == 7) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EXTMEM_AD7 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 6) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EXTMEM_AD6 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 5) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EXTMEM_AD5 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 4) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EXTMEM_AD4 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 3) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EXTMEM_AD3 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 2) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EXTMEM_AD2 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 1) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EXTMEM_AD1 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 0) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EXTMEM_AD0 };
return { funcs, countof(funcs) };
}
}
else if (info.port == eATmegaPort::PORT_B) {
if (info.pinidx == 7) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TOC0A, eATmegaPinFunc::TOC1C, eATmegaPinFunc::PCI7 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 6) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TOC1B, eATmegaPinFunc::PCI6 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 5) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TOC1A, eATmegaPinFunc::PCI5 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 4) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TOC2A, eATmegaPinFunc::PCI4 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 3) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::SPI_MISO, eATmegaPinFunc::PCI3 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 2) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::SPI_MOSI, eATmegaPinFunc::PCI2 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 1) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::SPI_SCK, eATmegaPinFunc::PCI1 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 0) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::SPI_CS, eATmegaPinFunc::PCI0 };
return { funcs, countof(funcs) };
}
}
else if (info.port == eATmegaPort::PORT_C) {
if (info.pinidx == 7) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EXTMEM_AD15 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 6) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EXTMEM_AD14 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 5) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EXTMEM_AD13 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 4) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EXTMEM_AD12 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 3) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EXTMEM_AD11 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 2) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EXTMEM_AD10 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 1) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EXTMEM_AD9 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 0) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EXTMEM_AD8 };
return { funcs, countof(funcs) };
}
}
else if (info.port == eATmegaPort::PORT_D) {
if (info.pinidx == 7) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TIMER0_CLKI };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 6) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TIMER1_CLKI };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 5) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::USART1_CLK };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 4) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TIMER1_ICP };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 3) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EINT3, eATmegaPinFunc::USART1_TXD };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 2) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EINT2, eATmegaPinFunc::USART1_RXD };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 1) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EINT1, eATmegaPinFunc::TWI_SDA };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 0) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EINT0, eATmegaPinFunc::TWI_CLK };
return { funcs, countof(funcs) };
}
}
else if (info.port == eATmegaPort::PORT_E) {
if (info.pinidx == 7) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EINT7, eATmegaPinFunc::TIMER3_ICP, eATmegaPinFunc::CLKO };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 6) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EINT6, eATmegaPinFunc::TIMER3_CLKI };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 5) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EINT5, eATmegaPinFunc::TOC3C };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 4) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EINT4, eATmegaPinFunc::TOC3B };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 3) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::AIN1, eATmegaPinFunc::TOC3A };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 2) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::AIN0, eATmegaPinFunc::USART0_CLK };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 1) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::PDO, eATmegaPinFunc::USART0_TXD };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 0) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::PDI, eATmegaPinFunc::USART0_RXD, eATmegaPinFunc::PCI8 };
return { funcs, countof(funcs) };
}
}
else if (info.port == eATmegaPort::PORT_F) {
if (info.pinidx == 7) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::ADC7 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 6) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::ADC6 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 5) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::ADC5 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 4) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::ADC4 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 3) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::ADC3 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 2) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::ADC2 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 1) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::ADC1 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 0) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::ADC0 };
return { funcs, countof(funcs) };
}
}
else if (info.port == eATmegaPort::PORT_G) {
if (info.pinidx == 5) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TOC0B };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 4) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TOSC1 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 3 ) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TOSC2 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 2) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EXTMEM_ALE };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 1) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EXTMEM_RD };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 0) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EXTMEM_WR };
return { funcs, countof(funcs) };
}
}
else if (info.port == eATmegaPort::PORT_H) {
if (info.pinidx == 7) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TIMER4_CLKI };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 6) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TOC2B };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 5) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TOC4C };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 4) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TOC4B };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 3) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TOC4A };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 2) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::USART2_CLK };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 1) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::USART2_TXD };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 0) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::USART2_RXD };
return { funcs, countof(funcs) };
}
}
else if (info.port == eATmegaPort::PORT_J) {
if (info.pinidx == 6) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::PCI15 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 5) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::PCI14 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 4) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::PCI13 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 3) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::PCI12 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 2) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::USART3_CLK, eATmegaPinFunc::PCI11 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 1) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::USART3_TXD, eATmegaPinFunc::PCI10 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 0) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::USART3_RXD, eATmegaPinFunc::PCI9 };
return { funcs, countof(funcs) };
}
}
else if (info.port == eATmegaPort::PORT_K) {
if (info.pinidx == 7) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::ADC15, eATmegaPinFunc::PCI23 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 6) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::ADC14, eATmegaPinFunc::PCI22 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 5) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::ADC13, eATmegaPinFunc::PCI21 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 4) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::ADC12, eATmegaPinFunc::PCI20 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 3) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::ADC11, eATmegaPinFunc::PCI19 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 2) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::ADC10, eATmegaPinFunc::PCI18 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 1) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::ADC9, eATmegaPinFunc::PCI17 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 0) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::ADC8, eATmegaPinFunc::PCI16 };
return { funcs, countof(funcs) };
}
}
else if (info.port == eATmegaPort::PORT_L) {
if (info.pinidx == 5) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TOC5C };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 4) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TOC5B };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 3) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TOC5A };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 2) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TIMER5_CLKI };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 1) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TIMER5_ICP };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 0) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TIMER4_ICP };
return { funcs, countof(funcs) };
}
}
#elif defined(__AVR_TRM02__)
if (info.port == eATmegaPort::PORT_A) {
if (info.pinidx == 7) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::PCI7, eATmegaPinFunc::ADC7 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 6) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::PCI6, eATmegaPinFunc::ADC6 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 5) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::PCI5, eATmegaPinFunc::ADC5 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 4) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::PCI4, eATmegaPinFunc::ADC4 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 3) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::PCI3, eATmegaPinFunc::ADC3 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 2) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::PCI2, eATmegaPinFunc::ADC2 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 1) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::PCI1, eATmegaPinFunc::ADC1 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 0) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::PCI0, eATmegaPinFunc::ADC0 };
return { funcs, countof(funcs) };
}
}
else if (info.port == eATmegaPort::PORT_B) {
if (info.pinidx == 7) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::SPI_SCK, eATmegaPinFunc::TOC3B, eATmegaPinFunc::PCI15 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 6) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::SPI_MISO, eATmegaPinFunc::TOC3A, eATmegaPinFunc::PCI14 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 5) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::SPI_MOSI, eATmegaPinFunc::TIMER3_ICP, eATmegaPinFunc::PCI13 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 4) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::SPI_CS, eATmegaPinFunc::TOC0B, eATmegaPinFunc::PCI12 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 3) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::AIN1, eATmegaPinFunc::TOC0A, eATmegaPinFunc::PCI11 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 2) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::AIN0, eATmegaPinFunc::EINT2, eATmegaPinFunc::PCI10 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 1) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TIMER1_ECI, eATmegaPinFunc::CLKO, eATmegaPinFunc::PCI9 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 0) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TIMER0_ECI, eATmegaPinFunc::USART0_CLK, eATmegaPinFunc::PCI8 };
return { funcs, countof(funcs) };
}
}
else if (info.port == eATmegaPort::PORT_C) {
if (info.pinidx == 7) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TOSC2, eATmegaPinFunc::PCI23 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 6) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TOSC1, eATmegaPinFunc::PCI22 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 5) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::PCI21 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 4) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::PCI20 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 3) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::PCI19 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 2) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::PCI18 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 1) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::PCI17, eATmegaPinFunc::TWI_SDA };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 0) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TWI_CLK, eATmegaPinFunc::PCI16 };
return { funcs, countof(funcs) };
}
}
else if (info.port == eATmegaPort::PORT_D) {
if (info.pinidx == 7) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TOC2A, eATmegaPinFunc::PCI31 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 6) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TIMER1_ICP, eATmegaPinFunc::TOC2B, eATmegaPinFunc::PCI30 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 5) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TOC1A, eATmegaPinFunc::PCI29 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 4) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TOC1B, eATmegaPinFunc::USART1_CLK, eATmegaPinFunc::PCI28 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 3) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EINT1, eATmegaPinFunc::USART1_TXD, eATmegaPinFunc::PCI27 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 2) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EINT0, eATmegaPinFunc::USART1_RXD, eATmegaPinFunc::PCI26 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 1) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::USART0_TXD, eATmegaPinFunc::PCI25 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 0) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::USART0_TXD, eATmegaPinFunc::PCI24, eATmegaPinFunc::TIMER3_ECI };
return { funcs, countof(funcs) };
}
}
#elif defined(__AVR_TRM03__)
if (info.port == eATmegaPort::PORT_B) {
if (info.pinidx == 7) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::XTAL2, eATmegaPinFunc::TOSC2, eATmegaPinFunc::PCI7 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 6) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::XTAL1, eATmegaPinFunc::TOSC1, eATmegaPinFunc::PCI6 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 5) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::SPI_SCK, eATmegaPinFunc::PCI5 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 4) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::SPI_MISO, eATmegaPinFunc::PCI4 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 3) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::SPI_MOSI, eATmegaPinFunc::TOC2A, eATmegaPinFunc::PCI3 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 2) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::SPI_CS, eATmegaPinFunc::TOC1B, eATmegaPinFunc::PCI2 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 1) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TOC1A, eATmegaPinFunc::PCI1 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 0) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TIMER1_ICP, eATmegaPinFunc::CLKO, eATmegaPinFunc::PCI0 };
return { funcs, countof(funcs) };
}
}
else if (info.port == eATmegaPort::PORT_C) {
if (info.pinidx == 6) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::PCI14 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 5) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::ADC5, eATmegaPinFunc::TWI_CLK, eATmegaPinFunc::PCI13 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 4) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::ADC4, eATmegaPinFunc::TWI_SDA, eATmegaPinFunc::PCI12 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 3) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::ADC3, eATmegaPinFunc::PCI11 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 2) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::ADC2, eATmegaPinFunc::PCI10 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 1) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::ADC1, eATmegaPinFunc::PCI9 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 0) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::ADC0, eATmegaPinFunc::PCI8 };
return { funcs, countof(funcs) };
}
}
else if (info.port == eATmegaPort::PORT_D) {
if (info.pinidx == 7) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::AIN1, eATmegaPinFunc::PCI23 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 6) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::AIN0, eATmegaPinFunc::TOC0A, eATmegaPinFunc::PCI22 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 5) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TIMER1_ECI, eATmegaPinFunc::TOC0B, eATmegaPinFunc::PCI21 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 4) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::USART_CLK, eATmegaPinFunc::TIMER0_ECI, eATmegaPinFunc::PCI20 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 3) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EINT1, eATmegaPinFunc::TOC2B, eATmegaPinFunc::PCI19 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 2) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EINT0, eATmegaPinFunc::PCI18 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 1) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::USART_TXD, eATmegaPinFunc::PCI17 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 0) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::USART_RXD, eATmegaPinFunc::PCI16 };
return { funcs, countof(funcs) };
}
}
#elif defined(__AVR_TRM04__)
if (info.port == eATmegaPort::PORT_A) {
if (info.pinidx == 7) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EXTMEM_AD7 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 6) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EXTMEM_AD6 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 5) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EXTMEM_AD5 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 4) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EXTMEM_AD4 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 3) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EXTMEM_AD3 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 2) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EXTMEM_AD2 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 1) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EXTMEM_AD1 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 0) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EXTMEM_AD0 };
return { funcs, countof(funcs) };
}
}
else if (info.port == eATmegaPort::PORT_B) {
if (info.pinidx == 7) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TOC0A, eATmegaPinFunc::TOC1C, eATmegaPinFunc::PCI7 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 6) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TOC1B, eATmegaPinFunc::PCI6 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 5) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TOC1A, eATmegaPinFunc::PCI5 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 4) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TOC2A, eATmegaPinFunc::PCI4 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 3) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::PDO, eATmegaPinFunc::SPI_MISO, eATmegaPinFunc::PCI3 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 2) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::PDI, eATmegaPinFunc::SPI_MOSI, eATmegaPinFunc::PCI2 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 1) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::SPI_SCK, eATmegaPinFunc::PCI1 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 0) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::SPI_CS, eATmegaPinFunc::PCI0 };
return { funcs, countof(funcs) };
}
}
else if (info.port == eATmegaPort::PORT_C) {
if (info.pinidx == 7) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EXTMEM_AD15, eATmegaPinFunc::TIMER3_ICP, eATmegaPinFunc::CLKO };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 6) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EXTMEM_AD14, eATmegaPinFunc::TOC3A };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 5) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EXTMEM_AD13, eATmegaPinFunc::TOC3B };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 4) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EXTMEM_AD12, eATmegaPinFunc::TOC3C };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 3) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EXTMEM_AD11, eATmegaPinFunc::TIMER3_CLKI };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 2) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EXTMEM_AD10 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 1) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EXTMEM_AD9 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 0) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EXTMEM_AD8 };
return { funcs, countof(funcs) };
}
}
else if (info.port == eATmegaPort::PORT_D) {
if (info.pinidx == 7) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TIMER0_CLKI };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 6) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TIMER1_CLKI };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 5) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::USART1_CLK };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 4) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TIMER1_ICP };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 3) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EINT3, eATmegaPinFunc::USART1_TXD };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 2) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EINT2, eATmegaPinFunc::USART1_RXD };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 1) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EINT1, eATmegaPinFunc::TWI_SDA, eATmegaPinFunc::TOC2B };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 0) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EINT0, eATmegaPinFunc::TWI_CLK, eATmegaPinFunc::TOC0B };
return { funcs, countof(funcs) };
}
}
else if (info.port == eATmegaPort::PORT_E) {
if (info.pinidx == 7) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EINT7, eATmegaPinFunc::AIN1, eATmegaPinFunc::UVCON };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 6) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EINT6, eATmegaPinFunc::AIN0 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 5) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EINT5, eATmegaPinFunc::TOSC2 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 4) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EINT4, eATmegaPinFunc::TOSC2 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 3) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::UID };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 2) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EXTMEM_ALE };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 1) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EXTMEM_RD };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 0) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EXTMEM_WR };
return { funcs, countof(funcs) };
}
}
else if (info.port == eATmegaPort::PORT_F) {
if (info.pinidx == 7) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::ADC7 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 6) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::ADC6 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 5) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::ADC5 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 4) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::ADC4 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 3) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::ADC3 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 2) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::ADC2 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 1) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::ADC1 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 0) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::ADC0 };
return { funcs, countof(funcs) };
}
}
#elif defined(__AVR_TRM05__)
if (info.port == eATmegaPort::PORT_A) {
if (info.pinidx == 7) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::ADC7, eATmegaPinFunc::PCI7 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 6) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::ADC6, eATmegaPinFunc::PCI6 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 5) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::ADC5, eATmegaPinFunc::PCI5 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 4) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::ADC4, eATmegaPinFunc::PCI4 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 3) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::ADC3, eATmegaPinFunc::PCI3 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 2) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::ADC2, eATmegaPinFunc::PCI2 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 1) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::ADC1, eATmegaPinFunc::PCI1 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 0) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::ADC0, eATmegaPinFunc::PCI0 };
return { funcs, countof(funcs) };
}
}
else if (info.port == eATmegaPort::PORT_B) {
if (info.pinidx == 7) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::SPI_SCK, eATmegaPinFunc::PCI15 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 6) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::SPI_MISO, eATmegaPinFunc::PCI14 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 5) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::SPI_MOSI, eATmegaPinFunc::PCI13 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 4) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::SPI_CS, eATmegaPinFunc::TOC0B, eATmegaPinFunc::PCI12 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 3) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::AIN1, eATmegaPinFunc::TOC0A, eATmegaPinFunc::PCI11 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 2) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::AIN0, eATmegaPinFunc::EINT2, eATmegaPinFunc::PCI10 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 1) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TIMER1_ECI, eATmegaPinFunc::CLKO, eATmegaPinFunc::PCI9 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 0) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TIMER0_ECI, eATmegaPinFunc::USART0_CLK, eATmegaPinFunc::PCI8 };
return { funcs, countof(funcs) };
}
}
else if (info.port == eATmegaPort::PORT_C) {
if (info.pinidx == 7) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TOSC2, eATmegaPinFunc::PCI23 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 6) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TOSC1, eATmegaPinFunc::PCI22 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 5) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::PCI21 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 4) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::PCI20 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 3) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::PCI19 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 2) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::PCI18 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 1) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TWI_SDA, eATmegaPinFunc::PCI17 };
return { funcs, countof(funcs) };
}
else if (info.pinidx == 0) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TWI_CLK, eATmegaPinFunc::PCI16 };
return { funcs, countof(funcs) };
}
}
else if (info.port == eATmegaPort::PORT_D) {
if (info.pinidx == 7) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TOC2A, eATmegaPinFunc::PCI31 };
return { funcs, countof(funcs) };
}
if (info.pinidx == 6) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TIMER1_ICP, eATmegaPinFunc::TOC2B, eATmegaPinFunc::PCI30 };
return { funcs, countof(funcs) };
}
if (info.pinidx == 5) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TOC1A, eATmegaPinFunc::PCI29 };
return { funcs, countof(funcs) };
}
if (info.pinidx == 4) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::TOC1B, eATmegaPinFunc::USART1_CLK, eATmegaPinFunc::PCI28 };
return { funcs, countof(funcs) };
}
if (info.pinidx == 3) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EINT1, eATmegaPinFunc::USART1_TXD, eATmegaPinFunc::PCI27 };
return { funcs, countof(funcs) };
}
if (info.pinidx == 2) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::EINT0, eATmegaPinFunc::USART1_RXD, eATmegaPinFunc::PCI26 };
return { funcs, countof(funcs) };
}
if (info.pinidx == 1) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::USART0_TXD, eATmegaPinFunc::PCI25 };
return { funcs, countof(funcs) };
}
if (info.pinidx == 0) {
static const eATmegaPinFunc funcs[] = { eATmegaPinFunc::USART0_RXD, eATmegaPinFunc::PCI24 };
return { funcs, countof(funcs) };
}
}
#endif
return ATmegaPinFunctions(); // default and empty.
}
#endif // HAL_AVR_DIRTY_INIT
#endif // __AVR__

File diff suppressed because it is too large Load Diff

View File

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

View File

@@ -1,29 +0,0 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
*/
#pragma once
/**
* AVR LCD-specific defines
*/
uint8_t u8g_com_HAL_AVR_sw_sp_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr);
#define U8G_COM_HAL_SW_SPI_FN u8g_com_HAL_AVR_sw_sp_fn

View File

@@ -62,10 +62,10 @@
#include "../shared/Marduino.h"
#include "../shared/Delay.h"
#include <U8glib-HAL.h>
#include <U8glib.h>
static uint8_t u8g_bitData, u8g_bitNotData, u8g_bitClock, u8g_bitNotClock;
static volatile uint8_t *u8g_outData, *u8g_outClock;
uint8_t u8g_bitData, u8g_bitNotData, u8g_bitClock, u8g_bitNotClock;
volatile uint8_t *u8g_outData, *u8g_outClock;
static void u8g_com_arduino_init_shift_out(uint8_t dataPin, uint8_t clockPin) {
u8g_outData = portOutputRegister(digitalPinToPort(dataPin));
@@ -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();
for (uint8_t i = 0; i < 8; ++i) {
LOOP_L_N(i, 8) {
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();
for (uint8_t i = 0; i < 8; ++i) {
LOOP_L_N(i, 8) {
*outClock &= bitNotClock;
if (val & 0x80)
*outData |= bitData;
@@ -120,7 +120,8 @@ void u8g_spiSend_sw_AVR_mode_3(uint8_t val) {
U8G_ATOMIC_END();
}
#if U8G_SPI_USE_MODE_3
#if ENABLED(FYSETC_MINI_12864)
#define SPISEND_SW_AVR u8g_spiSend_sw_AVR_mode_3
#else
#define SPISEND_SW_AVR u8g_spiSend_sw_AVR_mode_0
@@ -143,9 +144,9 @@ uint8_t u8g_com_HAL_AVR_sw_sp_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void
break;
case U8G_COM_MSG_CHIP_SELECT:
#if U8G_SPI_USE_MODE_3 // LCD SPI is running mode 3 while SD card is running mode 0
if (arg_val) { // SCK idle state needs to be set to the proper idle state before
// the next chip select goes active
#if ENABLED(FYSETC_MINI_12864) // LCD SPI is running mode 3 while SD card is running mode 0
if (arg_val) { // SCK idle state needs to be set to the proper idle state before
// the next chip select goes active
u8g_com_arduino_digital_write(u8g, U8G_PI_SCK, 1); // Set SCK to mode 3 idle state before CS goes active
u8g_com_arduino_digital_write(u8g, U8G_PI_CS, LOW);
}

View File

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

View File

@@ -1,6 +1,6 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2021 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
@@ -21,19 +21,11 @@
*/
#pragma once
#include "../inc/MarlinConfigPre.h"
#include <avr/wdt.h>
#include <Wire.h>
#include <INA226.h>
// Initialize watchdog with a 4 second interrupt time
void watchdog_init();
class Ammeter {
private:
static float scale;
public:
static float current;
static void init();
static float read();
};
extern Ammeter ammeter;
// Reset watchdog. MUST be called at least every 4 seconds after the
// first watchdog_init or AVR will go into emergency procedures.
inline void HAL_watchdog_refresh() { wdt_reset(); }

View File

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

View File

@@ -1,9 +1,9 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
* 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
*
* 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
@@ -32,15 +32,12 @@
#include "../shared/math_32bit.h"
#include "../shared/HAL_SPI.h"
#include "fastio.h"
#include "watchdog.h"
#include <stdint.h>
#include "../../core/serial_hook.h"
// ------------------------
// Serial ports
// ------------------------
typedef ForwardSerial1Class< decltype(Serial) > DefaultSerial1;
typedef ForwardSerial1Class< decltype(Serial1) > DefaultSerial2;
typedef ForwardSerial1Class< decltype(Serial2) > DefaultSerial3;
@@ -100,38 +97,55 @@ extern DefaultSerial4 MSerial3;
#include "MarlinSerial.h"
#include "MarlinSerialUSB.h"
// ------------------------
// Types
// ------------------------
// On AVR this is in math.h?
#define square(x) ((x)*(x))
typedef int8_t pin_t;
#define SHARED_SERVOS HAS_SERVOS // Use shared/servos.cpp
class Servo;
typedef Servo hal_servo_t;
#define SHARED_SERVOS HAS_SERVOS
#define HAL_SERVO_LIB Servo
//
// Interrupts
//
#define sei() interrupts()
#define cli() noInterrupts()
#define CRITICAL_SECTION_START() uint32_t primask = __get_PRIMASK(); __disable_irq()
#define CRITICAL_SECTION_END() if (!primask) __enable_irq()
#define ISRS_ENABLED() (!__get_PRIMASK())
#define ENABLE_ISRS() __enable_irq()
#define DISABLE_ISRS() __disable_irq()
#define CRITICAL_SECTION_START() const bool _irqon = hal.isr_state(); hal.isr_off()
#define CRITICAL_SECTION_END() if (_irqon) hal.isr_on()
void cli(); // Disable interrupts
void sei(); // Enable interrupts
void HAL_clear_reset_source(); // clear reset reason
uint8_t HAL_get_reset_source(); // get reset reason
void HAL_reboot();
//
// ADC
//
#define HAL_ADC_VREF_MV 3300
#define HAL_ADC_RESOLUTION 10
extern uint16_t HAL_adc_result; // result of last ADC conversion
#ifndef analogInputToDigitalPin
#define analogInputToDigitalPin(p) ((p < 12U) ? (p) + 54U : -1)
#endif
#define HAL_ANALOG_SELECT(ch)
inline void HAL_adc_init() {}//todo
#define HAL_ADC_VREF 3.3
#define HAL_ADC_RESOLUTION 10
#define HAL_START_ADC(ch) HAL_adc_start_conversion(ch)
#define HAL_READ_ADC() HAL_adc_result
#define HAL_ADC_READY() true
void HAL_adc_start_conversion(const uint8_t ch);
uint16_t HAL_adc_get_result();
//
// Pin Mapping for M42, M43, M226
// Pin Map
//
#define GET_PIN_MAP_PIN(index) index
#define GET_PIN_MAP_INDEX(pin) pin
@@ -140,19 +154,30 @@ typedef Servo hal_servo_t;
//
// Tone
//
void toneInit();
void tone(const pin_t _pin, const unsigned int frequency, const unsigned long duration=0);
void noTone(const pin_t _pin);
// ------------------------
// Class Utilities
// ------------------------
// Enable hooks into idle and setup for HAL
#define HAL_IDLETASK 1
void HAL_idletask();
void HAL_init();
//
// Utility functions
//
void _delay_ms(const int delay);
#pragma GCC diagnostic push
#if GCC_VERSION <= 50000
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wunused-function"
#endif
#pragma GCC diagnostic pop
int freeMemory();
#if GCC_VERSION <= 50000
#pragma GCC diagnostic pop
#endif
#ifdef __cplusplus
extern "C" {
@@ -161,73 +186,3 @@ char *dtostrf(double __val, signed char __width, unsigned char __prec, char *__s
#ifdef __cplusplus
}
#endif
// Return free RAM between end of heap (or end bss) and whatever is current
int freeMemory();
// ------------------------
// MarlinHAL Class
// ------------------------
class MarlinHAL {
public:
// Earliest possible init, before setup()
MarlinHAL() {}
// Watchdog
static void watchdog_init() IF_DISABLED(USE_WATCHDOG, {});
static void watchdog_refresh() IF_DISABLED(USE_WATCHDOG, {});
static void init(); // Called early in setup()
static void init_board(); // Called less early in setup()
static void reboot(); // Restart the firmware
// Interrupts
static bool isr_state() { return !__get_PRIMASK(); }
static void isr_on() { __enable_irq(); }
static void isr_off() { __disable_irq(); }
static void delay_ms(const int ms) { delay(ms); }
// Tasks, called from idle()
static void idletask();
// Reset
static uint8_t get_reset_source();
static void clear_reset_source() {}
// Free SRAM
static int freeMemory() { return ::freeMemory(); }
//
// ADC Methods
//
static uint16_t adc_result;
// Called by Temperature::init once at startup
static void adc_init() {}
// Called by Temperature::init for each sensor at startup
static void adc_enable(const uint8_t /*ch*/) {}
// Begin ADC sampling on the given channel. Called from Temperature::isr!
static void adc_start(const uint8_t ch) { adc_result = analogRead(ch); }
// Is the ADC ready for reading?
static bool adc_ready() { return true; }
// The current value of the ADC register
static uint16_t adc_value() { return adc_result; }
/**
* Set the PWM duty cycle for the pin to the given value.
* No inverting the duty cycle in this HAL.
* No changing the maximum size of the provided value to enable finer PWM duty control in this HAL.
*/
static void set_pwm_duty(const pin_t pin, const uint16_t v, const uint16_t=255, const bool=false) {
analogWrite(pin, v);
}
};

View File

@@ -25,7 +25,7 @@
#if ENABLED(POSTMORTEM_DEBUGGING)
#include "../shared/MinSerial.h"
#include "../shared/HAL_MinSerial.h"
#include <stdarg.h>
@@ -73,18 +73,18 @@ void install_min_serial() {
}
#if DISABLED(DYNAMIC_VECTORTABLE)
extern "C" {
__attribute__((naked)) void JumpHandler_ASM() {
__asm__ __volatile__ (
"b CommonHandler_ASM\n"
);
}
void __attribute__((naked, alias("JumpHandler_ASM"))) HardFault_Handler();
void __attribute__((naked, alias("JumpHandler_ASM"))) BusFault_Handler();
void __attribute__((naked, alias("JumpHandler_ASM"))) UsageFault_Handler();
void __attribute__((naked, alias("JumpHandler_ASM"))) MemManage_Handler();
void __attribute__((naked, alias("JumpHandler_ASM"))) NMI_Handler();
extern "C" {
__attribute__((naked)) void JumpHandler_ASM() {
__asm__ __volatile__ (
"b CommonHandler_ASM\n"
);
}
void __attribute__((naked, alias("JumpHandler_ASM"))) HardFault_Handler();
void __attribute__((naked, alias("JumpHandler_ASM"))) BusFault_Handler();
void __attribute__((naked, alias("JumpHandler_ASM"))) UsageFault_Handler();
void __attribute__((naked, alias("JumpHandler_ASM"))) MemManage_Handler();
void __attribute__((naked, alias("JumpHandler_ASM"))) NMI_Handler();
}
#endif
#endif // POSTMORTEM_DEBUGGING

View File

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

View File

@@ -41,7 +41,7 @@
practice, we need alignment to 256 bytes to make this work in all
cases */
__attribute__ ((aligned(256)))
static DeviceVectors ram_tab[61] = { nullptr };
static DeviceVectors ram_tab = { nullptr };
/**
* This function checks if the exception/interrupt table is already in SRAM or not.

View File

@@ -1,26 +0,0 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2021 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
*/
#pragma once
#include <SPI.h>
using MarlinSPI = SPIClass;

View File

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

View File

@@ -30,7 +30,6 @@
#include <WString.h>
#include "../../inc/MarlinConfigPre.h"
#include "../../core/types.h"
#include "../../core/serial_hook.h"
// Define constants and variables for buffering incoming serial data. We're
@@ -53,6 +52,10 @@
// #error "TX_BUFFER_SIZE must be 0, a power of 2 greater than 1, and no greater than 256."
//#endif
// Templated type selector
template<bool b, typename T, typename F> struct TypeSelector { typedef T type;} ;
template<typename T, typename F> struct TypeSelector<false, T, F> { typedef F type; };
// Templated structure wrapper
template<typename S, unsigned int addr> struct StructWrapper {
constexpr StructWrapper(int) {}
@@ -73,7 +76,7 @@ protected:
static constexpr int HWUART_IRQ_ID = IRQ_IDS[Cfg::PORT];
// Base size of type on buffer size
typedef uvalue_t(Cfg::RX_SIZE - 1) ring_buffer_pos_t;
typedef typename TypeSelector<(Cfg::RX_SIZE>256), uint16_t, uint8_t>::type ring_buffer_pos_t;
struct ring_buffer_r {
volatile ring_buffer_pos_t head, tail;
@@ -115,7 +118,7 @@ public:
static size_t write(const uint8_t c);
static void flushTX();
static bool emergency_parser_enabled() { return Cfg::EMERGENCYPARSER; }
static inline bool emergency_parser_enabled() { return Cfg::EMERGENCYPARSER; }
FORCE_INLINE static uint8_t dropped() { return Cfg::DROPPED_RX ? rx_dropped_bytes : 0; }
FORCE_INLINE static uint8_t buffer_overruns() { return Cfg::RX_OVERRUNS ? rx_buffer_overruns : 0; }

View File

@@ -41,7 +41,7 @@ extern "C" {
int udi_cdc_getc();
bool udi_cdc_is_tx_ready();
int udi_cdc_putc(int value);
}
};
// Pending character
static int pending_char = -1;

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -57,16 +57,16 @@
#include "../../../inc/MarlinConfigPre.h"
#if HAS_MARLINUI_U8GLIB && !IS_U8GLIB_ST7920
#if HAS_MARLINUI_U8GLIB && DISABLED(U8GLIB_ST7920)
#include "u8g_com_HAL_DUE_sw_spi_shared.h"
#include "../../shared/Marduino.h"
#include "../../shared/Delay.h"
#include <U8glib-HAL.h>
#include <U8glib.h>
#if U8G_SPI_USE_MODE_3
#if ENABLED(FYSETC_MINI_12864)
#define SPISEND_SW_DUE u8g_spiSend_sw_DUE_mode_3
#else
#define SPISEND_SW_DUE u8g_spiSend_sw_DUE_mode_0
@@ -96,15 +96,15 @@ uint8_t u8g_com_HAL_DUE_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void
break;
case U8G_COM_MSG_CHIP_SELECT:
#if U8G_SPI_USE_MODE_3 // LCD SPI is running mode 3 while SD card is running mode 0
if (arg_val) { // SCK idle state needs to be set to the proper idle state before
// the next chip select goes active
u8g_SetPILevel_DUE(u8g, U8G_PI_SCK, 1); // Set SCK to mode 3 idle state before CS goes active
#if ENABLED(FYSETC_MINI_12864) // LCD SPI is running mode 3 while SD card is running mode 0
if (arg_val) { // SCK idle state needs to be set to the proper idle state before
// the next chip select goes active
u8g_SetPILevel_DUE(u8g, U8G_PI_SCK, 1); //set SCK to mode 3 idle state before CS goes active
u8g_SetPILevel_DUE(u8g, U8G_PI_CS, LOW);
}
else {
u8g_SetPILevel_DUE(u8g, U8G_PI_CS, HIGH);
u8g_SetPILevel_DUE(u8g, U8G_PI_SCK, 0); // Set SCK to mode 0 idle state after CS goes inactive
u8g_SetPILevel_DUE(u8g, U8G_PI_SCK, 0); //set SCK to mode 0 idle state after CS goes inactive
}
#else
u8g_SetPILevel_DUE(u8g, U8G_PI_CS, !arg_val);
@@ -141,5 +141,5 @@ uint8_t u8g_com_HAL_DUE_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void
return 1;
}
#endif // HAS_MARLINUI_U8GLIB && !IS_U8GLIB_ST7920
#endif // HAS_MARLINUI_U8GLIB && !U8GLIB_ST7920
#endif // ARDUINO_ARCH_SAM

View File

@@ -62,7 +62,7 @@
#include "../../../inc/MarlinConfig.h"
#include "../../shared/Delay.h"
#include <U8glib-HAL.h>
#include <U8glib.h>
#include "u8g_com_HAL_DUE_sw_spi_shared.h"
@@ -81,7 +81,7 @@ Pio *SCK_pPio, *MOSI_pPio;
uint32_t SCK_dwMask, MOSI_dwMask;
void u8g_spiSend_sw_DUE_mode_0(uint8_t val) { // 3MHz
for (uint8_t i = 0; i < 8; ++i) {
LOOP_L_N(i, 8) {
if (val & 0x80)
MOSI_pPio->PIO_SODR = MOSI_dwMask;
else
@@ -95,7 +95,7 @@ void u8g_spiSend_sw_DUE_mode_0(uint8_t val) { // 3MHz
}
void u8g_spiSend_sw_DUE_mode_3(uint8_t val) { // 3.5MHz
for (uint8_t i = 0; i < 8; ++i) {
LOOP_L_N(i, 8) {
SCK_pPio->PIO_CODR = SCK_dwMask;
DELAY_NS(50);
if (val & 0x80)

View File

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

View File

@@ -1,9 +1,10 @@
/**
* 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
* 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
@@ -198,9 +199,10 @@ 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_MSG("EEPROM PageWrite ", page);
DEBUG_ECHOLNPGM(" in FLASH address ", (uint32_t)addrflash);
DEBUG_ECHOLNPGM(" base address ", (uint32_t)getFlashStorage(0));
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();
// Get the page relative to the start of the EFC controller, and the EFC controller to use
@@ -243,7 +245,8 @@ static bool ee_PageWrite(uint16_t page, const void *data) {
// Reenable interrupts
__enable_irq();
DEBUG_ECHO_MSG("EEPROM Unlock failure for page ", page);
DEBUG_ECHO_START();
DEBUG_ECHOLNPAIR("EEPROM Unlock failure for page ", page);
return false;
}
@@ -267,7 +270,8 @@ static bool ee_PageWrite(uint16_t page, const void *data) {
// Reenable interrupts
__enable_irq();
DEBUG_ECHO_MSG("EEPROM Write failure for page ", page);
DEBUG_ECHO_START();
DEBUG_ECHOLNPAIR("EEPROM Write failure for page ", page);
return false;
}
@@ -282,7 +286,8 @@ static bool ee_PageWrite(uint16_t page, const void *data) {
if (memcmp(getFlashStorage(page),data,PageSize)) {
#ifdef EE_EMU_DEBUG
DEBUG_ECHO_MSG("EEPROM Verify Write failure for page ", page);
DEBUG_ECHO_START();
DEBUG_ECHOLNPAIR("EEPROM Verify Write failure for page ", page);
ee_Dump( page, (uint32_t *)addrflash);
ee_Dump(-page, data);
@@ -301,7 +306,7 @@ static bool ee_PageWrite(uint16_t page, const void *data) {
}
}
}
DEBUG_ECHOLNPGM("--> Differing bits: ", count);
DEBUG_ECHOLNPAIR("--> Differing bits: ", count);
#endif
return false;
@@ -320,9 +325,10 @@ static bool ee_PageErase(uint16_t page) {
uint16_t i;
uint32_t addrflash = uint32_t(getFlashStorage(page));
DEBUG_ECHO_MSG("EEPROM PageErase ", page);
DEBUG_ECHOLNPGM(" in FLASH address ", (uint32_t)addrflash);
DEBUG_ECHOLNPGM(" base address ", (uint32_t)getFlashStorage(0));
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();
// Get the page relative to the start of the EFC controller, and the EFC controller to use
@@ -364,7 +370,8 @@ static bool ee_PageErase(uint16_t page) {
// Reenable interrupts
__enable_irq();
DEBUG_ECHO_MSG("EEPROM Unlock failure for page ",page);
DEBUG_ECHO_START();
DEBUG_ECHOLNPAIR("EEPROM Unlock failure for page ",page);
return false;
}
@@ -387,7 +394,8 @@ static bool ee_PageErase(uint16_t page) {
// Reenable interrupts
__enable_irq();
DEBUG_ECHO_MSG("EEPROM Erase failure for page ",page);
DEBUG_ECHO_START();
DEBUG_ECHOLNPAIR("EEPROM Erase failure for page ",page);
return false;
}
@@ -402,7 +410,8 @@ 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_MSG("EEPROM Verify Erase failure for page ",page);
DEBUG_ECHO_START();
DEBUG_ECHOLNPAIR("EEPROM Verify Erase failure for page ",page);
ee_Dump(page, (uint32_t *)addrflash);
return false;
}
@@ -912,7 +921,8 @@ static void ee_Init() {
// If all groups seem to be used, default to first group
if (curGroup >= GroupCount) curGroup = 0;
DEBUG_ECHO_MSG("EEPROM Current Group: ",curGroup);
DEBUG_ECHO_START();
DEBUG_ECHOLNPAIR("EEPROM Current Group: ",curGroup);
DEBUG_FLUSH();
// Now, validate that all the other group pages are empty
@@ -921,7 +931,8 @@ static void ee_Init() {
for (int page = 0; page < PagesPerGroup; page++) {
if (!ee_IsPageClean(grp * PagesPerGroup + page)) {
DEBUG_ECHO_MSG("EEPROM Page ", page, " not clean on group ", grp);
DEBUG_ECHO_START();
DEBUG_ECHOLNPAIR("EEPROM Page ", page, " not clean on group ", grp);
DEBUG_FLUSH();
ee_PageErase(grp * PagesPerGroup + page);
}
@@ -937,13 +948,15 @@ static void ee_Init() {
}
}
DEBUG_ECHO_MSG("EEPROM Active page: ", curPage);
DEBUG_ECHO_START();
DEBUG_ECHOLNPAIR("EEPROM Active page: ", curPage);
DEBUG_FLUSH();
// Make sure the pages following the first clean one are also clean
for (int page = curPage + 1; page < PagesPerGroup; page++) {
if (!ee_IsPageClean(curGroup * PagesPerGroup + page)) {
DEBUG_ECHO_MSG("EEPROM Page ", page, " not clean on active group ", curGroup);
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));
ee_PageErase(curGroup * PagesPerGroup + page);
@@ -958,14 +971,14 @@ static void ee_Init() {
#ifndef MARLIN_EEPROM_SIZE
#define MARLIN_EEPROM_SIZE 0x1000 // 4KB
#endif
size_t PersistentStore::capacity() { return MARLIN_EEPROM_SIZE - eeprom_exclude_size; }
size_t PersistentStore::capacity() { return MARLIN_EEPROM_SIZE; }
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) {
uint16_t written = 0;
while (size--) {
uint8_t * const p = (uint8_t * const)REAL_EEPROM_ADDR(pos);
uint8_t * const p = (uint8_t * const)pos;
uint8_t v = *value;
if (v != ee_Read(uint32_t(p))) { // EEPROM has only ~100,000 write cycles, so only write bytes that have changed!
ee_Write(uint32_t(p), v);
@@ -984,7 +997,7 @@ bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, ui
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(REAL_EEPROM_ADDR(pos)));
uint8_t c = ee_Read(uint32_t(pos));
if (writing) *value = c;
crc16(crc, &c, 1);
pos++;

View File

@@ -1,9 +1,10 @@
/**
* 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
* 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
@@ -36,14 +37,14 @@
#ifndef MARLIN_EEPROM_SIZE
#error "MARLIN_EEPROM_SIZE is required for I2C / SPI EEPROM."
#endif
size_t PersistentStore::capacity() { return MARLIN_EEPROM_SIZE - eeprom_exclude_size; }
size_t PersistentStore::capacity() { return MARLIN_EEPROM_SIZE; }
bool PersistentStore::access_start() { eeprom_init(); return true; }
bool PersistentStore::access_finish() { return true; }
bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, uint16_t *crc) {
uint16_t written = 0;
while (size--) {
uint8_t * const p = (uint8_t * const)REAL_EEPROM_ADDR(pos);
uint8_t * const p = (uint8_t * const)pos;
uint8_t v = *value;
if (v != eeprom_read_byte(p)) { // EEPROM has only ~100,000 write cycles, so only write bytes that have changed!
eeprom_write_byte(p, v);
@@ -62,7 +63,7 @@ bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, ui
bool PersistentStore::read_data(int &pos, uint8_t *value, size_t size, uint16_t *crc, const bool writing/*=true*/) {
do {
const uint8_t c = eeprom_read_byte((uint8_t*)REAL_EEPROM_ADDR(pos));
uint8_t c = eeprom_read_byte((uint8_t*)pos);
if (writing) *value = c;
crc16(crc, &c, 1);
pos++;

View File

@@ -47,34 +47,21 @@ void endstop_ISR() { endstops.update(); }
void setup_endstop_interrupts() {
#define _ATTACH(P) attachInterrupt(digitalPinToInterrupt(P), endstop_ISR, CHANGE)
TERN_(USE_X_MAX, _ATTACH(X_MAX_PIN));
TERN_(USE_X_MIN, _ATTACH(X_MIN_PIN));
TERN_(USE_Y_MAX, _ATTACH(Y_MAX_PIN));
TERN_(USE_Y_MIN, _ATTACH(Y_MIN_PIN));
TERN_(USE_Z_MAX, _ATTACH(Z_MAX_PIN));
TERN_(USE_Z_MIN, _ATTACH(Z_MIN_PIN));
TERN_(USE_X2_MAX, _ATTACH(X2_MAX_PIN));
TERN_(USE_X2_MIN, _ATTACH(X2_MIN_PIN));
TERN_(USE_Y2_MAX, _ATTACH(Y2_MAX_PIN));
TERN_(USE_Y2_MIN, _ATTACH(Y2_MIN_PIN));
TERN_(USE_Z2_MAX, _ATTACH(Z2_MAX_PIN));
TERN_(USE_Z2_MIN, _ATTACH(Z2_MIN_PIN));
TERN_(USE_Z3_MAX, _ATTACH(Z3_MAX_PIN));
TERN_(USE_Z3_MIN, _ATTACH(Z3_MIN_PIN));
TERN_(USE_Z4_MAX, _ATTACH(Z4_MAX_PIN));
TERN_(USE_Z4_MIN, _ATTACH(Z4_MIN_PIN));
TERN_(USE_Z_MIN_PROBE, _ATTACH(Z_MIN_PROBE_PIN));
TERN_(USE_CALIBRATION, _ATTACH(CALIBRATION_PIN));
TERN_(USE_I_MAX, _ATTACH(I_MAX_PIN));
TERN_(USE_I_MIN, _ATTACH(I_MIN_PIN));
TERN_(USE_J_MAX, _ATTACH(J_MAX_PIN));
TERN_(USE_J_MIN, _ATTACH(J_MIN_PIN));
TERN_(USE_K_MAX, _ATTACH(K_MAX_PIN));
TERN_(USE_K_MIN, _ATTACH(K_MIN_PIN));
TERN_(USE_U_MAX, _ATTACH(U_MAX_PIN));
TERN_(USE_U_MIN, _ATTACH(U_MIN_PIN));
TERN_(USE_V_MAX, _ATTACH(V_MAX_PIN));
TERN_(USE_V_MIN, _ATTACH(V_MIN_PIN));
TERN_(USE_W_MAX, _ATTACH(W_MAX_PIN));
TERN_(USE_W_MIN, _ATTACH(W_MIN_PIN));
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));
}

View File

@@ -189,12 +189,12 @@
*/
// UART
#define RXD 0
#define TXD 1
#define RXD DIO0
#define TXD DIO1
// TWI (I2C)
#define SCL 21
#define SDA 20
#define SCL DIO21
#define SDA DIO20
/**
* pins

View File

@@ -25,7 +25,7 @@
* is NOT used to directly toggle pins. The ISR writes to the pin assigned to
* that interrupt.
*
* All PWMs use the same repetition rate. The G2 needs about 10kHz min in order to
* All PWMs use the same repetition rate. The G2 needs about 10KHz min in order to
* not have obvious ripple on the Vref signals.
*
* The data structures are setup to minimize the computation done by the ISR which
@@ -61,7 +61,7 @@
#else
#define G2_PWM_Z 0
#endif
#if HAS_MOTOR_CURRENT_PWM_E
#if PIN_EXISTS(MOTOR_CURRENT_PWM_E)
#define G2_PWM_E 1
#else
#define G2_PWM_E 0

View File

@@ -49,6 +49,7 @@ extern volatile uint32_t *SODR_A, *SODR_B, *CODR_A, *CODR_B;
#define PWM_MAP_INIT_ROW(IO,ZZ) { ZZ == 'A' ? SODR_A : SODR_B, ZZ == 'A' ? CODR_A : CODR_B, 1 << _PIN(IO) }
#define PWM_MAP_INIT { PWM_MAP_INIT_ROW(MOTOR_CURRENT_PWM_X_PIN, 'B'), \
PWM_MAP_INIT_ROW(MOTOR_CURRENT_PWM_Y_PIN, 'B'), \
PWM_MAP_INIT_ROW(MOTOR_CURRENT_PWM_Z_PIN, 'B'), \
@@ -62,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{ for (uint8_t i = 0; i < 6; ++i) work_table[i] = active_table[i]; }while(0)
#define COPY_ACTIVE_TABLE() do{ LOOP_L_N(i, 6) 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

View File

@@ -168,6 +168,7 @@ const G2_PinDescription G2_g_APinDescription[] = {
{ PIOB, PIO_PB21, ID_PIOB, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN 52
{ PIOB, PIO_PB14, ID_PIOB, PIO_OUTPUT_0, PIO_DEFAULT, PIN_ATTR_DIGITAL, NO_ADC, NO_ADC, NOT_ON_PWM, NOT_ON_TIMER }, // PIN 53
// 54 .. 65 - Analog pins
// ----------------------
{ PIOA, PIO_PA16X1_AD7, ID_PIOA, PIO_INPUT, PIO_DEFAULT, PIN_ATTR_ANALOG, ADC0, ADC7, NOT_ON_PWM, NOT_ON_TIMER }, // AD0

View File

@@ -20,3 +20,7 @@
*
*/
#pragma once
#if HAS_SPI_TFT || HAS_FSMC_TFT
#error "Sorry! TFT displays are not available for HAL/DUE."
#endif

View File

@@ -23,6 +23,6 @@
#if USE_FALLBACK_EEPROM
#define FLASH_EEPROM_EMULATION
#elif ANY(I2C_EEPROM, SPI_EEPROM)
#elif EITHER(I2C_EEPROM, SPI_EEPROM)
#define USE_SHARED_EEPROM 1
#endif

View File

@@ -1,22 +0,0 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2024 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
*/
#pragma once

View File

@@ -25,34 +25,6 @@
* Test Arduino Due specific configuration values for errors at compile-time.
*/
#if HAS_SPI_TFT || HAS_FSMC_TFT
#error "Sorry! TFT displays are not available for HAL/DUE."
#endif
/**
* Check for common serial pin conflicts
*/
#define CHECK_SERIAL_PIN(N) ( \
X_STOP_PIN == N || Y_STOP_PIN == N || Z_STOP_PIN == N \
|| X_MIN_PIN == N || Y_MIN_PIN == N || Z_MIN_PIN == N \
|| X_MAX_PIN == N || Y_MAX_PIN == N || Z_MAX_PIN == N \
|| X_STEP_PIN == N || Y_STEP_PIN == N || Z_STEP_PIN == N \
|| X_DIR_PIN == N || Y_DIR_PIN == N || Z_DIR_PIN == N \
|| X_ENA_PIN == N || Y_ENA_PIN == N || Z_ENA_PIN == N \
)
#if SERIAL_IN_USE(0) // D0-D1. No known conflicts.
#endif
#if SERIAL_IN_USE(1) && (CHECK_SERIAL_PIN(18) || CHECK_SERIAL_PIN(19))
#error "Serial Port 1 pin D18 and/or D19 conflicts with another pin on the board."
#endif
#if SERIAL_IN_USE(2) && (CHECK_SERIAL_PIN(16) || CHECK_SERIAL_PIN(17))
#error "Serial Port 2 pin D16 and/or D17 conflicts with another pin on the board."
#endif
#if SERIAL_IN_USE(3) && (CHECK_SERIAL_PIN(14) || CHECK_SERIAL_PIN(15))
#error "Serial Port 3 pin D14 and/or D15 conflicts with another pin on the board."
#endif
#undef CHECK_SERIAL_PIN
/**
* HARDWARE VS. SOFTWARE SPI COMPATIBILITY
*
@@ -68,25 +40,22 @@
* Usually the hardware SPI pins are only available to the LCD. This makes the DUE hard SPI used at the same time
* as the TMC2130 soft SPI the most common setup.
*/
#if HAS_MEDIA && HAS_DRIVER(TMC2130)
#define _IS_HW_SPI(P) (defined(TMC_SPI_##P) && (TMC_SPI_##P == SD_MOSI_PIN || TMC_SPI_##P == SD_MISO_PIN || TMC_SPI_##P == SD_SCK_PIN))
#if DISABLED(SOFTWARE_SPI) && ENABLED(TMC_USE_SW_SPI) && (_IS_HW_SPI(MOSI) || _IS_HW_SPI(MISO) || _IS_HW_SPI(SCK))
#error "DUE hardware SPI is required but is incompatible with TMC2130 software SPI. Either disable TMC_USE_SW_SPI or use separate pins for the two SPIs."
#endif
#if ENABLED(SOFTWARE_SPI) && DISABLED(TMC_USE_SW_SPI)
#define _IS_HW_SPI(P) (defined(TMC_SW_##P) && (TMC_SW_##P == SD_MOSI_PIN || TMC_SW_##P == SD_MISO_PIN || TMC_SW_##P == SD_SCK_PIN))
#if ENABLED(SDSUPPORT) && HAS_DRIVER(TMC2130)
#if ENABLED(TMC_USE_SW_SPI)
#if DISABLED(DUE_SOFTWARE_SPI) && (_IS_HW_SPI(MOSI) || _IS_HW_SPI(MISO) || _IS_HW_SPI(SCK))
#error "DUE hardware SPI is required but is incompatible with TMC2130 software SPI. Either disable TMC_USE_SW_SPI or use separate pins for the two SPIs."
#endif
#elif ENABLED(DUE_SOFTWARE_SPI)
#error "DUE software SPI is required but is incompatible with TMC2130 hardware SPI. Enable TMC_USE_SW_SPI to fix."
#endif
#undef _IS_HW_SPI
#endif
#if ENABLED(FAST_PWM_FAN) || SPINDLE_LASER_FREQUENCY
#error "Features requiring Hardware PWM (FAST_PWM_FAN, SPINDLE_LASER_FREQUENCY) are not yet supported for HAL/DUE."
#error "Features requiring Hardware PWM (FAST_PWM_FAN, SPINDLE_LASER_FREQUENCY) are not yet supported on DUE."
#endif
#if HAS_TMC_SW_SERIAL
#error "TMC220x Software Serial is not supported on the DUE platform."
#endif
#if USING_PULLDOWNS
#error "PULLDOWN pin mode is not available on DUE boards."
#endif

View File

@@ -2,9 +2,6 @@
* 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
@@ -53,7 +50,7 @@
* The net result is that both the g_pinStatus[pin] array and the PIO_OSR register
* needs to be looked at when determining if a pin is an input or an output.
*
* b) Due has only pins 6, 7, 8 & 9 enabled for PWMs. FYI - they run at 1kHz
* b) Due has only pins 6, 7, 8 & 9 enabled for PWMs. FYI - they run at 1KHz
*
* c) NUM_DIGITAL_PINS does not include the analog pins
*
@@ -64,12 +61,12 @@
#define NUMBER_PINS_TOTAL PINS_COUNT
#define digitalRead_mod(p) extDigitalRead(p) // AVR digitalRead disabled PWM before it read the pin
#define PRINT_PORT(p)
#define PRINT_ARRAY_NAME(x) do{ sprintf_P(buffer, PSTR("%-" STRINGIFY(MAX_NAME_LENGTH) "s"), pin_array[x].name); SERIAL_ECHO(buffer); }while(0)
#define PRINT_PIN(p) do{ sprintf_P(buffer, PSTR("%02d"), p); SERIAL_ECHO(buffer); }while(0)
#define PRINT_PIN_ANALOG(p) do{ sprintf_P(buffer, PSTR(" (A%2d) "), DIGITAL_PIN_TO_ANALOG_PIN(pin)); SERIAL_ECHO(buffer); }while(0)
#define GET_ARRAY_PIN(p) pin_array[p].pin
#define GET_ARRAY_IS_DIGITAL(p) pin_array[p].is_digital
#define VALID_PIN(pin) (pin >= 0 && pin < int8_t(NUMBER_PINS_TOTAL))
#define VALID_PIN(pin) (pin >= 0 && pin < (int8_t)NUMBER_PINS_TOTAL ? 1 : 0)
#define DIGITAL_PIN_TO_ANALOG_PIN(p) int(p - analogInputToDigitalPin(0))
#define IS_ANALOG(P) WITHIN(P, char(analogInputToDigitalPin(0)), char(analogInputToDigitalPin(NUM_ANALOG_INPUTS - 1)))
#define pwm_status(pin) (((g_pinStatus[pin] & 0xF) == PIN_STATUS_PWM) && \
@@ -85,15 +82,14 @@ bool GET_PINMODE(int8_t pin) { // 1: output, 0: input
|| pwm_status(pin));
}
void pwm_details(int32_t pin) {
if (pwm_status(pin)) {
uint32_t chan = g_APinDescription[pin].ulPWMChannel;
SERIAL_ECHOPGM("PWM = ", PWM_INTERFACE->PWM_CH_NUM[chan].PWM_CDTY);
SERIAL_ECHOPAIR("PWM = ", PWM_INTERFACE->PWM_CH_NUM[chan].PWM_CDTY);
}
}
void print_port(const pin_t) {}
/**
* DUE Board pin | PORT | Label
* ----------------+--------+-------

View File

@@ -24,7 +24,7 @@
/**
* Define SPI Pins: SCK, MISO, MOSI, SS
*
* Available chip select pins for HW SPI are 4 10 52 77 87
* Available chip select pins for HW SPI are 4 10 52 77
*/
#if SDSS == 4 || SDSS == 10 || SDSS == 52 || SDSS == 77 || SDSS == 87
#if SDSS == 4
@@ -48,7 +48,7 @@
#define SD_MOSI_PIN 75
#else
// defaults
#define SOFTWARE_SPI
#define DUE_SOFTWARE_SPI
#ifndef SD_SCK_PIN
#define SD_SCK_PIN 52
#endif

View File

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

View File

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

View File

@@ -1,34 +0,0 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2023 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
*/
#pragma once
/**
* DUE (SAM3X8E) LCD-specific defines
*/
uint8_t u8g_com_HAL_DUE_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr);
uint8_t u8g_com_HAL_DUE_shared_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr);
uint8_t u8g_com_HAL_DUE_ST7920_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr);
#define U8G_COM_HAL_SW_SPI_FN u8g_com_HAL_DUE_sw_spi_fn
#define U8G_COM_HAL_HW_SPI_FN u8g_com_HAL_DUE_shared_hw_spi_fn
#define U8G_COM_ST7920_HAL_SW_SPI u8g_com_HAL_DUE_ST7920_sw_spi_fn

View File

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

View File

@@ -1,29 +0,0 @@
# USB Files Source Documentation
## Source
We sourced the USB files in Marlin from the Atmel ASF (Advanced Software Framework). The framework provides a variety of examples which were utilized in this project.
Atmel doesn't provide these files in a source repository but they can be extracted from ASF, which can be downloaded from Atmel.
[Advanced Software Framework](https://www.microchip.com/en-us/tools-resources/develop/libraries/advanced-software-framework)
## Modifications
The files are mostly unmodified except for minor cosmetic changes but some more significant changes were needed.
The changes that prompted the addition of this README file are listed below. Other changes may have been made prior to this.
1. Modified `uotghs_device_due.c` to resolve race conditions that could leave interrupts asserted when freezing the peripheral clock, resulting in hangs and watchdog resets due to the ensuing interrupt storm.
## Version Information
We don't know the exact version of ASF used as the source. However, the copyright information in the files indicates they are from 2015.
## Upgrade Considerations
We looked at the ASF 3.52.0 files released in 2022 but saw no immediate benefits to justify an upgrade. It's important to note that the files in Marlin don't follow the same folder structure as the files in ASF, which complicates the process of comparing and applying updated files.
When these files are updated it's important to carefully compare them to Marlin's versions so any improvements in the Marlin sources are brought forward.
It would be best to make Marlin's directory structure align with ASF or at least document the source of each file to ease future updates.

View File

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

View File

@@ -142,6 +142,7 @@
*/
#define COMPILER_PACK_RESET() COMPILER_PRAGMA(pack())
/**
* \brief Set aligned boundary.
*/
@@ -282,6 +283,7 @@ typedef double F64; //!< 64-bit floating-point number.
typedef uint32_t iram_size_t;
//! @}
/*! \name Status Types
*/
//! @{
@@ -289,6 +291,7 @@ typedef bool Status_bool_t; //!< Boolean status.
typedef U8 Status_t; //!< 8-bit-coded status.
//! @}
/*! \name Aliasing Aggregate Types
*/
//! @{
@@ -459,6 +462,7 @@ typedef struct
#endif
//! @}
#ifndef __ASSEMBLY__ // not for assembling.
//! \name Optimization Control
@@ -577,6 +581,7 @@ typedef struct
//! @}
/*! \name Zero-Bit Counting
*
* Under GCC, __builtin_clz and __builtin_ctz behave like macros when
@@ -687,6 +692,7 @@ typedef struct
//! @}
/*! \name Bit Reversing
*/
//! @{
@@ -726,6 +732,7 @@ typedef struct
//! @}
/*! \name Alignment
*/
//! @{
@@ -791,6 +798,7 @@ typedef struct
*/
#define Long_call(addr) ((*(void (*)(void))(addr))())
/*! \name MCU Endianism Handling
* ARM is MCU little endianism.
*/
@@ -860,6 +868,7 @@ typedef struct
#define CPU_TO_BE32(x) swap32(x)
//! @}
/*! \name Endianism Conversion
*
* The same considerations as for clz and ctz apply here but GCC's
@@ -946,6 +955,7 @@ typedef struct
//! @}
/*! \name Target Abstraction
*/
//! @{
@@ -987,6 +997,7 @@ typedef U8 Byte; //!< 8-bit unsigned integer.
#endif // #ifndef __ASSEMBLY__
#ifdef __ICCARM__
#define SHORTENUM __packed
#elif defined(__GNUC__)
@@ -1048,7 +1059,7 @@ static inline void convert_64_bit_to_byte_array(uint64_t value, uint8_t *data)
while (val_index < 8)
{
data[val_index++] = value & 0xFF;
value >>= 8;
value = value >> 8;
}
}

View File

@@ -81,6 +81,7 @@
#define LUN_0_NAME "\"SD/MMC Card\""
//! @}
/*! \name Actions Associated with Memory Accesses
*
* Write here the action to associate with each memory access.
@@ -111,4 +112,5 @@
#define GLOBAL_WR_PROTECT false //!< Management of a global write protection.
//! @}
#endif // _CONF_ACCESS_H_

View File

@@ -96,4 +96,5 @@
// - UPLL frequency: 480MHz
// - USB clock: 480 / 1 = 480MHz
#endif /* CONF_CLOCK_H_INCLUDED */

View File

@@ -88,6 +88,7 @@
#endif
//@}
/**
* USB Device Callbacks definitions (Optional)
* @{
@@ -100,7 +101,7 @@
#define USB_DEVICE_SPECIFIC_REQUEST() usb_task_other_requests()
//@}
#if HAS_MEDIA
#if ENABLED(SDSUPPORT)
/**
* USB Device low level configuration
* When only one interface is used, these configurations are defined by the class module.
@@ -149,6 +150,7 @@
//@}
/**
* USB Interface Configuration
* @{
@@ -183,7 +185,7 @@
//! Enable id string of interface to add an extra USB string
#define UDI_CDC_IAD_STRING_ID 4
#if HAS_MEDIA
#if ENABLED(SDSUPPORT)
/**
* USB CDC low level configuration
* In standalone these configurations are defined by the CDC module.
@@ -208,6 +210,7 @@
//@}
//@}
/**
* Configuration of MSC interface
* @{
@@ -242,6 +245,7 @@
//@}
/**
* Description of Composite Device
* @{

View File

@@ -68,6 +68,7 @@
#endif
#include "ctrl_access.h"
//_____ D E F I N I T I O N S ______________________________________________
#ifdef FREERTOS_USED
@@ -111,6 +112,7 @@ static xSemaphoreHandle ctrl_access_semphr = NULL;
#endif // FREERTOS_USED
#if MAX_LUN
/*! \brief Initializes an entry of the LUN descriptor table.
@@ -240,14 +242,17 @@ static const struct
#endif
#if GLOBAL_WR_PROTECT == true
bool g_wr_protect;
#endif
/*! \name Control Interface
*/
//! @{
#ifdef FREERTOS_USED
bool ctrl_access_init(void)
@@ -265,6 +270,7 @@ bool ctrl_access_init(void)
return true;
}
/*! \brief Locks accesses to LUNs.
*
* \return \c true if the access was successfully locked, else \c false.
@@ -282,6 +288,7 @@ static bool ctrl_access_lock(void)
#endif // FREERTOS_USED
U8 get_nb_lun(void)
{
#if MEM_USB == ENABLE
@@ -302,11 +309,13 @@ U8 get_nb_lun(void)
#endif
}
U8 get_cur_lun(void)
{
return LUN_ID_0;
}
Ctrl_status mem_test_unit_ready(U8 lun)
{
Ctrl_status status;
@@ -328,6 +337,7 @@ Ctrl_status mem_test_unit_ready(U8 lun)
return status;
}
Ctrl_status mem_read_capacity(U8 lun, U32 *u32_nb_sector)
{
Ctrl_status status;
@@ -349,6 +359,7 @@ Ctrl_status mem_read_capacity(U8 lun, U32 *u32_nb_sector)
return status;
}
U8 mem_sector_size(U8 lun)
{
U8 sector_size;
@@ -370,6 +381,7 @@ U8 mem_sector_size(U8 lun)
return sector_size;
}
bool mem_unload(U8 lun, bool unload)
{
bool unloaded;
@@ -421,6 +433,7 @@ bool mem_wr_protect(U8 lun)
return wr_protect;
}
bool mem_removal(U8 lun)
{
bool removal;
@@ -445,6 +458,7 @@ bool mem_removal(U8 lun)
return removal;
}
const char *mem_name(U8 lun)
{
#if MAX_LUN==0
@@ -461,14 +475,17 @@ const char *mem_name(U8 lun)
#endif
}
//! @}
#if ACCESS_USB == true
/*! \name MEM <-> USB Interface
*/
//! @{
Ctrl_status memory_2_usb(U8 lun, U32 addr, U16 nb_sector)
{
Ctrl_status status;
@@ -488,6 +505,7 @@ Ctrl_status memory_2_usb(U8 lun, U32 addr, U16 nb_sector)
return status;
}
Ctrl_status usb_2_memory(U8 lun, U32 addr, U16 nb_sector)
{
Ctrl_status status;
@@ -507,16 +525,19 @@ Ctrl_status usb_2_memory(U8 lun, U32 addr, U16 nb_sector)
return status;
}
//! @}
#endif // ACCESS_USB == true
#if ACCESS_MEM_TO_RAM == true
/*! \name MEM <-> RAM Interface
*/
//! @{
Ctrl_status memory_2_ram(U8 lun, U32 addr, void *ram)
{
Ctrl_status status;
@@ -543,6 +564,7 @@ Ctrl_status memory_2_ram(U8 lun, U32 addr, void *ram)
return status;
}
Ctrl_status ram_2_memory(U8 lun, U32 addr, const void *ram)
{
Ctrl_status status;
@@ -569,16 +591,19 @@ Ctrl_status ram_2_memory(U8 lun, U32 addr, const void *ram)
return status;
}
//! @}
#endif // ACCESS_MEM_TO_RAM == true
#if ACCESS_STREAM == true
/*! \name Streaming MEM <-> MEM Interface
*/
//! @{
#if ACCESS_MEM_TO_MEM == true
#include "fat.h"
@@ -600,18 +625,21 @@ Ctrl_status stream_mem_to_mem(U8 src_lun, U32 src_addr, U8 dest_lun, U32 dest_ad
#endif // ACCESS_MEM_TO_MEM == true
Ctrl_status stream_state(U8 id)
{
UNUSED(id);
return CTRL_GOOD;
}
U16 stream_stop(U8 id)
{
UNUSED(id);
return 0;
}
//! @}
#endif // ACCESS_STREAM

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