MPCNC Min Temp Errors (InstaKill) ?Firmware issue?

New MPCNC Build as a large scale 3D Printer. When attempting to Preheat or start a print I immediately receive “ERR. Min Temp. E1 Printer Halted Please Reset” Error. I am also showing -26/0 Degrees on the LCD Screen. I have read through countless forums trying to resolve this on my own and have left myself hairless. I went through and tried to follow all directions to the best of my limited coding knowledge. I think the Firmware is simply not associating my T0 pin to read the Thermistor and is most certainly something I am missing in the Firmware. Just for redundancy’s sake (and piece of mind ) I have tested the boards, the Thermister, and the heating element. All test good. I have also replaced everything with known good components, and reflashed to confirm, receiving the same resulting error. Again, I can only assume it is something in the Marlin Sketch/Firmware/programming that I am missing, such as a pin miss-assignment, something I am not commenting correctly, or something in the “operator error” department. Can anyone provide some insight?

Below is my configuration and I can provide any/all specifically needed “sketch” info. Just let me know what is needed.

Marlin-MPCNC_Ramps_T8_16T_LCD_32step

Is ^ Extruder enabled? That could be the problem?

Arduino Mega 2560, Ramps_1.4_EFB, DRV8825 Stepper Drivers, Nema 17 Stepper Motors (Series wired) Dual Endstops, REPRAP_DISCOUNT_SMART_CONTROLLER, J Head V6 Hotend, 12V/40W heater, NTC 100K 3950 Thermistor, WadesStruder w/ Nema17.

If your using Ryan’s firmware, be aware that is configured with a fake thermistor (so we don’t get min temp errors on the CNCs). If you have an actual thermistor hooked up, you would need to update that configuration.

yes I set that to:

*/
#define TEMP_SENSOR_0 11 // 11-MK8 5-Aero
#define TEMP_SENSOR_1 0
#define TEMP_SENSOR_2 0
#define TEMP_SENSOR_3 0
#define TEMP_SENSOR_4 0
#define TEMP_SENSOR_5 0
#define TEMP_SENSOR_BED 0
#define TEMP_SENSOR_CHAMBER 0

You can read the temperatures with M105.

-26 is what it shows when nothing is connected. You can look at the pins_Ramps.h file and see what it is mapped to.

Well unless I am looking in the wrong place ( Marlin-MP3DP_Ramps_16T_MK\Marlin-MP3DP_Ramps_16T_MK\Marlin\src\pins\ramps ) it shows that it is mapped to analog input pin 13 (A13) which according to ramps schematics should be the T0 pin for thermistor 0

//
// Temperature Sensors
//
#ifndef TEMP_0_PIN
#define TEMP_0_PIN 13 // Analog Input
#endif
#ifndef TEMP_1_PIN
#define TEMP_1_PIN 15 // Analog Input
#endif
#ifndef TEMP_BED_PIN
#define TEMP_BED_PIN 14 // Analog Input
#endif

What if you try this version of firmware?

That is technically for the MP3DP, not the MPCNC, but if the temperature works, it might be an easier starting place than the MPCNC firmware without an extruder.

I tried with the MP3DP firmware and still not reading T0. I even went as far as making a couple of pin/plug setups with a 0-200k Ohm variable resistor and another with just a standard + - 10% 100Kohm resistor and plugged them in and retried and still just doesn’t read T0. Not sure what to do here? I have even disassembled and pin tested everything for continuity and resistance values and all are within spec. I am lost. I will be purchasing a Rambo board next week to alleviate this on this particular build but I have several variations of the MPCNC built that I would like to use the Mega 2560 and ramps 1.4 boards on as I have a stockpile of them. I will attach my particular Firmware sketchs in following replies. Maybe someone can clue me into what I am doing wrong.

#pragma once

/**

  • Configuration.h
    */
    #define CONFIGURATION_H_VERSION 020000

// Show the Marlin bootscreen on startup. ** ENABLE FOR PRODUCTION **
#define SHOW_BOOTSCREEN

// Show the bitmap in Marlin/_Bootscreen.h on startup.
//#define SHOW_CUSTOM_BOOTSCREEN

// Show the bitmap in Marlin/_Statusscreen.h on the status screen.
//#define CUSTOM_STATUS_SCREEN_IMAGE

// @section machine

#define BAUDRATE 115200

#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_RAMPS_14_EFB
#endif

// @section extruder

#define EXTRUDERS 1
#define DEFAULT_NOMINAL_FILAMENT_DIA 1.75

// @section temperature

//===========================================================================
//============================= Thermal Settings ============================
//===========================================================================

*/
#define TEMP_SENSOR_0 11 // 11-MK8 5-Aero
#define TEMP_SENSOR_1 0
#define TEMP_SENSOR_2 0
#define TEMP_SENSOR_3 0
#define TEMP_SENSOR_4 0
#define TEMP_SENSOR_5 0
#define TEMP_SENSOR_BED 0
#define TEMP_SENSOR_CHAMBER 0

// Dummy thermistor constant temperature readings, for use with 998 and 999
#define DUMMY_THERMISTOR_998_VALUE 25
#define DUMMY_THERMISTOR_999_VALUE 170

// Use temp sensor 1 as a redundant sensor with sensor 0. If the readings
// from the two sensors differ too much the print will be aborted.
//#define TEMP_SENSOR_1_AS_REDUNDANT
#define MAX_REDUNDANT_TEMP_SENSOR_DIFF 10

#define TEMP_RESIDENCY_TIME 10 // (seconds) Time to wait for hotend to “settle” in M109
#define TEMP_WINDOW 1 // (°C) Temperature proximity for the “temperature reached” timer
#define TEMP_HYSTERESIS 3 // (°C) Temperature proximity considered “close enough” to the target

#define TEMP_BED_RESIDENCY_TIME 10 // (seconds) Time to wait for bed to “settle” in M190
#define TEMP_BED_WINDOW 1 // (°C) Temperature proximity for the “temperature reached” timer
#define TEMP_BED_HYSTERESIS 3 // (°C) Temperature proximity considered “close enough” to the target

// Below this temperature the heater will be switched off
// because it probably indicates a broken thermistor wire.
#define HEATER_0_MINTEMP 5
#define HEATER_1_MINTEMP 5
#define HEATER_2_MINTEMP 5
#define HEATER_3_MINTEMP 5
#define HEATER_4_MINTEMP 5
#define HEATER_5_MINTEMP 5
#define BED_MINTEMP 5

