Distinct runout states (#19965)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
This commit is contained in:
parent
3b68e44d9a
commit
0465e0ae3a
|
@ -1186,9 +1186,27 @@
|
||||||
#if ENABLED(FILAMENT_RUNOUT_SENSOR)
|
#if ENABLED(FILAMENT_RUNOUT_SENSOR)
|
||||||
#define FIL_RUNOUT_ENABLED_DEFAULT true // Enable the sensor on startup. Override with M412 followed by M500.
|
#define FIL_RUNOUT_ENABLED_DEFAULT true // Enable the sensor on startup. Override with M412 followed by M500.
|
||||||
#define NUM_RUNOUT_SENSORS 1 // Number of sensors, up to one per extruder. Define a FIL_RUNOUT#_PIN for each.
|
#define NUM_RUNOUT_SENSORS 1 // Number of sensors, up to one per extruder. Define a FIL_RUNOUT#_PIN for each.
|
||||||
|
|
||||||
#define FIL_RUNOUT_STATE LOW // Pin state indicating that filament is NOT present.
|
#define FIL_RUNOUT_STATE LOW // Pin state indicating that filament is NOT present.
|
||||||
#define FIL_RUNOUT_PULLUP // Use internal pullup for filament runout pins.
|
#define FIL_RUNOUT_PULL // Use internal pullup / pulldown for filament runout pins.
|
||||||
//#define FIL_RUNOUT_PULLDOWN // Use internal pulldown for filament runout pins.
|
|
||||||
|
// Override individually if the runout sensors vary
|
||||||
|
//#define FIL_RUNOUT1_STATE LOW
|
||||||
|
//#define FIL_RUNOUT1_PULL
|
||||||
|
//#define FIL_RUNOUT2_STATE LOW
|
||||||
|
//#define FIL_RUNOUT2_PULL
|
||||||
|
//#define FIL_RUNOUT3_STATE LOW
|
||||||
|
//#define FIL_RUNOUT3_PULL
|
||||||
|
//#define FIL_RUNOUT4_STATE LOW
|
||||||
|
//#define FIL_RUNOUT4_PULL
|
||||||
|
//#define FIL_RUNOUT5_STATE LOW
|
||||||
|
//#define FIL_RUNOUT5_PULL
|
||||||
|
//#define FIL_RUNOUT6_STATE LOW
|
||||||
|
//#define FIL_RUNOUT6_PULL
|
||||||
|
//#define FIL_RUNOUT7_STATE LOW
|
||||||
|
//#define FIL_RUNOUT7_PULL
|
||||||
|
//#define FIL_RUNOUT8_STATE LOW
|
||||||
|
//#define FIL_RUNOUT8_PULL
|
||||||
|
|
||||||
// Set one or more commands to execute on filament runout.
|
// Set one or more commands to execute on filament runout.
|
||||||
// (After 'M412 H' Marlin will ask the host to handle the process.)
|
// (After 'M412 H' Marlin will ask the host to handle the process.)
|
||||||
|
|
|
@ -163,6 +163,9 @@
|
||||||
#define SET_INPUT(IO) _SET_INPUT(IO)
|
#define SET_INPUT(IO) _SET_INPUT(IO)
|
||||||
// Set pin as input with pullup (wrapper)
|
// Set pin as input with pullup (wrapper)
|
||||||
#define SET_INPUT_PULLUP(IO) do{ _SET_INPUT(IO); _PULLUP(IO, HIGH); }while(0)
|
#define SET_INPUT_PULLUP(IO) do{ _SET_INPUT(IO); _PULLUP(IO, HIGH); }while(0)
|
||||||
|
// Set pin as input with pulldown (substitution)
|
||||||
|
#define SET_INPUT_PULLDOWN SET_INPUT
|
||||||
|
|
||||||
// Set pin as output (wrapper) - reads the pin and sets the output to that value
|
// Set pin as output (wrapper) - reads the pin and sets the output to that value
|
||||||
#define SET_OUTPUT(IO) _SET_OUTPUT(IO)
|
#define SET_OUTPUT(IO) _SET_OUTPUT(IO)
|
||||||
// Set pin as PWM
|
// Set pin as PWM
|
||||||
|
|
|
@ -52,6 +52,9 @@
|
||||||
// Set pin as input with pullup wrapper
|
// Set pin as input with pullup wrapper
|
||||||
#define SET_INPUT_PULLUP(IO) do{ _SET_INPUT(IO); _PULLUP(IO, HIGH); }while(0)
|
#define SET_INPUT_PULLUP(IO) do{ _SET_INPUT(IO); _PULLUP(IO, HIGH); }while(0)
|
||||||
|
|
||||||
|
// Set pin as input with pulldown (substitution)
|
||||||
|
#define SET_INPUT_PULLDOWN SET_INPUT
|
||||||
|
|
||||||
// Set pin as output wrapper
|
// Set pin as output wrapper
|
||||||
#define SET_OUTPUT(IO) do{ _SET_OUTPUT(IO); }while(0)
|
#define SET_OUTPUT(IO) do{ _SET_OUTPUT(IO); }while(0)
|
||||||
|
|
||||||
|
|
|
@ -163,7 +163,7 @@ uint8_t MMU2::get_current_tool() {
|
||||||
}
|
}
|
||||||
|
|
||||||
#if EITHER(PRUSA_MMU2_S_MODE, MMU_EXTRUDER_SENSOR)
|
#if EITHER(PRUSA_MMU2_S_MODE, MMU_EXTRUDER_SENSOR)
|
||||||
#define FILAMENT_PRESENT() (READ(FIL_RUNOUT_PIN) != FIL_RUNOUT_STATE)
|
#define FILAMENT_PRESENT() (READ(FIL_RUNOUT1_PIN) != FIL_RUNOUT1_STATE)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void MMU2::mmu_loop() {
|
void MMU2::mmu_loop() {
|
||||||
|
|
|
@ -149,17 +149,33 @@ class FilamentSensorBase {
|
||||||
|
|
||||||
public:
|
public:
|
||||||
static inline void setup() {
|
static inline void setup() {
|
||||||
#if ENABLED(FIL_RUNOUT_PULLUP)
|
#define _INIT_RUNOUT_PIN(P,S,U) do{ if (DISABLED(U)) SET_INPUT(P); else if (S) SET_INPUT_PULLDOWN(P); else SET_INPUT_PULLUP(P); }while(0)
|
||||||
#define INIT_RUNOUT_PIN(P) SET_INPUT_PULLUP(P)
|
#define INIT_RUNOUT_PIN(N) _INIT_RUNOUT_PIN(FIL_RUNOUT##N##_PIN, FIL_RUNOUT##N##_STATE, FIL_RUNOUT##N##_PULL)
|
||||||
#elif ENABLED(FIL_RUNOUT_PULLDOWN)
|
#if NUM_RUNOUT_SENSORS >= 1
|
||||||
#define INIT_RUNOUT_PIN(P) SET_INPUT_PULLDOWN(P)
|
INIT_RUNOUT_PIN(1);
|
||||||
#else
|
|
||||||
#define INIT_RUNOUT_PIN(P) SET_INPUT(P)
|
|
||||||
#endif
|
#endif
|
||||||
|
#if NUM_RUNOUT_SENSORS >= 2
|
||||||
#define _INIT_RUNOUT(N) INIT_RUNOUT_PIN(FIL_RUNOUT##N##_PIN);
|
INIT_RUNOUT_PIN(2);
|
||||||
REPEAT_S(1, INCREMENT(NUM_RUNOUT_SENSORS), _INIT_RUNOUT)
|
#endif
|
||||||
#undef _INIT_RUNOUT
|
#if NUM_RUNOUT_SENSORS >= 3
|
||||||
|
INIT_RUNOUT_PIN(3);
|
||||||
|
#endif
|
||||||
|
#if NUM_RUNOUT_SENSORS >= 4
|
||||||
|
INIT_RUNOUT_PIN(4);
|
||||||
|
#endif
|
||||||
|
#if NUM_RUNOUT_SENSORS >= 5
|
||||||
|
INIT_RUNOUT_PIN(5);
|
||||||
|
#endif
|
||||||
|
#if NUM_RUNOUT_SENSORS >= 6
|
||||||
|
INIT_RUNOUT_PIN(6);
|
||||||
|
#endif
|
||||||
|
#if NUM_RUNOUT_SENSORS >= 7
|
||||||
|
INIT_RUNOUT_PIN(7);
|
||||||
|
#endif
|
||||||
|
#if NUM_RUNOUT_SENSORS >= 8
|
||||||
|
INIT_RUNOUT_PIN(8);
|
||||||
|
#endif
|
||||||
|
#undef _INIT_RUNOUT_PIN
|
||||||
#undef INIT_RUNOUT_PIN
|
#undef INIT_RUNOUT_PIN
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -172,11 +188,32 @@ class FilamentSensorBase {
|
||||||
|
|
||||||
// Return a bitmask of runout flag states (1 bits always indicates runout)
|
// Return a bitmask of runout flag states (1 bits always indicates runout)
|
||||||
static inline uint8_t poll_runout_states() {
|
static inline uint8_t poll_runout_states() {
|
||||||
return poll_runout_pins()
|
return poll_runout_pins() ^ uint8_t(0
|
||||||
#if FIL_RUNOUT_STATE == LOW
|
#if NUM_RUNOUT_SENSORS >= 1
|
||||||
^ uint8_t(_BV(NUM_RUNOUT_SENSORS) - 1)
|
| (FIL_RUNOUT1_STATE ? 0 : _BV(1 - 1))
|
||||||
#endif
|
#endif
|
||||||
;
|
#if NUM_RUNOUT_SENSORS >= 2
|
||||||
|
| (FIL_RUNOUT2_STATE ? 0 : _BV(2 - 1))
|
||||||
|
#endif
|
||||||
|
#if NUM_RUNOUT_SENSORS >= 3
|
||||||
|
| (FIL_RUNOUT3_STATE ? 0 : _BV(3 - 1))
|
||||||
|
#endif
|
||||||
|
#if NUM_RUNOUT_SENSORS >= 4
|
||||||
|
| (FIL_RUNOUT4_STATE ? 0 : _BV(4 - 1))
|
||||||
|
#endif
|
||||||
|
#if NUM_RUNOUT_SENSORS >= 5
|
||||||
|
| (FIL_RUNOUT5_STATE ? 0 : _BV(5 - 1))
|
||||||
|
#endif
|
||||||
|
#if NUM_RUNOUT_SENSORS >= 6
|
||||||
|
| (FIL_RUNOUT6_STATE ? 0 : _BV(6 - 1))
|
||||||
|
#endif
|
||||||
|
#if NUM_RUNOUT_SENSORS >= 7
|
||||||
|
| (FIL_RUNOUT7_STATE ? 0 : _BV(7 - 1))
|
||||||
|
#endif
|
||||||
|
#if NUM_RUNOUT_SENSORS >= 8
|
||||||
|
| (FIL_RUNOUT8_STATE ? 0 : _BV(8 - 1))
|
||||||
|
#endif
|
||||||
|
);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -88,7 +88,7 @@ void GcodeSuite::M600() {
|
||||||
// In this case, for duplicating modes set DXC_ext to the extruder that ran out.
|
// In this case, for duplicating modes set DXC_ext to the extruder that ran out.
|
||||||
#if HAS_FILAMENT_SENSOR && NUM_RUNOUT_SENSORS > 1
|
#if HAS_FILAMENT_SENSOR && NUM_RUNOUT_SENSORS > 1
|
||||||
if (idex_is_duplicating())
|
if (idex_is_duplicating())
|
||||||
DXC_ext = (READ(FIL_RUNOUT2_PIN) == FIL_RUNOUT_STATE) ? 1 : 0;
|
DXC_ext = (READ(FIL_RUNOUT2_PIN) == FIL_RUNOUT2_STATE) ? 1 : 0;
|
||||||
#else
|
#else
|
||||||
DXC_ext = active_extruder;
|
DXC_ext = active_extruder;
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -675,6 +675,73 @@
|
||||||
#define HAS_BED_PROBE 1
|
#define HAS_BED_PROBE 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if ENABLED(FILAMENT_RUNOUT_SENSOR)
|
||||||
|
#if NUM_RUNOUT_SENSORS >= 1
|
||||||
|
#ifndef FIL_RUNOUT1_STATE
|
||||||
|
#define FIL_RUNOUT1_STATE FIL_RUNOUT_STATE
|
||||||
|
#endif
|
||||||
|
#ifndef FIL_RUNOUT1_PULL
|
||||||
|
#define FIL_RUNOUT1_PULL FIL_RUNOUT_PULL
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#if NUM_RUNOUT_SENSORS >= 2
|
||||||
|
#ifndef FIL_RUNOUT2_STATE
|
||||||
|
#define FIL_RUNOUT2_STATE FIL_RUNOUT_STATE
|
||||||
|
#endif
|
||||||
|
#ifndef FIL_RUNOUT2_PULL
|
||||||
|
#define FIL_RUNOUT2_PULL FIL_RUNOUT_PULL
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#if NUM_RUNOUT_SENSORS >= 3
|
||||||
|
#ifndef FIL_RUNOUT3_STATE
|
||||||
|
#define FIL_RUNOUT3_STATE FIL_RUNOUT_STATE
|
||||||
|
#endif
|
||||||
|
#ifndef FIL_RUNOUT3_PULL
|
||||||
|
#define FIL_RUNOUT3_PULL FIL_RUNOUT_PULL
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#if NUM_RUNOUT_SENSORS >= 4
|
||||||
|
#ifndef FIL_RUNOUT4_STATE
|
||||||
|
#define FIL_RUNOUT4_STATE FIL_RUNOUT_STATE
|
||||||
|
#endif
|
||||||
|
#ifndef FIL_RUNOUT4_PULL
|
||||||
|
#define FIL_RUNOUT4_PULL FIL_RUNOUT_PULL
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#if NUM_RUNOUT_SENSORS >= 5
|
||||||
|
#ifndef FIL_RUNOUT5_STATE
|
||||||
|
#define FIL_RUNOUT5_STATE FIL_RUNOUT_STATE
|
||||||
|
#endif
|
||||||
|
#ifndef FIL_RUNOUT5_PULL
|
||||||
|
#define FIL_RUNOUT5_PULL FIL_RUNOUT_PULL
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#if NUM_RUNOUT_SENSORS >= 6
|
||||||
|
#ifndef FIL_RUNOUT6_STATE
|
||||||
|
#define FIL_RUNOUT6_STATE FIL_RUNOUT_STATE
|
||||||
|
#endif
|
||||||
|
#ifndef FIL_RUNOUT6_PULL
|
||||||
|
#define FIL_RUNOUT6_PULL FIL_RUNOUT_PULL
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#if NUM_RUNOUT_SENSORS >= 7
|
||||||
|
#ifndef FIL_RUNOUT7_STATE
|
||||||
|
#define FIL_RUNOUT7_STATE FIL_RUNOUT_STATE
|
||||||
|
#endif
|
||||||
|
#ifndef FIL_RUNOUT7_PULL
|
||||||
|
#define FIL_RUNOUT7_PULL FIL_RUNOUT_PULL
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#if NUM_RUNOUT_SENSORS >= 8
|
||||||
|
#ifndef FIL_RUNOUT8_STATE
|
||||||
|
#define FIL_RUNOUT8_STATE FIL_RUNOUT_STATE
|
||||||
|
#endif
|
||||||
|
#ifndef FIL_RUNOUT8_PULL
|
||||||
|
#define FIL_RUNOUT8_PULL FIL_RUNOUT_PULL
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#endif // FILAMENT_RUNOUT_SENSOR
|
||||||
|
|
||||||
#if EITHER(MESH_BED_LEVELING, AUTO_BED_LEVELING_UBL)
|
#if EITHER(MESH_BED_LEVELING, AUTO_BED_LEVELING_UBL)
|
||||||
#undef PROBE_MANUALLY
|
#undef PROBE_MANUALLY
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -111,7 +111,7 @@
|
||||||
#elif defined(FILAMENT_SENSOR)
|
#elif defined(FILAMENT_SENSOR)
|
||||||
#error "FILAMENT_SENSOR is now FILAMENT_WIDTH_SENSOR. Please update your configuration."
|
#error "FILAMENT_SENSOR is now FILAMENT_WIDTH_SENSOR. Please update your configuration."
|
||||||
#elif defined(ENDSTOPPULLUP_FIL_RUNOUT)
|
#elif defined(ENDSTOPPULLUP_FIL_RUNOUT)
|
||||||
#error "ENDSTOPPULLUP_FIL_RUNOUT is now FIL_RUNOUT_PULLUP. Please update your configuration."
|
#error "ENDSTOPPULLUP_FIL_RUNOUT is now FIL_RUNOUT_PULL. Please update your configuration."
|
||||||
#elif defined(DISABLE_MAX_ENDSTOPS) || defined(DISABLE_MIN_ENDSTOPS)
|
#elif defined(DISABLE_MAX_ENDSTOPS) || defined(DISABLE_MIN_ENDSTOPS)
|
||||||
#error "DISABLE_MAX_ENDSTOPS and DISABLE_MIN_ENDSTOPS deprecated. Use individual USE_*_PLUG options instead."
|
#error "DISABLE_MAX_ENDSTOPS and DISABLE_MIN_ENDSTOPS deprecated. Use individual USE_*_PLUG options instead."
|
||||||
#elif defined(LANGUAGE_INCLUDE)
|
#elif defined(LANGUAGE_INCLUDE)
|
||||||
|
@ -660,8 +660,6 @@ static_assert(Y_MAX_LENGTH >= Y_BED_SIZE, "Movement bounds (Y_MIN_POS, Y_MAX_POS
|
||||||
|
|
||||||
#if BOTH(ENDSTOPPULLUPS, ENDSTOPPULLDOWNS)
|
#if BOTH(ENDSTOPPULLUPS, ENDSTOPPULLDOWNS)
|
||||||
#error "Enable only one of ENDSTOPPULLUPS or ENDSTOPPULLDOWNS."
|
#error "Enable only one of ENDSTOPPULLUPS or ENDSTOPPULLDOWNS."
|
||||||
#elif BOTH(FIL_RUNOUT_PULLUP, FIL_RUNOUT_PULLDOWN)
|
|
||||||
#error "Enable only one of FIL_RUNOUT_PULLUP or FIL_RUNOUT_PULLDOWN."
|
|
||||||
#elif BOTH(ENDSTOPPULLUP_XMAX, ENDSTOPPULLDOWN_XMAX)
|
#elif BOTH(ENDSTOPPULLUP_XMAX, ENDSTOPPULLDOWN_XMAX)
|
||||||
#error "Enable only one of ENDSTOPPULLUP_X_MAX or ENDSTOPPULLDOWN_X_MAX."
|
#error "Enable only one of ENDSTOPPULLUP_X_MAX or ENDSTOPPULLDOWN_X_MAX."
|
||||||
#elif BOTH(ENDSTOPPULLUP_YMAX, ENDSTOPPULLDOWN_YMAX)
|
#elif BOTH(ENDSTOPPULLUP_YMAX, ENDSTOPPULLDOWN_YMAX)
|
||||||
|
@ -814,18 +812,20 @@ static_assert(Y_MAX_LENGTH >= Y_BED_SIZE, "Movement bounds (Y_MIN_POS, Y_MAX_POS
|
||||||
#error "FILAMENT_RUNOUT_SENSOR requires FIL_RUNOUT_PIN."
|
#error "FILAMENT_RUNOUT_SENSOR requires FIL_RUNOUT_PIN."
|
||||||
#elif NUM_RUNOUT_SENSORS > E_STEPPERS
|
#elif NUM_RUNOUT_SENSORS > E_STEPPERS
|
||||||
#error "NUM_RUNOUT_SENSORS cannot exceed the number of E steppers."
|
#error "NUM_RUNOUT_SENSORS cannot exceed the number of E steppers."
|
||||||
#elif NUM_RUNOUT_SENSORS > 1 && !PIN_EXISTS(FIL_RUNOUT2)
|
#elif NUM_RUNOUT_SENSORS >= 2 && !PIN_EXISTS(FIL_RUNOUT2)
|
||||||
#error "FILAMENT_RUNOUT_SENSOR with NUM_RUNOUT_SENSORS > 1 requires FIL_RUNOUT2_PIN."
|
#error "FIL_RUNOUT2_PIN is required with NUM_RUNOUT_SENSORS >= 2."
|
||||||
#elif NUM_RUNOUT_SENSORS > 2 && !PIN_EXISTS(FIL_RUNOUT3)
|
#elif NUM_RUNOUT_SENSORS >= 3 && !PIN_EXISTS(FIL_RUNOUT3)
|
||||||
#error "FILAMENT_RUNOUT_SENSOR with NUM_RUNOUT_SENSORS > 2 requires FIL_RUNOUT3_PIN."
|
#error "FIL_RUNOUT3_PIN is required with NUM_RUNOUT_SENSORS >= 3."
|
||||||
#elif NUM_RUNOUT_SENSORS > 3 && !PIN_EXISTS(FIL_RUNOUT4)
|
#elif NUM_RUNOUT_SENSORS >= 4 && !PIN_EXISTS(FIL_RUNOUT4)
|
||||||
#error "FILAMENT_RUNOUT_SENSOR with NUM_RUNOUT_SENSORS > 3 requires FIL_RUNOUT4_PIN."
|
#error "FIL_RUNOUT4_PIN is required with NUM_RUNOUT_SENSORS >= 4."
|
||||||
#elif NUM_RUNOUT_SENSORS > 4 && !PIN_EXISTS(FIL_RUNOUT5)
|
#elif NUM_RUNOUT_SENSORS >= 5 && !PIN_EXISTS(FIL_RUNOUT5)
|
||||||
#error "FILAMENT_RUNOUT_SENSOR with NUM_RUNOUT_SENSORS > 4 requires FIL_RUNOUT5_PIN."
|
#error "FIL_RUNOUT5_PIN is required with NUM_RUNOUT_SENSORS >= 5."
|
||||||
#elif NUM_RUNOUT_SENSORS > 5 && !PIN_EXISTS(FIL_RUNOUT6)
|
#elif NUM_RUNOUT_SENSORS >= 6 && !PIN_EXISTS(FIL_RUNOUT6)
|
||||||
#error "FILAMENT_RUNOUT_SENSOR with NUM_RUNOUT_SENSORS > 5 requires FIL_RUNOUT6_PIN."
|
#error "FIL_RUNOUT6_PIN is required with NUM_RUNOUT_SENSORS >= 6."
|
||||||
#elif NONE(SDSUPPORT, PRINTJOB_TIMER_AUTOSTART)
|
#elif NUM_RUNOUT_SENSORS >= 7 && !PIN_EXISTS(FIL_RUNOUT7)
|
||||||
#error "FILAMENT_RUNOUT_SENSOR requires SDSUPPORT or PRINTJOB_TIMER_AUTOSTART."
|
#error "FIL_RUNOUT7_PIN is required with NUM_RUNOUT_SENSORS >= 7."
|
||||||
|
#elif NUM_RUNOUT_SENSORS >= 8 && !PIN_EXISTS(FIL_RUNOUT8)
|
||||||
|
#error "FIL_RUNOUT8_PIN is required with NUM_RUNOUT_SENSORS >= 8."
|
||||||
#elif FILAMENT_RUNOUT_DISTANCE_MM < 0
|
#elif FILAMENT_RUNOUT_DISTANCE_MM < 0
|
||||||
#error "FILAMENT_RUNOUT_DISTANCE_MM must be greater than or equal to zero."
|
#error "FILAMENT_RUNOUT_DISTANCE_MM must be greater than or equal to zero."
|
||||||
#elif DISABLED(ADVANCED_PAUSE_FEATURE)
|
#elif DISABLED(ADVANCED_PAUSE_FEATURE)
|
||||||
|
|
|
@ -76,8 +76,8 @@ namespace Anycubic {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Filament runout is handled by Marlin settings in Configuration.h
|
// Filament runout is handled by Marlin settings in Configuration.h
|
||||||
// set FIL_RUNOUT_STATE HIGH // Pin state indicating that filament is NOT present.
|
// opt_set FIL_RUNOUT_STATE HIGH // Pin state indicating that filament is NOT present.
|
||||||
// enable FIL_RUNOUT_PULLUP
|
// opt_enable FIL_RUNOUT_PULL
|
||||||
|
|
||||||
TFTSer.begin(115200);
|
TFTSer.begin(115200);
|
||||||
|
|
||||||
|
|
|
@ -87,7 +87,7 @@ void AnycubicTFTClass::OnSetup() {
|
||||||
SET_INPUT_PULLUP(SD_DETECT_PIN);
|
SET_INPUT_PULLUP(SD_DETECT_PIN);
|
||||||
#endif
|
#endif
|
||||||
#if ENABLED(FILAMENT_RUNOUT_SENSOR)
|
#if ENABLED(FILAMENT_RUNOUT_SENSOR)
|
||||||
SET_INPUT_PULLUP(FIL_RUNOUT_PIN);
|
SET_INPUT_PULLUP(FIL_RUNOUT1_PIN);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
mediaPrintingState = AMPRINTSTATE_NOT_PRINTING;
|
mediaPrintingState = AMPRINTSTATE_NOT_PRINTING;
|
||||||
|
@ -935,7 +935,7 @@ void AnycubicTFTClass::DoFilamentRunoutCheck() {
|
||||||
#if ENABLED(FILAMENT_RUNOUT_SENSOR)
|
#if ENABLED(FILAMENT_RUNOUT_SENSOR)
|
||||||
// NOTE: ExtUI::getFilamentRunoutState() only returns the runout state if the job is printing
|
// NOTE: ExtUI::getFilamentRunoutState() only returns the runout state if the job is printing
|
||||||
// we want to actually check the status of the pin here, regardless of printstate
|
// we want to actually check the status of the pin here, regardless of printstate
|
||||||
if (READ(FIL_RUNOUT_PIN)) {
|
if (READ(FIL_RUNOUT1_PIN)) {
|
||||||
if (mediaPrintingState == AMPRINTSTATE_PRINTING || mediaPrintingState == AMPRINTSTATE_PAUSED || mediaPrintingState == AMPRINTSTATE_PAUSE_REQUESTED) {
|
if (mediaPrintingState == AMPRINTSTATE_PRINTING || mediaPrintingState == AMPRINTSTATE_PAUSED || mediaPrintingState == AMPRINTSTATE_PAUSE_REQUESTED) {
|
||||||
// play tone to indicate filament is out
|
// play tone to indicate filament is out
|
||||||
ExtUI::injectCommands_P(PSTR("\nM300 P200 S1567\nM300 P200 S1174\nM300 P200 S1567\nM300 P200 S1174\nM300 P2000 S1567"));
|
ExtUI::injectCommands_P(PSTR("\nM300 P200 S1567\nM300 P200 S1174\nM300 P200 S1567\nM300 P200 S1174\nM300 P2000 S1567"));
|
||||||
|
@ -983,7 +983,7 @@ void AnycubicTFTClass::PausePrint() {
|
||||||
void AnycubicTFTClass::ResumePrint() {
|
void AnycubicTFTClass::ResumePrint() {
|
||||||
#if ENABLED(SDSUPPORT)
|
#if ENABLED(SDSUPPORT)
|
||||||
#if ENABLED(FILAMENT_RUNOUT_SENSOR)
|
#if ENABLED(FILAMENT_RUNOUT_SENSOR)
|
||||||
if (READ(FIL_RUNOUT_PIN)) {
|
if (READ(FIL_RUNOUT1_PIN)) {
|
||||||
#if ENABLED(ANYCUBIC_LCD_DEBUG)
|
#if ENABLED(ANYCUBIC_LCD_DEBUG)
|
||||||
SERIAL_ECHOLNPGM("TFT Serial Debug: Resume Print with filament sensor still tripped... ");
|
SERIAL_ECHOLNPGM("TFT Serial Debug: Resume Print with filament sensor still tripped... ");
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -92,12 +92,12 @@ void EndstopStatesScreen::onRedraw(draw_mode_t) {
|
||||||
PIN_DISABLED(5, 3, PSTR(STR_Z_MIN), Z_MIN)
|
PIN_DISABLED(5, 3, PSTR(STR_Z_MIN), Z_MIN)
|
||||||
#endif
|
#endif
|
||||||
#if ENABLED(FILAMENT_RUNOUT_SENSOR) && PIN_EXISTS(FIL_RUNOUT)
|
#if ENABLED(FILAMENT_RUNOUT_SENSOR) && PIN_EXISTS(FIL_RUNOUT)
|
||||||
PIN_ENABLED (1, 4, GET_TEXT_F(MSG_RUNOUT_1), FIL_RUNOUT, FIL_RUNOUT_STATE)
|
PIN_ENABLED (1, 4, GET_TEXT_F(MSG_RUNOUT_1), FIL_RUNOUT, FIL_RUNOUT1_STATE)
|
||||||
#else
|
#else
|
||||||
PIN_DISABLED(1, 4, GET_TEXT_F(MSG_RUNOUT_1), FIL_RUNOUT)
|
PIN_DISABLED(1, 4, GET_TEXT_F(MSG_RUNOUT_1), FIL_RUNOUT)
|
||||||
#endif
|
#endif
|
||||||
#if BOTH(HAS_MULTI_EXTRUDER, FILAMENT_RUNOUT_SENSOR) && PIN_EXISTS(FIL_RUNOUT2)
|
#if BOTH(HAS_MULTI_EXTRUDER, FILAMENT_RUNOUT_SENSOR) && PIN_EXISTS(FIL_RUNOUT2)
|
||||||
PIN_ENABLED (3, 4, GET_TEXT_F(MSG_RUNOUT_2), FIL_RUNOUT2, FIL_RUNOUT_STATE)
|
PIN_ENABLED (3, 4, GET_TEXT_F(MSG_RUNOUT_2), FIL_RUNOUT2, FIL_RUNOUT2_STATE)
|
||||||
#else
|
#else
|
||||||
PIN_DISABLED(3, 4, GET_TEXT_F(MSG_RUNOUT_2), FIL_RUNOUT2)
|
PIN_DISABLED(3, 4, GET_TEXT_F(MSG_RUNOUT_2), FIL_RUNOUT2)
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -459,18 +459,19 @@ void _O2 Endstops::report_states() {
|
||||||
#endif
|
#endif
|
||||||
#if HAS_FILAMENT_SENSOR
|
#if HAS_FILAMENT_SENSOR
|
||||||
#if NUM_RUNOUT_SENSORS == 1
|
#if NUM_RUNOUT_SENSORS == 1
|
||||||
print_es_state(READ(FIL_RUNOUT_PIN) != FIL_RUNOUT_STATE, PSTR(STR_FILAMENT_RUNOUT_SENSOR));
|
print_es_state(READ(FIL_RUNOUT1_PIN) != FIL_RUNOUT1_STATE, PSTR(STR_FILAMENT_RUNOUT_SENSOR));
|
||||||
#else
|
#else
|
||||||
#define _CASE_RUNOUT(N) case N: pin = FIL_RUNOUT##N##_PIN; break;
|
#define _CASE_RUNOUT(N) case N: pin = FIL_RUNOUT##N##_PIN; state = FIL_RUNOUT##N##_STATE; break;
|
||||||
LOOP_S_LE_N(i, 1, NUM_RUNOUT_SENSORS) {
|
LOOP_S_LE_N(i, 1, NUM_RUNOUT_SENSORS) {
|
||||||
pin_t pin;
|
pin_t pin;
|
||||||
|
uint8_t state;
|
||||||
switch (i) {
|
switch (i) {
|
||||||
default: continue;
|
default: continue;
|
||||||
REPEAT_S(1, INCREMENT(NUM_RUNOUT_SENSORS), _CASE_RUNOUT)
|
REPEAT_S(1, INCREMENT(NUM_RUNOUT_SENSORS), _CASE_RUNOUT)
|
||||||
}
|
}
|
||||||
SERIAL_ECHOPGM(STR_FILAMENT_RUNOUT_SENSOR);
|
SERIAL_ECHOPGM(STR_FILAMENT_RUNOUT_SENSOR);
|
||||||
if (i > 1) SERIAL_CHAR(' ', '0' + i);
|
if (i > 1) SERIAL_CHAR(' ', '0' + i);
|
||||||
print_es_state(extDigitalRead(pin) != FIL_RUNOUT_STATE);
|
print_es_state(extDigitalRead(pin) != state);
|
||||||
}
|
}
|
||||||
#undef _CASE_RUNOUT
|
#undef _CASE_RUNOUT
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -24,7 +24,20 @@ opt_set E2_AUTO_FAN_PIN PC12
|
||||||
opt_set X_DRIVER_TYPE TMC2208
|
opt_set X_DRIVER_TYPE TMC2208
|
||||||
opt_set Y_DRIVER_TYPE TMC2130
|
opt_set Y_DRIVER_TYPE TMC2130
|
||||||
opt_enable REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER
|
opt_enable REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER
|
||||||
exec_test $1 $2 "BigTreeTech GTR 8 Extruders with Auto-Fan and Mixed TMC Drivers"
|
opt_enable FILAMENT_RUNOUT_SENSOR NOZZLE_PARK_FEATURE ADVANCED_PAUSE_FEATURE
|
||||||
|
opt_set FIL_RUNOUT_PIN 3
|
||||||
|
opt_set FIL_RUNOUT2_PIN 4
|
||||||
|
opt_set FIL_RUNOUT3_PIN 5
|
||||||
|
opt_set FIL_RUNOUT4_PIN 6
|
||||||
|
opt_set FIL_RUNOUT5_PIN 7
|
||||||
|
opt_set FIL_RUNOUT6_PIN 8
|
||||||
|
opt_set FIL_RUNOUT7_PIN 9
|
||||||
|
opt_set FIL_RUNOUT8_PIN 10
|
||||||
|
opt_set FIL_RUNOUT4_STATE HIGH
|
||||||
|
opt_enable FIL_RUNOUT4_PULL
|
||||||
|
opt_set FIL_RUNOUT8_STATE HIGH
|
||||||
|
opt_enable FIL_RUNOUT8_PULL
|
||||||
|
exec_test $1 $2 "BigTreeTech GTR 8 Extruders with Auto-Fan, Mixed TMC Drivers, and Runout Sensors with distinct states"
|
||||||
|
|
||||||
restore_configs
|
restore_configs
|
||||||
opt_set MOTHERBOARD BOARD_BTT_GTR_V1_0
|
opt_set MOTHERBOARD BOARD_BTT_GTR_V1_0
|
||||||
|
|
|
@ -75,6 +75,21 @@ opt_enable ZONESTAR_LCD Z_PROBE_SERVO_NR Z_SERVO_ANGLES DEACTIVATE_SERVOS_AFTER_
|
||||||
FILAMENT_RUNOUT_SENSOR NOZZLE_PARK_FEATURE ADVANCED_PAUSE_FEATURE Z_SAFE_HOMING
|
FILAMENT_RUNOUT_SENSOR NOZZLE_PARK_FEATURE ADVANCED_PAUSE_FEATURE Z_SAFE_HOMING
|
||||||
exec_test $1 $2 "RAMPS | ZONESTAR + Chinese | MMU2 | Servo | 3-Point + Debug | G38 ..."
|
exec_test $1 $2 "RAMPS | ZONESTAR + Chinese | MMU2 | Servo | 3-Point + Debug | G38 ..."
|
||||||
|
|
||||||
|
#
|
||||||
|
# 5 runout sensors with distinct states
|
||||||
|
#
|
||||||
|
restore_configs
|
||||||
|
opt_set EXTRUDERS 5
|
||||||
|
opt_set NUM_SERVOS 1
|
||||||
|
opt_enable ZONESTAR_LCD Z_PROBE_SERVO_NR Z_SERVO_ANGLES DEACTIVATE_SERVOS_AFTER_MOVE BOOT_MARLIN_LOGO_ANIMATED \
|
||||||
|
AUTO_BED_LEVELING_3POINT DEBUG_LEVELING_FEATURE EEPROM_SETTINGS EEPROM_CHITCHAT M114_DETAIL \
|
||||||
|
NO_VOLUMETRICS EXTENDED_CAPABILITIES_REPORT AUTO_REPORT_TEMPERATURES AUTOTEMP G38_PROBE_TARGET JOYSTICK \
|
||||||
|
PRUSA_MMU2 MMU2_MENUS PRUSA_MMU2_S_MODE DIRECT_STEPPING DETECT_BROKEN_ENDSTOP \
|
||||||
|
FILAMENT_RUNOUT_SENSOR NOZZLE_PARK_FEATURE ADVANCED_PAUSE_FEATURE Z_SAFE_HOMING FIL_RUNOUT3_PULL
|
||||||
|
opt_set MIXING_STEPPERS 5
|
||||||
|
opt_set FIL_RUNOUT3_STATE HIGH
|
||||||
|
exec_test $1 $2 "Multiple runout sensors (x5) | Distinct runout states"
|
||||||
|
|
||||||
#
|
#
|
||||||
# Test MINIRAMBO with PWM_MOTOR_CURRENT and many features
|
# Test MINIRAMBO with PWM_MOTOR_CURRENT and many features
|
||||||
#
|
#
|
||||||
|
|
Loading…
Reference in a new issue