Skip to content

Commit

Permalink
Merge branch 'MarlinFirmware:bugfix-2.1.x' into FT_MOTION_update
Browse files Browse the repository at this point in the history
  • Loading branch information
narno2202 authored Mar 10, 2024
2 parents 8969e96 + 9a1c993 commit 9f0f334
Show file tree
Hide file tree
Showing 10 changed files with 53 additions and 6 deletions.
15 changes: 12 additions & 3 deletions Marlin/Configuration.h
Original file line number Diff line number Diff line change
Expand Up @@ -401,9 +401,18 @@
//#define PS_OFF_SOUND // Beep 1s when power off
#define PSU_ACTIVE_STATE LOW // Set 'LOW' for ATX, 'HIGH' for X-Box

//#define PSU_DEFAULT_OFF // Keep power off until enabled directly with M80
//#define PSU_POWERUP_DELAY 250 // (ms) Delay for the PSU to warm up to full power
//#define LED_POWEROFF_TIMEOUT 10000 // (ms) Turn off LEDs after power-off, with this amount of delay
//#define PSU_DEFAULT_OFF // Keep power off until enabled directly with M80
//#define PSU_POWERUP_DELAY 250 // (ms) Delay for the PSU to warm up to full power
//#define LED_POWEROFF_TIMEOUT 10000 // (ms) Turn off LEDs after power-off, with this amount of delay

//#define PSU_OFF_REDUNDANT // Second pin for redundant power control
//#define PSU_OFF_REDUNDANT_INVERTED // Redundant pin state is the inverse of PSU_ACTIVE_STATE

//#define PS_ON1_PIN 6 // Redundant pin required to enable power in combination with PS_ON_PIN

//#define PS_ON_EDM_PIN 8 // External Device Monitoring pins for external power control relay feedback. Fault on mismatch.
//#define PS_ON1_EDM_PIN 9
#define PS_EDM_RESPONSE 250 // (ms) Time to allow for relay action

//#define POWER_OFF_TIMER // Enable M81 D<seconds> to power off after a delay
//#define POWER_OFF_WAIT_FOR_COOLDOWN // Enable M81 S to power off only after cooldown
Expand Down
2 changes: 1 addition & 1 deletion Marlin/Version.h
Original file line number Diff line number Diff line change
Expand Up @@ -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-03-04"
//#define STRING_DISTRIBUTION_DATE "2024-03-10"

/**
* Defines a generic printer name to be output to the LCD after booting Marlin.
Expand Down
6 changes: 6 additions & 0 deletions Marlin/src/MarlinCore.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -671,6 +671,12 @@ inline void manage_inactivity(const bool no_stepper_sleep=false) {

TERN_(HOTEND_IDLE_TIMEOUT, hotend_idle.check());

#if ANY(PSU_CONTROL, AUTO_POWER_CONTROL) && PIN_EXISTS(PS_ON_EDM)
if ( ELAPSED(ms, powerManager.last_state_change_ms + PS_EDM_RESPONSE)
&& (READ(PS_ON_PIN) != READ(PS_ON_EDM_PIN) || TERN0(PSU_OFF_REDUNDANT, extDigitalRead(PS_ON1_PIN) != extDigitalRead(PS_ON1_EDM_PIN)))
) kill(GET_TEXT_F(MSG_POWER_EDM_FAULT));
#endif

#if ENABLED(EXTRUDER_RUNOUT_PREVENT)
if (thermalManager.degHotend(active_extruder) > (EXTRUDER_RUNOUT_MINTEMP)
&& ELAPSED(ms, gcode.previous_move_ms + SEC_TO_MS(EXTRUDER_RUNOUT_SECONDS))
Expand Down
15 changes: 15 additions & 0 deletions Marlin/src/feature/power.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,10 @@ bool Power::psu_on;
millis_t Power::lastPowerOn;
#endif

#if PSU_TRACK_STATE_MS
millis_t Power::last_state_change_ms = 0;
#endif

/**
* Initialize pins & state for the power manager.
*
Expand Down Expand Up @@ -87,8 +91,14 @@ void Power::power_on() {
#endif

OUT_WRITE(PS_ON_PIN, PSU_ACTIVE_STATE);
#if ENABLED(PSU_OFF_REDUNDANT)
OUT_WRITE(PS_ON1_PIN, TERN_(PSU_OFF_REDUNDANT_INVERTED, !)PSU_ACTIVE_STATE);
#endif
TERN_(PSU_TRACK_STATE_MS, last_state_change_ms = millis());

psu_on = true;
safe_delay(PSU_POWERUP_DELAY);

restore_stepper_drivers();
TERN_(HAS_TRINAMIC_CONFIG, safe_delay(PSU_POWERUP_DELAY));

Expand Down Expand Up @@ -117,6 +127,11 @@ void Power::power_off() {
#endif

OUT_WRITE(PS_ON_PIN, !PSU_ACTIVE_STATE);
#if ENABLED(PSU_OFF_REDUNDANT)
OUT_WRITE(PS_ON1_PIN, IF_DISABLED(PSU_OFF_REDUNDANT_INVERTED, !)PSU_ACTIVE_STATE);
#endif
TERN_(PSU_TRACK_STATE_MS, last_state_change_ms = millis());

psu_on = false;

#if ANY(POWER_OFF_TIMER, POWER_OFF_WAIT_FOR_COOLDOWN)
Expand Down
9 changes: 8 additions & 1 deletion Marlin/src/feature/power.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,11 @@
/**
* power.h - power control
*/
#if PIN_EXISTS(PS_ON_EDM) || (PIN_EXISTS(PS_ON1_EDM) && ENABLED(PSU_OFF_REDUNDANT))
#define PSU_TRACK_STATE_MS 1
#endif

