Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

🩹 Fix MKS Gen-L V1 pins, allow more RAMPS overrides #26974

Merged
10 changes: 5 additions & 5 deletions Marlin/src/pins/lpc1768/pins_RAMPS_RE_ARM.h
Original file line number Diff line number Diff line change
Expand Up @@ -187,14 +187,14 @@

#define HEATER_0_PIN MOSFET_A_PIN

#if FET_ORDER_EFB // Hotend, Fan, Bed
#if ENABLED(FET_ORDER_EFB) // Hotend, Fan, Bed
#define HEATER_BED_PIN MOSFET_C_PIN
#elif FET_ORDER_EEF // Hotend, Hotend, Fan
#elif ENABLED(FET_ORDER_EEF) // Hotend, Hotend, Fan
#define HEATER_1_PIN MOSFET_B_PIN
#elif FET_ORDER_EEB // Hotend, Hotend, Bed
#elif ENABLED(FET_ORDER_EEB) // Hotend, Hotend, Bed
#define HEATER_1_PIN MOSFET_B_PIN
#define HEATER_BED_PIN MOSFET_C_PIN
#elif FET_ORDER_EFF // Hotend, Fan, Fan
#elif ENABLED(FET_ORDER_EFF) // Hotend, Fan, Fan
#define FAN1_PIN MOSFET_C_PIN
#elif DISABLED(FET_ORDER_SF) // Not Spindle, Fan (i.e., "EFBF" or "EFBE")
#define HEATER_BED_PIN MOSFET_C_PIN
Expand All @@ -210,7 +210,7 @@
#define FAN0_PIN MOSFET_B_PIN
#elif ANY(FET_ORDER_EEF, FET_ORDER_SF) // Hotend, Hotend, Fan or Spindle, Fan
#define FAN0_PIN MOSFET_C_PIN
#elif FET_ORDER_EEB // Hotend, Hotend, Bed
#elif ENABLED(FET_ORDER_EEB) // Hotend, Hotend, Bed
#define FAN0_PIN P1_18 // (4) IO pin. Buffer needed
#else // Non-specific are "EFB" (i.e., "EFBF" or "EFBE")
#define FAN0_PIN MOSFET_B_PIN
Expand Down
22 changes: 11 additions & 11 deletions Marlin/src/pins/pins.h
Original file line number Diff line number Diff line change
Expand Up @@ -39,25 +39,25 @@

#if NONE(FET_ORDER_EEF, FET_ORDER_EEB, FET_ORDER_EFF, FET_ORDER_EFB, FET_ORDER_SF)
#if MB(RAMPS_13_EFB, RAMPS_14_EFB, RAMPS_PLUS_EFB, RAMPS_14_RE_ARM_EFB, RAMPS_SMART_EFB, RAMPS_DUO_EFB, RAMPS4DUE_EFB, RAMPS_BTT_16_PLUS_EFB)
#define FET_ORDER_EFB 1
#define FET_ORDER_EFB
#elif MB(RAMPS_13_EEB, RAMPS_14_EEB, RAMPS_PLUS_EEB, RAMPS_14_RE_ARM_EEB, RAMPS_SMART_EEB, RAMPS_DUO_EEB, RAMPS4DUE_EEB, RAMPS_BTT_16_PLUS_EEB)
#define FET_ORDER_EEB 1
#define FET_ORDER_EEB
#elif MB(RAMPS_13_EFF, RAMPS_14_EFF, RAMPS_PLUS_EFF, RAMPS_14_RE_ARM_EFF, RAMPS_SMART_EFF, RAMPS_DUO_EFF, RAMPS4DUE_EFF, RAMPS_BTT_16_PLUS_EFF)
#define FET_ORDER_EFF 1
#define FET_ORDER_EFF
#elif MB(RAMPS_13_EEF, RAMPS_14_EEF, RAMPS_PLUS_EEF, RAMPS_14_RE_ARM_EEF, RAMPS_SMART_EEF, RAMPS_DUO_EEF, RAMPS4DUE_EEF, RAMPS_BTT_16_PLUS_EEF)
#define FET_ORDER_EEF 1
#define FET_ORDER_EEF
#elif MB(RAMPS_13_SF, RAMPS_14_SF, RAMPS_PLUS_SF, RAMPS_14_RE_ARM_SF, RAMPS_SMART_SF, RAMPS_DUO_SF, RAMPS4DUE_SF, RAMPS_BTT_16_PLUS_SF)
#define FET_ORDER_SF 1
#elif HAS_MULTI_HOTEND || (HAS_EXTRUDERS && HAS_CUTTER)
#define FET_ORDER_SF
#elif ANY(HAS_MULTI_HOTEND, HEATERS_PARALLEL) || ALL(HAS_EXTRUDERS, HAS_CUTTER)
#if TEMP_SENSOR_BED
#define FET_ORDER_EEB 1
#define FET_ORDER_EEB
#else
#define FET_ORDER_EEF 1
#define FET_ORDER_EEF
#endif
#elif TEMP_SENSOR_BED
#define FET_ORDER_EFB 1
#define FET_ORDER_EFB
#else
#define FET_ORDER_EFF 1
#define FET_ORDER_EFF
#endif
#endif

