Compare commits
141 Commits
bugfix-2.1
...
2.0.7.1
Author | SHA1 | Date | |
---|---|---|---|
|
11662bf2b6 | ||
|
887e2637c0 | ||
|
958f05e4b4 | ||
|
9126a2e654 | ||
|
5070fae231 | ||
|
454f9d6319 | ||
|
59b6b32e6e | ||
|
6d9709e20d | ||
|
7a484959d5 | ||
|
78060f55e6 | ||
|
3fca19fbab | ||
|
b8700e0aa8 | ||
|
d66bc5cec2 | ||
|
fb28c6041a | ||
|
0f9d57e03a | ||
|
32377849da | ||
|
0975c487f0 | ||
|
d07ad63016 | ||
|
1a5a3cf253 | ||
|
6f6901180c | ||
|
9cc6297292 | ||
|
cf53bc2dd2 | ||
|
f4f4ea05e1 | ||
|
2b845e5a75 | ||
|
6fcbf11454 | ||
|
8a69147adf | ||
|
f8ceedea5c | ||
|
a4e4226578 | ||
|
e76fd6bd33 | ||
|
437bee418b | ||
|
31238de937 | ||
|
cb8c99c4f8 | ||
|
2fe81d0cb2 | ||
|
fb7d7ee7b4 | ||
|
d99fdcf526 | ||
|
e4d2234a04 | ||
|
bea919da6e | ||
|
2fb22cc116 | ||
|
d4b6542ce1 | ||
|
7d47ee732e | ||
|
6ceacd62f9 | ||
|
2ce6741731 | ||
|
2213eb3317 | ||
|
b947590082 | ||
|
20bcaa78f6 | ||
|
9834a36a17 | ||
|
90801f8815 | ||
|
4d1357e318 | ||
|
8d090cbdbb | ||
|
ec5b78d18b | ||
|
d33317eadb | ||
|
f8375a3ea2 | ||
|
5a02959d18 | ||
|
cc123bc657 | ||
|
4f6a0605bf | ||
|
b89700ed35 | ||
|
ca853fbe19 | ||
|
1ba2548fb2 | ||
|
1332be77a5 | ||
|
a7f334387c | ||
|
e8177735a0 | ||
|
aac0326f7f | ||
|
a52afd2aeb | ||
|
9913333c33 | ||
|
ca194ca52e | ||
|
b90e7c421f | ||
|
96e29cd7e5 | ||
|
fd9c6983d3 | ||
|
da144dcf3b | ||
|
1d92badecd | ||
|
242064fa99 | ||
|
ad2d1b6e31 | ||
|
978e0e49c7 | ||
|
02a500dc93 | ||
|
fa5ca8678c | ||
|
01359cff6b | ||
|
37b56d6347 | ||
|
ad59adfe24 | ||
|
121cd42c41 | ||
|
cf1c57a04d | ||
|
5804761b5d | ||
|
3dd21a2770 | ||
|
b160e8b93f | ||
|
de37196760 | ||
|
84b96d3d47 | ||
|
92076c6560 | ||
|
5e5daf1ff2 | ||
|
8b637e436c | ||
|
b73ac40fa3 | ||
|
7ed66d06a0 | ||
|
c1b2379204 | ||
|
5e0958edbf | ||
|
5513e67512 | ||
|
354a9e5970 | ||
|
ee4910c5d7 | ||
|
697ef2636e | ||
|
481b8ff2d9 | ||
|
7bf89f2b9f | ||
|
ed7110838e | ||
|
842dea4bd5 | ||
|
a73e61078d | ||
|
c352aeb32e | ||
|
e4d8336175 | ||
|
0518dec60d | ||
|
015c4e6fbd | ||
|
0f9a14dfda | ||
|
7124b2164d | ||
|
efc19260a7 | ||
|
d37bfa3b4e | ||
|
129b1bb8d4 | ||
|
8dbbcfd382 | ||
|
fa48fbb9b8 | ||
|
d6e767e36b | ||
|
b29aae6c0c | ||
|
1955eea1b8 | ||
|
42fa9fc570 | ||
|
130d0395d0 | ||
|
c5f1ff9ee1 | ||
|
089cc68a04 | ||
|
2b759b9e8d | ||
|
5f27f7de47 | ||
|
282f4678cd | ||
|
c41f3f8582 | ||
|
8670df08a2 | ||
|
730690ea03 | ||
|
3543873da7 | ||
|
c505626c42 | ||
|
7e8505fc11 | ||
|
f9aec2685c | ||
|
dd6a7ca197 | ||
|
62b9d7dc73 | ||
|
d83382eb55 | ||
|
4c76314c26 | ||
|
64ab254f26 | ||
|
e6a7be922b | ||
|
1525c2530e | ||
|
016e4c0193 | ||
|
be642610ae | ||
|
ee17051933 | ||
|
0673f335e1 | ||
|
ac7ee4b94a |
43
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
43
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal 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
17
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal 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!
|
35
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file
35
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal 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.
|
30
.github/issue_template.md
vendored
30
.github/issue_template.md
vendored
@@ -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
35
.github/workflows/bump-date.yml
vendored
Normal 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
33
.github/workflows/check-pr.yml
vendored
Normal 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
27
.github/workflows/close-stale.yml
vendored
Normal 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
32
.github/workflows/lock-closed.yml
vendored
Normal 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
22
.github/workflows/unlock-reopened.yml
vendored
Normal 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 }}"
|
@@ -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
|
||||
|
@@ -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
|
||||
|
||||
//#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
|
||||
|
||||
#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_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
|
||||
//
|
||||
|
155
Marlin/Makefile
155
Marlin/Makefile
@@ -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
|
||||
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
|
||||
|
||||
############
|
||||
@@ -209,6 +236,7 @@ else ifeq ($(HARDWARE_MOTHERBOARD),1120)
|
||||
# Ultimaker (Older electronics. Pre 1.5.4. This is rare)
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1121)
|
||||
MCU ?= atmega1280
|
||||
PROG_MCU ?= m1280
|
||||
|
||||
# Azteeg X3
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),1122)
|
||||
@@ -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
|
||||
|
||||
@@ -519,6 +580,7 @@ ifeq ($(IS_MCU),1)
|
||||
# Set to arduino, ATmega2560 if not yet set.
|
||||
HARDWARE_VARIANT ?= arduino
|
||||
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
|
||||
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,7 +770,7 @@ 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)
|
||||
@@ -698,8 +779,14 @@ ifeq ($(HARDWARE_VARIANT), Teensy)
|
||||
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
|
||||
@@ -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"
|
||||
|
@@ -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.
|
||||
|
@@ -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" {
|
||||
|
@@ -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),
|
||||
|
@@ -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
|
||||
|
@@ -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)
|
||||
|
@@ -30,7 +30,7 @@
|
||||
*/
|
||||
|
||||
/**
|
||||
* Description: HAL for Arduino Due and compatible (SAM3X8E)
|
||||
* HAL for Arduino Due and compatible (SAM3X8E)
|
||||
*
|
||||
* For ARDUINO_ARCH_SAM
|
||||
*/
|
||||
|
@@ -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 {
|
||||
|
@@ -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
|
||||
|
@@ -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>
|
||||
|
@@ -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"
|
||||
)
|
||||
|
@@ -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
|
||||
|
@@ -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) );
|
||||
}
|
||||
|
@@ -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);
|
||||
|
@@ -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))
|
||||
|
@@ -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
|
||||
//
|
||||
|
@@ -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))
|
||||
|
||||
|
@@ -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
|
||||
|
@@ -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();
|
||||
|
@@ -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!"
|
||||
#endif
|
||||
|
||||
#if PIN_EXISTS(SS)
|
||||
OUT_WRITE(SS_PIN, HIGH);
|
||||
#endif
|
||||
}
|
||||
|
||||
// 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
|
||||
|
@@ -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)
|
||||
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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); }
|
||||
|
@@ -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__
|
||||
|
@@ -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__
|
||||
|
@@ -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"
|
||||
|
||||
|
@@ -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
|
||||
|
@@ -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__
|
||||
|
@@ -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);
|
||||
|
||||
/*
|
||||
|
@@ -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);
|
||||
|
||||
|
@@ -20,9 +20,8 @@
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* Description: HAL for Teensy32 (MK20DX256)
|
||||
* HAL for Teensy 3.2 (MK20DX256)
|
||||
*/
|
||||
|
||||
#ifdef __MK20DX256__
|
||||
|
@@ -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_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
|
||||
|
@@ -51,5 +51,4 @@ void libServo::move(const int value) {
|
||||
}
|
||||
|
||||
#endif // HAS_SERVOS
|
||||
|
||||
#endif // __MK20DX256__
|
||||
|
@@ -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"
|
||||
|
@@ -21,7 +21,7 @@
|
||||
*/
|
||||
|
||||
/**
|
||||
* Teensy3.2 __MK20DX256__
|
||||
* HAL Timers for Teensy 3.2 (MK20DX256)
|
||||
*/
|
||||
|
||||
#ifdef __MK20DX256__
|
||||
|
@@ -22,8 +22,7 @@
|
||||
#pragma once
|
||||
|
||||
/**
|
||||
* Description: HAL for
|
||||
* Teensy3.2 (__MK20DX256__)
|
||||
* HAL Timers for Teensy 3.2 (MK20DX256)
|
||||
*/
|
||||
|
||||
#include <stdint.h>
|
||||
|
@@ -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__)
|
||||
|
@@ -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_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
|
||||
|
@@ -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"
|
||||
|
@@ -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__
|
||||
|
@@ -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
|
||||
|
@@ -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>
|
||||
|
||||
|
@@ -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.
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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
|
||||
|
@@ -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__)
|
||||
|
@@ -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>
|
||||
|
@@ -21,7 +21,7 @@
|
||||
*/
|
||||
|
||||
/**
|
||||
* Description: HAL for Teensy40 (IMXRT1062)
|
||||
* HAL for Teensy 4.0 / 4.1 (IMXRT1062)
|
||||
*/
|
||||
|
||||
#ifdef __IMXRT1062__
|
||||
|
@@ -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_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()
|
||||
|
@@ -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"
|
||||
|
@@ -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__
|
||||
|
@@ -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
|
||||
|
@@ -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"
|
||||
|
@@ -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.
|
||||
|
@@ -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.
|
||||
*/
|
||||
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -21,7 +21,7 @@
|
||||
*/
|
||||
|
||||
/**
|
||||
* Teensy4.0/4.1 (__IMXRT1062__)
|
||||
* HAL Timers for Teensy 4.0 (IMXRT1062DVL6A) / 4.1 (IMXRT1062DVJ6A)
|
||||
*/
|
||||
|
||||
#ifdef __IMXRT1062__
|
||||
|
@@ -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>
|
||||
|
@@ -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__
|
||||
|
@@ -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();
|
||||
|
@@ -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());
|
||||
|
@@ -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
|
||||
|
@@ -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!
|
||||
|
@@ -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))
|
||||
|
@@ -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
|
||||
|
@@ -40,7 +40,7 @@
|
||||
#endif
|
||||
|
||||
#ifndef lowByte
|
||||
#define lowByte(w) ((uint8_t) ((w) & 0xff))
|
||||
#define lowByte(w) ((uint8_t) ((w) & 0xFF))
|
||||
#endif
|
||||
|
||||
#ifndef highByte
|
||||
|
@@ -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;
|
||||
|
@@ -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;
|
||||
|
@@ -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));
|
||||
|
||||
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));
|
||||
}
|
||||
|
||||
// Unretract
|
||||
unscaled_e_move(PAUSE_PARK_RETRACT_LENGTH, feedRate_t(PAUSE_PARK_RETRACT_FEEDRATE));
|
||||
|
@@ -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) {
|
||||
|
@@ -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();
|
||||
|
@@ -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,
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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, ")");
|
||||
|
@@ -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
|
||||
|
||||
#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
|
||||
|
||||
#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;
|
||||
|
@@ -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);
|
||||
|
||||
};
|
||||
|
||||
|
173
Marlin/src/gcode/gcode_d.cpp
Normal file
173
Marlin/src/gcode/gcode_d.cpp
Normal 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
|
@@ -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)
|
||||
|
@@ -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;
|
||||
|
||||
{
|
||||
#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 *= 10, codenum += *p++ - '0'; } while (NUMERIC(*p));
|
||||
|
||||
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;
|
||||
|
@@ -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) {
|
||||
if (param[ind]) {
|
||||
char * const ptr = command_ptr + param[ind];
|
||||
value_ptr = param[ind] && valid_float(ptr) ? ptr : nullptr;
|
||||
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;
|
||||
|
@@ -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)
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -27,13 +27,21 @@
|
||||
|
||||
#include "MarlinConfigPre.h"
|
||||
|
||||
#ifndef __MARLIN_DEPS__
|
||||
#include "../HAL/HAL.h"
|
||||
#endif
|
||||
|
||||
#include "../pins/pins.h"
|
||||
|
||||
#ifndef __MARLIN_DEPS__
|
||||
#include HAL_PATH(../HAL, timers.h)
|
||||
#include HAL_PATH(../HAL, spi_pins.h)
|
||||
#endif
|
||||
|
||||
#include "Conditionals_post.h"
|
||||
|
||||
#ifndef __MARLIN_DEPS__
|
||||
|
||||
#include HAL_PATH(../HAL, inc/Conditionals_post.h)
|
||||
|
||||
#include "../core/types.h" // Ahead of sanity-checks
|
||||
@@ -45,3 +53,5 @@
|
||||
#include "../core/language.h"
|
||||
#include "../core/utility.h"
|
||||
#include "../core/serial.h"
|
||||
|
||||
#endif
|
||||
|
@@ -30,7 +30,9 @@
|
||||
//
|
||||
#include <stdint.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"
|
||||
|
||||
#ifndef __MARLIN_DEPS__
|
||||
#include HAL_PATH(../HAL, inc/Conditionals_LCD.h)
|
||||
#endif
|
||||
|
||||
#include "../core/drivers.h"
|
||||
#include "../../Configuration_adv.h"
|
||||
|
||||
#include "Conditionals_adv.h"
|
||||
|
||||
#ifndef __MARLIN_DEPS__
|
||||
#include HAL_PATH(../HAL, inc/Conditionals_adv.h)
|
||||
#endif
|
||||
|
@@ -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
Reference in New Issue
Block a user