// Above this temperature the heater will be switched off.
// This can protect components from overheating, but NOT from shorts and failures.
// (Use MINTEMP for thermistor short/failure protection.)
#define HEATER_0_MAXTEMP 275
#define HEATER_1_MAXTEMP 275
#define HEATER_2_MAXTEMP 275
#define HEATER_3_MAXTEMP 275
#define HEATER_4_MAXTEMP 275
#define HEATER_5_MAXTEMP 275
#define BED_MAXTEMP 150

//===========================================================================
//============================= PID Settings ================================
//===========================================================================

// Comment the following line to disable PID and enable bang-bang.
#define PIDTEMP
#define BANG_MAX 255 // Limits current to nozzle while in bang-bang mode; 255=full current
#define PID_MAX BANG_MAX // Limits current to nozzle while PID is active (see PID_FUNCTIONAL_RANGE below); 255=full current
#define PID_K1 0.95 // Smoothing factor within any PID loop
#if ENABLED(PIDTEMP)
//#define PID_EDIT_MENU // Add PID editing to the “Advanced Settings” menu. (~700 bytes of PROGMEM)
//#define PID_AUTOTUNE_MENU // Add PID auto-tuning to the “Advanced Settings” menu. (~250 bytes of PROGMEM)
//#define PID_DEBUG // Sends debug data to the serial port.
//#define PID_OPENLOOP 1 // Puts PID in open loop. M104/M140 sets the output power from 0 to PID_MAX
//#define SLOW_PWM_HEATERS // PWM with very low frequency (roughly 0.125Hz=8s) and minimum state time of approximately 1s useful for heaters driven by a relay
//#define PID_PARAMS_PER_HOTEND // Uses separate PID parameters for each extruder (useful for mismatched extruders)
// Set/get with gcode: M301 E[extruder number, 0-2]
#define PID_FUNCTIONAL_RANGE 10 // If the temperature difference between the target temperature and the actual temperature
// is more than PID_FUNCTIONAL_RANGE then the PID will be shut off and the heater will be set to min/max.

// If you are using a pre-configured hotend then you can use one of the value sets by uncommenting it

// MPCNC MK8
#define DEFAULT_Kp 17.98
#define DEFAULT_Ki .98
#define DEFAULT_Kd 83.62

// MakerGear
//#define DEFAULT_Kp 7.0
//#define DEFAULT_Ki 0.1
//#define DEFAULT_Kd 12

// Mendel Parts V9 on 12V
//#define DEFAULT_Kp 63.0
//#define DEFAULT_Ki 2.25
//#define DEFAULT_Kd 440

#endif // PIDTEMP

//===========================================================================
//====================== PID > Bed Temperature Control ======================
//===========================================================================

/**

  • PID Bed Heating

*/
//#define PIDTEMPBED

//#define BED_LIMIT_SWITCHING

*/
#define MAX_BED_POWER 255 // limits duty cycle to bed; 255=full current

#if ENABLED(PIDTEMPBED)
//#define MIN_BED_POWER 0
//#define PID_BED_DEBUG // Sends debug data to the serial port.

//120V 250W silicone heater into 4mm borosilicate (MendelMax 1.5+)
//from FOPDT model - kp=.39 Tp=405 Tdead=66, Tc set to 79.2, aggressive factor of .15 (vs .1, 1, 10)
#define DEFAULT_bedKp 10.00
#define DEFAULT_bedKi .023
#define DEFAULT_bedKd 305.4

//120V 250W silicone heater into 4mm borosilicate (MendelMax 1.5+)
//from pidautotune
//#define DEFAULT_bedKp 97.1
//#define DEFAULT_bedKi 1.41
//#define DEFAULT_bedKd 1675.16

// FIND YOUR OWN: “M303 E-1 C8 S90” to run autotune on the bed at 90 degreesC for 8 cycles.
#endif // PIDTEMPBED

// @section extruder

*/
#define PREVENT_COLD_EXTRUSION
#define EXTRUDE_MINTEMP 170

*/
#define PREVENT_LENGTHY_EXTRUDE
#define EXTRUDE_MAXLENGTH 200

//===========================================================================
//======================== Thermal Runaway Protection =======================
//===========================================================================

*/

#define THERMAL_PROTECTION_HOTENDS // Enable thermal protection for all extruders
//#define THERMAL_PROTECTION_BED // Enable thermal protection for the heated bed
//#define THERMAL_PROTECTION_CHAMBER // Enable thermal protection for the heated chamber

//===========================================================================
//============================== Endstop Settings ===========================
//===========================================================================

// @section homing

#define USE_XMIN_PLUG
#define USE_YMIN_PLUG
#define USE_ZMIN_PLUG
//#define USE_XMAX_PLUG
//#define USE_YMAX_PLUG
//#define USE_ZMAX_PLUG

// Enable pullup for all endstops to prevent a floating state
#define ENDSTOPPULLUPS
#if DISABLED(ENDSTOPPULLUPS)
// Disable ENDSTOPPULLUPS to set pullups individually
//#define ENDSTOPPULLUP_XMAX
//#define ENDSTOPPULLUP_YMAX
//#define ENDSTOPPULLUP_ZMAX
//#define ENDSTOPPULLUP_XMIN
//#define ENDSTOPPULLUP_YMIN
//#define ENDSTOPPULLUP_ZMIN
//#define ENDSTOPPULLUP_ZMIN_PROBE
#endif

// Enable pulldown for all endstops to prevent a floating state
//#define ENDSTOPPULLDOWNS
#if DISABLED(ENDSTOPPULLDOWNS)
// Disable ENDSTOPPULLDOWNS to set pulldowns individually
//#define ENDSTOPPULLDOWN_XMAX
//#define ENDSTOPPULLDOWN_YMAX
//#define ENDSTOPPULLDOWN_ZMAX
//#define ENDSTOPPULLDOWN_XMIN
//#define ENDSTOPPULLDOWN_YMIN
//#define ENDSTOPPULLDOWN_ZMIN
//#define ENDSTOPPULLDOWN_ZMIN_PROBE
#endif

// Mechanical endstop with COM to ground and NC to Signal uses “false” here (most common setup).
#define X_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
#define Y_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
#define Z_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
#define X_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
#define Y_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
#define Z_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
#define Z_MIN_PROBE_ENDSTOP_INVERTING true // Set to true to invert the logic of the probe.

