Compare commits

...

33 Commits

Author SHA1 Message Date
ellensp
a942c93336 🩹 Longer3D LK has ONBOARD_SDIO (#27129) 2024-06-21 16:04:24 -05:00
Scott Lahteine
fff0d70361 🔖 Version 2.1.2.4 2024-06-15 20:45:26 -05:00
ellensp
53392f39a4 🐛 Mount media early for POWER_LOSS_RECOVERY (#27177) 2024-06-15 20:28:43 -05:00
Mihai
1f8587d312 🧑‍💻 Adjust pulse_phase_isr code guards (#27112) 2024-06-15 20:28:43 -05:00
Scott Lahteine
aa778c3cb0 🚸 Prefer friendly Power Off over Auto-unalive 2024-06-15 20:28:43 -05:00
Scott Lahteine
af8747ec69 📝 "Boards Manager" 2024-06-15 20:28:43 -05:00
Scott Lahteine
e6787f7283 🔧 Assume RAMPS_CREALITY is not CR2020 2024-06-15 20:28:43 -05:00
TheRaf974
4f146ef657 🔧 Overridable SUICIDE_PIN for RAMPS_CREALITY (#27143) 2024-06-15 20:28:43 -05:00
Scott Lahteine
c674f01c01 🎨 Misc. SPI cleanup 2024-06-15 20:28:43 -05:00
Mihai
f7680f3f73 ️ Optimize LPC176x pin toggle (#27149) 2024-06-15 20:28:43 -05:00
ellensp
34305439cd ✏️ Fix comma typo (#27138) 2024-06-15 20:28:43 -05:00
Scott Lahteine
23fda5b3cf 📝 Remove dead video links 2024-06-15 20:28:43 -05:00
Scott Lahteine
1d13aaa31f 🔨 Update SAMD51 build deps 2024-06-15 20:28:43 -05:00
ellensp
9e02be465d 🩹 Fix broken STEPTEST 2024-06-15 03:41:21 +12:00
Scott Lahteine
798284a53e 🔖 Version 2.1.2.3 2024-05-29 00:46:50 -05:00
Mihai
7c4855381b 🐛 Prevent 'EVAL' macro collision (#27132) 2024-05-28 18:52:15 -05:00
Scott Lahteine
63fba6119b 🩹 Fix serial temp error language 2024-05-06 19:10:38 -05:00
Keith Bennett
fe9e890233 🐛 Fix bool operator for XYval, etc. (#27026)
Co-authored-by: sjasonsmith <20053467+sjasonsmith@users.noreply.github.com>
2024-05-06 17:50:41 -05:00
Keith Bennett
1289141f4b 🩹 Fix ESP3D WiFi, bump config version (#27025)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2024-05-06 17:49:02 -05:00
Keith Bennett
18288ceadc 🩹 Fix missing HAS_DUAL_Y_STEPPERS (#27024)
Co-authored-by: ellensp <530024+ellensp@users.noreply.github.com>
2024-05-06 17:46:41 -05:00
Keith Bennett
5b0c818522 🩹 Update preheat end time var (#27023)
Co-authored-by: ellensp <530024+ellensp@users.noreply.github.com>
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2024-05-06 17:45:44 -05:00
Keith Bennett
ece37ba0fc 🩹 Fix broken ENDSTOPPULLUP_ZMIN_PROBE (#27022)
Co-authored-by: ellensp <530024+ellensp@users.noreply.github.com>
2024-05-06 17:41:47 -05:00
Keith Bennett
80071ea216 🩹 Fix missing EXTENSIBLE_UI include (#27021)
Co-authored-by: ellensp <530024+ellensp@users.noreply.github.com>
2024-05-06 17:40:33 -05:00
Keith Bennett
d3cc44aef1 🩹 Fix missing MSG_ATTACH_SD_MEDIA define (#27020)
Co-authored-by: ellensp <530024+ellensp@users.noreply.github.com>
2024-05-06 17:33:26 -05:00
Jordan Stocker
5170d27fd5 🔨 Fix binary upload firmware path (#26909) 2024-03-27 17:59:02 -05:00
Ikko Eltociear Ashimine
3f3d1f0a10 📝 Fix Cutter.md typo (#26901) 2024-03-27 17:59:02 -05:00
John Robertson
7616d0e389 🐛 Fix ESP32 laser M4 exception (#26884) 2024-03-27 17:59:02 -05:00
Sophist
e81b3fe677 🚸 Hide auto-run as needed (#26853) 2024-03-27 17:59:02 -05:00
Holger Mößinger
cb62e14f27 ✏️ Fix stepper MS pin typos (#26891) 2024-03-27 17:59:02 -05:00
Scott Lahteine
7efc5cb864 👷 Minor signature.py adjustments 2024-03-27 17:59:02 -05:00
Sophist
11ea940b3b 📝 Fix M201 typos (#26854) 2024-03-27 17:59:02 -05:00
janenen
2378a7f257 🐛 Fix DETECT_BROKEN_ENDSTOP on IDEX (#26790)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2024-03-27 17:59:02 -05:00
Keith Bennett
9755d8e510 📝 Remove Flattr Link (#26796) 2024-03-27 17:59:02 -05:00
55 changed files with 206 additions and 218 deletions

View File

@@ -35,7 +35,7 @@
*
* Advanced settings can be found in Configuration_adv.h
*/
#define CONFIGURATION_H_VERSION 02010202
#define CONFIGURATION_H_VERSION 02010204
//===========================================================================
//============================= Getting Started =============================

View File

@@ -30,7 +30,7 @@
*
* Basic settings can be found in Configuration.h
*/
#define CONFIGURATION_ADV_H_VERSION 02010202
#define CONFIGURATION_ADV_H_VERSION 02010204
// @section develop
@@ -1152,11 +1152,11 @@
* XY Frequency limit
* Reduce resonance by limiting the frequency of small zigzag infill moves.
* See https://hydraraptor.blogspot.com/2010/12/frequency-limit.html
* Use M201 F<freq> G<min%> to change limits at runtime.
* Use M201 F<freq> S<min%> to change limits at runtime.
*/
//#define XY_FREQUENCY_LIMIT 10 // (Hz) Maximum frequency of small zigzag infill moves. Set with M201 F<hertz>.
#ifdef XY_FREQUENCY_LIMIT
#define XY_FREQUENCY_MIN_PERCENT 5 // (%) Minimum FR percentage to apply. Set with M201 G<min%>.
#define XY_FREQUENCY_MIN_PERCENT 5 // (%) Minimum FR percentage to apply. Set with M201 S<min%>.
#endif
// Minimum planner junction speed. Sets the default minimum speed the planner plans for at the end
@@ -4083,7 +4083,7 @@
* Extras for an ESP32-based motherboard with WIFISUPPORT
* These options don't apply to add-on WiFi modules based on ESP32 WiFi101.
*/
#if ENABLED(WIFISUPPORT)
#if ANY(WIFISUPPORT, ESP3D_WIFISUPPORT)
//#define WEBSUPPORT // Start a webserver (which may include auto-discovery) using SPIFFS
//#define OTASUPPORT // Support over-the-air firmware updates
//#define WIFI_CUSTOM_COMMAND // Accept feature config commands (e.g., WiFi ESP3D) from the host

View File

@@ -28,7 +28,7 @@
/**
* Marlin release version identifier
*/
//#define SHORT_BUILD_VERSION "2.1.2.2"
//#define SHORT_BUILD_VERSION "2.1.2.4"
/**
* Verbose version identifier which should contain a reference to the location
@@ -41,7 +41,7 @@
* here we define this default string as the date where the latest release
* version was tagged.
*/
//#define STRING_DISTRIBUTION_DATE "2024-02-08"
//#define STRING_DISTRIBUTION_DATE "2024-05-29"
/**
* Defines a generic printer name to be output to the LCD after booting Marlin.

View File

@@ -150,7 +150,7 @@ void MarlinHAL::set_pwm_frequency(const pin_t pin, const uint16_t f_desired) {
else {
if (p == 32 || p == 128) continue; // Skip TIMER2 specific prescalers when not TIMER2
const uint16_t rft = (F_CPU) / (p * f_desired);
DEBUG_ECHOLNPGM("(Not Timer 2) F_CPU=" STRINGIFY(F_CPU), " prescaler=", p, " f_desired=", f_desired);
DEBUG_ECHOLNPGM("(Not Timer 2) F_CPU=", STRINGIFY(F_CPU), " prescaler=", p, " f_desired=", f_desired);
res_fast_temp = rft - 1;
res_pc_temp = rft / 2;
}

View File

@@ -28,9 +28,6 @@
* Port : E0 E1 E4 E5 G5 E3 H3 H4 H5 H6 B4 B5 B6 B7 J1 J0 H1 H0 D3 D2 D1 D0 A0 A1 A2 A3 A4 A5 A6 A7 C7 C6 C5 C4 C3 C2 C1 C0 D7 G2 G1 G0 L7 L6 L5 L4 L3 L2 L1 L0 B3 B2 B1 B0 F0 F1 F2 F3 F4 F5 F6 F7 K0 K1 K2 K3 K4 K5 K6 K7 | E2 E6 E7 xx xx H2 H7 G3 G4 xx xx xx xx xx D4 D5 D6 xx xx J2 J3 J4 J5 J6 J7 xx xx xx xx xx
* Logical Pin : 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | 78 79 80 xx xx 84 85 71 70 xx xx xx xx xx 81 82 83 xx xx 72 73 75 76 77 74 xx xx xx xx xx
* Analog Input : 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
*
* Arduino Pin Layout video: https://youtu.be/rIqeVCX09FA
* AVR alternate pin function overview video: https://youtu.be/1yd8wuI5Plg
*/
#include "../fastio.h"

View File

@@ -26,9 +26,6 @@
*
* Logical Pin: 38 39 40 41 42 43 44 45 16 10 11 12 06 07 08 09 30 31 32 33 34 35 36 37 17 18 19 20 21 22 23 24 00 01 13 05 02 03 14 15 46 47 48 49 50 51 52 53 25 26 27 28 29 04
* Port: A0 A1 A2 A3 A4 A5 A6 A7 B0 B1 B2 B3 B4 B5 B6 B7 C0 C1 C2 C3 C4 C5 C6 C7 D0 D1 D2 D3 D4 D5 D6 D7 E0 E1 E2 E3 E4 E5 E6 E7 F0 F1 F2 F3 F4 F5 F6 F7 G0 G1 G2 G3 G4 G5
*
* Arduino Pin Layout video: https://youtu.be/rIqeVCX09FA
* AVR alternate pin function overview video: https://youtu.be/1yd8wuI5Plg
*/
#include "../fastio.h"

View File

@@ -26,9 +26,6 @@
*
* Logical Pin: 08 09 10 11 12 13 14 15 16 17 18 19 20 21 00 01 02 03 04 05 06 07
* Port: B0 B1 B2 B3 B4 B5 C0 C1 C2 C3 C4 C5 C6 C7 D0 D1 D2 D3 D4 D5 D6 D7
*
* Arduino Pin Layout video: https://youtu.be/rIqeVCX09FA
* AVR alternate pin function overview video: https://youtu.be/1yd8wuI5Plg
*/
#include "../fastio.h"

View File

@@ -26,9 +26,6 @@
*
* Logical Pin: 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
* Port: B0 B1 B2 B3 B4 B5 B6 B7 D0 D1 D2 D3 D4 D5 D6 D7 C0 C1 C2 C3 C4 C5 C6 C7 A7 A6 A5 A4 A3 A2 A1 A0
*
* Arduino Pin Layout video: https://youtu.be/rIqeVCX09FA
* AVR alternate pin function overview video: https://youtu.be/1yd8wuI5Plg
*/
/** ATMega644

View File

@@ -27,9 +27,6 @@
* Logical Pin: 28 29 30 31 32 33 34 35 20 21 22 23 24 25 26 27 10 11 12 13 14 15 16 17 00 01 02 03 04 05 06 07 08 09(46*47)36 37 18 19 38 39 40 41 42 43 44 45
* Port: A0 A1 A2 A3 A4 A5 A6 A7 B0 B1 B2 B3 B4 B5 B6 B7 C0 C1 C2 C3 C4 C5 C6 C7 D0 D1 D2 D3 D4 D5 D6 D7 E0 E1 E2 E3 E4 E5 E6 E7 F0 F1 F2 F3 F4 F5 F6 F7
* The logical pins 46 and 47 are not supported by Teensyduino, but are supported below as E2 and E3
*
* Arduino Pin Layout video: https://youtu.be/rIqeVCX09FA
* AVR alternate pin function overview video: https://youtu.be/1yd8wuI5Plg
*/
#include "../fastio.h"

View File

@@ -68,16 +68,15 @@
* Usually the hardware SPI pins are only available to the LCD. This makes the DUE hard SPI used at the same time
* as the TMC2130 soft SPI the most common setup.
*/
#define _IS_HW_SPI(P) (defined(TMC_SPI_##P) && (TMC_SPI_##P == SD_MOSI_PIN || TMC_SPI_##P == SD_MISO_PIN || TMC_SPI_##P == SD_SCK_PIN))
#if HAS_MEDIA && HAS_DRIVER(TMC2130)
#if ENABLED(TMC_USE_SW_SPI)
#if DISABLED(DUE_SOFTWARE_SPI) && (_IS_HW_SPI(MOSI) || _IS_HW_SPI(MISO) || _IS_HW_SPI(SCK))
#error "DUE hardware SPI is required but is incompatible with TMC2130 software SPI. Either disable TMC_USE_SW_SPI or use separate pins for the two SPIs."
#endif
#elif ENABLED(DUE_SOFTWARE_SPI)
#define _IS_HW_SPI(P) (defined(TMC_SPI_##P) && (TMC_SPI_##P == SD_MOSI_PIN || TMC_SPI_##P == SD_MISO_PIN || TMC_SPI_##P == SD_SCK_PIN))
#if DISABLED(DUE_SOFTWARE_SPI) && ENABLED(TMC_USE_SW_SPI) && (_IS_HW_SPI(MOSI) || _IS_HW_SPI(MISO) || _IS_HW_SPI(SCK))
#error "DUE hardware SPI is required but is incompatible with TMC2130 software SPI. Either disable TMC_USE_SW_SPI or use separate pins for the two SPIs."
#endif
#if ENABLED(DUE_SOFTWARE_SPI) && DISABLED(TMC_USE_SW_SPI)
#error "DUE software SPI is required but is incompatible with TMC2130 hardware SPI. Enable TMC_USE_SW_SPI to fix."
#endif
#undef _IS_HW_SPI
#endif
#if ENABLED(FAST_PWM_FAN) || SPINDLE_LASER_FREQUENCY

View File

@@ -24,7 +24,7 @@
/**
* Define SPI Pins: SCK, MISO, MOSI, SS
*
* Available chip select pins for HW SPI are 4 10 52 77
* Available chip select pins for HW SPI are 4 10 52 77 87
*/
#if SDSS == 4 || SDSS == 10 || SDSS == 52 || SDSS == 77 || SDSS == 87
#if SDSS == 4

View File

@@ -31,12 +31,6 @@
// spiBeginTransaction.
#endif
// Onboard SD
//#define SD_SCK_PIN P0_07
//#define SD_MISO_PIN P0_08
//#define SD_MOSI_PIN P0_09
//#define SD_SS_PIN P0_06
// External SD
#ifndef SD_SCK_PIN
#define SD_SCK_PIN 50

View File

@@ -66,7 +66,7 @@
#define _WRITE(IO,V) WRITE_PIN(IO,V)
/// toggle a pin
#define _TOGGLE(IO) _WRITE(IO, !READ(IO))
#define _TOGGLE(IO) LPC176x::gpio_toggle(IO)
/// set pin as input
#define _SET_INPUT(IO) SET_DIR_INPUT(IO)

View File

@@ -30,12 +30,13 @@
// spiBeginTransaction.
#endif
/** onboard SD card */
//#define SD_SCK_PIN P0_07
//#define SD_MISO_PIN P0_08
//#define SD_MOSI_PIN P0_09
//#define SD_SS_PIN P0_06
/** external */
// Onboard SD
//#define SD_SCK_PIN P0_07
//#define SD_MISO_PIN P0_08
//#define SD_MOSI_PIN P0_09
//#define SD_SS_PIN P0_06
// External SD
#ifndef SD_SCK_PIN
#define SD_SCK_PIN P0_15
#endif

View File

@@ -1329,7 +1329,7 @@ void setup() {
#endif
#endif
#if ALL(HAS_MEDIA, SDCARD_EEPROM_EMULATION)
#if HAS_MEDIA && ANY(SDCARD_EEPROM_EMULATION, POWER_LOSS_RECOVERY)
SETUP_RUN(card.mount()); // Mount media with settings before first_load
#endif

View File

@@ -679,7 +679,7 @@
#define DEFER4(M) M EMPTY EMPTY EMPTY EMPTY()()()()
// Force define expansion
#define EVAL EVAL16
#define EVAL(V...) EVAL16(V)
#define EVAL4096(V...) EVAL2048(EVAL2048(V))
#define EVAL2048(V...) EVAL1024(EVAL1024(V))
#define EVAL1024(V...) EVAL512(EVAL512(V))

View File

@@ -451,7 +451,7 @@ struct XYval {
// Length reduced to one dimension
FI constexpr T magnitude() const { return (T)sqrtf(x*x + y*y); }
// Pointer to the data as a simple array
FI operator T* () { return pos; }
explicit FI operator T* () { return pos; }
// If any element is true then it's true
FI constexpr operator bool() const { return x || y; }
// Smallest element
@@ -601,7 +601,7 @@ struct XYZval {
// Length reduced to one dimension
FI constexpr T magnitude() const { return (T)TERN(HAS_X_AXIS, sqrtf(NUM_AXIS_GANG(x*x, + y*y, + z*z, + i*i, + j*j, + k*k, + u*u, + v*v, + w*w)), 0); }
// Pointer to the data as a simple array
FI operator T* () { return pos; }
explicit FI operator T* () { return pos; }
// If any element is true then it's true
FI constexpr operator bool() const { return 0 NUM_AXIS_GANG(|| x, || y, || z, || i, || j, || k, || u, || v, || w); }
// Smallest element
@@ -749,7 +749,7 @@ struct XYZEval {
// Length reduced to one dimension
FI constexpr T magnitude() const { return (T)sqrtf(LOGICAL_AXIS_GANG(+ e*e, + x*x, + y*y, + z*z, + i*i, + j*j, + k*k, + u*u, + v*v, + w*w)); }
// Pointer to the data as a simple array
FI operator T* () { return pos; }
explicit FI operator T* () { return pos; }
// If any element is true then it's true
FI constexpr operator bool() const { return 0 LOGICAL_AXIS_GANG(|| e, || x, || y, || z, || i, || j, || k, || u, || v, || w); }
// Smallest element

View File

@@ -31,6 +31,10 @@
#include "powerloss.h"
#include "../core/macros.h"
#if ENABLED(EXTENSIBLE_UI)
#include "../lcd/extui/ui_api.h"
#endif
bool PrintJobRecovery::enabled; // Initialized by settings.load()
MediaFile PrintJobRecovery::file;

View File

@@ -112,9 +112,9 @@ void GcodeSuite::M81() {
return;
}
#if HAS_SUICIDE
suicide();
#elif ENABLED(PSU_CONTROL)
#if ENABLED(PSU_CONTROL)
powerManager.power_off_soon();
#elif HAS_SUICIDE
suicide();
#endif
}

View File

@@ -456,6 +456,7 @@
#endif
#ifdef Y2_DRIVER_TYPE
#define HAS_Y2_STEPPER 1
#define HAS_DUAL_Y_STEPPERS 1
#endif
/**

View File

@@ -2852,7 +2852,7 @@
#ifndef PROBE_OFFSET_YMAX
#define PROBE_OFFSET_YMAX 50
#endif
#if ALL(ENDSTOPPULLUPS, USE_Z_MIN_PROBE)
#if ALL(ENDSTOPPULLUPS, HAS_Z_MIN_PROBE_PIN)
#define ENDSTOPPULLUP_ZMIN_PROBE
#endif
#ifndef XY_PROBE_FEEDRATE

View File

@@ -3679,11 +3679,11 @@ static_assert(_PLUS_TEST(3), "DEFAULT_MAX_ACCELERATION values must be positive."
#if !(defined(WIFI_SSID) && defined(WIFI_PWD))
#error "ESP32 motherboard with WIFISUPPORT requires WIFI_SSID and WIFI_PWD."
#endif
#elif ENABLED(WIFI_CUSTOM_COMMAND)
#elif ENABLED(WIFI_CUSTOM_COMMAND) && NONE(ESP3D_WIFISUPPORT, WIFISUPPORT)
#error "WIFI_CUSTOM_COMMAND requires an ESP32 motherboard and WIFISUPPORT."
#elif ENABLED(OTASUPPORT)
#elif ENABLED(OTASUPPORT) && NONE(ESP3D_WIFISUPPORT, WIFISUPPORT)
#error "OTASUPPORT requires an ESP32 motherboard and WIFISUPPORT."
#elif defined(WIFI_SSID) || defined(WIFI_PWD)
#elif (defined(WIFI_SSID) || defined(WIFI_PWD)) && NONE(ESP3D_WIFISUPPORT, WIFISUPPORT)
#error "WIFI_SSID and WIFI_PWD only apply to ESP32 motherboard with WIFISUPPORT."
#endif

View File

@@ -25,7 +25,7 @@
* Release version. Leave the Marlin version or apply a custom scheme.
*/
#ifndef SHORT_BUILD_VERSION
#define SHORT_BUILD_VERSION "2.1.2.2"
#define SHORT_BUILD_VERSION "2.1.2.4"
#endif
/**
@@ -42,7 +42,7 @@
* version was tagged.
*/
#ifndef STRING_DISTRIBUTION_DATE
#define STRING_DISTRIBUTION_DATE "2024-02-08"
#define STRING_DISTRIBUTION_DATE "2024-06-16"
#endif
/**
@@ -52,7 +52,7 @@
* to alert users to major changes.
*/
#define MARLIN_HEX_VERSION 02010202
#define MARLIN_HEX_VERSION 02010204
#ifndef REQUIRED_CONFIGURATION_H_VERSION
#define REQUIRED_CONFIGURATION_H_VERSION MARLIN_HEX_VERSION
#endif

View File

@@ -567,6 +567,7 @@ namespace Language_en {
#else
LSTR MSG_ATTACH_MEDIA = _UxGT("Attach ") MEDIA_TYPE_EN;
#endif
LSTR MSG_ATTACH_SD_MEDIA = _UxGT("Attach SD Card");
LSTR MSG_CHANGE_MEDIA = _UxGT("Change ") MEDIA_TYPE_EN;
LSTR MSG_RELEASE_MEDIA = _UxGT("Release ") MEDIA_TYPE_EN;
LSTR MSG_ZPROBE_OUT = _UxGT("Z Probe Past Bed");

View File

@@ -233,12 +233,11 @@ void menu_configuration();
#endif
void menu_main() {
const bool busy = printingIsActive()
#if HAS_MEDIA
, card_detected = card.isMounted()
, card_open = card_detected && card.isFileOpen()
#endif
;
const bool busy = printingIsActive();
#if HAS_MEDIA
const bool card_detected = card.isMounted(),
card_open = card_detected && card.isFileOpen();
#endif
START_MENU();
BACK_ITEM(MSG_INFO_SCREEN);
@@ -275,12 +274,12 @@ void menu_main() {
else {
#if ALL(HAS_MEDIA, MEDIA_MENU_AT_TOP)
// BEGIN MEDIA MENU
#if ENABLED(MENU_ADDAUTOSTART)
ACTION_ITEM(MSG_RUN_AUTO_FILES, card.autofile_begin); // Run Auto Files
#endif
if (card_detected) {
if (!card_open) {
#if ENABLED(MENU_ADDAUTOSTART)
ACTION_ITEM(MSG_RUN_AUTO_FILES, card.autofile_begin); // Run Auto Files
#endif
#if HAS_SD_DETECT
GCODES_ITEM(MSG_CHANGE_MEDIA, F("M21" TERN_(MULTI_VOLUME, "S"))); // M21 Change Media
#if ENABLED(MULTI_VOLUME)
@@ -392,12 +391,12 @@ void menu_main() {
#if HAS_MEDIA && DISABLED(MEDIA_MENU_AT_TOP)
// BEGIN MEDIA MENU
#if ENABLED(MENU_ADDAUTOSTART)
ACTION_ITEM(MSG_RUN_AUTO_FILES, card.autofile_begin); // Run Auto Files
#endif
if (card_detected) {
if (!card_open) {
#if ENABLED(MENU_ADDAUTOSTART)
ACTION_ITEM(MSG_RUN_AUTO_FILES, card.autofile_begin); // Run Auto Files
#endif
#if HAS_SD_DETECT
GCODES_ITEM(MSG_CHANGE_MEDIA, F("M21" TERN_(MULTI_VOLUME, "S"))); // M21 Change Media
#if ENABLED(MULTI_VOLUME)

View File

@@ -2046,6 +2046,7 @@ void prepare_line_to_destination() {
do_homing_move(axis, -bump, TERN(HOMING_Z_WITH_PROBE, (axis == Z_AXIS ? z_probe_fast_mm_s : 0), 0), false);
#if ENABLED(DETECT_BROKEN_ENDSTOP)
// Check for a broken endstop
EndstopEnum es;
switch (axis) {
@@ -2053,11 +2054,20 @@ void prepare_line_to_destination() {
MAIN_AXIS_MAP(_ESCASE)
default: break;
}
#if ENABLED(DUAL_X_CARRIAGE)
if (axis == X_AXIS && axis_home_dir > 0) {
es = X_MAX;
if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("DUAL_X_CARRIAGE: Homing to X_MAX");
}
#endif
if (TEST(endstops.state(), es)) {
SERIAL_ECHO_MSG("Bad ", C(AXIS_CHAR(axis)), " Endstop?");
kill(GET_TEXT_F(MSG_KILL_HOMING_FAILED));
}
#endif
#endif // DETECT_BROKEN_ENDSTOP
#if ALL(HOMING_Z_WITH_PROBE, BLTOUCH)
if (axis == Z_AXIS && !bltouch.high_speed_mode && bltouch.deploy())

View File

@@ -274,7 +274,7 @@ xyze_int8_t Stepper::count_direction{0};
#define MINDIR(A) (count_direction[_AXIS(A)] < 0)
#define MAXDIR(A) (count_direction[_AXIS(A)] > 0)
#define STEPTEST(A,M,I) TERN0(HAS_ ##A## ##I## _ ##M, !(TEST(endstops.state(), A## ##I## _ ##M) && M## DIR(A)) && !locked_ ##A## ##I## _motor)
#define STEPTEST(A,M,I) TERN0(USE_##A##I##_##M, !(TEST(endstops.state(), A##I##_##M) && M## DIR(A)) && !locked_ ##A##I##_motor)
#define DUAL_ENDSTOP_APPLY_STEP(A,V) \
if (separate_multi_axis) { \
@@ -1610,7 +1610,7 @@ void Stepper::isr() {
#if MINIMUM_STEPPER_PULSE || MAXIMUM_STEPPER_RATE
#define ISR_PULSE_CONTROL 1
#endif
#if ISR_PULSE_CONTROL && DISABLED(I2S_STEPPER_STREAM)
#if ISR_PULSE_CONTROL && MULTISTEPPING_LIMIT > 1 && DISABLED(I2S_STEPPER_STREAM)
#define ISR_MULTI_STEPS 1
#endif
@@ -1655,10 +1655,11 @@ void Stepper::pulse_phase_isr() {
// Just update the value we will get at the end of the loop
step_events_completed += events_to_do;
// Take multiple steps per interrupt (For high speed moves)
#if ISR_MULTI_STEPS
TERN_(ISR_PULSE_CONTROL, USING_TIMED_PULSE());
// Take multiple steps per interrupt. For high speed moves.
#if ENABLED(ISR_MULTI_STEPS)
bool firstStep = true;
USING_TIMED_PULSE();
#endif
xyze_bool_t step_needed{0};
@@ -1944,7 +1945,7 @@ void Stepper::pulse_phase_isr() {
TERN_(I2S_STEPPER_STREAM, i2s_push_sample());
// TODO: need to deal with MINIMUM_STEPPER_PULSE over i2s
#if ISR_MULTI_STEPS
#if ISR_PULSE_CONTROL
START_TIMED_PULSE();
AWAIT_HIGH_PULSE();
#endif
@@ -2333,7 +2334,8 @@ uint32_t Stepper::block_phase_isr() {
*/
if (cutter.cutter_mode == CUTTER_MODE_DYNAMIC
&& planner.laser_inline.status.isPowered // isPowered flag set on any parsed G1, G2, G3, or G5 move; cleared on any others.
&& cutter.last_block_power != current_block->laser.power // Prevent constant update without change
&& current_block // Block may not be available if steps completed (see discard_current_block() above)
&& cutter.last_block_power != current_block->laser.power // Only update if the power changed
) {
cutter.apply_power(current_block->laser.power);
cutter.last_block_power = current_block->laser.power;
@@ -3952,22 +3954,22 @@ void Stepper::report_positions() {
break;
#endif
#if HAS_I_MS_PINS
case I_AXIS: WRITE(I_MS1_PIN, ms1); break
case I_AXIS: WRITE(I_MS1_PIN, ms1); break;
#endif
#if HAS_J_MS_PINS
case J_AXIS: WRITE(J_MS1_PIN, ms1); break
case J_AXIS: WRITE(J_MS1_PIN, ms1); break;
#endif
#if HAS_K_MS_PINS
case K_AXIS: WRITE(K_MS1_PIN, ms1); break
case K_AXIS: WRITE(K_MS1_PIN, ms1); break;
#endif
#if HAS_U_MS_PINS
case U_AXIS: WRITE(U_MS1_PIN, ms1); break
case U_AXIS: WRITE(U_MS1_PIN, ms1); break;
#endif
#if HAS_V_MS_PINS
case V_AXIS: WRITE(V_MS1_PIN, ms1); break
case V_AXIS: WRITE(V_MS1_PIN, ms1); break;
#endif
#if HAS_W_MS_PINS
case W_AXIS: WRITE(W_MS1_PIN, ms1); break
case W_AXIS: WRITE(W_MS1_PIN, ms1); break;
#endif
#if HAS_E0_MS_PINS
case E_AXIS: WRITE(E0_MS1_PIN, ms1); break;
@@ -4032,22 +4034,22 @@ void Stepper::report_positions() {
break;
#endif
#if HAS_I_MS_PINS
case I_AXIS: WRITE(I_MS2_PIN, ms2); break
case I_AXIS: WRITE(I_MS2_PIN, ms2); break;
#endif
#if HAS_J_MS_PINS
case J_AXIS: WRITE(J_MS2_PIN, ms2); break
case J_AXIS: WRITE(J_MS2_PIN, ms2); break;
#endif
#if HAS_K_MS_PINS
case K_AXIS: WRITE(K_MS2_PIN, ms2); break
case K_AXIS: WRITE(K_MS2_PIN, ms2); break;
#endif
#if HAS_U_MS_PINS
case U_AXIS: WRITE(U_MS2_PIN, ms2); break
case U_AXIS: WRITE(U_MS2_PIN, ms2); break;
#endif
#if HAS_V_MS_PINS
case V_AXIS: WRITE(V_MS2_PIN, ms2); break
case V_AXIS: WRITE(V_MS2_PIN, ms2); break;
#endif
#if HAS_W_MS_PINS
case W_AXIS: WRITE(W_MS2_PIN, ms2); break
case W_AXIS: WRITE(W_MS2_PIN, ms2); break;
#endif
#if HAS_E0_MS_PINS
case E_AXIS: WRITE(E0_MS2_PIN, ms2); break;
@@ -4111,23 +4113,23 @@ void Stepper::report_positions() {
#endif
break;
#endif
#if HAS_I_MS_PINS
case I_AXIS: WRITE(I_MS3_PIN, ms3); break
#if HAS_I_MS_PINS && PIN_EXISTS(I_MS3)
case I_AXIS: WRITE(I_MS3_PIN, ms3); break;
#endif
#if HAS_J_MS_PINS
case J_AXIS: WRITE(J_MS3_PIN, ms3); break
#if HAS_J_MS_PINS && PIN_EXISTS(J_MS3)
case J_AXIS: WRITE(J_MS3_PIN, ms3); break;
#endif
#if HAS_K_MS_PINS
case K_AXIS: WRITE(K_MS3_PIN, ms3); break
#if HAS_K_MS_PINS && PIN_EXISTS(K_MS3)
case K_AXIS: WRITE(K_MS3_PIN, ms3); break;
#endif
#if HAS_U_MS_PINS
case U_AXIS: WRITE(U_MS3_PIN, ms3); break
#if HAS_U_MS_PINS && PIN_EXISTS(U_MS3)
case U_AXIS: WRITE(U_MS3_PIN, ms3); break;
#endif
#if HAS_V_MS_PINS
case V_AXIS: WRITE(V_MS3_PIN, ms3); break
#if HAS_V_MS_PINS && PIN_EXISTS(V_MS3)
case V_AXIS: WRITE(V_MS3_PIN, ms3); break;
#endif
#if HAS_W_MS_PINS
case W_AXIS: WRITE(W_MS3_PIN, ms3); break
#if HAS_W_MS_PINS && PIN_EXISTS(W_MS3)
case W_AXIS: WRITE(W_MS3_PIN, ms3); break;
#endif
#if HAS_E0_MS_PINS && PIN_EXISTS(E0_MS3)
case E_AXIS: WRITE(E0_MS3_PIN, ms3); break;

View File

@@ -595,7 +595,7 @@ volatile bool Temperature::raw_temps_ready = false;
#endif
#if MILLISECONDS_PREHEAT_TIME > 0
millis_t Temperature::preheat_end_ms_hotend[HOTENDS]; // = { 0 };
millis_t Temperature::preheat_end_ms_hotend[HOTENDS]; // = { 0 }
#endif
#if HAS_HEATED_BED && PREHEAT_TIME_BED_MS > 0
millis_t Temperature::preheat_end_ms_bed = 0;
@@ -1814,7 +1814,7 @@ void Temperature::mintemp_error(const heater_id_t heater_id) {
// Make sure temperature is decreasing
if (watch_cooler.elapsed(ms)) { // Time to check the cooler?
if (degCooler() > watch_cooler.target) // Failed to decrease enough?
_temp_error(H_COOLER, GET_TEXT_F(MSG_COOLING_FAILED), GET_TEXT_F(MSG_COOLING_FAILED));
_temp_error(H_COOLER, GET_EN_TEXT_F(MSG_COOLING_FAILED), GET_TEXT_F(MSG_COOLING_FAILED));
else
start_watching_cooler(); // Start again if the target is still far off
}
@@ -2442,7 +2442,7 @@ void Temperature::updateTemperaturesFromRawValues() {
/**
// DEBUG PREHEATING TIME
SERIAL_ECHOLNPGM("\nExtruder = ", e, " Preheat On/Off = ", is_preheating(e));
const float test_is_preheating = (preheat_end_time[HOTEND_INDEX] - millis()) * 0.001f;
const float test_is_preheating = (preheat_end_ms_hotend[HOTEND_INDEX] - millis()) * 0.001f;
if (test_is_preheating < 31) SERIAL_ECHOLNPGM("Extruder = ", e, " Preheat remaining time = ", test_is_preheating, "s", "\n");
//*/

View File

@@ -747,7 +747,7 @@ class Temperature {
#endif
#if MILLISECONDS_PREHEAT_TIME > 0
static millis_t preheat_end_time[HOTENDS];
static millis_t preheat_end_ms_hotend[HOTENDS];
#endif
#if HAS_FAN_LOGIC
@@ -909,13 +909,13 @@ class Temperature {
*/
#if MILLISECONDS_PREHEAT_TIME > 0
static bool is_preheating(const uint8_t E_NAME) {
return preheat_end_time[HOTEND_INDEX] && PENDING(millis(), preheat_end_time[HOTEND_INDEX]);
return preheat_end_ms_hotend[HOTEND_INDEX] && PENDING(millis(), preheat_end_ms_hotend[HOTEND_INDEX]);
}
static void start_preheat_time(const uint8_t E_NAME) {
preheat_end_time[HOTEND_INDEX] = millis() + MILLISECONDS_PREHEAT_TIME;
preheat_end_ms_hotend[HOTEND_INDEX] = millis() + MILLISECONDS_PREHEAT_TIME;
}
static void reset_preheat_time(const uint8_t E_NAME) {
preheat_end_time[HOTEND_INDEX] = 0;
preheat_end_ms_hotend[HOTEND_INDEX] = 0;
}
#else
#define is_preheating(n) (false)

View File

@@ -29,17 +29,57 @@
#define BOARD_INFO_NAME "Creality3D RAMPS"
//#define CR2020_INDUSTRIAL_SERIES // Use layout specific to CR2020
//
// 4-pin expansion header
//
#define EXP1_PIN 65 // A11 - Used by CR2020 Industrial series for case
#define EXP2_PIN 66 // A12
#define EXP3_PIN 11 // RAMPS: SERVO0_PIN
#define EXP4_PIN 12 // RAMPS: PS_ON_PIN
//
// Servos
//
#define SERVO1_PIN 12
//
// Heaters / Fans
//
#define MOSFET_B_PIN 7
#define FAN0_PIN 9
//
// Filament Runout Sensor
//
#define FIL_RUNOUT_PIN 2
#if NUM_RUNOUT_SENSORS >= 2
#define FIL_RUNOUT2_PIN 15 // Creality CR-X can use dual runout sensors
#endif
//
// Misc. Functions
//
#ifdef CR2020_INDUSTRIAL_SERIES
#if ENABLED(PSU_CONTROL) && !defined(PS_ON_PIN)
#define PS_ON_PIN 40 // Used by CR2020 Industrial series
#endif
#ifndef SUICIDE_PIN
#define SUICIDE_PIN 12 // Used by CR2020 Industrial series
#endif
#ifndef SUICIDE_PIN_STATE
#define SUICIDE_PIN_STATE HIGH
#endif
#endif
#if ENABLED(CASE_LIGHT_ENABLE) && !defined(CASE_LIGHT_PIN)
#define CASE_LIGHT_PIN 65
#endif
//
// SD Card
//
#ifndef SD_DETECT_PIN
#if SD_CONNECTION_IS(ONBOARD)
//#define HAS_ONBOARD_SD_DETECT // If the SD_DETECT_PIN is wired up
@@ -49,28 +89,14 @@
#endif
#endif
#ifndef PS_ON_PIN
#define PS_ON_PIN 40 // Used by CR2020 Industrial series
#endif
#if ENABLED(CASE_LIGHT_ENABLE) && !defined(CASE_LIGHT_PIN)
#define CASE_LIGHT_PIN 65
#endif
#define SERVO1_PIN 12
//
// Based on RAMPS 1.4
//
#include "pins_RAMPS.h"
//
// LCD / Controller
//
#ifndef BEEPER_PIN
#define BEEPER_PIN 37 // Always define beeper pin so Play Tone works with ExtUI
#endif
#define EXP1_PIN 65 // A11 - Used by CR2020 Industrial series for case
#define EXP2_PIN 66 // A12
#define EXP3_PIN 11 // SERVO0_PIN
#define EXP4_PIN 12 // PS_ON_PIN
#define SUICIDE_PIN 12 // Used by CR2020 Industrial series
#ifndef SUICIDE_PIN_STATE
#define SUICIDE_PIN_STATE HIGH
#endif

View File

@@ -26,10 +26,10 @@
*
* The Archim 1.0 board requires Arduino Archim addons installed.
*
* - Add the following URL to Arduino IDE's Additional Board Manager URLs:
* - Add the following URL to Arduino IDE's Additional Boards Manager URLs:
* https://raw.githubusercontent.com/ultimachine/ArduinoAddons/master/package_ultimachine_index.json
*
* - In the Arduino IDE Board Manager search for Archim and install the package.
* - In the Arduino IDE Boards Manager search for Archim and install the package.
*
* - Change your target board to "Archim".
*

View File

@@ -26,10 +26,10 @@
*
* The Archim 2.0 board requires Arduino Archim addons installed.
*
* - Add the following URL to Arduino IDE's Additional Board Manager URLs:
* - Add the following URL to Arduino IDE's Additional Boards Manager URLs:
* https://raw.githubusercontent.com/ultimachine/ArduinoAddons/master/package_ultimachine_index.json
*
* - In the Arduino IDE Board Manager search for Archim and install the package.
* - In the Arduino IDE Boards Manager search for Archim and install the package.
*
* - Change your target board to "Archim".
*

View File

@@ -35,7 +35,7 @@
*/
/**
* The standard Arduino IDE extension (board manager) for this board
* The standard Arduino IDE extension (Boards Manager) for this board
* is located at https://github.com/SkyNet3D/anet-board.
*
* Installation instructions are on that page.
@@ -52,7 +52,7 @@
*/
/**
* Another usable Arduino IDE extension (board manager) can be found at
* Another usable Arduino IDE extension (Boards Manager) can be found at
* https://github.com/Lauszus/Sanguino
*
* This extension has been tested on Arduino 1.6.12 & 1.8.0

View File

@@ -33,7 +33,7 @@
*/
/**
* A useable Arduino IDE extension (board manager) can be found at
* A useable Arduino IDE extension (Boards Manager) can be found at
* https://github.com/Lauszus/Sanguino
*
* This extension has been tested on Arduino 1.6.12 & 1.8.0

View File

@@ -32,7 +32,7 @@
*/
/**
* A useable Arduino IDE extension (board manager) can be found at
* A useable Arduino IDE extension (Boards Manager) can be found at
* https://github.com/Lauszus/Sanguino
*
* This extension has been tested on Arduino 1.6.12 & 1.8.0

View File

@@ -36,7 +36,7 @@
*/
/**
* A useable Arduino IDE extension (board manager) can be found at
* A useable Arduino IDE extension (Boards Manager) can be found at
* https://github.com/Lauszus/Sanguino
*
* This extension has been tested on Arduino 1.6.12 & 1.8.0

View File

@@ -32,7 +32,7 @@
*/
/**
* A useable Arduino IDE extension (board manager) can be found at
* A useable Arduino IDE extension (Boards Manager) can be found at
* https://github.com/Lauszus/Sanguino
*
* This extension has been tested on Arduino 1.6.12 & 1.8.0

View File

@@ -42,7 +42,7 @@
*/
/**
* A useable Arduino IDE extension (board manager) can be found at
* A useable Arduino IDE extension (Boards Manager) can be found at
* https://github.com/Lauszus/Sanguino
*
* This extension has been tested on Arduino 1.6.12 & 1.8.0

View File

@@ -32,7 +32,7 @@
*/
/**
* A useable Arduino IDE extension (board manager) can be found at
* A useable Arduino IDE extension (Boards Manager) can be found at
* https://github.com/Lauszus/Sanguino
*
* This extension has been tested on Arduino 1.6.12 & 1.8.0

View File

@@ -38,7 +38,7 @@
*/
/**
* A useable Arduino IDE extension (board manager) can be found at
* A useable Arduino IDE extension (Boards Manager) can be found at
* https://github.com/Lauszus/Sanguino
*
* This extension has been tested on Arduino 1.6.12 & 1.8.0

View File

@@ -37,7 +37,7 @@
*/
/**
* A useable Arduino IDE extension (board manager) can be found at
* A useable Arduino IDE extension (Boards Manager) can be found at
* https://github.com/Lauszus/Sanguino
*
* This extension has been tested on Arduino 1.6.12 & 1.8.0

View File

@@ -59,7 +59,7 @@
*/
/**
* A useable Arduino IDE extension (board manager) can be found at
* A useable Arduino IDE extension (Boards Manager) can be found at
* https://github.com/Lauszus/Sanguino
*
* This extension has been tested on Arduino 1.6.12 & 1.8.0

View File

@@ -57,7 +57,7 @@
*/
/**
* A useable Arduino IDE extension (board manager) can be found at
* A useable Arduino IDE extension (Boards Manager) can be found at
* https://github.com/Lauszus/Sanguino
*
* This extension has been tested on Arduino 1.6.12 & 1.8.0

View File

@@ -44,7 +44,7 @@
*/
/**
* A useable Arduino IDE extension (board manager) can be found at
* A useable Arduino IDE extension (Boards Manager) can be found at
* https://github.com/Lauszus/Sanguino
*
* This extension has been tested on Arduino 1.6.12 & 1.8.0

View File

@@ -33,7 +33,7 @@
*/
/**
* A useable Arduino IDE extension (board manager) can be found at
* A useable Arduino IDE extension (Boards Manager) can be found at
* https://github.com/Lauszus/Sanguino
*
* This extension has been tested on Arduino 1.6.12 & 1.8.0

View File

@@ -160,7 +160,8 @@
#define LCD_BRIGHTNESS_DEFAULT TFT_BACKLIGHT_PWM
#endif
#if ENABLED(ONBOARD_SDIO)
#if SD_CONNECTION_IS(ONBOARD)
#define ONBOARD_SDIO
#define SD_SS_PIN -1 // else SDSS set to PA4 in M43 (spi_pins.h)
#endif

View File

@@ -78,7 +78,7 @@ uint8_t const SD_CARD_TYPE_SD1 = 1, // Standard capacity V1 SD card
/**
* Define SOFTWARE_SPI to use bit-bang SPI
*/
#if ANY(MEGA_SOFT_SPI, USE_SOFTWARE_SPI)
#if ANY(MEGA_SOFT_SPI, SDFAT_USE_SOFTWARE_SPI)
#define SOFTWARE_SPI
#endif

View File

@@ -88,8 +88,8 @@
*/
#define MEGA_SOFT_SPI 0
// Set USE_SOFTWARE_SPI nonzero to ALWAYS use Software SPI.
#define USE_SOFTWARE_SPI 0
// Set SDFAT_USE_SOFTWARE_SPI nonzero to ALWAYS use Software SPI.
#define SDFAT_USE_SOFTWARE_SPI 0
/**
* The __cxa_pure_virtual function is an error handler that is invoked when

View File

@@ -33,7 +33,7 @@
/**
* Define SOFTWARE_SPI to use bit-bang SPI
*/
#if ANY(MEGA_SOFT_SPI, USE_SOFTWARE_SPI)
#if ANY(MEGA_SOFT_SPI, SDFAT_USE_SOFTWARE_SPI)
#define SOFTWARE_SPI
#endif

View File

@@ -94,53 +94,19 @@ The Issue Queue is reserved for Bug Reports and Feature Requests. To get help wi
Marlin is constantly improving thanks to a huge number of contributors from all over the world bringing their specialties and talents. Huge thanks are due to [all the contributors](https://github.com/MarlinFirmware/Marlin/graphs/contributors) who regularly patch up bugs, help direct traffic, and basically keep Marlin from falling apart. Marlin's continued existence would not be possible without them.
## Administration
## Project Leadership
Regular users can open and close their own issues, but only the administrators can do project-related things like add labels, merge changes, set milestones, and kick trolls. The current Marlin admin team consists of:
<table align="center">
<tr><td>Project Maintainer</td></tr>
<tr><td>
🇺🇸  **Scott Lahteine**
[@thinkyhead](https://github.com/thinkyhead)
[<kbd>Donate 💸  </kbd>](https://www.thinkyhead.com/donate-to-marlin)
</td><td>
🇺🇸  **Roxanne Neufeld**
[@Roxy-3D](https://github.com/Roxy-3D)
🇺🇸  **Keith Bennett**
[@thisiskeithb](https://github.com/thisiskeithb)
[<kbd>Donate 💸  </kbd>](https://github.com/sponsors/thisiskeithb)
🇺🇸  **Jason Smith**
[@sjasonsmith](https://github.com/sjasonsmith)
</td><td>
🇧🇷  **Victor Oliveira**
[@rhapsodyv](https://github.com/rhapsodyv)
🇬🇧  **Chris Pepper**
[@p3p](https://github.com/p3p)
🇳🇿  **Peter Ellens**
[@ellensp](https://github.com/ellensp)
[<kbd>Donate 💸  </kbd>](https://ko-fi.com/ellensp)
</td><td>
🇺🇸  **Bob Kuhn**
[@Bob-the-Kuhn](https://github.com/Bob-the-Kuhn)
🇳🇱  **Erik van der Zalm**
[@ErikZalm](https://github.com/ErikZalm)
[<kbd>Donate 💸  </kbd>](https://flattr.com/submit/auto?user_id=ErikZalm&url=https://github.com/MarlinFirmware/Marlin&title=Marlin&language=&tags=github&category=software)
</td></tr>
</table>
Name|Role|Link|Donate
----|----|----|----
🇺🇸 Scott Lahteine|Project Lead|[[@thinkyhead](https://github.com/thinkyhead)]|[💸 Donate](https://marlinfw.org/docs/development/contributing.html#donate)
🇺🇸 Roxanne Neufeld|Admin|[[@Roxy-3D](https://github.com/Roxy-3D)]|
🇺🇸 Keith Bennett|Admin|[[@thisiskeithb](https://github.com/thisiskeithb)]|[💸 Donate](https://github.com/sponsors/thisiskeithb)
🇺🇸 Jason Smith|Admin|[[@sjasonsmith](https://github.com/sjasonsmith)]|
🇧🇷 Victor Oliveira|Admin|[[@rhapsodyv](https://github.com/rhapsodyv)]|
🇬🇧 Chris Pepper|Admin|[[@p3p](https://github.com/p3p)]|
🇳🇿 Peter Ellens|Admin|[[@ellensp](https://github.com/ellensp)]|[💸 Donate](https://ko-fi.com/ellensp)
🇺🇸 Bob Kuhn|Admin|[[@Bob-the-Kuhn](https://github.com/Bob-the-Kuhn)]|
🇳🇱 Erik van der Zalm|Founder|[[@ErikZalm](https://github.com/ErikZalm)]|
## License

View File

@@ -18,13 +18,13 @@ def enabled_defines(filepath):
Each entry is a dictionary with a 'name' and a 'section' key. We end up with:
{ MOTHERBOARD: { name: "MOTHERBOARD", section: "hardware" }, ... }
The 'name' key might get dropped as redundant, but it's useful for debugging.
TODO: Drop the 'name' key as redundant. For now it's useful for debugging.
This list is only used to filter config-defined options from those defined elsewhere.
Because the option names are the keys, only the last occurrence is retained.
Use the Schema class for a more complete list of options, soon with full parsing.
This list is used to filter what is actually a config-defined option versus
defines from elsewhere.
This means the actual used value might not be reflected by this function.
The Schema class does more complete parsing for a more accurate list of options.
While the Schema class parses the configurations on its own, this script will
get the preprocessor output and get the intersection of the enabled options from
@@ -44,13 +44,10 @@ def enabled_defines(filepath):
# This will avoid false positives from #defines in comments
f = re.sub(r'/\*.*?\*/', '', '\n'.join(f), flags=re.DOTALL).split("\n")
a = []
for line in f:
sline = line.strip()
m = re.match(spatt, sline) # @section ...
if m:
section = m.group(1).strip()
continue
if m: section = m.group(1).strip() ; continue
if sline[:7] == "#define":
# Extract the key here (we don't care about the value)
kv = sline[8:].strip().split()
@@ -79,6 +76,7 @@ def compute_build_signature(env):
Compute the build signature by extracting all configuration settings and
building a unique reversible signature that can be included in the binary.
The signature can be reversed to get a 1:1 equivalent configuration file.
Used by common-dependencies.py after filtering build files by feature.
'''
if 'BUILD_SIGNATURE' in env: return
env.Append(BUILD_SIGNATURE=1)

View File

@@ -157,14 +157,14 @@ def Upload(source, target, env):
marlin_string_config_h_author = _GetMarlinEnv(MarlinEnv, 'STRING_CONFIG_H_AUTHOR')
# Get firmware upload params
upload_firmware_source_name = env['PROGNAME'] + '.bin' if 'PROGNAME' in env else str(source[0])
upload_firmware_source_path = os.path.join(env["PROJECT_BUILD_DIR"], env["PIOENV"], f"{env['PROGNAME']}.bin") if 'PROGNAME' in env else str(source[0])
# Source firmware filename
upload_speed = env['UPLOAD_SPEED'] if 'UPLOAD_SPEED' in env else 115200
# baud rate of serial connection
upload_port = _GetUploadPort(env) # Serial port to use
# Set local upload params
upload_firmware_target_name = os.path.basename(upload_firmware_source_name)
upload_firmware_target_name = os.path.basename(upload_firmware_source_path)
# Target firmware filename
upload_timeout = 1000 # Communication timout, lossy/slow connections need higher values
upload_blocksize = 512 # Transfer block size. 512 = Autodetect
@@ -216,7 +216,7 @@ def Upload(source, target, env):
print(f' LONG_FILENAME_WRITE_SUPPORT : {marlin_longname_write}')
print(f' CUSTOM_FIRMWARE_UPLOAD : {marlin_custom_firmware_upload}')
print('---- Upload parameters ------------------------')
print(f' Source : {upload_firmware_source_name}')
print(f' Source : {upload_firmware_source_path}')
print(f' Target : {upload_firmware_target_name}')
print(f' Port : {upload_port} @ {upload_speed} baudrate')
print(f' Timeout : {upload_timeout}')
@@ -271,14 +271,14 @@ def Upload(source, target, env):
# WARNING! The serial port must be closed here because the serial transfer that follow needs it!
# Upload firmware file
debugPrint(f"Copy '{upload_firmware_source_name}' --> '{upload_firmware_target_name}'")
debugPrint(f"Copy '{upload_firmware_source_path}' --> '{upload_firmware_target_name}'")
protocol = MarlinBinaryProtocol.Protocol(upload_port, upload_speed, upload_blocksize, float(upload_error_ratio), int(upload_timeout))
#echologger = MarlinBinaryProtocol.EchoProtocol(protocol)
protocol.connect()
# Mark the rollback (delete broken transfer) from this point on
rollback = True
filetransfer = MarlinBinaryProtocol.FileTransferProtocol(protocol)
transferOK = filetransfer.copy(upload_firmware_source_name, upload_firmware_target_name, upload_compression, upload_test)
transferOK = filetransfer.copy(upload_firmware_source_path, upload_firmware_target_name, upload_compression, upload_test)
protocol.disconnect()
# Notify upload completed

View File

@@ -1,3 +1,3 @@
# Where have all the configurations gone?
## https://github.com/MarlinFirmware/Configurations/archive/release-2.1.2.2.zip
## https://github.com/MarlinFirmware/Configurations/archive/release-2.1.2.4.zip

View File

@@ -81,7 +81,7 @@ A reduced entry laser power factor is based on the entry step rate to cruise ste
block entry laser power = laser power * ( entry step rate / cruise step rate )
The initial power will be set to no less than the laser_power_floor or the inital power calculation.
The initial power will be set to no less than the laser_power_floor or the initial power calculation.
The reduced final power factor is based on the final step rate to cruise step rate ratio for deceleration.

View File

@@ -15,11 +15,12 @@
[env:SAMD51_grandcentral_m4]
platform = atmelsam
board = adafruit_grandcentral_m4
build_flags = ${common.build_flags} -std=gnu++17
build_flags = ${common.build_flags} -std=gnu++17 -DUSE_TINYUSB
build_unflags = -std=gnu++11
build_src_filter = ${common.default_src_filter} +<src/HAL/SAMD51>
lib_deps = ${common.lib_deps}
SoftwareSerialM
Adafruit TinyUSB Library
extra_scripts = ${common.extra_scripts}
pre:buildroot/share/PlatformIO/scripts/SAMD51_grandcentral_m4.py
custom_marlin.HAS_MEDIA = SdFat - Adafruit Fork, Adafruit SPIFlash