#if ANY(AUTO_POWER_CONTROL, POWER_OFF_TIMER)
#if ANY(AUTO_POWER_CONTROL, POWER_OFF_TIMER, PSU_TRACK_STATE_MS)
#include "../core/millis_t.h"
#endif

Expand All @@ -37,6 +40,10 @@ class Power {
static void power_on();
static void power_off();

#if PSU_TRACK_STATE_MS
static millis_t last_state_change_ms;
#endif

#if ANY(POWER_OFF_TIMER, POWER_OFF_WAIT_FOR_COOLDOWN)
#if ENABLED(POWER_OFF_TIMER)
static millis_t power_off_time;
Expand Down
2 changes: 2 additions & 0 deletions Marlin/src/inc/SanityCheck.h
Original file line number Diff line number Diff line change
Expand Up @@ -3740,6 +3740,8 @@ static_assert(_PLUS_TEST(3), "DEFAULT_MAX_ACCELERATION values must be positive."
#error "POWER_OFF_DELAY must be a positive value."
#elif ENABLED(POWER_OFF_WAIT_FOR_COOLDOWN) && !(defined(AUTO_POWER_E_TEMP) || defined(AUTO_POWER_CHAMBER_TEMP) || defined(AUTO_POWER_COOLER_TEMP))
#error "POWER_OFF_WAIT_FOR_COOLDOWN requires AUTO_POWER_E_TEMP, AUTO_POWER_CHAMBER_TEMP, and/or AUTO_POWER_COOLER_TEMP."
#elif ENABLED(PSU_OFF_REDUNDANT) && !PIN_EXISTS(PS_ON1)
#error "PSU_OFF_REDUNDANT requires PS_ON1_PIN."
#endif
#endif

Expand Down
2 changes: 1 addition & 1 deletion Marlin/src/inc/Version.h
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@
* version was tagged.
*/
#ifndef STRING_DISTRIBUTION_DATE
#define STRING_DISTRIBUTION_DATE "2024-03-04"
#define STRING_DISTRIBUTION_DATE "2024-03-10"
#endif

/**
Expand Down
1 change: 1 addition & 0 deletions Marlin/src/lcd/language/language_en.h
Original file line number Diff line number Diff line change
Expand Up @@ -155,6 +155,7 @@ namespace LanguageNarrow_en {
LSTR MSG_SPINDLE_REVERSE = _UxGT("Spindle Reverse");
LSTR MSG_SWITCH_PS_ON = _UxGT("Switch Power On");
LSTR MSG_SWITCH_PS_OFF = _UxGT("Switch Power Off");
LSTR MSG_POWER_EDM_FAULT = _UxGT("Power EDM Fault");
LSTR MSG_EXTRUDE = _UxGT("Extrude");
LSTR MSG_RETRACT = _UxGT("Retract");
LSTR MSG_MOVE_AXIS = _UxGT("Move Axis");
Expand Down
3 changes: 3 additions & 0 deletions Marlin/src/pins/pinsDebug_list.h
Original file line number Diff line number Diff line change
Expand Up @@ -901,6 +901,9 @@
#if PIN_EXISTS(PS_ON)
REPORT_NAME_DIGITAL(__LINE__, PS_ON_PIN)
#endif
#if PIN_EXISTS(PS_ON1)
REPORT_NAME_DIGITAL(__LINE__, PS_ON1_PIN)
#endif

//
// LCD
Expand Down
4 changes: 4 additions & 0 deletions Marlin/src/pins/pins_postprocess.h
Original file line number Diff line number Diff line change
Expand Up @@ -477,6 +477,10 @@
#undef PS_ON_PIN
#define PS_ON_PIN -1
#endif
#if DISABLED(PSU_OFF_REDUNDANT) || !defined(PS_ON1_PIN)
#undef PS_ON1_PIN
#define PS_ON1_PIN -1
#endif
#ifndef KILL_PIN
#define KILL_PIN -1
#endif
Expand Down

0 comments on commit 9f0f334

Please sign in to comment.