/**

  • Stepper Drivers

#define X_DRIVER_TYPE DRV8825
#define Y_DRIVER_TYPE DRV8825
#define Z_DRIVER_TYPE DRV8825
//#define X2_DRIVER_TYPE DRV8825
//#define Y2_DRIVER_TYPE DRV8825
//#define Z2_DRIVER_TYPE DRV8825
//#define Z3_DRIVER_TYPE DRV8825
#define E0_DRIVER_TYPE DRV8825
#define E1_DRIVER_TYPE DRV8825
//#define E2_DRIVER_TYPE DRV8825
//#define E3_DRIVER_TYPE DRV8825
//#define E4_DRIVER_TYPE DRV8825
//#define E5_DRIVER_TYPE DRV8825

//=============================================================================
//============================== Movement Settings ============================
//=============================================================================
// @section motion

//#define DISTINCT_E_FACTORS

/**

  • Default Axis Steps Per Unit (steps/mm)
  • Override with M92
  •                                  X, Y, Z, E0 [, E1[, E2[, E3[, E4[, E5]]]]]
    

*/
#define DEFAULT_AXIS_STEPS_PER_UNIT { 80, 80, 256, 756 } //Aero-1674 MK8-200

/**

  • Default Max Feed Rate (mm/s)
  • Override with M203
  •                                  X, Y, Z, E0 [, E1[, E2[, E3[, E4[, E5]]]]]
    

*/
#define DEFAULT_MAX_FEEDRATE { 150, 150, 15, 24 }

//#define LIMITED_MAX_FR_EDITING // Limit edit via M203 or LCD to DEFAULT_MAX_FEEDRATE * 2
#if ENABLED(LIMITED_MAX_FR_EDITING)
#define MAX_FEEDRATE_EDIT_VALUES { 600, 600, 10, 50 } // …or, set your own edit limits
#endif

/**

  • Default Max Acceleration (change/s) change = mm/s
  • (Maximum start speed for accelerated moves)
  • Override with M201
  •                                  X, Y, Z, E0 [, E1[, E2[, E3[, E4[, E5]]]]]
    

*/
#define DEFAULT_MAX_ACCELERATION { 2000, 2000, 100, 3000 }

//#define LIMITED_MAX_ACCEL_EDITING // Limit edit via M201 or LCD to DEFAULT_MAX_ACCELERATION * 2
#if ENABLED(LIMITED_MAX_ACCEL_EDITING)
#define MAX_ACCEL_EDIT_VALUES { 6000, 6000, 200, 20000 } // …or, set your own edit limits
#endif

/**

  • Default Acceleration (change/s) change = mm/s
  • Override with M204
  • M204 P Acceleration
  • M204 R Retract Acceleration
  • M204 T Travel Acceleration
    */
    #define DEFAULT_ACCELERATION 2000 // X, Y, Z and E acceleration for printing moves
    #define DEFAULT_RETRACT_ACCELERATION 3000 // E acceleration for retracts
    #define DEFAULT_TRAVEL_ACCELERATION 2000 // X, Y, Z acceleration for travel (non printing) moves

/**

  • Default Jerk limits (mm/s)
  • Override with M205 X Y Z E

//#define CLASSIC_JERK
#if ENABLED(CLASSIC_JERK)
#define DEFAULT_XJERK 5.0
#define DEFAULT_YJERK 5.0
#define DEFAULT_ZJERK 0.15

//#define LIMITED_JERK_EDITING // Limit edit via M205 or LCD to DEFAULT_aJERK * 2
#if ENABLED(LIMITED_JERK_EDITING)
#define MAX_JERK_EDIT_VALUES { 20, 20, 0.6, 10 } // …or, set your own edit limits
#endif
#endif

#define DEFAULT_EJERK 3.0 // May be used by Linear Advance

/**

  • Junction Deviation Factor

#if DISABLED(CLASSIC_JERK)
#define JUNCTION_DEVIATION_MM 0.013 // (mm) Distance from real junction edge
#endif

*/
#define S_CURVE_ACCELERATION

// @section homing

//#define NO_MOTION_BEFORE_HOMING // Inhibit movement until all axes have been homed

//#define UNKNOWN_Z_NO_RAISE // Don’t raise Z (lower the bed) if Z is “unknown.” For beds that fall when Z is powered off.

//#define Z_HOMING_HEIGHT 4 // (mm) Minimal Z height before homing (G28) for Z clearance above the bed, clamps, …
// Be sure you have this distance over your Z_MAX_POS in case.

// Direction of endstops when homing; 1=MAX, -1=MIN
// :[-1,1]
#define X_HOME_DIR -1
#define Y_HOME_DIR -1
#define Z_HOME_DIR -1

// @section machine

// The size of the print bed
#define X_BED_SIZE 950
#define Y_BED_SIZE 580

// Travel limits (mm) after homing, corresponding to endstop positions.
#define X_MIN_POS 0
#define Y_MIN_POS 0
#define Z_MIN_POS 0
#define X_MAX_POS X_BED_SIZE
#define Y_MAX_POS Y_BED_SIZE
#define Z_MAX_POS 500

/**

  • Software Endstops

// Min software endstops constrain movement within minimum coordinate bounds
#define MIN_SOFTWARE_ENDSTOPS
#if ENABLED(MIN_SOFTWARE_ENDSTOPS)
#define MIN_SOFTWARE_ENDSTOP_X
#define MIN_SOFTWARE_ENDSTOP_Y
#define MIN_SOFTWARE_ENDSTOP_Z
#endif

// Max software endstops constrain movement within maximum coordinate bounds
#define MAX_SOFTWARE_ENDSTOPS
#if ENABLED(MAX_SOFTWARE_ENDSTOPS)
#define MAX_SOFTWARE_ENDSTOP_X
#define MAX_SOFTWARE_ENDSTOP_Y
#define MAX_SOFTWARE_ENDSTOP_Z
#endif

#if EITHER(MIN_SOFTWARE_ENDSTOPS, MAX_SOFTWARE_ENDSTOPS)
#define SOFT_ENDSTOPS_MENU_ITEM // Enable/Disable software endstops from the LCD
#endif

*/
//#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_PULLUP // Use internal pullup for filament runout pins.
//#define FIL_RUNOUT_PULLDOWN // Use internal pulldown for filament runout pins.

