mirror of
https://github.com/MarlinFirmware/Marlin.git
synced 2024-11-28 06:21:31 +00:00
✨ Configurable FREEZE pin state (#23944)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
This commit is contained in:
parent
b1958a43fc
commit
20b5615305
@ -4116,6 +4116,7 @@
|
|||||||
//#define FREEZE_FEATURE
|
//#define FREEZE_FEATURE
|
||||||
#if ENABLED(FREEZE_FEATURE)
|
#if ENABLED(FREEZE_FEATURE)
|
||||||
//#define FREEZE_PIN 41 // Override the default (KILL) pin here
|
//#define FREEZE_PIN 41 // Override the default (KILL) pin here
|
||||||
|
#define FREEZE_STATE LOW // State of pin indicating freeze
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -476,7 +476,7 @@ inline void manage_inactivity(const bool no_stepper_sleep=false) {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if HAS_FREEZE_PIN
|
#if HAS_FREEZE_PIN
|
||||||
Stepper::frozen = !READ(FREEZE_PIN);
|
Stepper::frozen = READ(FREEZE_PIN) ^ DISABLED(INVERT_FREEZE_PIN);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if HAS_HOME
|
#if HAS_HOME
|
||||||
@ -1166,9 +1166,13 @@ void setup() {
|
|||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if HAS_FREEZE_PIN
|
#if ENABLED(FREEZE_FEATURE)
|
||||||
SETUP_LOG("FREEZE_PIN");
|
SETUP_LOG("FREEZE_PIN");
|
||||||
SET_INPUT_PULLUP(FREEZE_PIN);
|
#if FREEZE_STATE
|
||||||
|
SET_INPUT_PULLDOWN(FREEZE_PIN);
|
||||||
|
#else
|
||||||
|
SET_INPUT_PULLUP(FREEZE_PIN);
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if HAS_SUICIDE
|
#if HAS_SUICIDE
|
||||||
|
@ -2824,17 +2824,9 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
// User Interface
|
// User Interface
|
||||||
#if ENABLED(FREEZE_FEATURE)
|
#if ENABLED(FREEZE_FEATURE) && !PIN_EXISTS(FREEZE) && PIN_EXISTS(KILL)
|
||||||
#if !PIN_EXISTS(FREEZE) && PIN_EXISTS(KILL)
|
#define FREEZE_PIN KILL_PIN
|
||||||
#define FREEZE_PIN KILL_PIN
|
#elif PIN_EXISTS(KILL) && TERN1(FREEZE_FEATURE, KILL_PIN != FREEZE_PIN)
|
||||||
#endif
|
|
||||||
#if PIN_EXISTS(FREEZE)
|
|
||||||
#define HAS_FREEZE_PIN 1
|
|
||||||
#endif
|
|
||||||
#else
|
|
||||||
#undef FREEZE_PIN
|
|
||||||
#endif
|
|
||||||
#if PIN_EXISTS(KILL) && TERN1(FREEZE_FEATURE, KILL_PIN != FREEZE_PIN)
|
|
||||||
#define HAS_KILL 1
|
#define HAS_KILL 1
|
||||||
#endif
|
#endif
|
||||||
#if PIN_EXISTS(HOME)
|
#if PIN_EXISTS(HOME)
|
||||||
|
@ -1035,8 +1035,8 @@ static_assert(Y_MAX_LENGTH >= Y_BED_SIZE, "Movement bounds (Y_MIN_POS, Y_MAX_POS
|
|||||||
/**
|
/**
|
||||||
* Instant Freeze
|
* Instant Freeze
|
||||||
*/
|
*/
|
||||||
#if ENABLED(FREEZE_FEATURE) && !PIN_EXISTS(FREEZE)
|
#if ENABLED(FREEZE_FEATURE) && !(PIN_EXISTS(FREEZE) && defined(FREEZE_STATE))
|
||||||
#error "FREEZE_FEATURE requires a FREEZE_PIN to be defined."
|
#error "FREEZE_FEATURE requires both FREEZE_PIN and FREEZE_STATE."
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -189,7 +189,7 @@ bool Stepper::abort_current_block;
|
|||||||
uint32_t Stepper::acceleration_time, Stepper::deceleration_time;
|
uint32_t Stepper::acceleration_time, Stepper::deceleration_time;
|
||||||
uint8_t Stepper::steps_per_isr;
|
uint8_t Stepper::steps_per_isr;
|
||||||
|
|
||||||
#if HAS_FREEZE_PIN
|
#if ENABLED(FREEZE_FEATURE)
|
||||||
bool Stepper::frozen; // = false
|
bool Stepper::frozen; // = false
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -1643,7 +1643,7 @@ void Stepper::pulse_phase_isr() {
|
|||||||
if (!current_block) return;
|
if (!current_block) return;
|
||||||
|
|
||||||
// Skipping step processing causes motion to freeze
|
// Skipping step processing causes motion to freeze
|
||||||
if (TERN0(HAS_FREEZE_PIN, frozen)) return;
|
if (TERN0(FREEZE_FEATURE, frozen)) return;
|
||||||
|
|
||||||
// Count of pending loops and events for this iteration
|
// Count of pending loops and events for this iteration
|
||||||
const uint32_t pending_events = step_event_count - step_events_completed;
|
const uint32_t pending_events = step_event_count - step_events_completed;
|
||||||
|
@ -336,7 +336,7 @@ class Stepper {
|
|||||||
static constexpr uint8_t last_moved_extruder = 0;
|
static constexpr uint8_t last_moved_extruder = 0;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if HAS_FREEZE_PIN
|
#if ENABLED(FREEZE_FEATURE)
|
||||||
static bool frozen; // Set this flag to instantly freeze motion
|
static bool frozen; // Set this flag to instantly freeze motion
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -823,7 +823,7 @@
|
|||||||
#if HAS_KILL
|
#if HAS_KILL
|
||||||
REPORT_NAME_DIGITAL(__LINE__, KILL_PIN)
|
REPORT_NAME_DIGITAL(__LINE__, KILL_PIN)
|
||||||
#endif
|
#endif
|
||||||
#if HAS_FREEZE_PIN
|
#if PIN_EXISTS(FREEZE)
|
||||||
REPORT_NAME_DIGITAL(__LINE__, FREEZE_PIN)
|
REPORT_NAME_DIGITAL(__LINE__, FREEZE_PIN)
|
||||||
#endif
|
#endif
|
||||||
#if PIN_EXISTS(LCD_BACKLIGHT)
|
#if PIN_EXISTS(LCD_BACKLIGHT)
|
||||||
|
Loading…
Reference in New Issue
Block a user