Browse Source
Filament Runout Inverting => State (#18537)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
vanilla_fb_2.0.x
Robby Candra
4 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with
19 additions and
8 deletions
-
Marlin/Configuration.h
-
Marlin/src/feature/mmu2/mmu2.cpp
-
Marlin/src/feature/runout.h
-
Marlin/src/gcode/feature/pause/M600.cpp
-
Marlin/src/inc/SanityCheck.h
-
Marlin/src/lcd/extui/lib/ftdi_eve_touch_ui/screens/endstop_state_screen.cpp
-
Marlin/src/module/endstops.cpp
|
|
@ -1167,7 +1167,7 @@ |
|
|
|
//#define FILAMENT_RUNOUT_SENSOR
|
|
|
|
#if ENABLED(FILAMENT_RUNOUT_SENSOR) |
|
|
|
#define NUM_RUNOUT_SENSORS 1 // Number of sensors, up to one per extruder. Define a FIL_RUNOUT#_PIN for each.
|
|
|
|
#define FIL_RUNOUT_INVERTING false // Set to true to invert the logic of the sensor.
|
|
|
|
#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_PULLDOWN // Use internal pulldown for filament runout pins.
|
|
|
|
|
|
|
|
|
|
@ -161,7 +161,7 @@ uint8_t MMU2::get_current_tool() { |
|
|
|
} |
|
|
|
|
|
|
|
#if EITHER(PRUSA_MMU2_S_MODE, MMU_EXTRUDER_SENSOR) |
|
|
|
#define FILAMENT_PRESENT() (READ(FIL_RUNOUT_PIN) != FIL_RUNOUT_INVERTING) |
|
|
|
#define FILAMENT_PRESENT() (READ(FIL_RUNOUT_PIN) != FIL_RUNOUT_STATE) |
|
|
|
#endif |
|
|
|
|
|
|
|
void MMU2::mmu_loop() { |
|
|
|
|
|
@ -148,7 +148,7 @@ class FilamentSensorBase { |
|
|
|
|
|
|
|
// Return a bitmask of runout flag states (1 bits always indicates runout)
|
|
|
|
static inline uint8_t poll_runout_states() { |
|
|
|
return poll_runout_pins() ^ uint8_t(TERN(FIL_RUNOUT_INVERTING, 0, _BV(NUM_RUNOUT_SENSORS) - 1)); |
|
|
|
return poll_runout_pins() ^ uint8_t(TERN(FIL_RUNOUT_STATE, 0, _BV(NUM_RUNOUT_SENSORS) - 1)); |
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
@ -84,7 +84,7 @@ void GcodeSuite::M600() { |
|
|
|
// In this case, for duplicating modes set DXC_ext to the extruder that ran out.
|
|
|
|
#if HAS_FILAMENT_SENSOR && NUM_RUNOUT_SENSORS > 1 |
|
|
|
if (dxc_is_duplicating()) |
|
|
|
DXC_ext = (READ(FIL_RUNOUT2_PIN) == FIL_RUNOUT_INVERTING) ? 1 : 0; |
|
|
|
DXC_ext = (READ(FIL_RUNOUT2_PIN) == FIL_RUNOUT_STATE) ? 1 : 0; |
|
|
|
#else |
|
|
|
DXC_ext = active_extruder; |
|
|
|
#endif |
|
|
|
|
|
@ -513,6 +513,17 @@ |
|
|
|
#error "DIGIPOT_I2C is now DIGIPOT_MCP4451 (or DIGIPOT_MCP4018). Please update Configuration_adv.h." |
|
|
|
#endif |
|
|
|
|
|
|
|
#ifdef FIL_RUNOUT_INVERTING |
|
|
|
#if FIL_RUNOUT_INVERTING |
|
|
|
#warning "FIL_RUNOUT_INVERTING true is now FIL_RUNOUT_STATE HIGH. Please update Configuration.h." |
|
|
|
#else |
|
|
|
#warning "FIL_RUNOUT_INVERTING false is now FIL_RUNOUT_STATE LOW. Please update Configuration.h." |
|
|
|
#endif |
|
|
|
#ifndef FIL_RUNOUT_STATE |
|
|
|
#define FIL_RUNOUT_STATE ((FIL_RUNOUT_INVERTING) ? HIGH : LOW) |
|
|
|
#endif |
|
|
|
#endif |
|
|
|
|
|
|
|
/**
|
|
|
|
* Probe temp compensation requirements |
|
|
|
*/ |
|
|
|
|
|
@ -92,12 +92,12 @@ void EndstopStatesScreen::onRedraw(draw_mode_t) { |
|
|
|
PIN_DISABLED(5, 3, PSTR(STR_Z_MIN), Z_MIN) |
|
|
|
#endif |
|
|
|
#if ENABLED(FILAMENT_RUNOUT_SENSOR) && PIN_EXISTS(FIL_RUNOUT) |
|
|
|
PIN_ENABLED (1, 4, GET_TEXT_F(MSG_RUNOUT_1), FIL_RUNOUT, FIL_RUNOUT_INVERTING) |
|
|
|
PIN_ENABLED (1, 4, GET_TEXT_F(MSG_RUNOUT_1), FIL_RUNOUT, FIL_RUNOUT_STATE) |
|
|
|
#else |
|
|
|
PIN_DISABLED(1, 4, GET_TEXT_F(MSG_RUNOUT_1), FIL_RUNOUT) |
|
|
|
#endif |
|
|
|
#if ENABLED(FILAMENT_RUNOUT_SENSOR) && PIN_EXISTS(FIL_RUNOUT2) && EXTRUDERS > 1 |
|
|
|
PIN_ENABLED (3, 4, GET_TEXT_F(MSG_RUNOUT_2), FIL_RUNOUT2, FIL_RUNOUT_INVERTING) |
|
|
|
PIN_ENABLED (3, 4, GET_TEXT_F(MSG_RUNOUT_2), FIL_RUNOUT2, FIL_RUNOUT_STATE) |
|
|
|
#else |
|
|
|
PIN_DISABLED(3, 4, GET_TEXT_F(MSG_RUNOUT_2), FIL_RUNOUT2) |
|
|
|
#endif |
|
|
|
|
|
@ -459,7 +459,7 @@ void _O2 Endstops::report_states() { |
|
|
|
#endif |
|
|
|
#if HAS_FILAMENT_SENSOR |
|
|
|
#if NUM_RUNOUT_SENSORS == 1 |
|
|
|
print_es_state(READ(FIL_RUNOUT_PIN) != FIL_RUNOUT_INVERTING, PSTR(STR_FILAMENT_RUNOUT_SENSOR)); |
|
|
|
print_es_state(READ(FIL_RUNOUT_PIN) != FIL_RUNOUT_STATE, PSTR(STR_FILAMENT_RUNOUT_SENSOR)); |
|
|
|
#else |
|
|
|
#define _CASE_RUNOUT(N) case N: pin = FIL_RUNOUT##N##_PIN; break; |
|
|
|
LOOP_S_LE_N(i, 1, NUM_RUNOUT_SENSORS) { |
|
|
@ -470,7 +470,7 @@ void _O2 Endstops::report_states() { |
|
|
|
} |
|
|
|
SERIAL_ECHOPGM(STR_FILAMENT_RUNOUT_SENSOR); |
|
|
|
if (i > 1) SERIAL_CHAR(' ', '0' + i); |
|
|
|
print_es_state(extDigitalRead(pin) != FIL_RUNOUT_INVERTING); |
|
|
|
print_es_state(extDigitalRead(pin) != FIL_RUNOUT_STATE); |
|
|
|
} |
|
|
|
#undef _CASE_RUNOUT |
|
|
|
#endif |
|
|
|