// Set one or more commands to execute on filament runout.
// (After ‘M412 H’ Marlin will ask the host to handle the process.)
#define FILAMENT_RUNOUT_SCRIPT “M600”

// After a runout is detected, continue printing this length of filament
// before executing the runout script. Useful for a sensor at the end of
// a feed tube. Requires 4 bytes SRAM per sensor, plus 4 bytes overhead.
//#define FILAMENT_RUNOUT_DISTANCE_MM 25

#ifdef FILAMENT_RUNOUT_DISTANCE_MM
// Enable this option to use an encoder disc that toggles the runout pin
// as the filament moves. (Be sure to set FILAMENT_RUNOUT_DISTANCE_MM
// large enough to avoid false positives.)
//#define FILAMENT_MOTION_SENSOR
#endif
#endif

//=============================================================================
//============================= Additional Features ===========================
//=============================================================================

// @section extras

/**

  • EEPROM
  • Persistent storage to preserve configurable settings across reboots.
  • M500 - Store settings to EEPROM.
  • M501 - Read settings from EEPROM. (i.e., Throw away unsaved changes)
  • M502 - Revert settings to “factory” defaults. (Follow with M500 to init the EEPROM.)
    */
    #define EEPROM_SETTINGS // Persistent storage with M500 and M501
    //#define DISABLE_M503 // Saves ~2700 bytes of PROGMEM. Disable for release!
    #define EEPROM_CHITCHAT // Give feedback on EEPROM commands. Disable to save PROGMEM.
    #if ENABLED(EEPROM_SETTINGS)
    //#define EEPROM_AUTO_INIT // Init EEPROM automatically on any errors.
    #endif

//
// Host Keepalive
//
// When enabled Marlin will send a busy status message to the host
// every couple of seconds when it can’t accept commands.
//
#define HOST_KEEPALIVE_FEATURE // Disable this if your host doesn’t like keepalive messages
#define DEFAULT_KEEPALIVE_INTERVAL 2 // Number of seconds between “busy” messages. Set with M113.
#define BUSY_WHILE_HEATING // Some hosts require “busy” messages even during heating

//
// M100 Free Memory Watcher
//
//#define M100_FREE_MEMORY_WATCHER // Add M100 (Free Memory Watcher) to debug memory usage

//
// G20/G21 Inch mode support
//
//#define INCH_MODE_SUPPORT

//
// M149 Set temperature units support
//
//#define TEMPERATURE_UNITS_SUPPORT

// @section temperature

// Preheat Constants
#define PREHEAT_1_LABEL “PLA”
#define PREHEAT_1_TEMP_HOTEND 196
#define PREHEAT_1_TEMP_BED 62
#define PREHEAT_1_FAN_SPEED 0 // Value from 0 to 255

#define PREHEAT_2_LABEL “ABS”
#define PREHEAT_2_TEMP_HOTEND 240
#define PREHEAT_2_TEMP_BED 110
#define PREHEAT_2_FAN_SPEED 0 // Value from 0 to 255

/**

  • Print Job Timer
  • Automatically start and stop the print job timer on M104/M109/M190.
  • M104 (hotend, no wait) - high temp = none, low temp = stop timer
  • M109 (hotend, wait) - high temp = start timer, low temp = stop timer
  • M190 (bed, wait) - high temp = start timer, low temp = none
  • The timer can also be controlled with the following commands:
  • M75 - Start the print job timer
  • M76 - Pause the print job timer
  • M77 - Stop the print job timer
    */
    #define PRINTJOB_TIMER_AUTOSTART

/**

  • Print Counter
  • Track statistical data such as:
    • Total print jobs
    • Total successful print jobs
    • Total failed print jobs
    • Total time printing
  • View the current statistics with M78.
    */
    //#define PRINTCOUNTER

//=============================================================================
//============================= LCD and SD support ============================
//=============================================================================

// @section lcd

  • SD CARD
  • SD Card support is disabled by default. If your controller has an SD slot,
  • you must uncomment the following option or it won’t work.

*/
#define SDSUPPORT

/**

  • SD CARD: SPI SPEED

*/
//#define SPI_SPEED SPI_HALF_SPEED
//#define SPI_SPEED SPI_QUARTER_SPEED
//#define SPI_SPEED SPI_EIGHTH_SPEED

/**

  • SD CARD: ENABLE CRC
  • Use CRC checks and retries on the SD communication.
    */
    //#define SD_CHECK_AND_RETRY

/**

  • LCD Menu Items
    */
    //#define NO_LCD_MENUS
    //#define SLIM_LCD_MENUS

//
// ENCODER SETTINGS

//#define ENCODER_PULSES_PER_STEP 4

//
// Use this option to override the number of step signals required to
// move between next/prev menu items.
//
//#define ENCODER_STEPS_PER_MENU_ITEM 1

/**

  • Encoder Direction Options
    //
    #define REVERSE_ENCODER_DIRECTION

//
//#define REVERSE_MENU_DIRECTION

//
//#define REVERSE_SELECT_DIRECTION

//
//#define INDIVIDUAL_AXIS_HOMING_MENU

//=============================================================================
//======================== LCD / Controller Selection =========================
//======================== (Character-based LCDs) =========================
//=============================================================================

//
#define REPRAP_DISCOUNT_SMART_CONTROLLER

//=============================================================================
//=============================== Extra Features ==============================
//=============================================================================

// @section extras
//
#define SOFT_PWM_SCALE 0

// If SOFT_PWM_SCALE is set to a value higher than 0, dithering can
// be used to mitigate the associated resolution loss. If enabled,
// some of the PWM cycles are stretched so on average the desired
// duty cycle is attained.
//#define SOFT_PWM_DITHER

// Temperature status LEDs that display the hotend and bed temperature.
// If all hotends, bed temperature, and target temperature are under 54C
// then the BLUE led is on. Otherwise the RED led is on. (1C hysteresis)
//#define TEMP_STAT_LEDS

/**

  • Configuration_adv.h

*/
#define CONFIGURATION_ADV_H_VERSION 020000

// @section temperature

//===========================================================================
//=============================Thermal Settings ============================
//===========================================================================

#if DISABLED(PIDTEMPBED)
#define BED_CHECK_INTERVAL 5000 // ms between checks in bang-bang control
#if ENABLED(BED_LIMIT_SWITCHING)
#define BED_HYSTERESIS 2 // Only disable heating if T>target+BED_HYSTERESIS and enable heating if T>target-BED_HYSTERESIS
#endif
#endif

