Compare commits

...

141 Commits

Author SHA1 Message Date
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
286 changed files with 28381 additions and 8323 deletions

43
.github/ISSUE_TEMPLATE/bug_report.md vendored Normal file
View File

@@ -0,0 +1,43 @@
---
name: Bug report
about: Report a bug in Marlin
title: "[BUG] (short description)"
labels: ''
assignees: ''
---
<!--
Have you read Marlin's Code of Conduct? By filing an Issue, you are expected to comply with it, including treating everyone with respect: https://github.com/MarlinFirmware/Marlin/blob/master/.github/code_of_conduct.md
Do you want to ask a question? Are you looking for support? Please don't post here. Instead please use one of the support links at https://github.com/MarlinFirmware/Marlin/issues/new/choose
Before filing an issue be sure to test the "bugfix" branches to see whether the issue has been resolved.
-->
### Bug Description
<!-- Description of the bug -->
### My Configurations
**Required:** Please include a ZIP file containing your `Configuration.h` and `Configuration_adv.h` files.
### Steps to Reproduce
<!-- 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
* Provide pictures or links to videos that clearly demonstrate the issue.
* See [How Can I Contribute](#how-can-i-contribute) for additional guidelines.

17
.github/ISSUE_TEMPLATE/config.yml vendored Normal file
View File

@@ -0,0 +1,17 @@
blank_issues_enabled: false
contact_links:
- name: Marlin Documentation
url: http://marlinfw.org/
about: Lots of documentation on installing and using Marlin.
- name: MarlinFirmware Facebook group
url: https://www.facebook.com/groups/1049718498464482
about: Please ask and answer questions here.
- name: Marlin on Discord
url: https://discord.gg/n5NJ59y
about: Join the Discord server for support and discussion.
- name: Marlin Discussion Forum
url: 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
about: Tutorials and more from Marlin users all around the world. Great for new users!

View File

@@ -0,0 +1,35 @@
---
name: Feature request
about: Request a Feature
title: "[FR] (feature request title)"
labels: 'T: Feature Request'
assignees: ''
---
<!--
Have you read Marlin's Code of Conduct? By filing an Issue, you are expected to comply with it, including treating everyone with respect: https://github.com/MarlinFirmware/Marlin/blob/master/.github/code_of_conduct.md
Do you want to ask a question? Are you looking for support? Please don't post here. Instead please use one of the support links at https://github.com/MarlinFirmware/Marlin/issues/new/choose
Before filing an issue be sure to test the "bugfix" branches to see whether the issue has been resolved.
-->
### Description
<!-- Description of the requested feature -->
### Feature Workflow
<!-- Please describe the feature's behavior, user interaction, etc. -->
1. [First Action]
2. [Second Action]
3. [and so on...]
#### Additional Information
* Provide pictures or links that demonstrate a similar feature or concept.
* See [How Can I Contribute](#how-can-i-contribute) for additional guidelines.

View File

@@ -1,35 +1,11 @@
<!--
# NO SUPPORT REQUESTS PLEASE
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. Support Requests posted here will be automatically closed!
Do you want to ask a question? Are you looking for support? Please don't post here. Instead use one of the following options:
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.

35
.github/workflows/bump-date.yml vendored Normal file
View File

@@ -0,0 +1,35 @@
#
# bump-date.yml
# Bump the distribution date once per day
#
name: Bump Distribution Date
on:
schedule:
- cron: '0 0 * * *'
jobs:
bump_date:
name: Bump Distribution Date
if: github.repository == 'MarlinFirmware/Marlin'
runs-on: ubuntu-latest
steps:
- name: Check out bugfix-2.0.x
uses: actions/checkout@v2
with:
ref: bugfix-2.0.x
- name: Bump Distribution Date
run: |
# Inline Bump Script
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

33
.github/workflows/check-pr.yml vendored Normal file
View File

@@ -0,0 +1,33 @@
#
# check-pr.yml
# Close PRs directed at release branches
#
name: PR Bad Target
on:
pull_request:
branches:
- 1.0.x
- 1.1.x
- 2.0.x
jobs:
bad_target:
name: PR Bad Target
if: github.repository == 'MarlinFirmware/Marlin'
runs-on: ubuntu-latest
steps:
- uses: peter-evans/close-pull@v1
with:
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.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.0.x`.
See [this page](http://marlinfw.org/docs/development/getting_started_pull_requests.html) for full instructions.

27
.github/workflows/close-stale.yml vendored Normal file
View File

@@ -0,0 +1,27 @@
#
# close-stale.yml
# Close open issues after a period of inactivity
#
name: Close Stale Issues
on:
schedule:
- cron: "22 1 * * *"
jobs:
stale:
name: Close Stale Issues
if: github.repository == 'MarlinFirmware/Marlin'
runs-on: ubuntu-latest
steps:
- uses: actions/stale@v3
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
stale-issue-message: 'This issue has had no activity in the last 30 days. Please add a reply if you want to keep this issue active, otherwise it will be automatically closed within 7 days.'
days-before-stale: 30
days-before-close: 7
stale-issue-label: 'stale-closing-soon'
exempt-issue-labels: 'T: Feature Request'

32
.github/workflows/lock-closed.yml vendored Normal file
View File

@@ -0,0 +1,32 @@
#
# lock-closed.yml
# Lock closed issues after a period of inactivity
#
name: Lock Closed Issues
on:
schedule:
- cron: '0 1/13 * * *'
jobs:
lock:
name: Lock Closed Issues
if: github.repository == 'MarlinFirmware/Marlin'
runs-on: ubuntu-latest
steps:
- uses: dessant/lock-threads@v2
with:
github-token: ${{ github.token }}
process-only: 'issues'
issue-lock-inactive-days: '60'
issue-exclude-created-before: ''
issue-exclude-labels: 'no-locking'
issue-lock-labels: ''
issue-lock-comment: >
This issue has been automatically locked since there
has not been any recent activity after it was closed.
Please open a new issue for related bugs.
issue-lock-reason: ''

22
.github/workflows/unlock-reopened.yml vendored Normal file
View File

@@ -0,0 +1,22 @@
#
# unlock-reopened.yml
# Unlock an issue whenever it is re-opened
#
name: "Unlock reopened issue"
on:
issues:
types: [reopened]
jobs:
unlock:
name: Unlock Reopened
if: github.repository == 'MarlinFirmware/Marlin'
runs-on: ubuntu-latest
steps:
- uses: OSDKDev/unlock-issues@v1.1
with:
repo-token: "${{ secrets.GITHUB_TOKEN }}"

View File

@@ -346,11 +346,10 @@
#endif
#endif
// @section temperature
//===========================================================================
//============================= Thermal Settings ============================
//===========================================================================
// @section temperature
/**
* --NORMAL IS 4.7kohm PULLUP!-- 1kohm pullup can be used on hotend sensor, using correct resistor and table
@@ -486,12 +485,13 @@
//#define PID_AUTOTUNE_MENU // Add PID auto-tuning to the "Advanced Settings" menu. (~250 bytes of PROGMEM)
//#define PID_PARAMS_PER_HOTEND // Uses separate PID parameters for each extruder (useful for mismatched extruders)
// Set/get with gcode: M301 E[extruder number, 0-2]
#if ENABLED(PID_PARAMS_PER_HOTEND)
// Specify between 1 and HOTENDS values per array.
// If fewer than EXTRUDER values are provided, the last element will be repeated.
#define DEFAULT_Kp_LIST { 22.20, 20.0 }
#define DEFAULT_Ki_LIST { 1.08, 1.0 }
#define DEFAULT_Kd_LIST { 114.00, 112.0 }
#define DEFAULT_Kp_LIST { 22.20, 22.20 }
#define DEFAULT_Ki_LIST { 1.08, 1.08 }
#define DEFAULT_Kd_LIST { 114.00, 114.00 }
#else
#define DEFAULT_Kp 22.20
#define DEFAULT_Ki 1.08
@@ -2304,9 +2304,6 @@
// then the BLUE led is on. Otherwise the RED led is on. (1C hysteresis)
//#define TEMP_STAT_LEDS
// SkeinForge sends the wrong arc G-codes when using Arc Point as fillet procedure
//#define SF_ARC_FIX
// Support for the BariCUDA Paste Extruder
//#define BARICUDA
@@ -2392,17 +2389,12 @@
#define PRINTER_EVENT_LEDS
#endif
/**
* R/C SERVO support
* Sponsored by TrinityLabs, Reworked by codexmas
*/
/**
* Number of servos
*
* For some servo-related options NUM_SERVOS will be set automatically.
* Set this manually if there are extra servos needing manual control.
* Leave undefined or set to 0 to entirely disable the servo subsystem.
* Set to 0 to turn off servo support.
*/
//#define NUM_SERVOS 3 // Servo index starts with 0 for M280 command
@@ -2414,5 +2406,5 @@
// Only power servos during movement, otherwise leave off to prevent jitter
//#define DEACTIVATE_SERVOS_AFTER_MOVE
// Allow servo angle to be edited and saved to EEPROM
// Edit servo angles with M281 and save to EEPROM with M500
//#define EDITABLE_SERVO_ANGLES

View File

@@ -32,11 +32,10 @@
*/
#define CONFIGURATION_ADV_H_VERSION 020007
// @section temperature
//===========================================================================
//============================= Thermal Settings ============================
//===========================================================================
// @section temperature
/**
* Thermocouple sensors are quite sensitive to noise. Any noise induced in
@@ -125,9 +124,19 @@
#define HEATER_BED_INVERTING true
#endif
/**
* Heated Chamber settings
*/
//
// Heated Bed Bang-Bang options
//
#if DISABLED(PIDTEMPBED)
#define BED_CHECK_INTERVAL 5000 // (ms) Interval between checks in bang-bang control
#if ENABLED(BED_LIMIT_SWITCHING)
#define BED_HYSTERESIS 2 // (°C) Only set the relevant heater state when ABS(T-target) > BED_HYSTERESIS
#endif
#endif
//
// Heated Chamber options
//
#if TEMP_SENSOR_CHAMBER
#define CHAMBER_MINTEMP 5
#define CHAMBER_MAXTEMP 60
@@ -135,12 +144,28 @@
//#define CHAMBER_LIMIT_SWITCHING
//#define HEATER_CHAMBER_PIN 44 // Chamber heater on/off pin
//#define HEATER_CHAMBER_INVERTING false
#endif
#if DISABLED(PIDTEMPBED)
#define BED_CHECK_INTERVAL 5000 // ms between checks in bang-bang control
#if ENABLED(BED_LIMIT_SWITCHING)
#define BED_HYSTERESIS 2 // Only disable heating if T>target+BED_HYSTERESIS and enable heating if T>target-BED_HYSTERESIS
//#define CHAMBER_FAN // Enable a fan on the chamber
#if ENABLED(CHAMBER_FAN)
#define CHAMBER_FAN_MODE 2 // Fan control mode: 0=Static; 1=Linear increase when temp is higher than target; 2=V-shaped curve.
#if CHAMBER_FAN_MODE == 0
#define CHAMBER_FAN_BASE 255 // Chamber fan PWM (0-255)
#elif CHAMBER_FAN_MODE == 1
#define CHAMBER_FAN_BASE 128 // Base chamber fan PWM (0-255); turns on when chamber temperature is above the target
#define CHAMBER_FAN_FACTOR 25 // PWM increase per °C above target
#elif CHAMBER_FAN_MODE == 2
#define CHAMBER_FAN_BASE 128 // Minimum chamber fan PWM (0-255)
#define CHAMBER_FAN_FACTOR 25 // PWM increase per °C difference from target
#endif
#endif
//#define CHAMBER_VENT // Enable a servo-controlled vent on the chamber
#if ENABLED(CHAMBER_VENT)
#define CHAMBER_VENT_SERVO_NR 1 // Index of the vent servo
#define HIGH_EXCESS_HEAT_LIMIT 5 // How much above target temp to consider there is excess heat in the chamber
#define LOW_EXCESS_HEAT_LIMIT 3
#define MIN_COOLING_SLOPE_TIME_CHAMBER_VENT 20
#define MIN_COOLING_SLOPE_DEG_CHAMBER_VENT 1.5
#endif
#endif
@@ -771,6 +796,7 @@
//
//#define ASSISTED_TRAMMING
#if ENABLED(ASSISTED_TRAMMING)
// Define positions for probing points, use the hotend as reference not the sensor.
#define TRAMMING_POINT_XY { { 20, 20 }, { 200, 20 }, { 200, 200 }, { 20, 200 } }
@@ -793,6 +819,7 @@
* M5: 50 = Clockwise, 51 = Counter-Clockwise
*/
#define TRAMMING_SCREW_THREAD 30
#endif
// @section motion
@@ -1048,6 +1075,14 @@
#if HAS_LCD_MENU
// Add Probe Z Offset calibration to the Z Probe Offsets menu
#if HAS_BED_PROBE
//#define PROBE_OFFSET_WIZARD
#if ENABLED(PROBE_OFFSET_WIZARD)
#define PROBE_OFFSET_START -4.0 // Estimated nozzle-to-probe Z offset, plus a little extra
#endif
#endif
// Include a page of printer information in the LCD Main Menu
//#define LCD_INFO_MENU
#if ENABLED(LCD_INFO_MENU)
@@ -1342,7 +1377,7 @@
// Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese.
//#define USE_BIG_EDIT_FONT
// A smaller font may be used on the Info Screen. Costs 2300 bytes of PROGMEM.
// A smaller font may be used on the Info Screen. Costs 2434 bytes of PROGMEM.
// Western only. Not available for Cyrillic, Kana, Turkish, Greek, or Chinese.
//#define USE_SMALL_INFOFONT
@@ -1768,6 +1803,7 @@
#define N_ARC_CORRECTION 25 // Number of interpolated segments between corrections
//#define ARC_P_CIRCLES // Enable the 'P' parameter to specify complete circles
//#define CNC_WORKSPACE_PLANES // Allow G2/G3 to operate in XY, ZX, or YZ planes
//#define SF_ARC_FIX // Enable only if using SkeinForge with "Arc Point" fillet procedure
#endif
// Support for G5 with XYZE destination and IJPQ offsets. Requires ~2666 bytes.
@@ -3523,6 +3559,11 @@
//
//#define M100_FREE_MEMORY_WATCHER
//
// M42 - Set pin states
//
//#define DIRECT_PIN_CONTROL
//
// M43 - display pin status, toggle pins, watch pins, watch endstops & toggle LED, test servo probe
//

View File

@@ -22,8 +22,10 @@
# (e.g. UPLOAD_PORT = /dev/tty.USB0). If the exact name of this file
# changes, you can use * as a wild card (e.g. UPLOAD_PORT = /dev/tty.usb*).
#
# 3. Set the line containing "MCU" to match your board's processor.
# Older one's are atmega8 based, newer ones like Arduino Mini, Bluetooth
# 3. Set the line containing "MCU" to match your board's processor. Set
# "PROG_MCU" as the AVR part name corresponding to "MCU". You can use the
# following command to get a list of correspondences: `avrdude -c alf -p x`
# Older boards are atmega8 based, newer ones like Arduino Mini, Bluetooth
# or Diecimila have the atmega168. If you're using a LilyPad Arduino,
# change F_CPU to 8000000. If you are using Gen7 electronics, you
# probably need to use 20000000. Either way, you must regenerate
@@ -34,18 +36,18 @@
# 5. Type "make upload", reset your Arduino board, and press enter to
# upload your program to the Arduino board.
#
# Note that all settings at the top of this file can be overriden from
# Note that all settings at the top of this file can be overridden from
# the command line with, for example, "make HARDWARE_MOTHERBOARD=71"
#
# To compile for RAMPS (atmega2560) with Arduino 1.6.9 at root/arduino you would use...
#
# make ARDUINO_VERSION=10609 AVR_TOOLS_PATH=/root/arduino/hardware/tools/avr/bin/ \
# HARDWARE_MOTHERBOARD=33 ARDUINO_INSTALL_DIR=/root/arduino
# HARDWARE_MOTHERBOARD=1200 ARDUINO_INSTALL_DIR=/root/arduino
#
# To compile and upload simply add "upload" to the end of the line...
#
# make ARDUINO_VERSION=10609 AVR_TOOLS_PATH=/root/arduino/hardware/tools/avr/bin/ \
# HARDWARE_MOTHERBOARD=33 ARDUINO_INSTALL_DIR=/root/arduino upload
# HARDWARE_MOTHERBOARD=1200 ARDUINO_INSTALL_DIR=/root/arduino upload
#
# If uploading doesn't work try adding the parameter "AVRDUDE_PROGRAMMER=wiring" or
# start upload manually (using stk500) like so:
@@ -57,7 +59,26 @@
#
# This defines the board to compile for (see boards.h for your board's ID)
HARDWARE_MOTHERBOARD ?= 11
HARDWARE_MOTHERBOARD ?= 1020
ifeq ($(OS),Windows_NT)
# Windows
ARDUINO_INSTALL_DIR ?= ${HOME}/Arduino
ARDUINO_USER_DIR ?= ${HOME}/Arduino
else
UNAME_S := $(shell uname -s)
ifeq ($(UNAME_S),Linux)
# Linux
ARDUINO_INSTALL_DIR ?= /usr/share/arduino
ARDUINO_USER_DIR ?= ${HOME}/Arduino
endif
ifeq ($(UNAME_S),Darwin)
# Darwin (macOS)
ARDUINO_INSTALL_DIR ?= /Applications/Arduino.app/Contents/Java
ARDUINO_USER_DIR ?= ${HOME}/Documents/Arduino
AVR_TOOLS_PATH ?= /Applications/Arduino.app/Contents/Java/hardware/tools/avr/bin/
endif
endif
# Arduino source install directory, and version number
# On most linuxes this will be /usr/share/arduino
@@ -67,32 +88,38 @@ ARDUINO_VERSION ?= 106
# The installed Libraries are in the User folder
ARDUINO_USER_DIR ?= ${HOME}/Arduino
# You can optionally set a path to the avr-gcc tools. Requires a trailing slash. (ex: /usr/local/avr-gcc/bin)
# You can optionally set a path to the avr-gcc tools.
# Requires a trailing slash. For example, /usr/local/avr-gcc/bin/
AVR_TOOLS_PATH ?=
#Programmer configuration
# Programmer configuration
UPLOAD_RATE ?= 57600
AVRDUDE_PROGRAMMER ?= arduino
# on most linuxes this will be /dev/ttyACM0 or /dev/ttyACM1
# On most linuxes this will be /dev/ttyACM0 or /dev/ttyACM1
UPLOAD_PORT ?= /dev/ttyUSB0
#Directory used to build files in, contains all the build files, from object files to the final hex file
#on linux it is best to put an absolute path like /home/username/tmp .
# Directory used to build files in, contains all the build files, from object
# files to the final hex file on linux it is best to put an absolute path
# like /home/username/tmp .
BUILD_DIR ?= applet
# This defines whether Liquid_TWI2 support will be built
LIQUID_TWI2 ?= 0
# this defines if Wire is needed
# This defines if Wire is needed
WIRE ?= 0
# this defines if U8GLIB is needed (may require RELOC_WORKAROUND)
U8GLIB ?= 1
# 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 whether to include the Trinamic TMCStepper library
TMC ?= 1
# This defines if U8GLIB is needed (may require RELOC_WORKAROUND)
U8GLIB ?= 0
# this defines whether to include the AdaFruit NeoPixel library
# This defines whether to include the Trinamic TMCStepper library
TMC ?= 0
# This defines whether to include the AdaFruit NeoPixel library
NEOPIXEL ?= 0
############
@@ -208,7 +235,8 @@ else ifeq ($(HARDWARE_MOTHERBOARD),1119)
else ifeq ($(HARDWARE_MOTHERBOARD),1120)
# Ultimaker (Older electronics. Pre 1.5.4. This is rare)
else ifeq ($(HARDWARE_MOTHERBOARD),1121)
MCU ?= atmega1280
MCU ?= atmega1280
PROG_MCU ?= m1280
# Azteeg X3
else ifeq ($(HARDWARE_MOTHERBOARD),1122)
@@ -350,9 +378,11 @@ else ifeq ($(HARDWARE_MOTHERBOARD),1320)
# Minitronics v1.0/1.1
else ifeq ($(HARDWARE_MOTHERBOARD),1400)
MCU ?= atmega1281
PROG_MCU ?= m1281
# Silvergate v1.0
else ifeq ($(HARDWARE_MOTHERBOARD),1401)
MCU ?= atmega1281
PROG_MCU ?= m1281
#
# Sanguinololu and Derivatives - ATmega644P, ATmega1284P
@@ -362,46 +392,57 @@ else ifeq ($(HARDWARE_MOTHERBOARD),1401)
else ifeq ($(HARDWARE_MOTHERBOARD),1500)
HARDWARE_VARIANT ?= Sanguino
MCU ?= atmega644p
PROG_MCU ?= m644p
# Sanguinololu 1.2 and above
else ifeq ($(HARDWARE_MOTHERBOARD),1501)
HARDWARE_VARIANT ?= Sanguino
MCU ?= atmega644p
PROG_MCU ?= m644p
# Melzi
else ifeq ($(HARDWARE_MOTHERBOARD),1502)
HARDWARE_VARIANT ?= Sanguino
MCU ?= atmega644p
PROG_MCU ?= m644p
# Melzi V2.0
else ifeq ($(HARDWARE_MOTHERBOARD),1503)
HARDWARE_VARIANT ?= Sanguino
MCU ?= atmega1284p
PROG_MCU ?= m1284p
# Melzi with ATmega1284 (MaKr3d version)
else ifeq ($(HARDWARE_MOTHERBOARD),1504)
HARDWARE_VARIANT ?= Sanguino
MCU ?= atmega1284p
PROG_MCU ?= m1284p
# Melzi Creality3D board (for CR-10 etc)
else ifeq ($(HARDWARE_MOTHERBOARD),1505)
HARDWARE_VARIANT ?= Sanguino
MCU ?= atmega1284p
PROG_MCU ?= m1284p
# Melzi Malyan M150 board
else ifeq ($(HARDWARE_MOTHERBOARD),1506)
HARDWARE_VARIANT ?= Sanguino
MCU ?= atmega1284p
PROG_MCU ?= m1284p
# Tronxy X5S
else ifeq ($(HARDWARE_MOTHERBOARD),1507)
HARDWARE_VARIANT ?= Sanguino
MCU ?= atmega1284p
PROG_MCU ?= m1284p
# STB V1.1
else ifeq ($(HARDWARE_MOTHERBOARD),1508)
HARDWARE_VARIANT ?= Sanguino
MCU ?= atmega1284p
PROG_MCU ?= m1284p
# Azteeg X1
else ifeq ($(HARDWARE_MOTHERBOARD),1509)
HARDWARE_VARIANT ?= Sanguino
MCU ?= atmega1284p
PROG_MCU ?= m1284p
# Anet 1.0 (Melzi clone)
else ifeq ($(HARDWARE_MOTHERBOARD),1510)
HARDWARE_VARIANT ?= Sanguino
MCU ?= atmega1284p
PROG_MCU ?= m1284p
#
# Other ATmega644P, ATmega644, ATmega1284P
@@ -411,50 +452,61 @@ else ifeq ($(HARDWARE_MOTHERBOARD),1510)
else ifeq ($(HARDWARE_MOTHERBOARD),1600)
HARDWARE_VARIANT ?= Sanguino
MCU ?= atmega644p
PROG_MCU ?= m644p
# Gen3+
else ifeq ($(HARDWARE_MOTHERBOARD),1601)
HARDWARE_VARIANT ?= Sanguino
MCU ?= atmega644p
PROG_MCU ?= m644p
# Gen6
else ifeq ($(HARDWARE_MOTHERBOARD),1602)
HARDWARE_VARIANT ?= Gen6
MCU ?= atmega644p
PROG_MCU ?= m644p
# Gen6 deluxe
else ifeq ($(HARDWARE_MOTHERBOARD),1603)
HARDWARE_VARIANT ?= Gen6
MCU ?= atmega644p
PROG_MCU ?= m644p
# Gen7 custom (Alfons3 Version)
else ifeq ($(HARDWARE_MOTHERBOARD),1604)
HARDWARE_VARIANT ?= Gen7
MCU ?= atmega644
PROG_MCU ?= m644
F_CPU ?= 20000000
# Gen7 v1.1, v1.2
else ifeq ($(HARDWARE_MOTHERBOARD),1605)
HARDWARE_VARIANT ?= Gen7
MCU ?= atmega644p
PROG_MCU ?= m644p
F_CPU ?= 20000000
# Gen7 v1.3
else ifeq ($(HARDWARE_MOTHERBOARD),1606)
HARDWARE_VARIANT ?= Gen7
MCU ?= atmega644p
PROG_MCU ?= m644p
F_CPU ?= 20000000
# Gen7 v1.4
else ifeq ($(HARDWARE_MOTHERBOARD),1607)
HARDWARE_VARIANT ?= Gen7
MCU ?= atmega1284p
PROG_MCU ?= m1284p
F_CPU ?= 20000000
# Alpha OMCA board
else ifeq ($(HARDWARE_MOTHERBOARD),1608)
HARDWARE_VARIANT ?= SanguinoA
MCU ?= atmega644
PROG_MCU ?= m644
# Final OMCA board
else ifeq ($(HARDWARE_MOTHERBOARD),1609)
HARDWARE_VARIANT ?= Sanguino
MCU ?= atmega644p
PROG_MCU ?= m644p
# Sethi 3D_1
else ifeq ($(HARDWARE_MOTHERBOARD),1610)
HARDWARE_VARIANT ?= Sanguino
MCU ?= atmega644p
PROG_MCU ?= m644p
#
# Teensyduino - AT90USB1286, AT90USB1286P
@@ -464,51 +516,60 @@ else ifeq ($(HARDWARE_MOTHERBOARD),1610)
else ifeq ($(HARDWARE_MOTHERBOARD),1700)
HARDWARE_VARIANT ?= Teensy
MCU ?= at90usb1286
PROG_MCU ?= usb1286
# Printrboard (AT90USB1286)
else ifeq ($(HARDWARE_MOTHERBOARD),1701)
HARDWARE_VARIANT ?= Teensy
MCU ?= at90usb1286
PROG_MCU ?= usb1286
# Printrboard Revision F (AT90USB1286)
else ifeq ($(HARDWARE_MOTHERBOARD),1702)
HARDWARE_VARIANT ?= Teensy
MCU ?= at90usb1286
PROG_MCU ?= usb1286
# Brainwave (AT90USB646)
else ifeq ($(HARDWARE_MOTHERBOARD),1703)
HARDWARE_VARIANT ?= Teensy
MCU ?= at90usb646
PROG_MCU ?= usb646
# Brainwave Pro (AT90USB1286)
else ifeq ($(HARDWARE_MOTHERBOARD),1704)
HARDWARE_VARIANT ?= Teensy
MCU ?= at90usb1286
PROG_MCU ?= usb1286
# SAV Mk-I (AT90USB1286)
else ifeq ($(HARDWARE_MOTHERBOARD),1705)
HARDWARE_VARIANT ?= Teensy
MCU ?= at90usb1286
PROG_MCU ?= usb1286
# Teensy++2.0 (AT90USB1286)
else ifeq ($(HARDWARE_MOTHERBOARD),1706)
HARDWARE_VARIANT ?= Teensy
MCU ?= at90usb1286
PROG_MCU ?= usb1286
# 5DPrint D8 Driver Board
else ifeq ($(HARDWARE_MOTHERBOARD),1707)
HARDWARE_VARIANT ?= Teensy
MCU ?= at90usb1286
PROG_MCU ?= usb1286
# UltiMachine Archim1 (with DRV8825 drivers)
else ifeq ($(HARDWARE_MOTHERBOARD),3023)
HARDWARE_VARIANT ?= archim
MCPU = cortex-m3
F_CPU = 84000000L
F_CPU = 84000000
IS_MCU = 0
# UltiMachine Archim2 (with TMC2130 drivers)
else ifeq ($(HARDWARE_MOTHERBOARD),3024)
HARDWARE_VARIANT ?= archim
MCPU = cortex-m3
F_CPU = 84000000L
F_CPU = 84000000
IS_MCU = 0
endif
# Be sure to regenerate speed_lookuptable.h with create_speed_lookuptable.py
# if you are setting this to something other than 16MHz
# Do not put the UL suffix, it's done later on.
# Set to 16Mhz if not yet set.
F_CPU ?= 16000000
@@ -518,7 +579,8 @@ IS_MCU ?= 1
ifeq ($(IS_MCU),1)
# Set to arduino, ATmega2560 if not yet set.
HARDWARE_VARIANT ?= arduino
MCU ?= atmega2560
MCU ?= atmega2560
PROG_MCU ?= m2560
TOOL_PREFIX = avr
MCU_FLAGS = -mmcu=$(MCU)
@@ -549,27 +611,36 @@ VPATH += $(BUILD_DIR)
VPATH += $(HARDWARE_SRC)
ifeq ($(HARDWARE_VARIANT), $(filter $(HARDWARE_VARIANT),arduino Teensy Sanguino))
VPATH += $(ARDUINO_INSTALL_DIR)/hardware/marlin/avr/libraries/LiquidCrystal/src
VPATH += $(ARDUINO_INSTALL_DIR)/hardware/marlin/avr/libraries/SPI
# 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)/hardware/arduino/avr/libraries/SPI/src
endif
ifeq ($(IS_MCU),1)
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)/hardware/arduino/avr/libraries/SPI/src
VPATH += $(ARDUINO_INSTALL_DIR)/hardware/arduino/avr/libraries/SoftwareSerial/src
endif
VPATH += $(ARDUINO_INSTALL_DIR)/libraries/LiquidCrystal/src
ifeq ($(LIQUID_TWI2), 1)
VPATH += $(ARDUINO_INSTALL_DIR)/libraries/Wire
VPATH += $(ARDUINO_INSTALL_DIR)/libraries/Wire/utility
VPATH += $(ARDUINO_INSTALL_DIR)/libraries/LiquidTWI2
WIRE = 1
VPATH += $(ARDUINO_INSTALL_DIR)/libraries/LiquidTWI2
endif
ifeq ($(WIRE), 1)
VPATH += $(ARDUINO_INSTALL_DIR)/libraries/Wire
VPATH += $(ARDUINO_INSTALL_DIR)/libraries/Wire/utility
# Old libraries (avr-core 1.6.21 / Arduino < 1.6.8)
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)/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
@@ -641,13 +712,23 @@ ifeq ($(WIRE), 1)
LIB_CXXSRC += Wire.cpp
endif
ifeq ($(TONE), 1)
LIB_CXXSRC += Tone.cpp
endif
ifeq ($(U8GLIB), 1)
LIB_CXXSRC += U8glib.cpp
LIB_SRC += u8g_ll_api.c u8g_bitmap.c u8g_clip.c u8g_com_null.c u8g_delay.c u8g_page.c u8g_pb.c u8g_pb16h1.c u8g_rect.c u8g_state.c u8g_font.c u8g_font_6x13.c u8g_font_04b_03.c u8g_font_5x8.c
LIB_SRC += u8g_ll_api.c u8g_bitmap.c u8g_clip.c u8g_com_null.c u8g_delay.c \
u8g_page.c u8g_pb.c u8g_pb16h1.c u8g_rect.c u8g_state.c u8g_font.c \
u8g_font_6x13.c u8g_font_04b_03.c u8g_font_5x8.c
endif
ifeq ($(TMC), 1)
LIB_CXXSRC += TMCStepper.cpp COOLCONF.cpp DRV_STATUS.cpp IHOLD_IRUN.cpp CHOPCONF.cpp GCONF.cpp PWMCONF.cpp DRV_CONF.cpp DRVCONF.cpp DRVCTRL.cpp DRVSTATUS.cpp ENCMODE.cpp RAMP_STAT.cpp SGCSCONF.cpp SHORT_CONF.cpp SMARTEN.cpp SW_MODE.cpp SW_SPI.cpp TMC2130Stepper.cpp TMC2208Stepper.cpp TMC2209Stepper.cpp TMC2660Stepper.cpp TMC5130Stepper.cpp TMC5160Stepper.cpp
LIB_CXXSRC += TMCStepper.cpp COOLCONF.cpp DRV_STATUS.cpp IHOLD_IRUN.cpp \
CHOPCONF.cpp GCONF.cpp PWMCONF.cpp DRV_CONF.cpp DRVCONF.cpp DRVCTRL.cpp \
DRVSTATUS.cpp ENCMODE.cpp RAMP_STAT.cpp SGCSCONF.cpp SHORT_CONF.cpp \
SMARTEN.cpp SW_MODE.cpp SW_SPI.cpp TMC2130Stepper.cpp TMC2208Stepper.cpp \
TMC2209Stepper.cpp TMC2660Stepper.cpp TMC5130Stepper.cpp TMC5160Stepper.cpp
endif
ifeq ($(RELOC_WORKAROUND), 1)
@@ -689,17 +770,23 @@ REMOVE = rm -f
MV = mv -f
# Place -D or -U options here
CDEFS = -DF_CPU=$(F_CPU) ${addprefix -D , $(DEFINES)} -DARDUINO=$(ARDUINO_VERSION)
CDEFS = -DF_CPU=$(F_CPU)UL ${addprefix -D , $(DEFINES)} -DARDUINO=$(ARDUINO_VERSION)
CXXDEFS = $(CDEFS)
ifeq ($(HARDWARE_VARIANT), Teensy)
CDEFS += -DUSB_SERIAL
CDEFS += -DUSB_SERIAL
LIB_SRC += usb.c pins_teensy.c
LIB_CXXSRC += usb_api.cpp
else ifeq ($(HARDWARE_VARIANT), archim)
CDEFS += -DARDUINO_SAM_ARCHIM -DARDUINO_ARCH_SAM -D__SAM3X8E__ -DUSB_VID=0x27b1 -DUSB_PID=0x0001 -DUSBCON '-DUSB_MANUFACTURER="UltiMachine"' '-DUSB_PRODUCT_STRING="Archim"'
LIB_CXXSRC += variant.cpp IPAddress.cpp Reset.cpp RingBuffer.cpp Stream.cpp UARTClass.cpp USARTClass.cpp abi.cpp new.cpp watchdog.cpp CDC.cpp PluggableUSB.cpp USBCore.cpp
CDEFS += -DARDUINO_SAM_ARCHIM -DARDUINO_ARCH_SAM -D__SAM3X8E__
CDEFS += -DUSB_VID=0x27B1 -DUSB_PID=0x0001 -DUSBCON
CDEFS += '-DUSB_MANUFACTURER="UltiMachine"' '-DUSB_PRODUCT_STRING="Archim"'
LIB_CXXSRC += variant.cpp IPAddress.cpp Reset.cpp RingBuffer.cpp Stream.cpp \
UARTClass.cpp USARTClass.cpp abi.cpp new.cpp watchdog.cpp CDC.cpp \
PluggableUSB.cpp USBCore.cpp
LIB_SRC += cortex_handlers.c iar_calls_sam3.c syscalls_sam3.c dtostrf.c itoa.c
ifeq ($(U8GLIB), 1)
@@ -725,16 +812,20 @@ CTUNING = -fsigned-char -funsigned-bitfields -fno-exceptions \
ifneq ($(HARDWARE_MOTHERBOARD),)
CTUNING += -DMOTHERBOARD=${HARDWARE_MOTHERBOARD}
endif
#CEXTRA = -Wa,-adhlns=$(<:.c=.lst)
CXXEXTRA = -fno-use-cxa-atexit -fno-threadsafe-statics -fno-rtti
CFLAGS := $(CDEBUG) $(CDEFS) $(CINCS) -O$(OPT) $(CEXTRA) $(CTUNING) $(CSTANDARD)
CXXFLAGS := $(CDEFS) $(CINCS) -O$(OPT) $(CXXEXTRA) $(CTUNING) $(CXXSTANDARD)
ASFLAGS := $(CDEFS)
#ASFLAGS = -Wa,-adhlns=$(<:.S=.lst),-gstabs
ifeq ($(HARDWARE_VARIANT), archim)
LD_PREFIX = -Wl,--gc-sections,-Map,Marlin.ino.map,--cref,--check-sections,--entry=Reset_Handler,--unresolved-symbols=report-all,--warn-common,--warn-section-align
LD_SUFFIX = $(LDLIBS)
LDFLAGS = -lm -T$(LDSCRIPT) -u _sbrk -u link -u _close -u _fstat -u _isatty -u _lseek -u _read -u _write -u _exit -u kill -u _getpid
LDFLAGS = -lm -T$(LDSCRIPT) -u _sbrk -u link -u _close -u _fstat -u _isatty
LDFLAGS += -u _lseek -u _read -u _write -u _exit -u kill -u _getpid
else
LD_PREFIX = -Wl,--gc-sections,--relax
LDFLAGS = -lm
@@ -750,7 +841,7 @@ else
AVRDUDE_CONF = $(ARDUINO_INSTALL_DIR)/hardware/tools/avr/etc/avrdude.conf
endif
AVRDUDE_FLAGS = -D -C$(AVRDUDE_CONF) \
-p$(MCU) -P$(AVRDUDE_PORT) -c$(AVRDUDE_PROGRAMMER) \
-p$(PROG_MCU) -P$(AVRDUDE_PORT) -c$(AVRDUDE_PROGRAMMER) \
-b$(UPLOAD_RATE)
# Since Marlin 2.0, the source files may be distributed into several
@@ -851,7 +942,7 @@ extcoff: $(TARGET).elf
.elf.eep:
-$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \
--change-section-lma .eeprom=0 -O $(FORMAT) $< $@
--change-section-lma .eeprom=0 -O $(FORMAT) $< $@
# Create extended listing file from ELF output file.
.elf.lss:
@@ -865,7 +956,7 @@ extcoff: $(TARGET).elf
$(BUILD_DIR)/$(TARGET).elf: $(OBJ) Configuration.h
$(Pecho) " CXX $@"
$P $(CC) $(LD_PREFIX) $(ALL_CXXFLAGS) -o $@ -L. $(OBJ) $(LDFLAGS) $(LD_SUFFIX)
$P $(CXX) $(LD_PREFIX) $(ALL_CXXFLAGS) -o $@ -L. $(OBJ) $(LDFLAGS) $(LD_SUFFIX)
# Object files that were found in "src" will be stored in $(BUILD_DIR)
# in directories that mirror the structure of "src"

View File

@@ -28,7 +28,7 @@
/**
* Marlin release version identifier
*/
//#define SHORT_BUILD_VERSION "bugfix-2.0.x"
//#define SHORT_BUILD_VERSION "2.0.7.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 "2019-07-10"
//#define STRING_DISTRIBUTION_DATE "2020-07-09"
/**
* Defines a generic printer name to be output to the LCD after booting Marlin.

View File

@@ -120,6 +120,8 @@ void HAL_init();
inline void HAL_clear_reset_source() { MCUSR = 0; }
inline uint8_t HAL_get_reset_source() { return MCUSR; }
inline void HAL_reboot() {} // reboot the board or restart the bootloader
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wunused-function"
extern "C" {

View File

@@ -185,8 +185,8 @@ void set_pwm_frequency(const pin_t pin, int f_desired) {
res_temp_phase_correct = rtf / 2;
}
LIMIT(res_temp_fast, 1u, size);
LIMIT(res_temp_phase_correct, 1u, size);
LIMIT(res_temp_fast, 1U, size);
LIMIT(res_temp_phase_correct, 1U, size);
// Calculate frequencies of test prescaler and resolution values
const int f_temp_fast = (F_CPU) / (prescaler[i] * (1 + res_temp_fast)),
f_temp_phase_correct = (F_CPU) / (2 * prescaler[i] * res_temp_phase_correct),

View File

@@ -19,9 +19,7 @@
*/
/**
* Description: HAL for Arduino Due and compatible (SAM3X8E)
*
* For ARDUINO_ARCH_SAM
* HAL for Arduino Due and compatible (SAM3X8E)
*/
#ifdef ARDUINO_ARCH_SAM

View File

@@ -22,9 +22,7 @@
#pragma once
/**
* Description: HAL for Arduino Due and compatible (SAM3X8E)
*
* For ARDUINO_ARCH_SAM
* HAL for Arduino Due and compatible (SAM3X8E)
*/
#define CPU_32_BIT
@@ -107,13 +105,15 @@ void sei(); // Enable interrupts
void HAL_clear_reset_source(); // clear reset reason
uint8_t HAL_get_reset_source(); // get reset reason
inline void HAL_reboot() {} // reboot the board or restart the bootloader
//
// ADC
//
extern uint16_t HAL_adc_result; // result of last ADC conversion
#ifndef analogInputToDigitalPin
#define analogInputToDigitalPin(p) ((p < 12u) ? (p) + 54u : -1)
#define analogInputToDigitalPin(p) ((p < 12U) ? (p) + 54U : -1)
#endif
#define HAL_ANALOG_SELECT(ch)

View File

@@ -30,7 +30,7 @@
*/
/**
* Description: HAL for Arduino Due and compatible (SAM3X8E)
* HAL for Arduino Due and compatible (SAM3X8E)
*
* For ARDUINO_ARCH_SAM
*/

View File

@@ -60,7 +60,7 @@
#define EEPROMSize 4096
#define PagesPerGroup 128
#define GroupCount 2
#define PageSize 256u
#define PageSize 256U
/* Flash storage */
typedef struct FLASH_SECTOR {

View File

@@ -21,9 +21,7 @@
*/
/**
* Description: HAL for Arduino Due and compatible (SAM3X8E)
*
* For ARDUINO_ARCH_SAM
* HAL Timers for Arduino Due and compatible (SAM3X8E)
*/
#ifdef ARDUINO_ARCH_SAM

View File

@@ -21,9 +21,7 @@
#pragma once
/**
* HAL for Arduino Due and compatible (SAM3X8E)
*
* For ARDUINO_ARCH_SAM
* HAL Timers for Arduino Due and compatible (SAM3X8E)
*/
#include <stdint.h>

View File

@@ -14,5 +14,5 @@ if current_OS == 'Windows':
# Use bossac.exe on Windows
env.Replace(
UPLOADCMD="bossac --info --unlock --write --verify --reset --erase -U false --boot"
UPLOADCMD="bossac --info --unlock --write --verify --reset --erase -U false --boot $SOURCE"
)

View File

@@ -609,37 +609,37 @@ typedef struct
# define clz(u) ((u) ? __CLZ(u) : 32)
#else
# define clz(u) (((u) == 0) ? 32 : \
((u) & (1ul << 31)) ? 0 : \
((u) & (1ul << 30)) ? 1 : \
((u) & (1ul << 29)) ? 2 : \
((u) & (1ul << 28)) ? 3 : \
((u) & (1ul << 27)) ? 4 : \
((u) & (1ul << 26)) ? 5 : \
((u) & (1ul << 25)) ? 6 : \
((u) & (1ul << 24)) ? 7 : \
((u) & (1ul << 23)) ? 8 : \
((u) & (1ul << 22)) ? 9 : \
((u) & (1ul << 21)) ? 10 : \
((u) & (1ul << 20)) ? 11 : \
((u) & (1ul << 19)) ? 12 : \
((u) & (1ul << 18)) ? 13 : \
((u) & (1ul << 17)) ? 14 : \
((u) & (1ul << 16)) ? 15 : \
((u) & (1ul << 15)) ? 16 : \
((u) & (1ul << 14)) ? 17 : \
((u) & (1ul << 13)) ? 18 : \
((u) & (1ul << 12)) ? 19 : \
((u) & (1ul << 11)) ? 20 : \
((u) & (1ul << 10)) ? 21 : \
((u) & (1ul << 9)) ? 22 : \
((u) & (1ul << 8)) ? 23 : \
((u) & (1ul << 7)) ? 24 : \
((u) & (1ul << 6)) ? 25 : \
((u) & (1ul << 5)) ? 26 : \
((u) & (1ul << 4)) ? 27 : \
((u) & (1ul << 3)) ? 28 : \
((u) & (1ul << 2)) ? 29 : \
((u) & (1ul << 1)) ? 30 : \
((u) & (1UL << 31)) ? 0 : \
((u) & (1UL << 30)) ? 1 : \
((u) & (1UL << 29)) ? 2 : \
((u) & (1UL << 28)) ? 3 : \
((u) & (1UL << 27)) ? 4 : \
((u) & (1UL << 26)) ? 5 : \
((u) & (1UL << 25)) ? 6 : \
((u) & (1UL << 24)) ? 7 : \
((u) & (1UL << 23)) ? 8 : \
((u) & (1UL << 22)) ? 9 : \
((u) & (1UL << 21)) ? 10 : \
((u) & (1UL << 20)) ? 11 : \
((u) & (1UL << 19)) ? 12 : \
((u) & (1UL << 18)) ? 13 : \
((u) & (1UL << 17)) ? 14 : \
((u) & (1UL << 16)) ? 15 : \
((u) & (1UL << 15)) ? 16 : \
((u) & (1UL << 14)) ? 17 : \
((u) & (1UL << 13)) ? 18 : \
((u) & (1UL << 12)) ? 19 : \
((u) & (1UL << 11)) ? 20 : \
((u) & (1UL << 10)) ? 21 : \
((u) & (1UL << 9)) ? 22 : \
((u) & (1UL << 8)) ? 23 : \
((u) & (1UL << 7)) ? 24 : \
((u) & (1UL << 6)) ? 25 : \
((u) & (1UL << 5)) ? 26 : \
((u) & (1UL << 4)) ? 27 : \
((u) & (1UL << 3)) ? 28 : \
((u) & (1UL << 2)) ? 29 : \
((u) & (1UL << 1)) ? 30 : \
31)
#endif
#endif
@@ -654,38 +654,38 @@ typedef struct
#if (defined __GNUC__) || (defined __CC_ARM)
# define ctz(u) ((u) ? __builtin_ctz(u) : 32)
#else
# define ctz(u) ((u) & (1ul << 0) ? 0 : \
(u) & (1ul << 1) ? 1 : \
(u) & (1ul << 2) ? 2 : \
(u) & (1ul << 3) ? 3 : \
(u) & (1ul << 4) ? 4 : \
(u) & (1ul << 5) ? 5 : \
(u) & (1ul << 6) ? 6 : \
(u) & (1ul << 7) ? 7 : \
(u) & (1ul << 8) ? 8 : \
(u) & (1ul << 9) ? 9 : \
(u) & (1ul << 10) ? 10 : \
(u) & (1ul << 11) ? 11 : \
(u) & (1ul << 12) ? 12 : \
(u) & (1ul << 13) ? 13 : \
(u) & (1ul << 14) ? 14 : \
(u) & (1ul << 15) ? 15 : \
(u) & (1ul << 16) ? 16 : \
(u) & (1ul << 17) ? 17 : \
(u) & (1ul << 18) ? 18 : \
(u) & (1ul << 19) ? 19 : \
(u) & (1ul << 20) ? 20 : \
(u) & (1ul << 21) ? 21 : \
(u) & (1ul << 22) ? 22 : \
(u) & (1ul << 23) ? 23 : \
(u) & (1ul << 24) ? 24 : \
(u) & (1ul << 25) ? 25 : \
(u) & (1ul << 26) ? 26 : \
(u) & (1ul << 27) ? 27 : \
(u) & (1ul << 28) ? 28 : \
(u) & (1ul << 29) ? 29 : \
(u) & (1ul << 30) ? 30 : \
(u) & (1ul << 31) ? 31 : \
# define ctz(u) ((u) & (1UL << 0) ? 0 : \
(u) & (1UL << 1) ? 1 : \
(u) & (1UL << 2) ? 2 : \
(u) & (1UL << 3) ? 3 : \
(u) & (1UL << 4) ? 4 : \
(u) & (1UL << 5) ? 5 : \
(u) & (1UL << 6) ? 6 : \
(u) & (1UL << 7) ? 7 : \
(u) & (1UL << 8) ? 8 : \
(u) & (1UL << 9) ? 9 : \
(u) & (1UL << 10) ? 10 : \
(u) & (1UL << 11) ? 11 : \
(u) & (1UL << 12) ? 12 : \
(u) & (1UL << 13) ? 13 : \
(u) & (1UL << 14) ? 14 : \
(u) & (1UL << 15) ? 15 : \
(u) & (1UL << 16) ? 16 : \
(u) & (1UL << 17) ? 17 : \
(u) & (1UL << 18) ? 18 : \
(u) & (1UL << 19) ? 19 : \
(u) & (1UL << 20) ? 20 : \
(u) & (1UL << 21) ? 21 : \
(u) & (1UL << 22) ? 22 : \
(u) & (1UL << 23) ? 23 : \
(u) & (1UL << 24) ? 24 : \
(u) & (1UL << 25) ? 25 : \
(u) & (1UL << 26) ? 26 : \
(u) & (1UL << 27) ? 27 : \
(u) & (1UL << 28) ? 28 : \
(u) & (1UL << 29) ? 29 : \
(u) & (1UL << 30) ? 30 : \
(u) & (1UL << 31) ? 31 : \
32)
#endif
#endif

View File

@@ -20,7 +20,7 @@
#pragma once
/**
* Description: HAL for Espressif ESP32 WiFi
* HAL for Espressif ESP32 WiFi
*/
#define CPU_32_BIT
@@ -96,6 +96,8 @@ void HAL_clear_reset_source();
// reset reason
uint8_t HAL_get_reset_source();
inline void HAL_reboot() {} // reboot the board or restart the bootloader
void _delay_ms(int delay);
#pragma GCC diagnostic push
@@ -155,14 +157,14 @@ FORCE_INLINE static void DELAY_CYCLES(uint32_t x) {
if (stop >= start) {
// no overflow, so only loop while in between start and stop:
// 0x00000000 -----------------start****stop-- 0xffffffff
// 0x00000000 -----------------start****stop-- 0xFFFFFFFF
while (ccount >= start && ccount < stop) {
__asm__ __volatile__ ( "rsr %0, ccount" : "=a" (ccount) );
}
}
else {
// stop did overflow, so only loop while outside of stop and start:
// 0x00000000 **stop-------------------start** 0xffffffff
// 0x00000000 **stop-------------------start** 0xFFFFFFFF
while (ccount >= start || ccount < stop) {
__asm__ __volatile__ ( "rsr %0, ccount" : "=a" (ccount) );
}

View File

@@ -101,6 +101,8 @@ uint16_t HAL_adc_get_result();
inline void HAL_clear_reset_source(void) {}
inline uint8_t HAL_get_reset_source(void) { return RST_POWER_ON; }
inline void HAL_reboot() {} // reboot the board or restart the bootloader
/* ---------------- Delay in cycles */
FORCE_INLINE static void DELAY_CYCLES(uint64_t x) {
Clock::delayCycles(x);

View File

@@ -200,6 +200,8 @@ void set_pwm_duty(const pin_t pin, const uint16_t v, const uint16_t v_size=255,
void HAL_clear_reset_source(void);
uint8_t HAL_get_reset_source(void);
inline void HAL_reboot() {} // reboot the board or restart the bootloader
// Add strcmp_P if missing
#ifndef strcmp_P
#define strcmp_P(a, b) strcmp((a), (b))

View File

@@ -88,6 +88,8 @@ typedef int8_t pin_t;
void HAL_clear_reset_source(); // clear reset reason
uint8_t HAL_get_reset_source(); // get reset reason
inline void HAL_reboot() {} // reboot the board or restart the bootloader
//
// ADC
//

View File

@@ -26,7 +26,7 @@
#include "QSPIFlash.h"
#define INVALID_ADDR 0xffffffff
#define INVALID_ADDR 0xFFFFFFFF
#define SECTOR_OF(a) (a & ~(SFLASH_SECTOR_SIZE - 1))
#define OFFSET_OF(a) (a & (SFLASH_SECTOR_SIZE - 1))

View File

@@ -63,7 +63,7 @@ uint16_t HAL_adc_result;
void HAL_init() {
FastIO_init();
#if ENABLED(SDSUPPORT) && DISABLED(SDIO_SUPPORT)
#if ENABLED(SDSUPPORT) && DISABLED(SDIO_SUPPORT) && (defined(SDSS) && SDSS != -1)
OUT_WRITE(SDSS, HIGH); // Try to set SDSS inactive before any other SPI users start up
#endif
@@ -122,9 +122,14 @@ extern "C" {
// TODO: Make sure this doesn't cause any delay
void HAL_adc_start_conversion(const uint8_t adc_pin) { HAL_adc_result = analogRead(adc_pin); }
uint16_t HAL_adc_get_result() { return HAL_adc_result; }
// Reset the system (to initiate a firmware flash)
void flashFirmware(const int16_t) { NVIC_SystemReset(); }
// Maple Compatibility
systickCallback_t systick_user_callback;
void systick_attach_callback(systickCallback_t cb) { systick_user_callback = cb; }
void HAL_SYSTICK_Callback() { if (systick_user_callback) systick_user_callback(); }
#endif // ARDUINO_ARCH_STM32 && !STM32GENERIC

View File

@@ -134,6 +134,8 @@ void HAL_clear_reset_source();
// Reset reason
uint8_t HAL_get_reset_source();
inline void HAL_reboot() {} // reboot the board or restart the bootloader
void _delay_ms(const int delay);
extern "C" char* _sbrk(int incr);
@@ -177,3 +179,8 @@ uint16_t HAL_adc_get_result();
#define PLATFORM_M997_SUPPORT
void flashFirmware(const int16_t);
// Maple Compatibility
typedef void (*systickCallback_t)(void);
void systick_attach_callback(systickCallback_t cb);
void HAL_SYSTICK_Callback();

View File

@@ -132,11 +132,9 @@ static SPISettings spiConfig;
* @details Only configures SS pin since stm32duino creates and initialize the SPI object
*/
void spiBegin() {
#if !PIN_EXISTS(SS)
#error "SS_PIN not defined!"
#if PIN_EXISTS(SS)
OUT_WRITE(SS_PIN, HIGH);
#endif
OUT_WRITE(SS_PIN, HIGH);
}
// Configure SPI for specified SPI speed
@@ -173,9 +171,7 @@ static SPISettings spiConfig;
* @details
*/
uint8_t spiRec() {
SPI.beginTransaction(spiConfig);
uint8_t returnByte = SPI.transfer(0xFF);
SPI.endTransaction();
return returnByte;
}
@@ -191,9 +187,7 @@ static SPISettings spiConfig;
void spiRead(uint8_t* buf, uint16_t nbyte) {
if (nbyte == 0) return;
memset(buf, 0xFF, nbyte);
SPI.beginTransaction(spiConfig);
SPI.transfer(buf, nbyte);
SPI.endTransaction();
}
/**
@@ -204,9 +198,7 @@ static SPISettings spiConfig;
* @details
*/
void spiSend(uint8_t b) {
SPI.beginTransaction(spiConfig);
SPI.transfer(b);
SPI.endTransaction();
}
/**
@@ -219,10 +211,8 @@ static SPISettings spiConfig;
*/
void spiSendBlock(uint8_t token, const uint8_t* buf) {
uint8_t rxBuf[512];
SPI.beginTransaction(spiConfig);
SPI.transfer(token);
SPI.transfer((uint8_t*)buf, &rxBuf, 512);
SPI.endTransaction();
}
#endif // SOFTWARE_SPI

View File

@@ -63,7 +63,7 @@ void FastIO_init(); // Must be called before using fast io macros
#define _GET_MODE(IO)
#define _SET_MODE(IO,M) pinMode(IO, M)
#define _SET_OUTPUT(IO) pinMode(IO, OUTPUT) /*!< Output Push Pull Mode & GPIO_NOPULL */
#define _SET_OUTPUT(IO) pinMode(IO, OUTPUT) //!< Output Push Pull Mode & GPIO_NOPULL
#define _SET_OUTPUT_OD(IO) pinMode(IO, OUTPUT_OPEN_DRAIN)
#define WRITE(IO,V) _WRITE(IO,V)
@@ -73,9 +73,9 @@ void FastIO_init(); // Must be called before using fast io macros
#define OUT_WRITE(IO,V) do{ _SET_OUTPUT(IO); WRITE(IO,V); }while(0)
#define OUT_WRITE_OD(IO,V) do{ _SET_OUTPUT_OD(IO); WRITE(IO,V); }while(0)
#define SET_INPUT(IO) _SET_MODE(IO, INPUT) /*!< Input Floating Mode */
#define SET_INPUT_PULLUP(IO) _SET_MODE(IO, INPUT_PULLUP) /*!< Input with Pull-up activation */
#define SET_INPUT_PULLDOWN(IO) _SET_MODE(IO, INPUT_PULLDOWN) /*!< Input with Pull-down activation */
#define SET_INPUT(IO) _SET_MODE(IO, INPUT) //!< Input Floating Mode
#define SET_INPUT_PULLUP(IO) _SET_MODE(IO, INPUT_PULLUP) //!< Input with Pull-up activation
#define SET_INPUT_PULLDOWN(IO) _SET_MODE(IO, INPUT_PULLDOWN) //!< Input with Pull-down activation
#define SET_OUTPUT(IO) OUT_WRITE(IO, LOW)
#define SET_PWM(IO) _SET_MODE(IO, PWM)

View File

@@ -97,6 +97,9 @@ const uint8_t adc_pins[] = {
#if HAS_TEMP_ADC_0
TEMP_0_PIN,
#endif
#if HAS_TEMP_ADC_PROBE
TEMP_PROBE_PIN,
#endif
#if HAS_HEATED_BED
TEMP_BED_PIN,
#endif
@@ -151,6 +154,9 @@ enum TempPinIndex : char {
#if HAS_TEMP_ADC_0
TEMP_0,
#endif
#if HAS_TEMP_ADC_PROBE
TEMP_PROBE,
#endif
#if HAS_HEATED_BED
TEMP_BED,
#endif
@@ -341,6 +347,9 @@ void HAL_adc_start_conversion(const uint8_t adc_pin) {
#if HAS_TEMP_ADC_0
case TEMP_0_PIN: pin_index = TEMP_0; break;
#endif
#if HAS_TEMP_ADC_PROBE
case TEMP_PROBE_PIN: pin_index = TEMP_PROBE; break;
#endif
#if HAS_HEATED_BED
case TEMP_BED_PIN: pin_index = TEMP_BED; break;
#endif

View File

@@ -185,6 +185,8 @@ void HAL_clear_reset_source();
// Reset reason
uint8_t HAL_get_reset_source();
inline void HAL_reboot() {} // reboot the board or restart the bootloader
void _delay_ms(const int delay);
#pragma GCC diagnostic push

View File

@@ -24,9 +24,6 @@
/**
* Software SPI functions originally from Arduino Sd2Card Library
* Copyright (c) 2009 by William Greiman
*/
/**
* Adapted to the STM32F1 HAL
*/
@@ -113,7 +110,7 @@ void spiInit(uint8_t spiRate) {
* @details
*/
uint8_t spiRec() {
uint8_t returnByte = SPI.transfer(ff);
uint8_t returnByte = SPI.transfer(0xFF);
return returnByte;
}
@@ -157,7 +154,7 @@ void spiSendBlock(uint8_t token, const uint8_t* buf) {
#if ENABLED(SPI_EEPROM)
// Read single byte from specified SPI channel
uint8_t spiRec(uint32_t chan) { return SPI.transfer(ff); }
uint8_t spiRec(uint32_t chan) { return SPI.transfer(0xFF); }
// Write single byte to specified SPI channel
void spiSend(uint32_t chan, byte b) { SPI.send(b); }

View File

@@ -25,6 +25,8 @@
* with simple implementations supplied by Marlin.
*/
#ifdef __STM32F1__
#include "../../inc/MarlinConfig.h"
#if ENABLED(IIC_BL24CXX_EEPROM)
@@ -79,3 +81,4 @@ bool PersistentStore::read_data(int &pos, uint8_t* value, size_t size, uint16_t
}
#endif // IIC_BL24CXX_EEPROM
#endif // __STM32F1__

View File

@@ -25,6 +25,8 @@
* Enable USE_SHARED_EEPROM if not supplied by the framework.
*/
#ifdef __STM32F1__
#include "../../inc/MarlinConfig.h"
#if ENABLED(IIC_BL24CXX_EEPROM)
@@ -49,3 +51,4 @@ uint8_t eeprom_read_byte(uint8_t *pos) {
}
#endif // IIC_BL24CXX_EEPROM
#endif // __STM32F1__

View File

@@ -17,17 +17,17 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
*/
/**
* HAL PersistentStore for STM32F1
*/
#ifdef __STM32F1__
#include "../../inc/MarlinConfig.h"
#if USE_WIRED_EEPROM
/**
* PersistentStore for Arduino-style EEPROM interface
* with simple implementations supplied by Marlin.
*/
#include "../shared/eeprom_if.h"
#include "../shared/eeprom_api.h"

View File

@@ -13,7 +13,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
*/
#ifdef USE_USB_COMPOSITE
#if defined(__STM32F1__) && defined(USE_USB_COMPOSITE)
#include "msc_sd.h"
#include "SPI.h"
@@ -77,4 +77,4 @@ void MSC_SD_init() {
#endif
}
#endif // USE_USB_COMPOSITE
#endif // __STM32F1__ && USE_USB_COMPOSITE

View File

@@ -11,6 +11,8 @@
* Redistributions of source code must retain the above copyright notice.
*/
#ifdef __STM32F1__
#include "../../inc/MarlinConfig.h"
#if SD_CONNECTION_IS(ONBOARD)
@@ -553,3 +555,4 @@ DRESULT disk_read (
#endif // _DISKIO_IOCTL
#endif // SD_CONNECTION_IS(ONBOARD)
#endif // __STM32F1__

View File

@@ -142,6 +142,8 @@ void HAL_clear_reset_source();
// Reset reason
uint8_t HAL_get_reset_source();
inline void HAL_reboot() {} // reboot the board or restart the bootloader
void _delay_ms(const int delay);
/*

View File

@@ -45,8 +45,8 @@
#define DEFAULT_MICROSTEPPING_VALUE 32
//TMC26X register definitions
#define DRIVER_CONTROL_REGISTER 0x0ul
#define CHOPPER_CONFIG_REGISTER 0x80000ul
#define DRIVER_CONTROL_REGISTER 0x0UL
#define CHOPPER_CONFIG_REGISTER 0x80000UL
#define COOL_STEP_REGISTER 0xA0000ul
#define STALL_GUARD2_LOAD_MEASURE_REGISTER 0xC0000ul
#define DRIVER_CONFIG_REGISTER 0xE0000ul
@@ -55,58 +55,58 @@
//definitions for the driver control register
#define MICROSTEPPING_PATTERN 0xFul
#define STEP_INTERPOLATION 0x200ul
#define DOUBLE_EDGE_STEP 0x100ul
#define VSENSE 0x40ul
#define READ_MICROSTEP_POSTION 0x0ul
#define READ_STALL_GUARD_READING 0x10ul
#define READ_STALL_GUARD_AND_COOL_STEP 0x20ul
#define READ_SELECTION_PATTERN 0x30ul
#define STEP_INTERPOLATION 0x200UL
#define DOUBLE_EDGE_STEP 0x100UL
#define VSENSE 0x40UL
#define READ_MICROSTEP_POSTION 0x0UL
#define READ_STALL_GUARD_READING 0x10UL
#define READ_STALL_GUARD_AND_COOL_STEP 0x20UL
#define READ_SELECTION_PATTERN 0x30UL
//definitions for the chopper config register
#define CHOPPER_MODE_STANDARD 0x0ul
#define CHOPPER_MODE_T_OFF_FAST_DECAY 0x4000ul
#define CHOPPER_MODE_STANDARD 0x0UL
#define CHOPPER_MODE_T_OFF_FAST_DECAY 0x4000UL
#define T_OFF_PATTERN 0xFul
#define RANDOM_TOFF_TIME 0x2000ul
#define BLANK_TIMING_PATTERN 0x18000ul
#define RANDOM_TOFF_TIME 0x2000UL
#define BLANK_TIMING_PATTERN 0x18000UL
#define BLANK_TIMING_SHIFT 15
#define HYSTERESIS_DECREMENT_PATTERN 0x1800ul
#define HYSTERESIS_DECREMENT_PATTERN 0x1800UL
#define HYSTERESIS_DECREMENT_SHIFT 11
#define HYSTERESIS_LOW_VALUE_PATTERN 0x780ul
#define HYSTERESIS_LOW_VALUE_PATTERN 0x780UL
#define HYSTERESIS_LOW_SHIFT 7
#define HYSTERESIS_START_VALUE_PATTERN 0x78ul
#define HYSTERESIS_START_VALUE_PATTERN 0x78UL
#define HYSTERESIS_START_VALUE_SHIFT 4
#define T_OFF_TIMING_PATERN 0xFul
//definitions for cool step register
#define MINIMUM_CURRENT_FOURTH 0x8000ul
#define CURRENT_DOWN_STEP_SPEED_PATTERN 0x6000ul
#define MINIMUM_CURRENT_FOURTH 0x8000UL
#define CURRENT_DOWN_STEP_SPEED_PATTERN 0x6000UL
#define SE_MAX_PATTERN 0xF00ul
#define SE_CURRENT_STEP_WIDTH_PATTERN 0x60ul
#define SE_CURRENT_STEP_WIDTH_PATTERN 0x60UL
#define SE_MIN_PATTERN 0xFul
//definitions for StallGuard2 current register
#define STALL_GUARD_FILTER_ENABLED 0x10000ul
#define STALL_GUARD_FILTER_ENABLED 0x10000UL
#define STALL_GUARD_TRESHHOLD_VALUE_PATTERN 0x17F00ul
#define CURRENT_SCALING_PATTERN 0x1Ful
#define STALL_GUARD_CONFIG_PATTERN 0x17F00ul
#define STALL_GUARD_VALUE_PATTERN 0x7F00ul
//definitions for the input from the TMC2660
#define STATUS_STALL_GUARD_STATUS 0x1ul
#define STATUS_OVER_TEMPERATURE_SHUTDOWN 0x2ul
#define STATUS_OVER_TEMPERATURE_WARNING 0x4ul
#define STATUS_SHORT_TO_GROUND_A 0x8ul
#define STATUS_SHORT_TO_GROUND_B 0x10ul
#define STATUS_OPEN_LOAD_A 0x20ul
#define STATUS_OPEN_LOAD_B 0x40ul
#define STATUS_STAND_STILL 0x80ul
#define STATUS_STALL_GUARD_STATUS 0x1UL
#define STATUS_OVER_TEMPERATURE_SHUTDOWN 0x2UL
#define STATUS_OVER_TEMPERATURE_WARNING 0x4UL
#define STATUS_SHORT_TO_GROUND_A 0x8UL
#define STATUS_SHORT_TO_GROUND_B 0x10UL
#define STATUS_OPEN_LOAD_A 0x20UL
#define STATUS_OPEN_LOAD_B 0x40UL
#define STATUS_STAND_STILL 0x80UL
#define READOUT_VALUE_PATTERN 0xFFC00ul
#define CPU_32_BIT
//default values
#define INITIAL_MICROSTEPPING 0x3ul //32th microstepping
#define INITIAL_MICROSTEPPING 0x3UL //32th microstepping
SPIClass SPI_6(SPI6, SPI6_MOSI_PIN, SPI6_MISO_PIN, SPI6_SCK_PIN);

View File

@@ -20,9 +20,8 @@
*
*/
/**
* Description: HAL for Teensy32 (MK20DX256)
* HAL for Teensy 3.2 (MK20DX256)
*/
#ifdef __MK20DX256__

View File

@@ -22,7 +22,7 @@
#pragma once
/**
* Description: HAL for Teensy 3.5 and Teensy 3.6
* HAL for Teensy 3.2 (MK20DX256)
*/
#define CPU_32_BIT
@@ -44,8 +44,9 @@
//#undef MOTHERBOARD
//#define MOTHERBOARD BOARD_TEENSY31_32
#ifdef __MK20DX256__
#define IS_32BIT_TEENSY 1
#define IS_32BIT_TEENSY 1
#define IS_TEENSY_31_32 1
#ifndef IS_TEENSY31
#define IS_TEENSY32 1
#endif
@@ -64,7 +65,7 @@
typedef int8_t pin_t;
#ifndef analogInputToDigitalPin
#define analogInputToDigitalPin(p) ((p < 12u) ? (p) + 54u : -1)
#define analogInputToDigitalPin(p) ((p < 12U) ? (p) + 54U : -1)
#endif
#define CRITICAL_SECTION_START() uint32_t primask = __get_PRIMASK(); __disable_irq()
@@ -92,6 +93,8 @@ void HAL_clear_reset_source();
// Get the reason for the reset
uint8_t HAL_get_reset_source();
inline void HAL_reboot() {} // reboot the board or restart the bootloader
FORCE_INLINE void _delay_ms(const int delay_ms) { delay(delay_ms); }
#pragma GCC diagnostic push

View File

@@ -51,5 +51,4 @@ void libServo::move(const int value) {
}
#endif // HAS_SERVOS
#endif // __MK20DX256__

View File

@@ -23,8 +23,7 @@
#if USE_WIRED_EEPROM
/**
* PersistentStore for Arduino-style EEPROM interface
* with implementations supplied by the framework.
* HAL PersistentStore for Teensy 3.2 (MK20DX256)
*/
#include "../shared/eeprom_api.h"

View File

@@ -21,7 +21,7 @@
*/
/**
* Teensy3.2 __MK20DX256__
* HAL Timers for Teensy 3.2 (MK20DX256)
*/
#ifdef __MK20DX256__

View File

@@ -22,8 +22,7 @@
#pragma once
/**
* Description: HAL for
* Teensy3.2 (__MK20DX256__)
* HAL Timers for Teensy 3.2 (MK20DX256)
*/
#include <stdint.h>

View File

@@ -21,7 +21,7 @@
*/
/**
* Description: HAL for Teensy35 (MK64FX512)
* HAL for Teensy 3.5 (MK64FX512) and Teensy 3.6 (MK66FX1M0)
*/
#if defined(__MK64FX512__) || defined(__MK66FX1M0__)

View File

@@ -22,7 +22,7 @@
#pragma once
/**
* Description: HAL for Teensy 3.5 and Teensy 3.6
* HAL for Teensy 3.5 (MK64FX512) and Teensy 3.6 (MK66FX1M0)
*/
#define CPU_32_BIT
@@ -45,13 +45,12 @@
// Defines
// ------------------------
#ifdef __MK64FX512__
#define IS_32BIT_TEENSY 1
#define IS_TEENSY35 1
#endif
#define IS_32BIT_TEENSY 1
#define IS_TEENSY_35_36 1
#ifdef __MK66FX1M0__
#define IS_32BIT_TEENSY 1
#define IS_TEENSY36 1
#else // __MK64FX512__
#define IS_TEENSY35 1
#endif
#define _MSERIAL(X) Serial##X
@@ -69,7 +68,7 @@
typedef int8_t pin_t;
#ifndef analogInputToDigitalPin
#define analogInputToDigitalPin(p) ((p < 12u) ? (p) + 54u : -1)
#define analogInputToDigitalPin(p) ((p < 12U) ? (p) + 54U : -1)
#endif
#define CRITICAL_SECTION_START() uint32_t primask = __get_primask(); __disable_irq()
@@ -100,6 +99,8 @@ void HAL_clear_reset_source();
// Reset reason
uint8_t HAL_get_reset_source();
inline void HAL_reboot() {} // reboot the board or restart the bootloader
FORCE_INLINE void _delay_ms(const int delay_ms) { delay(delay_ms); }
#pragma GCC diagnostic push

View File

@@ -19,6 +19,11 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
*/
/**
* HAL SPI for Teensy 3.5 (MK64FX512) and Teensy 3.6 (MK66FX1M0)
*/
#if defined(__MK64FX512__) || defined(__MK66FX1M0__)
#include "HAL.h"

View File

@@ -19,6 +19,11 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
*/
/**
* HAL Servo for Teensy 3.5 (MK64FX512) and Teensy 3.6 (MK66FX1M0)
*/
#if defined(__MK64FX512__) || defined(__MK66FX1M0__)
#include "../../inc/MarlinConfig.h"
@@ -51,5 +56,4 @@ void libServo::move(const int value) {
}
#endif // HAS_SERVOS
#endif // __MK64FX512__ || __MK66FX1M0__

View File

@@ -21,6 +21,10 @@
*/
#pragma once
/**
* HAL Servo for Teensy 3.5 (MK64FX512) and Teensy 3.6 (MK66FX1M0)
*/
#include <Servo.h>
// Inherit and expand on core Servo library

View File

@@ -22,15 +22,14 @@
*/
#if defined(__MK64FX512__) || defined(__MK66FX1M0__)
/**
* HAL PersistentStore for Teensy 3.5 (MK64FX512) and Teensy 3.6 (MK66FX1M0)
*/
#include "../../inc/MarlinConfig.h"
#if USE_WIRED_EEPROM
/**
* PersistentStore for Arduino-style EEPROM interface
* with implementations supplied by the framework.
*/
#include "../shared/eeprom_api.h"
#include <avr/eeprom.h>

View File

@@ -22,7 +22,7 @@
#pragma once
/**
* Endstop Interrupts
* HAL Endstop Interrupts for Teensy 3.5 (MK64FX512) and Teensy 3.6 (MK66FX1M0)
*
* Without endstop interrupts the endstop pins must be polled continually in
* the temperature-ISR via endstops.update(), most of the time finding no change.

View File

@@ -18,6 +18,10 @@
*/
#pragma once
/**
* HAL Pins Debugging for Teensy 3.5 (MK64FX512) and Teensy 3.6 (MK66FX1M0)
*/
#define NUMBER_PINS_TOTAL NUM_DIGITAL_PINS
#define MULTI_NAME_PAD 16 // space needed to be pretty if not first name assigned to a pin

View File

@@ -21,6 +21,10 @@
*/
#pragma once
/**
* HAL SPI Pins for Teensy 3.5 (MK64FX512) and Teensy 3.6 (MK66FX1M0)
*/
#define SCK_PIN 13
#define MISO_PIN 12
#define MOSI_PIN 11

View File

@@ -21,8 +21,7 @@
*/
/**
* Teensy3.5 __MK64FX512__
* Teensy3.6 __MK66FX1M0__
* HAL Timers for Teensy 3.5 (MK64FX512) and Teensy 3.6 (MK66FX1M0)
*/
#if defined(__MK64FX512__) || defined(__MK66FX1M0__)

View File

@@ -21,9 +21,7 @@
#pragma once
/**
* Description: HAL for
* Teensy3.5 (__MK64FX512__)
* Teensy3.6 (__MK66FX1M0__)
* HAL Timers for Teensy 3.5 (MK64FX512) and Teensy 3.6 (MK66FX1M0)
*/
#include <stdint.h>

View File

@@ -21,7 +21,7 @@
*/
/**
* Description: HAL for Teensy40 (IMXRT1062)
* HAL for Teensy 4.0 / 4.1 (IMXRT1062)
*/
#ifdef __IMXRT1062__

View File

@@ -22,7 +22,7 @@
#pragma once
/**
* Description: HAL for Teensy 4.0 and Teensy 4.1
* HAL for Teensy 4.0 (IMXRT1062DVL6A) / 4.1 (IMXRT1062DVJ6A)
*/
#define CPU_32_BIT
@@ -45,8 +45,9 @@
// Defines
// ------------------------
#ifdef __IMXRT1062__
#define IS_32BIT_TEENSY 1
#define IS_32BIT_TEENSY 1
#define IS_TEENSY_40_41 1
#ifndef IS_TEENSY40
#define IS_TEENSY41 1
#endif
@@ -77,7 +78,7 @@
typedef int8_t pin_t;
#ifndef analogInputToDigitalPin
#define analogInputToDigitalPin(p) ((p < 12u) ? (p) + 54u : -1)
#define analogInputToDigitalPin(p) ((p < 12U) ? (p) + 54U : -1)
#endif
#define CRITICAL_SECTION_START() uint32_t primask = __get_primask(); __disable_irq()

View File

@@ -19,6 +19,11 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
*/
/**
* HAL SPI for Teensy 4.0 (IMXRT1062DVL6A) / 4.1 (IMXRT1062DVJ6A)
*/
#ifdef __IMXRT1062__
#include "HAL.h"

View File

@@ -19,6 +19,11 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
*/
/**
* HAL Servo for Teensy 4.0 (IMXRT1062DVL6A) / 4.1 (IMXRT1062DVJ6A)
*/
#ifdef __IMXRT1062__
#include "../../inc/MarlinConfig.h"
@@ -53,5 +58,4 @@ void libServo::detach() {
}
#endif // HAS_SERVOS
#endif // __IMXRT1062__

View File

@@ -21,6 +21,10 @@
*/
#pragma once
/**
* HAL Servo for Teensy 4.0 (IMXRT1062DVL6A) / 4.1 (IMXRT1062DVJ6A)
*/
#include <PWMServo.h>
// Inherit and expand on core Servo library

View File

@@ -27,8 +27,7 @@
#if USE_WIRED_EEPROM
/**
* PersistentStore for Arduino-style EEPROM interface
* with implementations supplied by the framework.
* HAL PersistentStore for Teensy 4.0 (IMXRT1062DVL6A) / 4.1 (IMXRT1062DVJ6A)
*/
#include "../shared/eeprom_api.h"

View File

@@ -22,7 +22,7 @@
#pragma once
/**
* Endstop Interrupts
* HAL Endstop Interrupts for Teensy 4.0 (IMXRT1062DVL6A) / 4.1 (IMXRT1062DVJ6A)
*
* Without endstop interrupts the endstop pins must be polled continually in
* the temperature-ISR via endstops.update(), most of the time finding no change.

View File

@@ -23,7 +23,7 @@
#pragma once
/**
* Fast I/O interfaces for Teensy 4
* Fast I/O interfaces for Teensy 4.0 (IMXRT1062DVL6A) / 4.1 (IMXRT1062DVJ6A)
* These use GPIO functions instead of Direct Port Manipulation, as on AVR.
*/

View File

@@ -18,6 +18,10 @@
*/
#pragma once
/**
* HAL Pins Debugging for Teensy 4.0 (IMXRT1062DVL6A) / 4.1 (IMXRT1062DVJ6A)
*/
#warning "PINS_DEBUGGING is not fully supported for Teensy 4.0 / 4.1 so 'M43' may cause hangs."
#define NUMBER_PINS_TOTAL NUM_DIGITAL_PINS

View File

@@ -21,6 +21,10 @@
*/
#pragma once
/**
* HAL SPI Pins for Teensy 4.0 (IMXRT1062DVL6A) / 4.1 (IMXRT1062DVJ6A)
*/
#define SCK_PIN 13
#define MISO_PIN 12
#define MOSI_PIN 11

View File

@@ -21,7 +21,7 @@
*/
/**
* Teensy4.0/4.1 (__IMXRT1062__)
* HAL Timers for Teensy 4.0 (IMXRT1062DVL6A) / 4.1 (IMXRT1062DVJ6A)
*/
#ifdef __IMXRT1062__

View File

@@ -21,8 +21,7 @@
#pragma once
/**
* Description: HAL for
* Teensy4.0/4.1 (__IMXRT1062__)
* HAL Timers for Teensy 4.0 (IMXRT1062DVL6A) / 4.1 (IMXRT1062DVJ6A)
*/
#include <stdint.h>

View File

@@ -19,6 +19,11 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
*/
/**
* HAL Watchdog for Teensy 4.0 (IMXRT1062DVL6A) / 4.1 (IMXRT1062DVJ6A)
*/
#ifdef __IMXRT1062__
#include "../../inc/MarlinConfig.h"
@@ -48,5 +53,4 @@ void HAL_watchdog_refresh() {
}
#endif // USE_WATCHDOG
#endif // __IMXRT1062__

View File

@@ -22,7 +22,7 @@
#pragma once
/**
* Watchdog for Teensy4.0/4.1 (__IMXRT1062__)
* HAL Watchdog for Teensy 4.0 (IMXRT1062DVL6A) / 4.1 (IMXRT1062DVJ6A)
*/
void watchdog_init();

View File

@@ -1048,6 +1048,11 @@ void setup() {
SERIAL_ECHO_MSG("Compiled: " __DATE__);
SERIAL_ECHO_MSG(STR_FREE_MEMORY, freeMemory(), STR_PLANNER_BUFFER_BYTES, (int)sizeof(block_t) * (BLOCK_BUFFER_SIZE));
// Init buzzer pin(s)
#if USE_BEEPER
SETUP_RUN(buzzer.init());
#endif
// Set up LEDs early
#if HAS_COLOR_LEDS
SETUP_RUN(leds.setup());

View File

@@ -320,6 +320,7 @@
#define BOARD_CREALITY_V4 4034 // Creality v4.x (STM32F103RE)
#define BOARD_CREALITY_V427 4035 // Creality v4.2.7 (STM32F103RE)
#define BOARD_TRIGORILLA_PRO 4036 // Trigorilla Pro (STM32F103ZET6)
#define BOARD_FLY_MINI 4037 // FLY MINI (STM32F103RCT6)
//
// ARM Cortex-M4F

View File

@@ -303,7 +303,7 @@
#define LCD_STR_C STR_C
#define LCD_STR_E STR_E
#if HAS_MARLINUI_HD44780
#if EITHER(HAS_MARLINUI_HD44780, IS_TFTGLCD_PANEL)
// Custom characters defined in the first 8 characters of the LCD
#define LCD_STR_BEDTEMP "\x00" // Print only as a char. This will have 'unexpected' results when used in a string!

View File

@@ -215,6 +215,7 @@
#define WITHIN(N,L,H) ((N) >= (L) && (N) <= (H))
#define NUMERIC(a) WITHIN(a, '0', '9')
#define DECIMAL(a) (NUMERIC(a) || a == '.')
#define HEXCHR(a) (NUMERIC(a) ? (a) - '0' : WITHIN(a, 'a', 'f') ? ((a) - 'a' + 10) : WITHIN(a, 'A', 'F') ? ((a) - 'A' + 10) : -1)
#define NUMERIC_SIGNED(a) (NUMERIC(a) || (a) == '-' || (a) == '+')
#define DECIMAL_SIGNED(a) (DECIMAL(a) || (a) == '-' || (a) == '+')
#define COUNT(a) (sizeof(a)/sizeof(*a))

View File

@@ -71,7 +71,7 @@ public:
inline void restore() { ref_ = val_; }
};
#define REMEMBER(N,X,V...) restorer<typeof(X)> restorer_##N(X, ##V)
#define REMEMBER(N,X,V...) restorer<__typeof__(X)> restorer_##N(X, ##V)
#define RESTORE(N) restorer_##N.restore()
// Converts from an uint8_t in the range of 0-255 to an uint8_t

View File

@@ -40,7 +40,7 @@
#endif
#ifndef lowByte
#define lowByte(w) ((uint8_t) ((w) & 0xff))
#define lowByte(w) ((uint8_t) ((w) & 0xFF))
#endif
#ifndef highByte

View File

@@ -88,10 +88,8 @@ public:
case EP_N:
switch (c) {
case '0': case '1': case '2':
case '3': case '4': case '5':
case '6': case '7': case '8':
case '9': case '-': case ' ': break;
case '0' ... '9':
case '-': case ' ': break;
case 'M': state = EP_M; break;
default: state = EP_IGNORE;
}
@@ -153,10 +151,7 @@ public:
case EP_M876S:
switch (c) {
case ' ': break;
case '0': case '1': case '2':
case '3': case '4': case '5':
case '6': case '7': case '8':
case '9':
case '0' ... '9':
state = EP_M876SN;
M876_reason = (uint8_t)(c - '0');
break;

View File

@@ -340,17 +340,17 @@ void MMU2::mmu_loop() {
#endif
if (rx_ok()) {
// response to C0 mmu command in PRUSA_MMU2_S_MODE
// Response to C0 mmu command in PRUSA_MMU2_S_MODE
bool can_reset = true;
if (ENABLED(PRUSA_MMU2_S_MODE) && last_cmd == MMU_CMD_C0) {
if (!mmu2s_triggered) {
#if ENABLED(PRUSA_MMU2_S_MODE)
if (!mmu2s_triggered && last_cmd == MMU_CMD_C0) {
can_reset = false;
// MMU ok received but filament sensor not triggered, retrying...
DEBUG_ECHOLNPGM("MMU => 'ok' (filament not present in gears)");
DEBUG_ECHOLNPGM("MMU <= 'C0' (keep trying)");
MMU2_COMMAND("C0");
}
}
#endif
if (can_reset) {
DEBUG_ECHOLNPGM("MMU => 'ok'");
ready = true;

View File

@@ -612,11 +612,13 @@ void resume_print(const float &slow_load_length/*=0*/, const float &fast_load_le
// Retract to prevent oozing
unscaled_e_move(-(PAUSE_PARK_RETRACT_LENGTH), feedRate_t(PAUSE_PARK_RETRACT_FEEDRATE));
// Move XY to starting position, then Z
do_blocking_move_to_xy(resume_position, feedRate_t(NOZZLE_PARK_XY_FEEDRATE));
if (!axes_should_home()) {
// Move XY to starting position, then Z
do_blocking_move_to_xy(resume_position, feedRate_t(NOZZLE_PARK_XY_FEEDRATE));
// Move Z_AXIS to saved position
do_blocking_move_to_z(resume_position.z, feedRate_t(NOZZLE_PARK_Z_FEEDRATE));
// Move Z_AXIS to saved position
do_blocking_move_to_z(resume_position.z, feedRate_t(NOZZLE_PARK_Z_FEEDRATE));
}
// Unretract
unscaled_e_move(PAUSE_PARK_RETRACT_LENGTH, feedRate_t(PAUSE_PARK_RETRACT_FEEDRATE));

View File

@@ -38,7 +38,7 @@
#define CHOPPER_09STEP_24V { 3, -1, 5 }
#if ENABLED(MONITOR_DRIVER_STATUS) && !defined(MONITOR_DRIVER_STATUS_INTERVAL_MS)
#define MONITOR_DRIVER_STATUS_INTERVAL_MS 500u
#define MONITOR_DRIVER_STATUS_INTERVAL_MS 500U
#endif
constexpr uint16_t _tmc_thrs(const uint16_t msteps, const uint32_t thrs, const uint32_t spmm) {

View File

@@ -157,7 +157,7 @@ void GcodeSuite::G35() {
const int minutes = trunc(decimal_part * 60.0f);
SERIAL_ECHOPAIR("Turn ", tramming_point_name[i],
" ", (screw_thread & 1) == (adjust > 0) ? "Counter-Clockwise" : "Clockwise",
" ", (screw_thread & 1) == (adjust > 0) ? "CCW" : "CW",
" by ", abs(full_turns), " turns");
if (minutes) SERIAL_ECHOPAIR(" and ", abs(minutes), " minutes");
SERIAL_EOL();

View File

@@ -60,7 +60,7 @@
#define TEST_BYTE ((char) 0xE5)
#if defined(__AVR__) || IS_32BIT_TEENSY
#if EITHER(__AVR__, IS_32BIT_TEENSY)
extern char __bss_end;
char *end_bss = &__bss_end,

View File

@@ -20,6 +20,10 @@
*
*/
#include "../../inc/MarlinConfig.h"
#if ENABLED(DIRECT_PIN_CONTROL)
#include "../gcode.h"
#include "../../MarlinCore.h" // for pin_is_protected and idle()
#include "../../module/stepper.h"
@@ -50,3 +54,5 @@ void GcodeSuite::M226() {
} // pin_state -1 0 1 && pin > -1
} // parser.seen('P')
}
#endif // DIRECT_PIN_CONTROL

View File

@@ -20,9 +20,12 @@
*
*/
#include "../../inc/MarlinConfig.h"
#if ENABLED(DIRECT_PIN_CONTROL)
#include "../gcode.h"
#include "../../MarlinCore.h" // for pin_is_protected
#include "../../inc/MarlinConfig.h"
#if HAS_FAN
#include "../../module/temperature.h"
@@ -96,3 +99,5 @@ void GcodeSuite::M42() {
extDigitalWrite(pin, pin_status);
analogWrite(pin, pin_status);
}
#endif // DIRECT_PIN_CONTROL

View File

@@ -46,7 +46,7 @@
* Tx Same as T?, but nozzle doesn't have to be preheated. Tc requires a preheated nozzle to finish filament load.
* Tc Load to nozzle after filament was prepared by Tc and nozzle is already heated.
*/
void GcodeSuite::T(const uint8_t tool_index) {
void GcodeSuite::T(const int8_t tool_index) {
DEBUG_SECTION(log_T, "T", DEBUGGING(LEVELING));
if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPAIR("...(", tool_index, ")");

View File

@@ -260,12 +260,8 @@ void GcodeSuite::process_parsed_command(const bool no_ok/*=false*/) {
switch (parser.command_letter) {
case 'G': switch (parser.codenum) {
case 0: case 1: G0_G1( // G0: Fast Move, G1: Linear Move
#if IS_SCARA || defined(G0_FEEDRATE)
parser.codenum == 0
#endif
);
break;
case 0: case 1: // G0: Fast Move, G1: Linear Move
G0_G1(TERN_(HAS_FAST_MOVES, parser.codenum == 0)); break;
#if ENABLED(ARC_SUPPORT) && DISABLED(SCARA)
case 2: case 3: G2_G3(parser.codenum == 2); break; // G2: CW ARC, G3: CCW ARC
@@ -315,13 +311,9 @@ void GcodeSuite::process_parsed_command(const bool no_ok/*=false*/) {
#if HAS_LEVELING
case 29: // G29: Bed leveling calibration
#if ENABLED(G29_RETRY_AND_RECOVER)
G29_with_retry();
#else
G29();
#endif
TERN(G29_RETRY_AND_RECOVER, G29_with_retry, G29)();
break;
#endif // HAS_LEVELING
#endif
#if HAS_BED_PROBE
case 30: G30(); break; // G30: Single Z probe
@@ -453,7 +445,10 @@ void GcodeSuite::process_parsed_command(const bool no_ok/*=false*/) {
#endif // SDSUPPORT
case 31: M31(); break; // M31: Report time since the start of SD print or last M109
case 42: M42(); break; // M42: Change pin state
#if ENABLED(DIRECT_PIN_CONTROL)
case 42: M42(); break; // M42: Change pin state
#endif
#if ENABLED(PINS_DEBUGGING)
case 43: M43(); break; // M43: Read pin state
@@ -628,7 +623,9 @@ void GcodeSuite::process_parsed_command(const bool no_ok/*=false*/) {
case 221: M221(); break; // M221: Set Flow Percentage
#endif
case 226: M226(); break; // M226: Wait until a pin reaches a state
#if ENABLED(DIRECT_PIN_CONTROL)
case 226: M226(); break; // M226: Wait until a pin reaches a state
#endif
#if HAS_SERVOS
case 280: M280(); break; // M280: Set servo position absolute
@@ -931,6 +928,10 @@ void GcodeSuite::process_parsed_command(const bool no_ok/*=false*/) {
case 'T': T(parser.codenum); break; // Tn: Tool Change
#if ENABLED(MARLIN_DEV_MODE)
case 'D': D(parser.codenum); break; // Dn: Debug codes
#endif
default:
#if ENABLED(WIFI_CUSTOM_COMMAND)
if (wifi_custom_command(parser.command_ptr)) break;

View File

@@ -109,7 +109,7 @@
* The '#' is necessary when calling from within sd files, as it stops buffer prereading
* M33 - Get the longname version of a path. (Requires LONG_FILENAME_HOST_SUPPORT)
* M34 - Set SD Card sorting options. (Requires SDCARD_SORT_ALPHA)
* M42 - Change pin status via gcode: M42 P<pin> S<value>. LED pin assumed if P is omitted.
* M42 - Change pin status via gcode: M42 P<pin> S<value>. LED pin assumed if P is omitted. (Requires DIRECT_PIN_CONTROL)
* M43 - Display pin status, watch pins for changes, watch endstops & toggle LED, Z servo probe test, toggle pins
* M48 - Measure Z Probe repeatability: M48 P<points> X<pos> Y<pos> V<level> E<engage> L<legs> S<chizoid>. (Requires Z_MIN_PROBE_REPEATABILITY_TEST)
* M73 - Set the progress percentage. (Requires LCD_SET_PROGRESS_MANUALLY)
@@ -183,7 +183,7 @@
* M220 - Set Feedrate Percentage: "M220 S<percent>" (i.e., "FR" on the LCD)
* Use "M220 B" to back up the Feedrate Percentage and "M220 R" to restore it. (Requires PRUSA_MMU2)
* M221 - Set Flow Percentage: "M221 S<percent>"
* M226 - Wait until a pin is in a given state: "M226 P<pin> S<state>"
* M226 - Wait until a pin is in a given state: "M226 P<pin> S<state>" (Requires DIRECT_PIN_CONTROL)
* M240 - Trigger a camera to take a photograph. (Requires PHOTO_GCODE)
* M250 - Set LCD contrast: "M250 C<contrast>" (0-63). (Requires LCD support)
* M260 - i2c Send Data (Requires EXPERIMENTAL_I2CBUS)
@@ -285,6 +285,7 @@
* M995 - Touch screen calibration for TFT display
* M997 - Perform in-application firmware update
* M999 - Restart after being stopped by error
* D... - Custom Development G-code. Add hooks to 'gcode_D.cpp' for developers to test features. (Requires MARLIN_DEV_MODE)
*
* "T" Codes
*
@@ -298,6 +299,10 @@
#include "../feature/encoder_i2c.h"
#endif
#if IS_SCARA || defined(G0_FEEDRATE)
#define HAS_FAST_MOVES 1
#endif
enum AxisRelative : uint8_t { REL_X, REL_Y, REL_Z, REL_E, E_MODE_ABS, E_MODE_REL };
class GcodeSuite {
@@ -404,11 +409,9 @@ public:
private:
static void G0_G1(
#if IS_SCARA || defined(G0_FEEDRATE)
const bool fast_move=false
#endif
);
TERN_(MARLIN_DEV_MODE, static void D(const int16_t dcode));
static void G0_G1(TERN_(HAS_FAST_MOVES, const bool fast_move=false));
TERN_(ARC_SUPPORT, static void G2_G3(const bool clockwise));
@@ -541,8 +544,7 @@ private:
#endif
#endif
static void M42();
TERN_(DIRECT_PIN_CONTROL, static void M42());
TERN_(PINS_DEBUGGING, static void M43());
TERN_(Z_MIN_PROBE_REPEATABILITY_TEST, static void M48());
@@ -670,7 +672,7 @@ private:
static void M221();
#endif
static void M226();
TERN_(DIRECT_PIN_CONTROL, static void M226());
TERN_(PHOTO_GCODE, static void M240());
@@ -882,7 +884,7 @@ private:
TERN_(CONTROLLER_FAN_EDITABLE, static void M710());
static void T(const uint8_t tool_index);
static void T(const int8_t tool_index);
};

View File

@@ -0,0 +1,173 @@
/**
* 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/>.
*
*/
#include "../inc/MarlinConfigPre.h"
#if ENABLED(MARLIN_DEV_MODE)
#include "gcode.h"
#include "../module/settings.h"
#include "../libs/hex_print.h"
#include "../HAL/shared/eeprom_if.h"
/**
* Dn: G-code for development and testing
*
* See https://reprap.org/wiki/G-code#D:_Debug_codes
*
* Put whatever else you need here to test ongoing development.
*/
void GcodeSuite::D(const int16_t dcode) {
switch (dcode) {
case -1:
for (;;); // forever
case 0:
HAL_reboot();
break;
case 1: {
// Zero or pattern-fill the EEPROM data
#if ENABLED(EEPROM_SETTINGS)
persistentStore.access_start();
size_t total = persistentStore.capacity();
int pos = 0;
const uint8_t value = 0x0;
while(total--) {
persistentStore.write_data(pos, &value, 1);
}
persistentStore.access_finish();
#else
settings.reset();
settings.save();
#endif
HAL_reboot();
} break;
case 2: { // D2 Read / Write SRAM
#define SRAM_SIZE 8192
uint8_t *pointer = parser.hex_adr_val('A');
uint16_t len = parser.ushortval('C', 1);
uintptr_t addr = (uintptr_t)pointer;
NOMORE(addr, (size_t)(SRAM_SIZE - 1));
NOMORE(len, SRAM_SIZE - addr);
if (parser.seenval('X')) {
// Write the hex bytes after the X
uint16_t val = parser.hex_val('X');
while (len--) {
*pointer = val;
pointer++;
}
}
else {
while (len--) print_hex_byte(*(pointer++));
SERIAL_EOL();
}
} break;
case 3: { // D3 Read / Write EEPROM
uint8_t *pointer = parser.hex_adr_val('A');
uint16_t len = parser.ushortval('C', 1);
uintptr_t addr = (uintptr_t)pointer;
#ifndef MARLIN_EEPROM_SIZE
#define MARLIN_EEPROM_SIZE size_t(E2END + 1)
#endif
NOMORE(addr, (size_t)(MARLIN_EEPROM_SIZE - 1));
NOMORE(len, MARLIN_EEPROM_SIZE - addr);
if (parser.seenval('X')) {
uint16_t val = parser.hex_val('X');
#if ENABLED(EEPROM_SETTINGS)
persistentStore.access_start();
while(len--) {
int pos = 0;
persistentStore.write_data(pos, (uint8_t *)&val, sizeof(val));
}
SERIAL_EOL();
persistentStore.access_finish();
#else
SERIAL_ECHOLN("NO EEPROM");
#endif
}
else {
while (len--) {
// Read bytes from EEPROM
#if ENABLED(EEPROM_SETTINGS)
persistentStore.access_start();
uint8_t val;
while(len--) {
int pos = 0;
if (!persistentStore.read_data(pos, (uint8_t *)&val, sizeof(val))) {
print_hex_byte(val);
}
}
SERIAL_EOL();
persistentStore.access_finish();
#else
SERIAL_ECHOLN("NO EEPROM");
#endif
}
SERIAL_EOL();
}
} break;
case 4: { // D4 Read / Write PIN
// const uint8_t pin = parser.byteval('P');
// const bool is_out = parser.boolval('F'),
// val = parser.byteval('V', LOW);
if (parser.seenval('X')) {
// TODO: Write the hex bytes after the X
//while (len--) {
//}
}
else {
// while (len--) {
// TODO: Read bytes from EEPROM
// print_hex_byte(eeprom_read_byte(*(adr++));
// }
SERIAL_EOL();
}
} break;
case 5: { // D4 Read / Write onboard Flash
#define FLASH_SIZE 1024
uint8_t *pointer = parser.hex_adr_val('A');
uint16_t len = parser.ushortval('C', 1);
uintptr_t addr = (uintptr_t)pointer;
NOMORE(addr, (size_t)(FLASH_SIZE - 1));
NOMORE(len, FLASH_SIZE - addr);
if (parser.seenval('X')) {
// TODO: Write the hex bytes after the X
//while (len--) {
//}
}
else {
// while (len--) {
// TODO: Read bytes from EEPROM
// print_hex_byte(eeprom_read_byte(adr++));
// }
SERIAL_EOL();
}
} break;
}
}
#endif

View File

@@ -44,11 +44,7 @@ extern xyze_pos_t destination;
/**
* G0, G1: Coordinated movement of X Y Z E axes
*/
void GcodeSuite::G0_G1(
#if IS_SCARA || defined(G0_FEEDRATE)
const bool fast_move/*=false*/
#endif
) {
void GcodeSuite::G0_G1(TERN_(HAS_FAST_MOVES, const bool fast_move/*=false*/)) {
if (IsRunning()
#if ENABLED(NO_MOTION_BEFORE_HOMING)

View File

@@ -147,22 +147,15 @@ void GCodeParser::parse(char *p) {
starpos[1] = '\0';
}
#if ENABLED(GCODE_MOTION_MODES)
#if ENABLED(ARC_SUPPORT)
#define GTOP 3
#else
#define GTOP 1
#endif
#if ANY(MARLIN_DEV_MODE, SWITCHING_TOOLHEAD, MAGNETIC_SWITCHING_TOOLHEAD, ELECTROMAGNETIC_SWITCHING_TOOLHEAD)
#define SIGNED_CODENUM 1
#endif
// Bail if the letter is not G, M, or T
// (or a valid parameter for the current motion mode)
switch (letter) {
case 'G': case 'M': case 'T':
#if ENABLED(CANCEL_OBJECTS)
case 'O':
#endif
case 'G': case 'M': case 'T': TERN_(MARLIN_DEV_MODE, case 'D':)
// Skip spaces to get the numeric part
while (*p == ' ') p++;
@@ -178,22 +171,33 @@ void GCodeParser::parse(char *p) {
#endif
// Bail if there's no command code number
if (!NUMERIC(*p)) return;
if (!TERN(SIGNED_CODENUM, NUMERIC_SIGNED(*p), NUMERIC(*p))) return;
// Save the command letter at this point
// A '?' signifies an unknown command
command_letter = letter;
// Get the code number - integer digits only
codenum = 0;
do { codenum *= 10, codenum += *p++ - '0'; } while (NUMERIC(*p));
{
#if ENABLED(SIGNED_CODENUM)
int sign = 1; // Allow for a negative code like D-1 or T-1
if (*p == '-') { sign = -1; ++p; }
#endif
// Get the code number - integer digits only
codenum = 0;
do { codenum = codenum * 10 + *p++ - '0'; } while (NUMERIC(*p));
// Apply the sign, if any
TERN_(SIGNED_CODENUM, codenum *= sign);
}
// Allow for decimal point in command
#if ENABLED(USE_GCODE_SUBCODES)
if (*p == '.') {
p++;
while (NUMERIC(*p))
subcode *= 10, subcode += *p++ - '0';
subcode = subcode * 10 + *p++ - '0';
}
#endif
@@ -201,11 +205,8 @@ void GCodeParser::parse(char *p) {
while (*p == ' ') p++;
#if ENABLED(GCODE_MOTION_MODES)
if (letter == 'G' && (codenum <= GTOP || codenum == 5
#if ENABLED(G38_PROBE_TARGET)
|| codenum == 38
#endif
)
if (letter == 'G'
&& (codenum <= TERN(ARC_SUPPORT, 3, 1) || codenum == 5 || TERN0(G38_PROBE_TARGET, codenum == 38))
) {
motion_mode_codenum = codenum;
TERN_(USE_GCODE_SUBCODES, motion_mode_subcode = subcode);
@@ -216,12 +217,12 @@ void GCodeParser::parse(char *p) {
#if ENABLED(GCODE_MOTION_MODES)
#if ENABLED(ARC_SUPPORT)
case 'I': case 'J': case 'R':
case 'I' ... 'J': case 'R':
if (motion_mode_codenum != 2 && motion_mode_codenum != 3) return;
#endif
case 'P': case 'Q':
case 'P' ... 'Q':
if (motion_mode_codenum != 5) return;
case 'X': case 'Y': case 'Z': case 'E': case 'F':
case 'X' ... 'Z': case 'E' ... 'F':
if (motion_mode_codenum < 0) return;
command_letter = 'G';
codenum = motion_mode_codenum;
@@ -247,7 +248,7 @@ void GCodeParser::parse(char *p) {
#if ENABLED(EXPECTED_PRINTER_CHECK)
case 16:
#endif
case 23: case 28: case 30: case 33: case 117: case 118: case 928:
case 23: case 28: case 30: case 117 ... 118: case 928:
string_arg = unescape_string(p);
return;
default: break;

View File

@@ -114,6 +114,11 @@ public:
return valid_signless(p) || ((p[0] == '-' || p[0] == '+') && valid_signless(&p[1])); // [-+]?.?[0-9]
}
FORCE_INLINE static bool valid_number(const char * const p) {
// TODO: With MARLIN_DEV_MODE allow HEX values starting with "x"
return valid_float(p);
}
#if ENABLED(FASTER_GCODE_PARSER)
FORCE_INLINE static bool valid_int(const char * const p) {
@@ -142,8 +147,12 @@ public:
if (ind >= COUNT(param)) return false; // Only A-Z
const bool b = TEST32(codebits, ind);
if (b) {
char * const ptr = command_ptr + param[ind];
value_ptr = param[ind] && valid_float(ptr) ? ptr : nullptr;
if (param[ind]) {
char * const ptr = command_ptr + param[ind];
value_ptr = valid_number(ptr) ? ptr : nullptr;
}
else
value_ptr = nullptr;
}
return b;
}
@@ -198,7 +207,7 @@ public:
static inline bool seen(const char c) {
char *p = strgchr(command_args, c);
const bool b = !!p;
if (b) value_ptr = valid_float(&p[1]) ? &p[1] : nullptr;
if (b) value_ptr = valid_number(&p[1]) ? &p[1] : nullptr;
return b;
}
@@ -401,6 +410,25 @@ public:
static inline float linearval(const char c, const float dval=0) { return seenval(c) ? value_linear_units() : dval; }
static inline float celsiusval(const char c, const float dval=0) { return seenval(c) ? value_celsius() : dval; }
#if ENABLED(MARLIN_DEV_MODE)
static inline uint8_t* hex_adr_val(const char c, uint8_t * const dval=nullptr) {
if (!seen(c) || *value_ptr != 'x') return dval;
uint8_t *out = nullptr;
for (char *vp = value_ptr + 1; HEXCHR(*vp) >= 0; vp++)
out = (uint8_t*)((uintptr_t(out) << 8) | HEXCHR(*vp));
return out;
}
static inline uint16_t hex_val(const char c, uint16_t const dval=0) {
if (!seen(c) || *value_ptr != 'x') return dval;
uint16_t out = 0;
for (char *vp = value_ptr + 1; HEXCHR(*vp) >= 0; vp++)
out = ((out) << 8) | HEXCHR(*vp);
return out;
}
#endif
};
extern GCodeParser parser;

View File

@@ -226,9 +226,9 @@
#define LCD_PROGRESS_BAR
#endif
#if ENABLED(TFTGLCD_PANEL_I2C)
#define LCD_USE_I2C_BUZZER // Enable buzzer on LCD for I2C and SPI buses (LiquidTWI2 not required)
#define LCD_I2C_ADDRESS 0x27 // Must be equal to panel's I2C slave addres
#endif
#define LCD_USE_I2C_BUZZER // Enable buzzer on LCD, used for both I2C and SPI buses (LiquidTWI2 not required)
#define STD_ENCODER_PULSES_PER_STEP 2
#define STD_ENCODER_STEPS_PER_MENU_ITEM 1
#define LCD_WIDTH 20 // 20 or 24 chars in line
@@ -603,10 +603,6 @@
#define DO_SWITCH_EXTRUDER 1
#endif
#ifdef SWITCHING_NOZZLE_E1_SERVO_NR
#define SWITCHING_NOZZLE_TWO_SERVOS 1
#endif
/**
* Default hotend offsets, if not defined
*/
@@ -657,14 +653,7 @@
#ifndef Z_PROBE_SERVO_NR
#define Z_PROBE_SERVO_NR 0
#endif
#ifndef NUM_SERVOS
#define NUM_SERVOS (Z_PROBE_SERVO_NR + 1)
#endif
#undef DEACTIVATE_SERVOS_AFTER_MOVE
#if NUM_SERVOS == 1
#undef SERVO_DELAY
#define SERVO_DELAY { 50 }
#endif
// Always disable probe pin inverting for BLTouch
#undef Z_MIN_PROBE_ENDSTOP_INVERTING
@@ -675,14 +664,10 @@
#endif
#endif
#ifndef NUM_SERVOS
#define NUM_SERVOS 0
#endif
/**
* Set a flag for a servo probe (or BLTouch)
*/
#if defined(Z_PROBE_SERVO_NR) && Z_PROBE_SERVO_NR >= 0
#ifdef Z_PROBE_SERVO_NR
#define HAS_Z_SERVO_PROBE 1
#endif
#if ANY(HAS_Z_SERVO_PROBE, SWITCHING_EXTRUDER, SWITCHING_NOZZLE)

View File

@@ -26,6 +26,51 @@
* Defines that depend on advanced configuration.
*/
#ifdef SWITCHING_NOZZLE_E1_SERVO_NR
#define SWITCHING_NOZZLE_TWO_SERVOS 1
#endif
// Determine NUM_SERVOS if none was supplied
#ifndef NUM_SERVOS
#define NUM_SERVOS 0
#if ANY(CHAMBER_VENT, HAS_Z_SERVO_PROBE, SWITCHING_EXTRUDER, SWITCHING_NOZZLE)
#if NUM_SERVOS <= Z_PROBE_SERVO_NR
#undef NUM_SERVOS
#define NUM_SERVOS (Z_PROBE_SERVO_NR + 1)
#endif
#if NUM_SERVOS <= CHAMBER_VENT_SERVO_NR
#undef NUM_SERVOS
#define NUM_SERVOS (CHAMBER_VENT_SERVO_NR + 1)
#endif
#if NUM_SERVOS <= SWITCHING_TOOLHEAD_SERVO_NR
#undef NUM_SERVOS
#define NUM_SERVOS (SWITCHING_TOOLHEAD_SERVO_NR + 1)
#endif
#if NUM_SERVOS <= SWITCHING_NOZZLE_SERVO_NR
#undef NUM_SERVOS
#define NUM_SERVOS (SWITCHING_NOZZLE_SERVO_NR + 1)
#endif
#if NUM_SERVOS <= SWITCHING_NOZZLE_E1_SERVO_NR
#undef NUM_SERVOS
#define NUM_SERVOS (SWITCHING_NOZZLE_E1_SERVO_NR + 1)
#endif
#if NUM_SERVOS <= SWITCHING_EXTRUDER_SERVO_NR
#undef NUM_SERVOS
#define NUM_SERVOS (SWITCHING_EXTRUDER_SERVO_NR + 1)
#endif
#if NUM_SERVOS <= SWITCHING_EXTRUDER_E23_SERVO_NR
#undef NUM_SERVOS
#define NUM_SERVOS (SWITCHING_EXTRUDER_E23_SERVO_NR + 1)
#endif
#endif
#endif
// Convenience override for a BLTouch alone
#if ENABLED(BLTOUCH) && NUM_SERVOS == 1
#undef SERVO_DELAY
#define SERVO_DELAY { 50 }
#endif
#if EXTRUDERS == 0
#define NO_VOLUMETRICS
#undef TEMP_SENSOR_0

View File

@@ -2457,7 +2457,7 @@
/**
* Buzzer/Speaker
*/
#if PIN_EXISTS(BEEPER) || ANY(LCD_USE_I2C_BUZZER, PCA9632_BUZZER, IS_TFTGLCD_PANEL)
#if PIN_EXISTS(BEEPER) || ANY(LCD_USE_I2C_BUZZER, PCA9632_BUZZER)
#define HAS_BUZZER 1
#if PIN_EXISTS(BEEPER)
#define USE_BEEPER 1

View File

@@ -27,21 +27,31 @@
#include "MarlinConfigPre.h"
#include "../HAL/HAL.h"
#ifndef __MARLIN_DEPS__
#include "../HAL/HAL.h"
#endif
#include "../pins/pins.h"
#include HAL_PATH(../HAL, timers.h)
#include HAL_PATH(../HAL, spi_pins.h)
#ifndef __MARLIN_DEPS__
#include HAL_PATH(../HAL, timers.h)
#include HAL_PATH(../HAL, spi_pins.h)
#endif
#include "Conditionals_post.h"
#include HAL_PATH(../HAL, inc/Conditionals_post.h)
#include "../core/types.h" // Ahead of sanity-checks
#ifndef __MARLIN_DEPS__
#include "SanityCheck.h"
#include HAL_PATH(../HAL, inc/SanityCheck.h)
#include HAL_PATH(../HAL, inc/Conditionals_post.h)
// Include all core headers
#include "../core/language.h"
#include "../core/utility.h"
#include "../core/serial.h"
#include "../core/types.h" // Ahead of sanity-checks
#include "SanityCheck.h"
#include HAL_PATH(../HAL, inc/SanityCheck.h)
// Include all core headers
#include "../core/language.h"
#include "../core/utility.h"
#include "../core/serial.h"
#endif

View File

@@ -30,7 +30,9 @@
//
#include <stdint.h>
#include "../HAL/platforms.h"
#ifndef __MARLIN_DEPS__
#include "../HAL/platforms.h"
#endif
#include "../core/boards.h"
#include "../core/macros.h"
@@ -45,10 +47,16 @@
#include "Version.h"
#include "Conditionals_LCD.h"
#include HAL_PATH(../HAL, inc/Conditionals_LCD.h)
#ifndef __MARLIN_DEPS__
#include HAL_PATH(../HAL, inc/Conditionals_LCD.h)
#endif
#include "../core/drivers.h"
#include "../../Configuration_adv.h"
#include "Conditionals_adv.h"
#include HAL_PATH(../HAL, inc/Conditionals_adv.h)
#ifndef __MARLIN_DEPS__
#include HAL_PATH(../HAL, inc/Conditionals_adv.h)
#endif

View File

@@ -1249,8 +1249,10 @@ static_assert(Y_MAX_LENGTH >= Y_BED_SIZE, "Movement bounds (Y_MIN_POS, Y_MAX_POS
* NUM_SERVOS is required for a Z servo probe
*/
#if HAS_Z_SERVO_PROBE
#ifndef NUM_SERVOS
#error "You must set NUM_SERVOS for a Z servo probe (Z_PROBE_SERVO_NR)."
#if !NUM_SERVOS
#error "NUM_SERVOS is required for a Z servo probe (Z_PROBE_SERVO_NR)."
#elif Z_PROBE_SERVO_NR >= NUM_SERVOS
#error "Z_PROBE_SERVO_NR must be smaller than NUM_SERVOS."
#elif Z_PROBE_SERVO_NR == 0 && !PIN_EXISTS(SERVO0)
#error "SERVO0_PIN must be defined for your servo or BLTOUCH probe."
#elif Z_PROBE_SERVO_NR == 1 && !PIN_EXISTS(SERVO1)
@@ -1259,8 +1261,6 @@ static_assert(Y_MAX_LENGTH >= Y_BED_SIZE, "Movement bounds (Y_MIN_POS, Y_MAX_POS
#error "SERVO2_PIN must be defined for your servo or BLTOUCH probe."
#elif Z_PROBE_SERVO_NR == 3 && !PIN_EXISTS(SERVO3)
#error "SERVO3_PIN must be defined for your servo or BLTOUCH probe."
#elif Z_PROBE_SERVO_NR >= NUM_SERVOS
#error "Z_PROBE_SERVO_NR must be smaller than NUM_SERVOS."
#endif
#endif
@@ -1807,6 +1807,30 @@ static_assert(hbm[Z_AXIS] >= 0, "HOMING_BUMP_MM.Z must be greater than or equal
#error "TEMP_SENSOR_CHAMBER requires TEMP_CHAMBER_PIN. Please add it to your configuration."
#endif
#if ENABLED(CHAMBER_FAN) && !(defined(CHAMBER_FAN_MODE) && WITHIN(CHAMBER_FAN_MODE, 0, 2))
#error "CHAMBER_FAN_MODE must be between 0 and 2. Please update your Configuration_adv.h."
#endif
#if ENABLED(CHAMBER_VENT)
#ifndef CHAMBER_VENT_SERVO_NR
#error "CHAMBER_VENT_SERVO_NR is required for CHAMBER SERVO. Update your Configuration_adv.h."
#elif !NUM_SERVOS
#error "NUM_SERVOS is required for a Heated Chamber vent servo (CHAMBER_VENT_SERVO_NR)."
#elif CHAMBER_VENT_SERVO_NR >= NUM_SERVOS
#error "CHAMBER_VENT_SERVO_NR must be smaller than NUM_SERVOS."
#elif HAS_Z_SERVO_PROBE && CHAMBER_VENT_SERVO_NR == Z_PROBE_SERVO_NR
#error "CHAMBER SERVO is already used by BLTOUCH. Please change."
#elif CHAMBER_VENT_SERVO_NR == 0 && !PIN_EXISTS(SERVO0)
#error "SERVO0_PIN must be defined for your Heated Chamber vent servo."
#elif CHAMBER_VENT_SERVO_NR == 1 && !PIN_EXISTS(SERVO1)
#error "SERVO1_PIN must be defined for your Heated Chamber vent servo."
#elif CHAMBER_VENT_SERVO_NR == 2 && !PIN_EXISTS(SERVO2)
#error "SERVO2_PIN must be defined for your Heated Chamber vent servo."
#elif CHAMBER_VENT_SERVO_NR == 3 && !PIN_EXISTS(SERVO3)
#error "SERVO3_PIN must be defined for your Heated Chamber vent servo."
#endif
#endif
#if TEMP_SENSOR_PROBE
#if !PIN_EXISTS(TEMP_PROBE)
#error "TEMP_SENSOR_PROBE requires TEMP_PROBE_PIN. Please add it to your configuration."

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