Expand Down Expand Up @@ -175,7 +175,7 @@
#elif MB(MKS_GEN_13)
#include "ramps/pins_MKS_GEN_13.h" // ATmega2560, ATmega1280 env:mega2560 env:mega1280
#elif MB(MKS_GEN_L)
#include "ramps/pins_MKS_GEN_L.h" // ATmega2560, ATmega1280 env:mega2560 env:mega1280
#include "ramps/pins_MKS_GEN_L.h" // ATmega2560 env:mega2560
#elif MB(KFB_2)
#include "ramps/pins_BIQU_KFB_2.h" // ATmega2560 env:mega2560
#elif MB(ZRIB_V20)
Expand Down
33 changes: 27 additions & 6 deletions Marlin/src/pins/ramps/pins_MKS_GEN_L.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,9 @@
/**
* MKS GEN L – Arduino Mega2560 with RAMPS v1.4 pin assignments
* Schematic: https://github.com/makerbase-mks/MKS-GEN_L/blob/master/hardware/MKS%20Gen_L%20V1.0_008/MKS%20Gen_L%20V1.0_008%20SCH.pdf
thisiskeithb marked this conversation as resolved.
Show resolved Hide resolved
* ATmega2560, ATmega1280
* Pin Diagram: https://github.com/makerbase-mks/MKS-GEN_L/blob/master/hardware/MKS%20Gen_L%20V1.0_008/MKS%20Gen_L%20V1.0_008%20PIN.pdf
* Note: Schematic contains pin & connector errors, correct pin mappings are found on the pin diagram
* ATmega2560
*/

#if HOTENDS > 2 || E_STEPPERS > 2
Expand All @@ -37,10 +39,30 @@
// Heaters / Fans
//

#define MOSFET_A_PIN 10 // HE0
#define MOSFET_B_PIN 7 // HE1 or FAN Hotend Cooling
#define MOSFET_C_PIN 8 // HBED
#define FAN0_PIN 9 // FAN Part Cooling
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Either the MOSFET pin scheme needs to be retained, or this file needs to do the handling of the flags *_EFB, *_EEB, etc., for cases where the Extruder, Fan, Bed arrangement may change. These flags may already be set for the HAS_MULTI_HOTEND and/or HEATERS_PARALLEL and should be preferred over referring to these settings flags directly.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reminder that the rule for Extruder, Fan, Bed pins is not to always define them according to their silkscreen label, but according to the configuration requirements. The board may say something like "H1, Fan, Bed" which would correspond to the common default FET_ORDER_EFB. But when two extruders are defined, the FET_ORDER_EEB flag gets set, so the pins should then be defined as "H1, H2, Bed" with no fan.

If the FET_ORDER_* flags aren't coming out right for this board according to those flags, either these FETs are just not defined in the correct sequence, or the general FET assignment in pins_RAMPS.h is wonky.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmm, I wonder if it work just using the order 10, 9, 8, 7… But we have to look at the machines these ship in also and see if they are using non-standard ordering on shipping units.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Either the MOSFET pin scheme needs to be retained, or this file needs to do the handling of the flags *_EFB, *_EEB, etc.,

I really don't follow all that FET_ORDER stuff since we don't do that on non-AVR boards, but I have physically traced the pins on the MCU and verified that they now match real hardware.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmm, I wonder if it work just using the order 10, 9, 8, 7… But we have to look at the machines these ship in also and see if they are using non-standard ordering on shipping units.

We host several Artillery configs and the older/non-32-bit printers use a standard Gen-L: https://github.com/MarlinFirmware/Configurations/tree/import-2.1.x/config/examples/Artillery