/**

  • THERMAL_PROTECTION_HYSTERESIS and/or THERMAL_PROTECTION_PERIOD
    */
    #if ENABLED(THERMAL_PROTECTION_HOTENDS)
    #define THERMAL_PROTECTION_PERIOD 40 // Seconds
    #define THERMAL_PROTECTION_HYSTERESIS 4 // Degrees Celsius

//#define ADAPTIVE_FAN_SLOWING // Slow part cooling fan if temperature drops
#if BOTH(ADAPTIVE_FAN_SLOWING, PIDTEMP)
//#define NO_FAN_SLOWING_IN_PID_TUNING // Don’t slow fan speed during M303
#endif

#define WATCH_TEMP_PERIOD 20 // Seconds
#define WATCH_TEMP_INCREASE 2 // Degrees Celsius
#endif

*/
#if ENABLED(THERMAL_PROTECTION_BED)
#define THERMAL_PROTECTION_BED_PERIOD 20 // Seconds
#define THERMAL_PROTECTION_BED_HYSTERESIS 2 // Degrees Celsius

*/
#define WATCH_BED_TEMP_PERIOD 60 // Seconds
#define WATCH_BED_TEMP_INCREASE 2 // Degrees Celsius
#endif

*/
#if ENABLED(THERMAL_PROTECTION_CHAMBER)
#define THERMAL_PROTECTION_CHAMBER_PERIOD 20 // Seconds
#define THERMAL_PROTECTION_CHAMBER_HYSTERESIS 2 // Degrees Celsius

*/
#define WATCH_CHAMBER_TEMP_PERIOD 60 // Seconds
#define WATCH_CHAMBER_TEMP_INCREASE 2 // Degrees Celsius
#endif

#if ENABLED(PIDTEMP)
// Add an experimental additional term to the heater power, proportional to the extrusion speed.
// A well-chosen Kc value should add just enough power to melt the increased material volume.
//#define PID_EXTRUSION_SCALING
#if ENABLED(PID_EXTRUSION_SCALING)
#define DEFAULT_Kc (100) //heating power=Kc*(e_speed)
#define LPQ_MAX_LEN 50
#endif
#endif

*/
#define AUTOTEMP
#if ENABLED(AUTOTEMP)
#define AUTOTEMP_OLDWEIGHT 0.98
#endif

// Show extra position information with ‘M114 D’
//#define M114_DETAIL

// Show Temperature ADC value
// Enable for M105 to include ADC values read from temperature sensors.
//#define SHOW_TEMP_ADC_VALUES

/**

  • High Temperature Thermistor Support

// The number of consecutive low temperature errors that can occur
// before a min_temp_error is triggered. (Shouldn’t be more than 10.)
#define MAX_CONSECUTIVE_LOW_TEMPERATURE_ERROR_ALLOWED 8

// This shouldn’t need to be more than 30 seconds (30000)
#define MILLISECONDS_PREHEAT_TIME 20000

// @section extruder

//#define EXTRUDER_RUNOUT_PREVENT
#if ENABLED(EXTRUDER_RUNOUT_PREVENT)
#define EXTRUDER_RUNOUT_MINTEMP 190
#define EXTRUDER_RUNOUT_SECONDS 30
#define EXTRUDER_RUNOUT_SPEED 1500 // (mm/m)
#define EXTRUDER_RUNOUT_EXTRUDE 5 // (mm)
#endif

// @section temperature

// Calibration for AD595 / AD8495 sensor to adjust temperature measurements.
// The final temperature is calculated as (measuredTemp * GAIN) + OFFSET.
#define TEMP_SENSOR_AD595_OFFSET 0.0
#define TEMP_SENSOR_AD595_GAIN 1.0
#define TEMP_SENSOR_AD8495_OFFSET 0.0
#define TEMP_SENSOR_AD8495_GAIN 1.0

*/
//#define USE_CONTROLLER_FAN
#if ENABLED(USE_CONTROLLER_FAN)
//#define CONTROLLER_FAN_PIN -1 // Set a custom pin for the controller fan
#define CONTROLLERFAN_SECS 60 // Duration in seconds for the fan to run after all motors are disabled
#define CONTROLLERFAN_SPEED 255 // 255 == full speed
//#define CONTROLLERFAN_SPEED_Z_ONLY 127 // Reduce noise on machines that keep Z enabled
#endif

//#define FAN_KICKSTART_TIME 100

//#define FAN_MIN_PWM 50
//#define FAN_MAX_PWM 128

*/
#if ENABLED(FAST_PWM_FAN)
//#define FAST_PWM_FAN_FREQUENCY 31400
//#define USE_OCR2A_AS_TOP
#endif

// @section extruder

*/
#define E0_AUTO_FAN_PIN -1
#define E1_AUTO_FAN_PIN -1
#define E2_AUTO_FAN_PIN -1
#define E3_AUTO_FAN_PIN -1
#define E4_AUTO_FAN_PIN -1
#define E5_AUTO_FAN_PIN -1
#define CHAMBER_AUTO_FAN_PIN -1

#define EXTRUDER_AUTO_FAN_TEMPERATURE 50
#define EXTRUDER_AUTO_FAN_SPEED 250 // 255 == full speed
#define CHAMBER_AUTO_FAN_TEMPERATURE 30
#define CHAMBER_AUTO_FAN_SPEED 255

#define FANMUX0_PIN -1
#define FANMUX1_PIN -1
#define FANMUX2_PIN -1

// @section homing

//#define ENDSTOPS_ALWAYS_ON_DEFAULT

// @section extras

// @section homing

/
#define X_HOME_BUMP_MM 7
#define Y_HOME_BUMP_MM 7
#define Z_HOME_BUMP_MM 3
#define HOMING_BUMP_DIVISOR { 3, 3, 5 } // Re-Bump Speed Divisor (Divides the Homing Feedrate)
//#define QUICK_HOME // If homing includes X and Y, do a diagonal move initially
//#define HOMING_BACKOFF_MM { 2, 2, 2 } // (mm) Move away from the endstops after homing

// @section motion

#define AXIS_RELATIVE_MODES { false, false, false, false }

//
//#define MULTI_NOZZLE_DUPLICATION

//
#define INVERT_X_STEP_PIN false
#define INVERT_Y_STEP_PIN false
#define INVERT_Z_STEP_PIN false
#define INVERT_E_STEP_PIN false

// Default stepper release if idle. Set to 0 to deactivate.
// Steppers will shut down DEFAULT_STEPPER_DEACTIVE_TIME seconds after the last move when DISABLE_INACTIVE_? is true.
// Time can be set by M18 and M84.
#define DEFAULT_STEPPER_DEACTIVE_TIME 1200
#define DISABLE_INACTIVE_X true
#define DISABLE_INACTIVE_Y true
#define DISABLE_INACTIVE_Z true // Set to false if the nozzle will fall down on your printed part when print has finished.
#define DISABLE_INACTIVE_E true

#define DEFAULT_MINIMUMFEEDRATE 0.0 // minimum feedrate
#define DEFAULT_MINTRAVELFEEDRATE 0.0

//#define HOME_AFTER_DEACTIVATE // Require rehoming after steppers are deactivated

// Minimum time that a segment needs to take if the buffer is emptied
#define DEFAULT_MINSEGMENTTIME 20000 // (ms)

// If defined the movements slow down when the look ahead buffer is only half full
#define SLOWDOWN

// Frequency limit
// See nophead’s blog for more info
// Not working O
//#define XY_FREQUENCY_LIMIT 15

// Minimum planner junction speed. Sets the default minimum speed the planner plans for at the end
// of the buffer and all stops. This should not be much greater than zero and should only be changed
// if unwanted behavior is observed on a user’s machine when running at very slow speeds.
#define MINIMUM_PLANNER_SPEED 0.05 // (mm/s)

*/
#define ADAPTIVE_STEP_SMOOTHING

/**

  • Custom Microstepping
  • Override as-needed for your setup. Up to 3 MS pins are supported.
    */
    //#define MICROSTEP1 LOW,LOW,LOW
    //#define MICROSTEP2 HIGH,LOW,LOW
    //#define MICROSTEP4 LOW,HIGH,LOW
    //#define MICROSTEP8 HIGH,HIGH,LOW
    //#define MICROSTEP16 LOW,LOW,HIGH
    //#define MICROSTEP32 HIGH,LOW,HIGH

// Microstep setting (Only functional when stepper driver microstep pins are connected to MCU.
#define MICROSTEP_MODES { 16, 16, 16, 16, 16, 16 } // [1,2,4,8,16]

//===========================================================================
//=============================Additional Features===========================
//===========================================================================

// @section lcd

// Change values more rapidly when the encoder is rotated faster
#define ENCODER_RATE_MULTIPLIER
#if ENABLED(ENCODER_RATE_MULTIPLIER)
#define ENCODER_10X_STEPS_PER_SEC 30 // (steps/s) Encoder rate for 10x speed
#define ENCODER_100X_STEPS_PER_SEC 80 // (steps/s) Encoder rate for 100x speed
#endif

// The timeout (in ms) to return to the status screen from sub-menus
#define LCD_TIMEOUT_TO_STATUS 45000

// Add an ‘M73’ G-code to set the current percentage
//#define LCD_SET_PROGRESS_MANUALLY

#if HAS_PRINT_PROGRESS
//#define PRINT_PROGRESS_SHOW_DECIMALS // Show progress with decimal digits (Graphical LCD only)
//#define SHOW_REMAINING_TIME // Display estimated time to completion (Graphical LCD only)
#endif

#if HAS_CHARACTER_LCD && HAS_PRINT_PROGRESS
//#define LCD_PROGRESS_BAR // Show a progress bar on HD44780 LCDs for SD printing
#if ENABLED(LCD_PROGRESS_BAR)
#define PROGRESS_BAR_BAR_TIME 2000 // (ms) Amount of time to show the bar
#define PROGRESS_BAR_MSG_TIME 3000 // (ms) Amount of time to show the status message
#define PROGRESS_MSG_EXPIRE 0 // (ms) Amount of time to retain the status message (0=forever)
//#define PROGRESS_MSG_ONCE // Show the message for MSG_TIME then clear it
//#define LCD_PROGRESS_BAR_TEST // Add a menu item to test the progress bar
#endif
#endif

#if ENABLED(SDSUPPORT)

#define SD_DETECT_INVERTED

#define SD_FINISHED_STEPPERRELEASE true // Disable steppers when SD Print is finished
#define SD_FINISHED_RELEASECOMMAND “M84 X Y Z E” // You might want to keep the Z enabled so your bed stays in place.

// Reverse SD sort to show “more recent” files first, according to the card’s FAT.
// Since the FAT gets out of order with usage, SDCARD_SORT_ALPHA is recommended.
#define SDCARD_RATHERRECENTFIRST

#define SD_MENU_CONFIRM_START // Confirm the selected SD file before printing

//#define MENU_ADDAUTOSTART // Add a menu option to run auto#.g files

#define EVENT_GCODE_SD_STOP “G28XY” // G-code to run on Stop Print (e.g., “G28XY” or “G27”)

#if HAS_SDCARD_CONNECTION
/**

#define SDCARD_CONNECTION LCD

#endif

#endif // SDSUPPORT

*/
//#define NO_SD_HOST_DRIVE // Disable SD Card access over USB (for security).

/**

  • Additional options for Graphical Displays

// Enable to save many cycles by drawing a hollow frame on the Info Screen
#define XYZ_HOLLOW_FRAME

// Enable to save many cycles by drawing a hollow frame on Menu Screens
#define MENU_HOLLOW_FRAME

/**

  • Status (Info) Screen customizations
  • These options may affect code size and screen render time.
  • Custom status screens can forcibly override these settings.
    */
    //#define STATUS_COMBINE_HEATERS // Use combined heater images instead of separate ones
    //#define STATUS_HOTEND_NUMBERLESS // Use plain hotend icons instead of numbered ones (with 2+ hotends)
    #define STATUS_HOTEND_INVERTED // Show solid nozzle bitmaps when heating (Requires STATUS_HOTEND_ANIM)
    #define STATUS_HOTEND_ANIM // Use a second bitmap to indicate hotend heating
    #define STATUS_BED_ANIM // Use a second bitmap to indicate bed heating
    #define STATUS_CHAMBER_ANIM // Use a second bitmap to indicate chamber heating
    //#define STATUS_ALT_BED_BITMAP // Use the alternative bed bitmap
    //#define STATUS_ALT_FAN_BITMAP // Use the alternative fan bitmap
    //#define STATUS_FAN_FRAMES 3 // :[0,1,2,3,4] Number of fan animation frames
    //#define STATUS_HEAT_PERCENT // Show heating in a progress bar
    //#define BOOT_MARLIN_LOGO_SMALL // Show a smaller Marlin logo on the Boot Screen (saving 399 bytes of flash)
    //#define BOOT_MARLIN_LOGO_ANIMATED // Animated Marlin logo. Costs ~‭3260 (or ~940) bytes of PROGMEM.
    enu
    #endif // HAS_GRAPHICAL_LCD