#ifndef MOSFET_A_PIN
#define MOSFET_A_PIN 10 // HE0
#endif
#ifndef MOSFET_B_PIN
#define MOSFET_B_PIN 7 // HE1 or FAN Hotend Cooling
#endif
#ifndef MOSFET_C_PIN
#define MOSFET_C_PIN 8 // H-BED
#endif
#ifndef MOSFET_D_PIN
#define MOSFET_D_PIN 9 // FAN Part Cooling
#endif

// Always assign these to their labeled counterparts
#define HEATER_0_PIN MOSFET_A_PIN
#if ANY(FET_ORDER_EEF, FET_ORDER_EEB)
#define HEATER_1_PIN MOSFET_B_PIN
#endif
#define HEATER_BED_PIN MOSFET_C_PIN

#define FAN0_PIN MOSFET_D_PIN
#if ENABLED(FET_ORDER_EFF)
#define FAN1_PIN MOSFET_B_PIN
#endif
thinkyhead marked this conversation as resolved.
Show resolved Hide resolved

//
// CS Pins wired to avoid conflict with the LCD
Expand All @@ -50,7 +72,6 @@
#ifndef X_CS_PIN
#define X_CS_PIN 59
#endif

#ifndef Y_CS_PIN
#define Y_CS_PIN 63
#endif
Expand Down
30 changes: 20 additions & 10 deletions Marlin/src/pins/ramps/pins_RAMPS.h
Original file line number Diff line number Diff line change
Expand Up @@ -231,20 +231,26 @@
#define MOSFET_D_PIN -1
#endif

#define HEATER_0_PIN MOSFET_A_PIN
#ifndef HEATER_0_PIN
#define HEATER_0_PIN MOSFET_A_PIN
#endif

#if FET_ORDER_EFB // Hotend, Fan, Bed
#if ENABLED(FET_ORDER_EFB) // Hotend, Fan, Bed
#ifndef HEATER_BED_PIN
#define HEATER_BED_PIN MOSFET_C_PIN
#endif
#elif FET_ORDER_EEF // Hotend, Hotend, Fan
#define HEATER_1_PIN MOSFET_B_PIN
#elif FET_ORDER_EEB // Hotend, Hotend, Bed
#define HEATER_1_PIN MOSFET_B_PIN
#elif ENABLED(FET_ORDER_EEF) // Hotend, Hotend, Fan
#ifndef HEATER_1_PIN
#define HEATER_1_PIN MOSFET_B_PIN
#endif
#elif ENABLED(FET_ORDER_EEB) // Hotend, Hotend, Bed
#ifndef HEATER_1_PIN
#define HEATER_1_PIN MOSFET_B_PIN
#endif
#ifndef HEATER_BED_PIN
#define HEATER_BED_PIN MOSFET_C_PIN
#endif
#elif FET_ORDER_EFF // Hotend, Fan, Fan
#elif ENABLED(FET_ORDER_EFF) // Hotend, Fan, Fan
#ifndef FAN1_PIN
#define FAN1_PIN MOSFET_C_PIN
#endif
Expand All @@ -253,9 +259,13 @@
#define HEATER_BED_PIN MOSFET_C_PIN
#endif
#if ANY(HAS_MULTI_HOTEND, HEATERS_PARALLEL)
#define HEATER_1_PIN MOSFET_D_PIN
#ifndef HEATER_1_PIN
#define HEATER_1_PIN MOSFET_D_PIN
#endif
#else
#define FAN1_PIN MOSFET_D_PIN
#ifndef FAN1_PIN
#define FAN1_PIN MOSFET_D_PIN
#endif
#endif
#endif

Expand All @@ -264,7 +274,7 @@
#define FAN0_PIN MOSFET_B_PIN
#elif ANY(FET_ORDER_EEF, FET_ORDER_SF) // Hotend, Hotend, Fan or Spindle, Fan
#define FAN0_PIN MOSFET_C_PIN
#elif FET_ORDER_EEB // Hotend, Hotend, Bed
#elif ENABLED(FET_ORDER_EEB) // Hotend, Hotend, Bed
#define FAN0_PIN 4 // IO pin. Buffer needed
#else // Non-specific are "EFB" (i.e., "EFBF" or "EFBE")
#define FAN0_PIN MOSFET_B_PIN
Expand Down
2 changes: 1 addition & 1 deletion Marlin/src/pins/ramps/pins_XTLW_MFF_V1.h
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@
// Heaters / Fans
//

#define FET_ORDER_EFB 1
#define FET_ORDER_EFB
//#define HEATER_0_PIN 10
#define MOSFET_D_PIN 7
//#define HEATER_BED_PIN 8
Expand Down
Loading