// Mappings for boards with a standard RepRapDiscount Display connector
//#define AO_EXP1_PINMAP // AlephObjects CLCD UI EXP1 mapping
//#define AO_EXP2_PINMAP // AlephObjects CLCD UI EXP2 mapping
//#define CR10_TFT_PINMAP // Rudolph Riedel’s CR10 pin mapping
//#define OTHER_PIN_LAYOUT // Define pins manually below
#if ENABLED(OTHER_PIN_LAYOUT)
// The pins for CS and MOD_RESET (PD) must be chosen.
#define CLCD_MOD_RESET 9
#define CLCD_SPI_CS 10

// If using software SPI, specify pins for SCLK, MOSI, MISO
//#define CLCD_USE_SOFT_SPI
#if ENABLED(CLCD_USE_SOFT_SPI)
  #define CLCD_SOFT_SPI_MOSI 11
  #define CLCD_SOFT_SPI_MISO 12
  #define CLCD_SOFT_SPI_SCLK 13
#endif

#endif

// @section safety

*/
#define USE_WATCHDOG
#if ENABLED(USE_WATCHDOG)
//#define WATCHDOG_RESET_MANUAL
#endif

// @section extruder

//#define LIN_ADVANCE
#if ENABLED(LIN_ADVANCE)
//#define EXTRA_LIN_ADVANCE_K // Enable for second linear advance constants
#define LIN_ADVANCE_K 0.22 // Unit: mm compression per 1mm/s extruder speed
//#define LA_DEBUG // If enabled, this will generate debug information output over USB.
#endif

// @section extras

//
// G2/G3 Arc Support
//
#define ARC_SUPPORT // Disable this feature to save ~3226 bytes
#if ENABLED(ARC_SUPPORT)
#define MM_PER_ARC_SEGMENT .3 // Length of each arc segment
#define MIN_ARC_SEGMENTS 24 // Minimum number of segments in a complete circle
#define N_ARC_CORRECTION 25 // Number of interpolated segments between corrections
//#define ARC_P_CIRCLES // Enable the ‘P’ parameter to specify complete circles
//#define CNC_WORKSPACE_PLANES // Allow G2/G3 to operate in XY, ZX, or YZ planes
#endif

// Support for G5 with XYZE destination and IJPQ offsets. Requires ~2666 bytes.
//#define BEZIER_CURVE_SUPPORT

// Moves (or segments) with fewer steps than this will be joined with the next move
#define MIN_STEPS_PER_SEGMENT 6

// @section temperature

// Control heater 0 and heater 1 in parallel.
//#define HEATERS_PARALLEL

//===========================================================================
//================================= Buffers =================================
//===========================================================================

// @section hidden

#if ENABLED(SDSUPPORT)
#define BLOCK_BUFFER_SIZE 16 // SD,LCD,Buttons take more memory, block buffer needs to be smaller
#else
#define BLOCK_BUFFER_SIZE 16 // maximize block buffer
#endif

// @section serial

// The ASCII buffer for serial input
#define MAX_CMD_SIZE 96
#define BUFSIZE 4

#define TX_BUFFER_SIZE 0

//#define RX_BUFFER_SIZE 1024

#if RX_BUFFER_SIZE >= 1024
// Enable to have the controller send XON/XOFF control characters to
// the host to signal the RX buffer is becoming full.
//#define SERIAL_XON_XOFF
#endif

// Add M575 G-code to change the baud rate
//#define BAUD_RATE_GCODE

#if ENABLED(SDSUPPORT)
// Enable this option to collect and display the maximum
// RX queue usage after transferring a file to SD.
//#define SERIAL_STATS_MAX_RX_QUEUED

// Enable this option to collect and display the number
// of dropped bytes after a file transfer to SD.
//#define SERIAL_STATS_DROPPED_RX
#endif

//#define EMERGENCY_PARSER

//#define NO_TIMEOUTS 1000 // Milliseconds

//#define ADVANCED_OK

#define SERIAL_OVERRUN_PROTECTION

// @section extras

*/
//#define EXTRA_FAN_SPEED

/**

  • Universal tool change settings.
  • Applies to all types of extruders except where explicitly noted.
    */
    #if EXTRUDERS > 1
    // Z raise distance for tool-change, as needed for some extruders
    #define TOOLCHANGE_ZRAISE 2 // (mm)
    //#define TOOLCHANGE_NO_RETURN // Never return to the previous position on tool-change

// Retract and prime filament on tool-change

#endif
*

//#define ADVANCED_PAUSE_FEATURE
#if ENABLED(ADVANCED_PAUSE_FEATURE)
#define PAUSE_PARK_RETRACT_FEEDRATE 60 // (mm/s) Initial retract feedrate.
#define PAUSE_PARK_RETRACT_LENGTH 2 // (mm) Initial retract.
// This short retract is done immediately, before parking the nozzle.
#define FILAMENT_CHANGE_UNLOAD_FEEDRATE 10 // (mm/s) Unload filament feedrate. This can be pretty fast.
#define FILAMENT_CHANGE_UNLOAD_ACCEL 25 // (mm/s^2) Lower acceleration may allow a faster feedrate.
#define FILAMENT_CHANGE_UNLOAD_LENGTH 100 // (mm) The length of filament for a complete unload.
// For Bowden, the full length of the tube and nozzle.
// For direct drive, the full length of the nozzle.
// Set to 0 for manual unloading.
#define FILAMENT_CHANGE_SLOW_LOAD_FEEDRATE 6 // (mm/s) Slow move when starting load.
#define FILAMENT_CHANGE_SLOW_LOAD_LENGTH 0 // (mm) Slow length, to allow time to insert material.
// 0 to disable start loading and skip to fast load only
#define FILAMENT_CHANGE_FAST_LOAD_FEEDRATE 6 // (mm/s) Load filament feedrate. This can be pretty fast.
#define FILAMENT_CHANGE_FAST_LOAD_ACCEL 25 // (mm/s^2) Lower acceleration may allow a faster feedrate.
#define FILAMENT_CHANGE_FAST_LOAD_LENGTH 0 // (mm) Load length of filament, from extruder gear to nozzle.
// For Bowden, the full length of the tube and nozzle.
// For direct drive, the full length of the nozzle.
//#define ADVANCED_PAUSE_CONTINUOUS_PURGE // Purge continuously up to the purge length until interrupted.
#define ADVANCED_PAUSE_PURGE_FEEDRATE 3 // (mm/s) Extrude feedrate (after loading). Should be slower than load feedrate.
#define ADVANCED_PAUSE_PURGE_LENGTH 50 // (mm) Length to extrude after loading.
// Set to 0 for manual extrusion.
// Filament can be extruded repeatedly from the Filament Change menu
// until extrusion is consistent, and to purge old filament.
#define ADVANCED_PAUSE_RESUME_PRIME 0 // (mm) Extra distance to prime nozzle after returning from park.
//#define ADVANCED_PAUSE_FANS_PAUSE // Turn off print-cooling fans while the machine is paused.

                                              // Filament Unload does a Retract, Delay, and Purge first:

#define FILAMENT_UNLOAD_RETRACT_LENGTH 13 // (mm) Unload initial retract length.
#define FILAMENT_UNLOAD_DELAY 5000 // (ms) Delay for the filament to cool after retract.
#define FILAMENT_UNLOAD_PURGE_LENGTH 8 // (mm) An unretract is done, then this length is purged.

#define PAUSE_PARK_NOZZLE_TIMEOUT 45 // (seconds) Time limit before the nozzle is turned off for safety.
#define FILAMENT_CHANGE_ALERT_BEEPS 10 // Number of alert beeps to play when a response is needed.
#define PAUSE_PARK_NO_STEPPER_TIMEOUT // Enable for XYZ steppers to stay powered on during filament change.

//#define PARK_HEAD_ON_PAUSE // Park the nozzle during pause and filament change.
//#define HOME_BEFORE_FILAMENT_CHANGE // Ensure homing has been completed prior to parking for filament change

//#define FILAMENT_LOAD_UNLOAD_GCODES // Add M701/M702 Load/Unload G-codes, plus Load/Unload in the LCD Prepare menu.
//#define FILAMENT_UNLOAD_ALL_EXTRUDERS // Allow M702 to unload all extruders above a minimum target temp (as set by M302)
#endif

// @section i2cbus

//#define EXPERIMENTAL_I2CBUS
#define I2C_SLAVE_ADDRESS 0 // Set a value from 8 to 127 to act as a slave

// @section extras

/**

  • CNC Coordinate Systems

*/
//#define CNC_COORDINATE_SYSTEMS

/**

  • Auto-report temperatures with M155 S
    */
    #define AUTO_REPORT_TEMPERATURES

/**

  • Include capabilities in M115 output
    */
    #define EXTENDED_CAPABILITIES_REPORT

/**

  • Expected Printer Check
  • Add the M16 G-code to compare a string to the MACHINE_NAME.
  • M16 with a non-matching string causes the printer to halt.
    */
    //#define EXPECTED_PRINTER_CHECK

/**

  • Disable all Volumetric extrusion options
    */
    //#define NO_VOLUMETRICS

#if DISABLED(NO_VOLUMETRICS)
/**

  • Volumetric extrusion default state
  • Activate to make volumetric extrusion the default method,
  • with DEFAULT_NOMINAL_FILAMENT_DIA as the default diameter.
  • M200 D0 to disable, M200 Dn to set a new diameter.
    */
    //#define VOLUMETRIC_DEFAULT_ON
    #endif

*/
//#define NO_WORKSPACE_OFFSETS

*/
#define PROPORTIONAL_FONT_RATIO 1.0

*/
#define FASTER_GCODE_PARSER

/**

  • Startup commands
  • Execute certain G-code commands immediately after power-on.
    */
    //#define STARTUP_COMMANDS “M17 Z”

/**

  • G-code Macros
  • Add G-codes M810-M819 to define and run G-code macros.
  • Macros are not saved to EEPROM.
    */
    //#define GCODE_MACROS
    #if ENABLED(GCODE_MACROS)
    #define GCODE_MACROS_SLOTS 5 // Up to 10 may be used
    #define GCODE_MACROS_SLOT_SIZE 50 // Maximum length of a single macro
    #endif

/**

  • User-defined menu items that execute custom GCode
    */
    //#define CUSTOM_USER_MENUS
    #if ENABLED(CUSTOM_USER_MENUS)
    //#define CUSTOM_USER_MENU_TITLE “Custom Commands”
    #define USER_SCRIPT_DONE “M117 User Script Done”
    #define USER_SCRIPT_AUDIBLE_FEEDBACK
    //#define USER_SCRIPT_RETURN // Return to status screen after a script

#define USER_DESC_1 “Home & UBL Info”
#define USER_GCODE_1 “G28\nG29 W”

#define USER_DESC_2 "Preheat for " PREHEAT_1_LABEL
#define USER_GCODE_2 “M140 S” STRINGIFY(PREHEAT_1_TEMP_BED) “\nM104 S” STRINGIFY(PREHEAT_1_TEMP_HOTEND)

#define USER_DESC_3 "Preheat for " PREHEAT_2_LABEL
#define USER_GCODE_3 “M140 S” STRINGIFY(PREHEAT_2_TEMP_BED) “\nM104 S” STRINGIFY(PREHEAT_2_TEMP_HOTEND)

#define USER_DESC_4 “Heat Bed/Home/Level”
#define USER_GCODE_4 “M140 S” STRINGIFY(PREHEAT_2_TEMP_BED) “\nG28\nG29”

#define USER_DESC_5 “Home & Info”
#define USER_GCODE_5 “G28\nM503”
#endif

// @section develop

/**

  • M43 - display pin status, watch pins for changes, watch endstops & toggle LED, Z servo probe test, toggle pins
    */
    #define PINS_DEBUGGING

// Enable Marlin dev mode which adds some special commands
#define MARLIN_DEV_MODE
[/code]

If the MP3DP firmware didn’t work, then it isn’t firmware, something must be broken with the wiring or the mega. Can you replace the mega?