mirror of
https://github.com/MarlinFirmware/Marlin.git
synced 2024-11-26 05:17:17 +00:00
parent
11046b23a9
commit
763cd7c5f2
@ -4405,93 +4405,56 @@
|
||||
//#define E_MUX0_PIN 40 // Always Required
|
||||
//#define E_MUX1_PIN 42 // Needed for 3 to 8 inputs
|
||||
//#define E_MUX2_PIN 44 // Needed for 5 to 8 inputs
|
||||
|
||||
#elif HAS_PRUSA_MMU2 || HAS_PRUSA_MMU3
|
||||
// Common settings for MMU2/MMU2S/MMU3
|
||||
// Serial port used for communication with MMU2/MMU2S/MMU3.
|
||||
#define MMU2_SERIAL_PORT 2
|
||||
#define MMU_SERIAL_PORT 2
|
||||
#define MMU_BAUD 115200
|
||||
|
||||
// Use hardware reset for MMU if a pin is defined for it
|
||||
//#define MMU2_RST_PIN 23
|
||||
//#define MMU_RST_PIN 23 // Define this pin to use Hardware Reset for MMU2/MMU2S/MMU3
|
||||
|
||||
//#define MMU_MENUS // Add an LCD menu for MMU2/MMU2S/MMU3
|
||||
|
||||
//#define MMU_DEBUG // Write debug info to serial output
|
||||
|
||||
// Options pertaining to MMU2 and MMU2S
|
||||
#if HAS_PRUSA_MMU2
|
||||
// Enable if the MMU2 has 12V stepper motors (MMU2 Firmware 1.0.2 and up)
|
||||
//#define MMU2_MODE_12V
|
||||
|
||||
// Settings for filament load / unload from the LCD menu.
|
||||
// This is for Průša MK3-style extruders. Customize for your hardware.
|
||||
#define MMU2_FILAMENTCHANGE_EJECT_FEED 80.0
|
||||
|
||||
// G-code to execute when MMU2 F.I.N.D.A. probe detects filament runout
|
||||
#define MMU2_FILAMENT_RUNOUT_SCRIPT "M600"
|
||||
#endif
|
||||
|
||||
// Add an LCD menu for MMU2/MMU2S/MMU3
|
||||
//#define MMU_MENUS
|
||||
// MMU2 sequences use mm/min. Not compatible with MMU3, which use mm/sec.
|
||||
#define MMU2_LOAD_TO_NOZZLE_SEQUENCE \
|
||||
{ 4.4, 871 }, \
|
||||
{ 10.0, 1393 }, \
|
||||
{ 4.4, 871 }, \
|
||||
{ 10.0, 198 }
|
||||
|
||||
// Settings for filament load / unload from the LCD menu.
|
||||
// This is for Průša MK3-style extruders. Customize for your hardware.
|
||||
#define MMU2_FILAMENTCHANGE_EJECT_FEED 80.0
|
||||
#define MMU2_RAMMING_SEQUENCE \
|
||||
{ 1.0, 1000 }, \
|
||||
{ 1.0, 1500 }, \
|
||||
{ 2.0, 2000 }, \
|
||||
{ 1.5, 3000 }, \
|
||||
{ 2.5, 4000 }, \
|
||||
{ -15.0, 5000 }, \
|
||||
{ -14.0, 1200 }, \
|
||||
{ -6.0, 600 }, \
|
||||
{ 10.0, 700 }, \
|
||||
{ -10.0, 400 }, \
|
||||
{ -50.0, 2000 }
|
||||
|
||||
#endif // HAS_PRUSA_MMU2
|
||||
|
||||
/**
|
||||
* ------------
|
||||
* MMU2 / MMU2S
|
||||
* ------------
|
||||
* MMU2 sequences use mm/min. Not compatible with MMU3 (see below).
|
||||
* #define MMU2_LOAD_TO_NOZZLE_SEQUENCE \
|
||||
* { 4.4, 871 }, \
|
||||
* { 10.0, 1393 }, \
|
||||
* { 4.4, 871 }, \
|
||||
* { 10.0, 198 }
|
||||
*/
|
||||
|
||||
/* #define MMU2_RAMMING_SEQUENCE \
|
||||
* { 1.0, 1000 }, \
|
||||
* { 1.0, 1500 }, \
|
||||
* { 2.0, 2000 }, \
|
||||
* { 1.5, 3000 }, \
|
||||
* { 2.5, 4000 }, \
|
||||
* { -15.0, 5000 }, \
|
||||
* { -14.0, 1200 }, \
|
||||
* { -6.0, 600 }, \
|
||||
* { 10.0, 700 }, \
|
||||
* { -10.0, 400 }, \
|
||||
* { -50.0, 2000 }
|
||||
*/
|
||||
|
||||
/**
|
||||
* ----
|
||||
* MMU3
|
||||
* ----
|
||||
* These values are compatible with MMU3 as they are defined in mm/s
|
||||
*/
|
||||
|
||||
#define MMU2_EXTRUDER_PTFE_LENGTH 42.3 // (mm)
|
||||
#define MMU2_EXTRUDER_HEATBREAK_LENGTH 17.7 // (mm)
|
||||
|
||||
#define MMU2_LOAD_TO_NOZZLE_SEQUENCE \
|
||||
{ MMU2_EXTRUDER_PTFE_LENGTH, MMM_TO_MMS(810) }, /* (13.5 mm/s) Fast load ahead of heatbreak */ \
|
||||
{ MMU2_EXTRUDER_HEATBREAK_LENGTH, MMM_TO_MMS(198) } // ( 3.3 mm/s) Slow load after heatbreak
|
||||
|
||||
#define MMU2_RAMMING_SEQUENCE \
|
||||
{ 0.2816, MMM_TO_MMS(1339.0) }, \
|
||||
{ 0.3051, MMM_TO_MMS(1451.0) }, \
|
||||
{ 0.3453, MMM_TO_MMS(1642.0) }, \
|
||||
{ 0.3990, MMM_TO_MMS(1897.0) }, \
|
||||
{ 0.4761, MMM_TO_MMS(2264.0) }, \
|
||||
{ 0.5767, MMM_TO_MMS(2742.0) }, \
|
||||
{ 0.5691, MMM_TO_MMS(3220.0) }, \
|
||||
{ 0.1081, MMM_TO_MMS(3220.0) }, \
|
||||
{ 0.7644, MMM_TO_MMS(3635.0) }, \
|
||||
{ 0.8248, MMM_TO_MMS(3921.0) }, \
|
||||
{ 0.8483, MMM_TO_MMS(4033.0) }, \
|
||||
{ -15.0, MMM_TO_MMS(6000.0) }, \
|
||||
{ -24.5, MMM_TO_MMS(1200.0) }, \
|
||||
{ -7.0, MMM_TO_MMS( 600.0) }, \
|
||||
{ -3.5, MMM_TO_MMS( 360.0) }, \
|
||||
{ 20.0, MMM_TO_MMS( 454.0) }, \
|
||||
{ -20.0, MMM_TO_MMS( 303.0) }, \
|
||||
{ -35.0, MMM_TO_MMS(2000.0) }
|
||||
|
||||
/**
|
||||
* Using a sensor like the MMU2S
|
||||
* This mode requires a MK3S extruder with a sensor at the extruder idler, like the MMU2S.
|
||||
* Options pertaining to MMU2S devices
|
||||
* Requires the MK3S extruder with a sensor at the extruder idler, like the MMU2S.
|
||||
* See https://help.prusa3d.com/guide/3b-mk3s-mk2-5s-extruder-upgrade_41560#42048, step 11
|
||||
*/
|
||||
#if HAS_PRUSA_MMU2S
|
||||
@ -4532,14 +4495,9 @@
|
||||
|
||||
// MMU3 settings
|
||||
|
||||
#define MMU2_MAX_RETRIES 3 // Number of retries (total time = timeout*retries)
|
||||
#define MMU3_HAS_CUTTER // Enable cutter related functionality
|
||||
|
||||
// Nominal distance from the extruder gear to the nozzle tip is 87mm
|
||||
// However, some slipping may occur and we need separate distances for
|
||||
// LoadToNozzle and ToolChange.
|
||||
// - +5mm seemed good for LoadToNozzle,
|
||||
// - but too much (made blobs) for a ToolChange
|
||||
#define MMU2_LOAD_TO_NOZZLE_LENGTH 87.0 + 5.0
|
||||
#define MMU3_MAX_RETRIES 3 // Number of retries (total time = timeout*retries)
|
||||
|
||||
// As discussed with our PrusaSlicer profile specialist
|
||||
// - ToolChange shall not try to push filament into the very tip of the nozzle
|
||||
@ -4548,28 +4506,26 @@
|
||||
// Beware - this value is used to initialize the MMU logic layer - it will be sent to the MMU upon line up (written into its 8bit register 0x0b)
|
||||
// However - in the G-code we can get a request to set the extra load distance at runtime to something else (M708 A0xb Xsomething).
|
||||
// The printer intercepts such a call and sets its extra load distance to match the new value as well.
|
||||
#define MMU2_FILAMENT_SENSOR_POSITION 0 // (mm)
|
||||
#define MMU2_LOAD_DISTANCE_PAST_GEARS 5 // (mm)
|
||||
#define MMU2_TOOL_CHANGE_LOAD_LENGTH MMU2_FILAMENT_SENSOR_POSITION + MMU2_LOAD_DISTANCE_PAST_GEARS // (mm)
|
||||
#define MMU3_FILAMENT_SENSOR_E_POSITION 0 // (mm)
|
||||
#define _MMU3_LOAD_DISTANCE_PAST_GEARS 5 // (mm)
|
||||
#define MMU3_TOOL_CHANGE_LOAD_LENGTH (MMU3_FILAMENT_SENSOR_E_POSITION + _MMU3_LOAD_DISTANCE_PAST_GEARS) // (mm)
|
||||
|
||||
#define MMU2_LOAD_TO_NOZZLE_FEED_RATE 20.0 // (mm/s)
|
||||
#define MMU2_UNLOAD_TO_FINDA_FEED_RATE 120.0 // (mm/s)
|
||||
#define MMU3_LOAD_TO_NOZZLE_FEED_RATE 20.0 // (mm/s)
|
||||
|
||||
#define MMU2_VERIFY_LOAD_TO_NOZZLE_FEED_RATE 50.0 // (mm/s)
|
||||
#define MMU2_VERIFY_LOAD_TO_NOZZLE_TWEAK -5.0 // (mm) Amount to adjust the length for verifying load-to-nozzle
|
||||
#define MMU3_VERIFY_LOAD_TO_NOZZLE_FEED_RATE 50.0 // (mm/s)
|
||||
#define _MMU3_VERIFY_LOAD_TO_NOZZLE_TWEAK -5.0 // (mm) Amount to adjust the length for verifying load-to-nozzle
|
||||
|
||||
// The first thing the MMU does is initialize its axis.
|
||||
// Meanwhile the E-motor will unload 20mm of filament in about 1 second.
|
||||
#define MMU2_RETRY_UNLOAD_TO_FINDA_LENGTH 80.0 // (mm)
|
||||
#define MMU2_RETRY_UNLOAD_TO_FINDA_FEED_RATE 80.0 // (mm/s)
|
||||
#define MMU3_RETRY_UNLOAD_TO_FINDA_LENGTH 80.0 // (mm)
|
||||
#define MMU3_RETRY_UNLOAD_TO_FINDA_FEED_RATE 80.0 // (mm/s)
|
||||
|
||||
// After loading a new filament, the printer will extrude this length of filament
|
||||
// then retract to the original position. This is used to check if the filament sensor
|
||||
// reading flickers or filament is jammed.
|
||||
#define MMU2_CHECK_FILAMENT_PRESENCE_EXTRUSION_LENGTH (MMU2_EXTRUDER_PTFE_LENGTH + MMU2_EXTRUDER_HEATBREAK_LENGTH + MMU2_VERIFY_LOAD_TO_NOZZLE_TWEAK + MMU2_FILAMENT_SENSOR_POSITION) // (mm)
|
||||
|
||||
#define MMU_HAS_CUTTER // Enable cutter related functionalities
|
||||
//#define MMU_FORCE_STEALTH_MODE // Force stealth mode and disable menu item
|
||||
#define _MMU_EXTRUDER_PTFE_LENGTH 42.3 // (mm)
|
||||
#define _MMU_EXTRUDER_HEATBREAK_LENGTH 17.7 // (mm)
|
||||
#define MMU3_CHECK_FILAMENT_PRESENCE_EXTRUSION_LENGTH (MMU3_FILAMENT_SENSOR_E_POSITION + _MMU_EXTRUDER_PTFE_LENGTH + _MMU_EXTRUDER_HEATBREAK_LENGTH + _MMU3_VERIFY_LOAD_TO_NOZZLE_TWEAK) // (mm)
|
||||
|
||||
/**
|
||||
* SpoolJoin Consumes All Filament -- EXPERIMENTAL
|
||||
@ -4587,12 +4543,37 @@
|
||||
* sensor is triggered through the gears) and the end of the PTFE tube and
|
||||
* can cause filament load issues.
|
||||
*/
|
||||
//#define MMU_SPOOL_JOIN_CONSUMES_ALL_FILAMENT
|
||||
//#define MMU3_SPOOL_JOIN_CONSUMES_ALL_FILAMENT
|
||||
|
||||
#else
|
||||
// MMU3 sequences use mm/sec. Not compatible with MMU2 which use mm/min.
|
||||
#define MMU3_LOAD_TO_NOZZLE_SEQUENCE \
|
||||
{ _MMU_EXTRUDER_PTFE_LENGTH, MMM_TO_MMS(810) }, /* (13.5 mm/s) Fast load ahead of heatbreak */ \
|
||||
{ _MMU_EXTRUDER_HEATBREAK_LENGTH, MMM_TO_MMS(198) } /* ( 3.3 mm/s) Slow load after heatbreak */
|
||||
|
||||
#define MMU3_RAMMING_SEQUENCE \
|
||||
{ 0.2816, MMM_TO_MMS(1339.0) }, \
|
||||
{ 0.3051, MMM_TO_MMS(1451.0) }, \
|
||||
{ 0.3453, MMM_TO_MMS(1642.0) }, \
|
||||
{ 0.3990, MMM_TO_MMS(1897.0) }, \
|
||||
{ 0.4761, MMM_TO_MMS(2264.0) }, \
|
||||
{ 0.5767, MMM_TO_MMS(2742.0) }, \
|
||||
{ 0.5691, MMM_TO_MMS(3220.0) }, \
|
||||
{ 0.1081, MMM_TO_MMS(3220.0) }, \
|
||||
{ 0.7644, MMM_TO_MMS(3635.0) }, \
|
||||
{ 0.8248, MMM_TO_MMS(3921.0) }, \
|
||||
{ 0.8483, MMM_TO_MMS(4033.0) }, \
|
||||
{ -15.0, MMM_TO_MMS(6000.0) }, \
|
||||
{ -24.5, MMM_TO_MMS(1200.0) }, \
|
||||
{ -7.0, MMM_TO_MMS( 600.0) }, \
|
||||
{ -3.5, MMM_TO_MMS( 360.0) }, \
|
||||
{ 20.0, MMM_TO_MMS( 454.0) }, \
|
||||
{ -20.0, MMM_TO_MMS( 303.0) }, \
|
||||
{ -35.0, MMM_TO_MMS(2000.0) }
|
||||
|
||||
#else // MMU2 (not MMU2S)
|
||||
|
||||
/**
|
||||
* MMU1 Extruder Sensor
|
||||
* MMU2 Extruder Sensor
|
||||
*
|
||||
* Support for a Průša (or other) IR Sensor to detect filament near the extruder
|
||||
* and make loading more reliable. Suitable for an extruder equipped with a filament
|
||||
@ -4602,15 +4583,13 @@
|
||||
* move up to the gears. If no filament is detected, the MMU2 can make some more attempts.
|
||||
* If all attempts fail, a filament runout will be triggered.
|
||||
*/
|
||||
//#define MMU_EXTRUDER_SENSOR
|
||||
#if ENABLED(MMU_EXTRUDER_SENSOR)
|
||||
#define MMU_LOADING_ATTEMPTS_NR 5 // max. number of attempts to load filament if first load fail
|
||||
//#define MMU2_EXTRUDER_SENSOR
|
||||
#if ENABLED(MMU2_EXTRUDER_SENSOR)
|
||||
#define MMU2_LOADING_ATTEMPTS_NR 5 // Number of times to try loading filament before failure
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
//#define MMU2_DEBUG // Write debug info to serial output
|
||||
|
||||
#endif // HAS_PRUSA_MMU2 || HAS_PRUSA_MMU3
|
||||
|
||||
/**
|
||||
|
@ -129,11 +129,11 @@ typedef Servo hal_servo_t;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef MMU2_SERIAL_PORT
|
||||
#if !WITHIN(MMU2_SERIAL_PORT, 0, 3)
|
||||
#error "MMU2_SERIAL_PORT must be from 0 to 3"
|
||||
#ifdef MMU_SERIAL_PORT
|
||||
#if !WITHIN(MMU_SERIAL_PORT, 0, 3)
|
||||
#error "MMU_SERIAL_PORT must be from 0 to 3"
|
||||
#endif
|
||||
#define MMU2_SERIAL mmuSerial
|
||||
#define MMU_SERIAL mmuSerial
|
||||
#endif
|
||||
|
||||
#ifdef LCD_SERIAL_PORT
|
||||
|
@ -601,20 +601,20 @@ MSerialT1 customizedSerial1(MSerialT1::HasEmergencyParser);
|
||||
|
||||
#endif // SERIAL_PORT_3
|
||||
|
||||
#ifdef MMU2_SERIAL_PORT
|
||||
#ifdef MMU_SERIAL_PORT
|
||||
|
||||
ISR(SERIAL_REGNAME(USART, MMU2_SERIAL_PORT, _RX_vect)) {
|
||||
MarlinSerial<MMU2SerialCfg<MMU2_SERIAL_PORT>>::store_rxd_char();
|
||||
ISR(SERIAL_REGNAME(USART, MMU_SERIAL_PORT, _RX_vect)) {
|
||||
MarlinSerial<MMU2SerialCfg<MMU_SERIAL_PORT>>::store_rxd_char();
|
||||
}
|
||||
|
||||
ISR(SERIAL_REGNAME(USART, MMU2_SERIAL_PORT, _UDRE_vect)) {
|
||||
MarlinSerial<MMU2SerialCfg<MMU2_SERIAL_PORT>>::_tx_udr_empty_irq();
|
||||
ISR(SERIAL_REGNAME(USART, MMU_SERIAL_PORT, _UDRE_vect)) {
|
||||
MarlinSerial<MMU2SerialCfg<MMU_SERIAL_PORT>>::_tx_udr_empty_irq();
|
||||
}
|
||||
|
||||
template class MarlinSerial< MMU2SerialCfg<MMU2_SERIAL_PORT> >;
|
||||
template class MarlinSerial< MMU2SerialCfg<MMU_SERIAL_PORT> >;
|
||||
MSerialMMU2 mmuSerial(MSerialMMU2::HasEmergencyParser);
|
||||
|
||||
#endif // MMU2_SERIAL_PORT
|
||||
#endif // MMU_SERIAL_PORT
|
||||
|
||||
#ifdef LCD_SERIAL_PORT
|
||||
|
||||
|
@ -246,7 +246,7 @@
|
||||
|
||||
#endif // !USBCON
|
||||
|
||||
#ifdef MMU2_SERIAL_PORT
|
||||
#ifdef MMU_SERIAL_PORT
|
||||
template <uint8_t serial>
|
||||
struct MMU2SerialCfg {
|
||||
static constexpr int PORT = serial;
|
||||
@ -260,7 +260,7 @@
|
||||
static constexpr bool RX_OVERRUNS = false;
|
||||
};
|
||||
|
||||
typedef Serial1Class< MarlinSerial< MMU2SerialCfg<MMU2_SERIAL_PORT> > > MSerialMMU2;
|
||||
typedef Serial1Class< MarlinSerial< MMU2SerialCfg<MMU_SERIAL_PORT> > > MSerialMMU2;
|
||||
extern MSerialMMU2 mmuSerial;
|
||||
#endif
|
||||
|
||||
|
@ -81,11 +81,11 @@ extern DefaultSerial4 MSerial3;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef MMU2_SERIAL_PORT
|
||||
#if WITHIN(MMU2_SERIAL_PORT, 0, 3)
|
||||
#define MMU2_SERIAL MSERIAL(MMU2_SERIAL_PORT)
|
||||
#ifdef MMU_SERIAL_PORT
|
||||
#if WITHIN(MMU_SERIAL_PORT, 0, 3)
|
||||
#define MMU_SERIAL MSERIAL(MMU_SERIAL_PORT)
|
||||
#else
|
||||
#error "MMU2_SERIAL_PORT must be from 0 to 3."
|
||||
#error "MMU_SERIAL_PORT must be from 0 to 3."
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
@ -82,13 +82,13 @@ extern DefaultSerial1 USBSerial;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef MMU2_SERIAL_PORT
|
||||
#if MMU2_SERIAL_PORT == -1
|
||||
#define MMU2_SERIAL USBSerial
|
||||
#elif WITHIN(MMU2_SERIAL_PORT, 0, 3)
|
||||
#define MMU2_SERIAL MSERIAL(MMU2_SERIAL_PORT)
|
||||
#ifdef MMU_SERIAL_PORT
|
||||
#if MMU_SERIAL_PORT == -1
|
||||
#define MMU_SERIAL USBSerial
|
||||
#elif WITHIN(MMU_SERIAL_PORT, 0, 3)
|
||||
#define MMU_SERIAL MSERIAL(MMU_SERIAL_PORT)
|
||||
#else
|
||||
#error "MMU2_SERIAL_PORT must be from 0 to 3. You can also use -1 if the board supports Native USB."
|
||||
#error "MMU_SERIAL_PORT must be from 0 to 3. You can also use -1 if the board supports Native USB."
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
@ -87,11 +87,11 @@ extern MSerialT serial_stream_3;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef MMU2_SERIAL_PORT
|
||||
#if WITHIN(MMU2_SERIAL_PORT, 0, 3)
|
||||
#define MMU2_SERIAL MSERIAL(MMU2_SERIAL_PORT)
|
||||
#ifdef MMU_SERIAL_PORT
|
||||
#if WITHIN(MMU_SERIAL_PORT, 0, 3)
|
||||
#define MMU_SERIAL MSERIAL(MMU_SERIAL_PORT)
|
||||
#else
|
||||
#error "MMU2_SERIAL_PORT must be from 0 to 3. Please update your configuration."
|
||||
#error "MMU_SERIAL_PORT must be from 0 to 3. Please update your configuration."
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
@ -69,13 +69,13 @@ extern DefaultSerial3 MSerial1;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef MMU2_SERIAL_PORT
|
||||
#if WITHIN(MMU2_SERIAL_PORT, 0, 1)
|
||||
#define MMU2_SERIAL MSERIAL(SERIAL_PORT)
|
||||
#elif MMU2_SERIAL_PORT == -1
|
||||
#define MMU2_SERIAL MSerialUSB
|
||||
#ifdef MMU_SERIAL_PORT
|
||||
#if WITHIN(MMU_SERIAL_PORT, 0, 1)
|
||||
#define MMU_SERIAL MSERIAL(SERIAL_PORT)
|
||||
#elif MMU_SERIAL_PORT == -1
|
||||
#define MMU_SERIAL MSerialUSB
|
||||
#else
|
||||
#error "MMU2_SERIAL_PORT must be -1 (Native USB only)."
|
||||
#error "MMU_SERIAL_PORT must be -1 (Native USB only)."
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
@ -79,13 +79,13 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef MMU2_SERIAL_PORT
|
||||
#if MMU2_SERIAL_PORT == -1
|
||||
#define MMU2_SERIAL MSerial0
|
||||
#elif WITHIN(MMU2_SERIAL_PORT, 0, 3)
|
||||
#define MMU2_SERIAL MSERIAL(MMU2_SERIAL_PORT)
|
||||
#ifdef MMU_SERIAL_PORT
|
||||
#if MMU_SERIAL_PORT == -1
|
||||
#define MMU_SERIAL MSerial0
|
||||
#elif WITHIN(MMU_SERIAL_PORT, 0, 3)
|
||||
#define MMU_SERIAL MSERIAL(MMU_SERIAL_PORT)
|
||||
#else
|
||||
#error "MMU2_SERIAL_PORT must be from 0 to 3. You can also use -1 if the board supports Native USB."
|
||||
#error "MMU_SERIAL_PORT must be from 0 to 3. You can also use -1 if the board supports Native USB."
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
@ -90,15 +90,15 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef MMU2_SERIAL_PORT
|
||||
#if WITHIN(MMU2_SERIAL_PORT, 1, 9)
|
||||
#define MMU2_SERIAL MSERIAL(MMU2_SERIAL_PORT)
|
||||
#ifdef MMU_SERIAL_PORT
|
||||
#if WITHIN(MMU_SERIAL_PORT, 1, 9)
|
||||
#define MMU_SERIAL MSERIAL(MMU_SERIAL_PORT)
|
||||
#elif !defined(USBCON)
|
||||
#error "MMU2_SERIAL_PORT must be from 1 to 9."
|
||||
#elif MMU2_SERIAL_PORT == -1
|
||||
#define MMU2_SERIAL MSerialUSB
|
||||
#error "MMU_SERIAL_PORT must be from 1 to 9."
|
||||
#elif MMU_SERIAL_PORT == -1
|
||||
#define MMU_SERIAL MSerialUSB
|
||||
#else
|
||||
#error "MMU2_SERIAL_PORT must be from 1 to 9, or -1 for Native USB."
|
||||
#error "MMU_SERIAL_PORT must be from 1 to 9, or -1 for Native USB."
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
@ -118,14 +118,14 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef MMU2_SERIAL_PORT
|
||||
#if MMU2_SERIAL_PORT == -1
|
||||
#define MMU2_SERIAL UsbSerial
|
||||
#elif WITHIN(MMU2_SERIAL_PORT, 1, NUM_UARTS)
|
||||
#define MMU2_SERIAL MSERIAL(MMU2_SERIAL_PORT)
|
||||
#ifdef MMU_SERIAL_PORT
|
||||
#if MMU_SERIAL_PORT == -1
|
||||
#define MMU_SERIAL UsbSerial
|
||||
#elif WITHIN(MMU_SERIAL_PORT, 1, NUM_UARTS)
|
||||
#define MMU_SERIAL MSERIAL(MMU_SERIAL_PORT)
|
||||
#else
|
||||
#define MMU2_SERIAL MSERIAL(1) // dummy port
|
||||
static_assert(false, "MMU2_SERIAL_PORT must be from 1 to " STRINGIFY(NUM_UARTS) ". You can also use -1 if the board supports Native USB.")
|
||||
#define MMU_SERIAL MSERIAL(1) // dummy port
|
||||
static_assert(false, "MMU_SERIAL_PORT must be from 1 to " STRINGIFY(NUM_UARTS) ". You can also use -1 if the board supports Native USB.")
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
@ -232,8 +232,8 @@
|
||||
#endif
|
||||
|
||||
#if HAS_PRUSA_MMU3
|
||||
#include "feature/mmu3/mmu2.h"
|
||||
#include "feature/mmu3/mmu2_reporting.h"
|
||||
#include "feature/mmu3/mmu3.h"
|
||||
#include "feature/mmu3/mmu3_reporting.h"
|
||||
#include "feature/mmu3/SpoolJoin.h"
|
||||
#elif HAS_PRUSA_MMU2
|
||||
#include "feature/mmu/mmu2.h"
|
||||
|
@ -744,7 +744,6 @@ void Max7219::idle_tasks() {
|
||||
#endif
|
||||
|
||||
#ifdef MAX7219_DEBUG_PLANNER_QUEUE
|
||||
static int16_t last_depth = 0;
|
||||
const int16_t current_depth = BLOCK_MOD(head - tail + (BLOCK_BUFFER_SIZE)) & 0xF;
|
||||
if (current_depth != last_depth) {
|
||||
quantity16(MAX7219_DEBUG_PLANNER_QUEUE, last_depth, current_depth, &row_change_mask);
|
||||
|
@ -24,6 +24,10 @@
|
||||
|
||||
#if HAS_PRUSA_MMU2
|
||||
|
||||
/**
|
||||
* mmu2.cpp - Support for Průša MMU2 and MMU2S
|
||||
*/
|
||||
|
||||
#include "mmu2.h"
|
||||
#include "../../lcd/menu/menu_mmu2.h"
|
||||
|
||||
@ -46,7 +50,7 @@ MMU2 mmu2;
|
||||
#include "../../lcd/extui/ui_api.h"
|
||||
#endif
|
||||
|
||||
#define DEBUG_OUT ENABLED(MMU2_DEBUG)
|
||||
#define DEBUG_OUT ENABLED(MMU_DEBUG)
|
||||
#include "../../core/debug_out.h"
|
||||
|
||||
#define MMU_TODELAY 100
|
||||
@ -57,7 +61,7 @@ MMU2 mmu2;
|
||||
#define MMU2_SEND(S) tx_str(F(S "\n"))
|
||||
#define MMU2_RECV(S) rx_str(F(S "\n"))
|
||||
|
||||
#if ENABLED(MMU_EXTRUDER_SENSOR)
|
||||
#if ENABLED(MMU2_EXTRUDER_SENSOR)
|
||||
uint8_t mmu_idl_sens = 0;
|
||||
static bool mmu_loading_flag = false;
|
||||
#endif
|
||||
@ -106,12 +110,12 @@ void MMU2::init() {
|
||||
|
||||
set_runout_valid(false);
|
||||
|
||||
#if PIN_EXISTS(MMU2_RST)
|
||||
WRITE(MMU2_RST_PIN, HIGH);
|
||||
SET_OUTPUT(MMU2_RST_PIN);
|
||||
#if PIN_EXISTS(MMU_RST)
|
||||
WRITE(MMU_RST_PIN, HIGH);
|
||||
SET_OUTPUT(MMU_RST_PIN);
|
||||
#endif
|
||||
|
||||
MMU2_SERIAL.begin(MMU_BAUD);
|
||||
MMU_SERIAL.begin(MMU_BAUD);
|
||||
extruder = MMU2_NO_TOOL;
|
||||
|
||||
safe_delay(10);
|
||||
@ -123,10 +127,10 @@ void MMU2::init() {
|
||||
void MMU2::reset() {
|
||||
DEBUG_ECHOLNPGM("MMU <= reset");
|
||||
|
||||
#if PIN_EXISTS(MMU2_RST)
|
||||
WRITE(MMU2_RST_PIN, LOW);
|
||||
#if PIN_EXISTS(MMU_RST)
|
||||
WRITE(MMU_RST_PIN, LOW);
|
||||
safe_delay(20);
|
||||
WRITE(MMU2_RST_PIN, HIGH);
|
||||
WRITE(MMU_RST_PIN, HIGH);
|
||||
#else
|
||||
MMU2_SEND("X0"); // Send soft reset
|
||||
#endif
|
||||
@ -134,7 +138,7 @@ void MMU2::reset() {
|
||||
|
||||
int8_t MMU2::get_current_tool() { return extruder == MMU2_NO_TOOL ? -1 : extruder; }
|
||||
|
||||
#if ANY(HAS_PRUSA_MMU2S, MMU_EXTRUDER_SENSOR)
|
||||
#if ANY(HAS_PRUSA_MMU2S, MMU2_EXTRUDER_SENSOR)
|
||||
#define FILAMENT_PRESENT() (READ(FIL_RUNOUT1_PIN) != FIL_RUNOUT1_STATE)
|
||||
#else
|
||||
#define FILAMENT_PRESENT() true
|
||||
@ -226,7 +230,7 @@ void MMU2::mmu_loop() {
|
||||
const int filament = cmd - MMU_CMD_T0;
|
||||
DEBUG_ECHOLNPGM("MMU <= T", filament);
|
||||
tx_printf(F("T%d\n"), filament);
|
||||
TERN_(MMU_EXTRUDER_SENSOR, mmu_idl_sens = 1); // enable idler sensor, if any
|
||||
TERN_(MMU2_EXTRUDER_SENSOR, mmu_idl_sens = 1); // enable idler sensor, if any
|
||||
state = 3; // wait for response
|
||||
}
|
||||
else if (WITHIN(cmd, MMU_CMD_L0, MMU_CMD_L0 + EXTRUDERS - 1)) {
|
||||
@ -299,7 +303,7 @@ void MMU2::mmu_loop() {
|
||||
break;
|
||||
|
||||
case 3: // response to mmu commands
|
||||
#if ENABLED(MMU_EXTRUDER_SENSOR)
|
||||
#if ENABLED(MMU2_EXTRUDER_SENSOR)
|
||||
if (mmu_idl_sens) {
|
||||
if (FILAMENT_PRESENT() && mmu_loading_flag) {
|
||||
DEBUG_ECHOLNPGM("MMU <= 'A'");
|
||||
@ -361,8 +365,8 @@ bool MMU2::rx_str(FSTR_P fstr) {
|
||||
|
||||
uint8_t i = strlen(rx_buffer);
|
||||
|
||||
while (MMU2_SERIAL.available()) {
|
||||
rx_buffer[i++] = MMU2_SERIAL.read();
|
||||
while (MMU_SERIAL.available()) {
|
||||
rx_buffer[i++] = MMU_SERIAL.read();
|
||||
|
||||
if (i == sizeof(rx_buffer) - 1) {
|
||||
DEBUG_ECHOLNPGM("rx buffer overrun");
|
||||
@ -393,7 +397,7 @@ bool MMU2::rx_str(FSTR_P fstr) {
|
||||
void MMU2::tx_str(FSTR_P fstr) {
|
||||
clear_rx_buffer();
|
||||
PGM_P pstr = FTOP(fstr);
|
||||
while (const char c = pgm_read_byte(pstr)) { MMU2_SERIAL.write(c); pstr++; }
|
||||
while (const char c = pgm_read_byte(pstr)) { MMU_SERIAL.write(c); pstr++; }
|
||||
prev_request = millis();
|
||||
}
|
||||
|
||||
@ -403,7 +407,7 @@ void MMU2::tx_str(FSTR_P fstr) {
|
||||
void MMU2::tx_printf(FSTR_P format, int argument = -1) {
|
||||
clear_rx_buffer();
|
||||
const uint8_t len = sprintf_P(tx_buffer, FTOP(format), argument);
|
||||
for (uint8_t i = 0; i < len; ++i) MMU2_SERIAL.write(tx_buffer[i]);
|
||||
for (uint8_t i = 0; i < len; ++i) MMU_SERIAL.write(tx_buffer[i]);
|
||||
prev_request = millis();
|
||||
}
|
||||
|
||||
@ -413,7 +417,7 @@ void MMU2::tx_printf(FSTR_P format, int argument = -1) {
|
||||
void MMU2::tx_printf(FSTR_P format, int argument1, int argument2) {
|
||||
clear_rx_buffer();
|
||||
const uint8_t len = sprintf_P(tx_buffer, FTOP(format), argument1, argument2);
|
||||
for (uint8_t i = 0; i < len; ++i) MMU2_SERIAL.write(tx_buffer[i]);
|
||||
for (uint8_t i = 0; i < len; ++i) MMU_SERIAL.write(tx_buffer[i]);
|
||||
prev_request = millis();
|
||||
}
|
||||
|
||||
@ -421,7 +425,7 @@ void MMU2::tx_printf(FSTR_P format, int argument1, int argument2) {
|
||||
* Empty the rx buffer
|
||||
*/
|
||||
void MMU2::clear_rx_buffer() {
|
||||
while (MMU2_SERIAL.available()) MMU2_SERIAL.read();
|
||||
while (MMU_SERIAL.available()) MMU_SERIAL.read();
|
||||
rx_buffer[0] = '\0';
|
||||
}
|
||||
|
||||
@ -563,7 +567,7 @@ inline void beep_bad_cmd() { BUZZ(400, 40); }
|
||||
set_runout_valid(true);
|
||||
}
|
||||
|
||||
#elif ENABLED(MMU_EXTRUDER_SENSOR)
|
||||
#elif ENABLED(MMU2_EXTRUDER_SENSOR)
|
||||
|
||||
/**
|
||||
* Handle tool change
|
||||
@ -656,7 +660,7 @@ inline void beep_bad_cmd() { BUZZ(400, 40); }
|
||||
void MMU2::mmu_continue_loading() {
|
||||
// Try to load the filament a limited number of times
|
||||
bool fil_present = 0;
|
||||
for (uint8_t i = 0; i < MMU_LOADING_ATTEMPTS_NR; i++) {
|
||||
for (uint8_t i = 0; i < MMU2_LOADING_ATTEMPTS_NR; i++) {
|
||||
DEBUG_ECHOLNPGM("Load attempt #", i + 1);
|
||||
|
||||
// Done as soon as filament is present
|
||||
@ -688,7 +692,7 @@ inline void beep_bad_cmd() { BUZZ(400, 40); }
|
||||
mmu_idl_sens = 0;
|
||||
}
|
||||
|
||||
#else // !HAS_PRUSA_MMU2S && !MMU_EXTRUDER_SENSOR
|
||||
#else // !HAS_PRUSA_MMU2S && !MMU2_EXTRUDER_SENSOR
|
||||
|
||||
/**
|
||||
* Handle tool change
|
||||
|
@ -21,6 +21,10 @@
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
/**
|
||||
* mmu2.h - Support for Průša MMU2 and MMU2S
|
||||
*/
|
||||
|
||||
#include "../../inc/MarlinConfig.h"
|
||||
|
||||
#if HAS_FILAMENT_SENSOR
|
||||
@ -85,7 +89,7 @@ private:
|
||||
FORCE_INLINE static bool load_to_gears() { return true; }
|
||||
#endif
|
||||
|
||||
#if ENABLED(MMU_EXTRUDER_SENSOR)
|
||||
#if ENABLED(MMU2_EXTRUDER_SENSOR)
|
||||
#define MMU_LOAD_FEEDRATE 19.02f // (mm/s)
|
||||
static void mmu_continue_loading();
|
||||
#endif
|
||||
|
@ -28,15 +28,15 @@
|
||||
|
||||
#if HAS_PRUSA_MMU3
|
||||
|
||||
#include "mmu2.h"
|
||||
#include "mmu2_error_converter.h"
|
||||
#include "mmu2_fsensor.h"
|
||||
#include "mmu2_log.h"
|
||||
#include "mmu2_marlin.h"
|
||||
#include "mmu2_marlin_macros.h"
|
||||
#include "mmu2_power.h"
|
||||
#include "mmu2_progress_converter.h"
|
||||
#include "mmu2_reporting.h"
|
||||
#include "mmu3.h"
|
||||
#include "mmu3_error_converter.h"
|
||||
#include "mmu3_fsensor.h"
|
||||
#include "mmu3_log.h"
|
||||
#include "mmu3_marlin.h"
|
||||
#include "mmu3_marlin_macros.h"
|
||||
#include "mmu3_power.h"
|
||||
#include "mmu3_progress_converter.h"
|
||||
#include "mmu3_reporting.h"
|
||||
|
||||
#include "strlen_cx.h"
|
||||
#include "SpoolJoin.h"
|
||||
@ -91,7 +91,7 @@ namespace MMU3 {
|
||||
int MMU3::mmu_hw_enabled_addr; // Initialized by settings.load
|
||||
|
||||
MMU3::MMU3()
|
||||
: logic(MMU2_TOOL_CHANGE_LOAD_LENGTH, MMU2_LOAD_TO_NOZZLE_FEED_RATE)
|
||||
: logic(MMU3_TOOL_CHANGE_LOAD_LENGTH, MMU3_LOAD_TO_NOZZLE_FEED_RATE)
|
||||
, extruder(MMU2_NO_TOOL)
|
||||
, tool_change_extruder(MMU2_NO_TOOL)
|
||||
, resume_position()
|
||||
@ -121,10 +121,10 @@ namespace MMU3 {
|
||||
settings.save();
|
||||
#endif
|
||||
|
||||
MMU2_SERIAL.begin(MMU_BAUD);
|
||||
MMU_SERIAL.begin(MMU_BAUD);
|
||||
|
||||
powerOn();
|
||||
MMU2_SERIAL.flush(); // Make sure the UART buffer is clear before starting communication
|
||||
MMU_SERIAL.flush(); // Make sure the UART buffer is clear before starting communication
|
||||
|
||||
setCurrentTool(MMU2_NO_TOOL);
|
||||
_state = xState::Connecting;
|
||||
@ -153,7 +153,7 @@ namespace MMU3 {
|
||||
|
||||
_state = xState::Stopped;
|
||||
logic.stop();
|
||||
MMU2_SERIAL.end();
|
||||
MMU_SERIAL.end();
|
||||
}
|
||||
|
||||
void MMU3::tune() {
|
||||
@ -279,14 +279,14 @@ namespace MMU3 {
|
||||
&& TERN1(HAS_LEVELING, planner.leveling_active)
|
||||
&& xy_are_trusted()
|
||||
&& e_active()
|
||||
#if ENABLED(MMU_SPOOL_JOIN_CONSUMES_ALL_FILAMENT)
|
||||
#if ENABLED(MMU3_SPOOL_JOIN_CONSUMES_ALL_FILAMENT)
|
||||
&& runout.enabled // to prevent M600 to be triggered during M600 AUTO
|
||||
&& !FILAMENT_PRESENT() // so the filament is totally consumed
|
||||
#endif
|
||||
) {
|
||||
SERIAL_ECHOLN_P("FINDA filament runout!");
|
||||
if (spooljoin.isEnabled() && get_current_tool() != (uint8_t)FILAMENT_UNKNOWN) { // Can't auto if F=?
|
||||
#if ENABLED(MMU_SPOOL_JOIN_CONSUMES_ALL_FILAMENT)
|
||||
#if ENABLED(MMU3_SPOOL_JOIN_CONSUMES_ALL_FILAMENT)
|
||||
// set the current tool to FILAMENT_UNKNOWN so that we don't try to unload it
|
||||
extruder = MMU2_NO_TOOL;
|
||||
// disable the filament runout sensor (this is going to be re-enabled after the filament is loaded)
|
||||
@ -294,7 +294,7 @@ namespace MMU3 {
|
||||
runout.filament_ran_out = false; // trying to disable the purge more / continue message
|
||||
runout.enabled = false;
|
||||
#endif
|
||||
queue.enqueue_now(F("M600A")); // Save print and run M600 command
|
||||
queue.enqueue_now(F("M600A")); // Save print and run M600 A (automatic) command
|
||||
}
|
||||
else {
|
||||
marlin_stop_and_save_print_to_ram();
|
||||
@ -349,7 +349,7 @@ namespace MMU3 {
|
||||
|
||||
// MMU has finished its load, push the filament further by some defined constant length
|
||||
// If the filament sensor reads 0 at any moment, then report FAILURE
|
||||
const float tryload_length = MMU2_CHECK_FILAMENT_PRESENCE_EXTRUSION_LENGTH - logic.ExtraLoadDistance();
|
||||
const float tryload_length = MMU3_CHECK_FILAMENT_PRESENCE_EXTRUSION_LENGTH - logic.ExtraLoadDistance();
|
||||
TryLoadUnloadReporter tlur(tryload_length);
|
||||
|
||||
/**
|
||||
@ -378,7 +378,7 @@ namespace MMU3 {
|
||||
// Pixel index will go from 0 to 10, then back from 10 to 0.
|
||||
// A change in this value indicates a new pixel should be drawn on the display.
|
||||
for (uint8_t move = 0; move < 2; move++) {
|
||||
extruder_move(move == 0 ? tryload_length : -tryload_length, MMU2_VERIFY_LOAD_TO_NOZZLE_FEED_RATE);
|
||||
extruder_move(move == 0 ? tryload_length : -tryload_length, MMU3_VERIFY_LOAD_TO_NOZZLE_FEED_RATE);
|
||||
while (planner_any_moves()) {
|
||||
filament_inserted = filament_inserted && (WhereIsFilament() == FilamentState::AT_FSENSOR);
|
||||
tlur.Progress(filament_inserted);
|
||||
@ -392,7 +392,7 @@ namespace MMU3 {
|
||||
}
|
||||
|
||||
bool MMU3::toolChangeCommonOnce(uint8_t slot) {
|
||||
static_assert(MMU2_MAX_RETRIES > 1); // Need >1 retries to do the cut in the last attempt
|
||||
static_assert(MMU3_MAX_RETRIES > 1); // Need >1 retries to do the cut in the last attempt
|
||||
uint8_t retries = 0;
|
||||
for (;;) {
|
||||
for (;;) {
|
||||
@ -419,9 +419,9 @@ namespace MMU3 {
|
||||
|
||||
// Prepare a retry attempt
|
||||
unloadInner();
|
||||
if (retries == (MMU2_MAX_RETRIES) - 1 && cutter_enabled()) {
|
||||
if (retries == (MMU3_MAX_RETRIES) - 1 && cutter_enabled()) {
|
||||
cutFilamentInner(slot); // try cutting filament tip at the last attempt
|
||||
retries = 0; // reset retries every MMU2_MAX_RETRIES
|
||||
retries = 0; // reset retries every MMU3_MAX_RETRIES
|
||||
}
|
||||
|
||||
++retries;
|
||||
@ -1013,7 +1013,7 @@ namespace MMU3 {
|
||||
void MMU3::execute_load_to_nozzle_sequence() {
|
||||
planner_synchronize();
|
||||
// Compensate for configurable Extra Loading Distance
|
||||
planner_set_current_position_E(planner_get_current_position_E() - (logic.ExtraLoadDistance() - MMU2_FILAMENT_SENSOR_POSITION));
|
||||
planner_set_current_position_E(planner_get_current_position_E() - (logic.ExtraLoadDistance() - MMU3_FILAMENT_SENSOR_E_POSITION));
|
||||
execute_extruder_sequence(load_to_nozzle_sequence, sizeof(load_to_nozzle_sequence) / sizeof(load_to_nozzle_sequence[0]));
|
||||
}
|
||||
|
||||
@ -1120,7 +1120,7 @@ namespace MMU3 {
|
||||
}
|
||||
|
||||
void __attribute__((noinline)) MMU3::helpUnloadToFinda() {
|
||||
extruder_move(-MMU2_RETRY_UNLOAD_TO_FINDA_LENGTH, MMU2_RETRY_UNLOAD_TO_FINDA_FEED_RATE);
|
||||
extruder_move(-MMU3_RETRY_UNLOAD_TO_FINDA_LENGTH, MMU3_RETRY_UNLOAD_TO_FINDA_FEED_RATE);
|
||||
}
|
||||
|
||||
void MMU3::onMMUProgressMsgSame(ProgressCode pc) {
|
@ -25,10 +25,10 @@
|
||||
* mmu2.h
|
||||
*/
|
||||
|
||||
#include "mmu2_state.h"
|
||||
#include "mmu2_marlin.h"
|
||||
#include "mmu3_state.h"
|
||||
#include "mmu3_marlin.h"
|
||||
|
||||
#include "mmu2_protocol_logic.h"
|
||||
#include "mmu3_protocol_logic.h"
|
||||
|
||||
#include "../../MarlinCore.h"
|
||||
|
||||
@ -43,8 +43,8 @@
|
||||
float feedRate; //!< feed rate in mm/s
|
||||
};
|
||||
|
||||
static constexpr E_Step ramming_sequence[] PROGMEM = { MMU2_RAMMING_SEQUENCE };
|
||||
static constexpr E_Step load_to_nozzle_sequence[] PROGMEM = { MMU2_LOAD_TO_NOZZLE_SEQUENCE };
|
||||
static constexpr E_Step ramming_sequence[] PROGMEM = { MMU3_RAMMING_SEQUENCE };
|
||||
static constexpr E_Step load_to_nozzle_sequence[] PROGMEM = { MMU3_LOAD_TO_NOZZLE_SEQUENCE };
|
||||
|
||||
namespace MMU3 {
|
||||
|
@ -28,7 +28,7 @@
|
||||
|
||||
#if HAS_PRUSA_MMU3
|
||||
|
||||
#include "mmu2_crc.h"
|
||||
#include "mmu3_crc.h"
|
||||
|
||||
#ifdef __AVR__
|
||||
#include <util/crc16.h>
|
@ -29,7 +29,7 @@
|
||||
#if HAS_PRUSA_MMU3
|
||||
|
||||
#include "../../core/language.h"
|
||||
#include "mmu2_error_converter.h"
|
||||
#include "mmu3_error_converter.h"
|
||||
#include "mmu_hw/error_codes.h"
|
||||
#include "mmu_hw/errors_list.h"
|
||||
|
@ -29,7 +29,7 @@
|
||||
#if HAS_PRUSA_MMU3
|
||||
|
||||
#include "../../feature/runout.h"
|
||||
#include "mmu2_fsensor.h"
|
||||
#include "mmu3_fsensor.h"
|
||||
|
||||
namespace MMU3 {
|
||||
|
@ -28,7 +28,7 @@
|
||||
|
||||
#if HAS_PRUSA_MMU3
|
||||
|
||||
#include "mmu2_log.h"
|
||||
#include "mmu3_log.h"
|
||||
|
||||
namespace MMU3 {
|
||||
|
@ -36,7 +36,7 @@
|
||||
|
||||
#include "../../feature/pause.h"
|
||||
#include "../../libs/nozzle.h"
|
||||
#include "mmu2_marlin.h"
|
||||
#include "mmu3_marlin.h"
|
||||
|
||||
namespace MMU3 {
|
||||
|
@ -28,8 +28,8 @@
|
||||
|
||||
#if HAS_PRUSA_MMU3
|
||||
|
||||
#include "mmu2.h"
|
||||
#include "mmu2_power.h"
|
||||
#include "mmu3.h"
|
||||
#include "mmu3_power.h"
|
||||
|
||||
#include "../../MarlinCore.h"
|
||||
|
||||
@ -41,8 +41,8 @@ namespace MMU3 {
|
||||
|
||||
// On MK3 we cannot do actual power cycle on HW. Instead trigger a hardware reset.
|
||||
void power_on() {
|
||||
#if PIN_EXISTS(MMU2_RST)
|
||||
OUT_WRITE(MMU2_RST_PIN, HIGH);
|
||||
#if PIN_EXISTS(MMU_RST)
|
||||
OUT_WRITE(MMU_RST_PIN, HIGH);
|
||||
#endif
|
||||
power_reset();
|
||||
}
|
||||
@ -50,10 +50,10 @@ void power_on() {
|
||||
void power_off() {}
|
||||
|
||||
void power_reset() {
|
||||
#if PIN_EXISTS(MMU2_RST) // HW - pulse reset pin
|
||||
WRITE(MMU2_RST_PIN, LOW);
|
||||
#if PIN_EXISTS(MMU_RST) // HW - pulse reset pin
|
||||
WRITE(MMU_RST_PIN, LOW);
|
||||
safe_delay(100);
|
||||
WRITE(MMU2_RST_PIN, HIGH);
|
||||
WRITE(MMU_RST_PIN, HIGH);
|
||||
#else
|
||||
mmu3.reset(MMU3::Software); // TODO: Needs redesign. This power implementation shouldn't know anything about the MMU itself
|
||||
#endif
|
@ -29,7 +29,7 @@
|
||||
#if HAS_PRUSA_MMU3
|
||||
|
||||
#include "../../core/language.h"
|
||||
#include "mmu2_progress_converter.h"
|
||||
#include "mmu3_progress_converter.h"
|
||||
#include "mmu_hw/progress_codes.h"
|
||||
#include "mmu_hw/errors_list.h"
|
||||
|
@ -28,7 +28,7 @@
|
||||
|
||||
#if HAS_PRUSA_MMU3
|
||||
|
||||
#include "mmu2_protocol.h"
|
||||
#include "mmu3_protocol.h"
|
||||
|
||||
// protocol definition
|
||||
// command: Q0
|
@ -28,7 +28,7 @@
|
||||
#include "../../MarlinCore.h"
|
||||
|
||||
#include <stdint.h>
|
||||
#include "mmu2_crc.h"
|
||||
#include "mmu3_crc.h"
|
||||
|
||||
// prevent ARM HAL macros from breaking our code
|
||||
#undef CRC
|
@ -28,9 +28,9 @@
|
||||
|
||||
#if HAS_PRUSA_MMU3
|
||||
|
||||
#include "mmu2_protocol_logic.h"
|
||||
#include "mmu2_log.h"
|
||||
#include "mmu2_fsensor.h"
|
||||
#include "mmu3_protocol_logic.h"
|
||||
#include "mmu3_log.h"
|
||||
#include "mmu3_fsensor.h"
|
||||
|
||||
#ifdef __AVR__
|
||||
// on MK3/S/+ we shuffle the timers a bit, thus "_millis" may not equal "millis"
|
||||
@ -48,7 +48,7 @@
|
||||
#endif
|
||||
|
||||
#include <string.h>
|
||||
#include "mmu2_supported_version.h"
|
||||
#include "mmu3_supported_version.h"
|
||||
|
||||
namespace MMU3 {
|
||||
|
||||
@ -186,7 +186,7 @@ namespace MMU3 {
|
||||
OldMMUFWDetector oldMMUh4x0r; // old MMU FW hacker ;)
|
||||
|
||||
// try to consume as many rx bytes as possible (until a message has been completed)
|
||||
while ((c = MMU2_SERIAL.read()) >= 0) {
|
||||
while ((c = MMU_SERIAL.read()) >= 0) {
|
||||
++bytesConsumed;
|
||||
RecordReceivedByte(c);
|
||||
switch (protocol.DecodeResponse(c)) {
|
||||
@ -234,10 +234,10 @@ namespace MMU3 {
|
||||
#if defined(__AVR__) || defined(TARGET_LPC1768)
|
||||
// TODO: I'm not sure if this is the correct approach with AVR
|
||||
for ( uint8_t i = 0; i < len; i++) {
|
||||
MMU2_SERIAL.write(txbuff[i]);
|
||||
MMU_SERIAL.write(txbuff[i]);
|
||||
}
|
||||
#else
|
||||
MMU2_SERIAL.write(txbuff, len);
|
||||
MMU_SERIAL.write(txbuff, len);
|
||||
#endif
|
||||
LogRequestMsg(txbuff, len);
|
||||
RecordUARTActivity();
|
||||
@ -254,10 +254,10 @@ namespace MMU3 {
|
||||
#if defined(__AVR__) || defined(TARGET_LPC1768)
|
||||
// TODO: I'm not sure if this is the correct approach with AVR
|
||||
for ( uint8_t i = 0; i < len; i++) {
|
||||
MMU2_SERIAL.write(txbuff[i]);
|
||||
MMU_SERIAL.write(txbuff[i]);
|
||||
}
|
||||
#else
|
||||
MMU2_SERIAL.write(txbuff, len);
|
||||
MMU_SERIAL.write(txbuff, len);
|
||||
#endif
|
||||
LogRequestMsg(txbuff, len);
|
||||
RecordUARTActivity();
|
||||
@ -373,7 +373,7 @@ namespace MMU3 {
|
||||
|
||||
StepStatus ProtocolLogic::DelayedRestartWait() {
|
||||
if (Elapsed(heartBeatPeriod)) { // this basically means, that we are waiting until there is some traffic on
|
||||
while (MMU2_SERIAL.read() != -1); // clear the input buffer
|
||||
while (MMU_SERIAL.read() != -1); // clear the input buffer
|
||||
// switch to StartSeq
|
||||
start();
|
||||
}
|
||||
@ -587,7 +587,7 @@ namespace MMU3 {
|
||||
, buttonCode(Buttons::NoButton)
|
||||
, lastFSensor((uint8_t)WhereIsFilament())
|
||||
, regIndex(0)
|
||||
, retryAttempts(MMU2_MAX_RETRIES)
|
||||
, retryAttempts(MMU3_MAX_RETRIES)
|
||||
, inAutoRetry(false) {
|
||||
// @@TODO currently, I don't see a way of writing the initialization better :(
|
||||
// I'd like to write something like: initRegs8 { extraLoadDistance, pulleySlowFeedrate }
|
||||
@ -803,14 +803,14 @@ namespace MMU3 {
|
||||
}
|
||||
|
||||
StepStatus ProtocolLogic::HandleCommunicationTimeout() {
|
||||
MMU2_SERIAL.flush(); // clear the output buffer
|
||||
MMU_SERIAL.flush(); // clear the output buffer
|
||||
protocol.ResetResponseDecoder();
|
||||
start();
|
||||
return SuppressShortDropOuts(PSTR("Communication timeout"), CommunicationTimeout);
|
||||
}
|
||||
|
||||
StepStatus ProtocolLogic::HandleProtocolError() {
|
||||
MMU2_SERIAL.flush(); // clear the output buffer
|
||||
MMU_SERIAL.flush(); // clear the output buffer
|
||||
state = State::InitSequence;
|
||||
currentScope = Scope::DelayedRestart;
|
||||
DelayedRestartRestart();
|
||||
@ -880,7 +880,7 @@ namespace MMU3 {
|
||||
|
||||
void ProtocolLogic::ResetRetryAttempts() {
|
||||
SERIAL_ECHOLNPGM("ResetRetryAttempts");
|
||||
retryAttempts = MMU2_MAX_RETRIES;
|
||||
retryAttempts = MMU3_MAX_RETRIES;
|
||||
}
|
||||
|
||||
void __attribute__((noinline)) ProtocolLogic::ResetCommunicationTimeoutAttempts() {
|
@ -35,7 +35,7 @@
|
||||
#include "mmu_hw/progress_codes.h"
|
||||
#include "mmu_hw/buttons.h"
|
||||
#include "mmu_hw/registers.h"
|
||||
#include "mmu2_protocol.h"
|
||||
#include "mmu3_protocol.h"
|
||||
|
||||
// #include <array> std array is not available on AVR ... we need to "fake" it
|
||||
namespace std {
|
||||
@ -59,7 +59,7 @@
|
||||
|
||||
// Prevent ARM HAL macros from breaking our code
|
||||
#undef CRC
|
||||
#include "mmu2_protocol.h"
|
||||
#include "mmu3_protocol.h"
|
||||
#include "mmu_hw/buttons.h"
|
||||
#include "registers.h"
|
||||
|
@ -28,13 +28,13 @@
|
||||
|
||||
#if HAS_PRUSA_MMU3
|
||||
|
||||
#include "mmu2.h"
|
||||
#include "mmu2_log.h"
|
||||
#include "mmu2_fsensor.h"
|
||||
#include "mmu2_reporting.h"
|
||||
#include "mmu2_error_converter.h"
|
||||
#include "mmu2_marlin_macros.h"
|
||||
#include "mmu2_progress_converter.h"
|
||||
#include "mmu3.h"
|
||||
#include "mmu3_log.h"
|
||||
#include "mmu3_fsensor.h"
|
||||
#include "mmu3_reporting.h"
|
||||
#include "mmu3_error_converter.h"
|
||||
#include "mmu3_marlin_macros.h"
|
||||
#include "mmu3_progress_converter.h"
|
||||
#include "mmu_hw/buttons.h"
|
||||
#include "mmu_hw/error_codes.h"
|
||||
#include "mmu_hw/errors_list.h"
|
@ -28,8 +28,8 @@
|
||||
|
||||
#if HAS_PRUSA_MMU3
|
||||
|
||||
#include "mmu2.h"
|
||||
#include "mmu2_marlin_macros.h"
|
||||
#include "mmu3.h"
|
||||
#include "mmu3_marlin_macros.h"
|
||||
#include "mmu_hw/errors_list.h"
|
||||
#include "ultralcd.h"
|
||||
|
||||
|
@ -32,7 +32,7 @@
|
||||
#endif
|
||||
|
||||
#if HAS_PRUSA_MMU3
|
||||
#include "../../feature/mmu3/mmu2.h"
|
||||
#include "../../feature/mmu3/mmu3.h"
|
||||
#elif HAS_PRUSA_MMU2
|
||||
#include "../../feature/mmu/mmu2.h"
|
||||
#endif
|
||||
|
@ -39,7 +39,7 @@
|
||||
#endif
|
||||
|
||||
#if HAS_PRUSA_MMU3
|
||||
#include "../../../feature/mmu3/mmu2.h"
|
||||
#include "../../../feature/mmu3/mmu3.h"
|
||||
#if ENABLED(MMU_MENUS)
|
||||
#include "../../../lcd/menu/menu_mmu2.h"
|
||||
#endif
|
||||
|
@ -36,7 +36,7 @@
|
||||
#endif
|
||||
|
||||
#if HAS_PRUSA_MMU3
|
||||
#include "../../../feature/mmu3/mmu2.h"
|
||||
#include "../../../feature/mmu3/mmu3.h"
|
||||
#elif HAS_PRUSA_MMU2
|
||||
#include "../../../feature/mmu/mmu2.h"
|
||||
#endif
|
||||
|
@ -27,7 +27,7 @@
|
||||
#include "../../gcode.h"
|
||||
|
||||
#if HAS_PRUSA_MMU3
|
||||
#include "../../../feature/mmu3/mmu2.h"
|
||||
#include "../../../feature/mmu3/mmu3.h"
|
||||
#elif HAS_PRUSA_MMU2
|
||||
#include "../../../feature/mmu/mmu2.h"
|
||||
#endif
|
||||
|
@ -26,8 +26,8 @@
|
||||
|
||||
#include "../../gcode.h"
|
||||
#include "../../../module/settings.h"
|
||||
#include "../../../feature/mmu3/mmu2.h"
|
||||
#include "../../../feature/mmu3/mmu2_reporting.h"
|
||||
#include "../../../feature/mmu3/mmu3.h"
|
||||
#include "../../../feature/mmu3/mmu3_reporting.h"
|
||||
#include "../../../feature/mmu3/SpoolJoin.h"
|
||||
|
||||
// Shared by the G-codes below to save flash memory.
|
||||
@ -39,7 +39,7 @@ static void gcodes_M704_M705_M706(uint16_t gcode) {
|
||||
case 704: mmu3.load_to_feeder(mmuSlotIndex); break;
|
||||
case 705: mmu3.eject_filament(mmuSlotIndex, false); break;
|
||||
case 706:
|
||||
#if ENABLED(MMU_HAS_CUTTER)
|
||||
#if ENABLED(MMU3_HAS_CUTTER)
|
||||
if (mmu3.cutter_mode > 0) mmu3.cut_filament(mmuSlotIndex);
|
||||
#endif
|
||||
break;
|
||||
@ -187,7 +187,7 @@ void GcodeSuite::MMU3_report(const bool forReplay/*=true*/) {
|
||||
report_heading(forReplay, F("MMU3 Operational Stats"));
|
||||
SERIAL_ECHOPGM(" MMU "); serialprintln_onoff(mmu3.mmu_hw_enabled);
|
||||
SERIAL_ECHOPGM(" Stealth Mode "); serialprintln_onoff(mmu3.stealth_mode);
|
||||
#if ENABLED(MMU_HAS_CUTTER)
|
||||
#if ENABLED(MMU3_HAS_CUTTER)
|
||||
SERIAL_ECHOPGM(" Cutter ");
|
||||
serialprintln_onoff(mmu3.cutter_mode != 0);
|
||||
#endif
|
||||
|
@ -468,7 +468,7 @@
|
||||
#elif defined(ANYCUBIC_LCD_SERIAL_PORT)
|
||||
#error "ANYCUBIC_LCD_SERIAL_PORT is now LCD_SERIAL_PORT."
|
||||
#elif defined(INTERNAL_SERIAL_PORT)
|
||||
#error "INTERNAL_SERIAL_PORT is now MMU2_SERIAL_PORT."
|
||||
#error "INTERNAL_SERIAL_PORT is now MMU_SERIAL_PORT."
|
||||
#elif defined(X_DUAL_ENDSTOPS_ADJUSTMENT) || defined(Y_DUAL_ENDSTOPS_ADJUSTMENT) || defined(Z_DUAL_ENDSTOPS_ADJUSTMENT)
|
||||
#error "[XYZ]_DUAL_ENDSTOPS_ADJUSTMENT is now [XYZ]2_ENDSTOP_ADJUSTMENT."
|
||||
#elif defined(Z_TRIPLE_ENDSTOPS_ADJUSTMENT2) || defined(Z_TRIPLE_ENDSTOPS_ADJUSTMENT3)
|
||||
@ -701,6 +701,46 @@
|
||||
#error "CALIBRATION_MEASUREMENT_RESOLUTION is no longer needed and should be removed."
|
||||
#elif defined(MMU2_MENUS)
|
||||
#error "MMU2_MENUS is now MMU_MENUS."
|
||||
#elif defined(MMU2_SERIAL_PORT)
|
||||
#error "MMU2_SERIAL_PORT is now MMU_SERIAL_PORT."
|
||||
#elif defined(MMU2_RST_PIN)
|
||||
#error "MMU2_RST_PIN is now MMU_RST_PIN."
|
||||
#elif defined(MMU2_MAX_RETRIES)
|
||||
#error "MMU2_MAX_RETRIES is now MMU3_MAX_RETRIES."
|
||||
#elif defined(MMU2_FILAMENT_SENSOR_POSITION)
|
||||
#error "MMU2_FILAMENT_SENSOR_POSITION is now MMU3_FILAMENT_SENSOR_POSITION."
|
||||
#elif defined(MMU2_TOOL_CHANGE_LOAD_LENGTH)
|
||||
#error "MMU2_TOOL_CHANGE_LOAD_LENGTH is now MMU3_TOOL_CHANGE_LOAD_LENGTH."
|
||||
#elif defined(MMU2_LOAD_TO_NOZZLE_FEED_RATE)
|
||||
#error "MMU2_LOAD_TO_NOZZLE_FEED_RATE is now MMU3_LOAD_TO_NOZZLE_FEED_RATE."
|
||||
#elif defined(MMU2_UNLOAD_TO_FINDA_FEED_RATE)
|
||||
#error "MMU2_UNLOAD_TO_FINDA_FEED_RATE is no longer needed and should be removed."
|
||||
#elif defined(MMU2_VERIFY_LOAD_TO_NOZZLE_FEED_RATE)
|
||||
#error "MMU2_VERIFY_LOAD_TO_NOZZLE_FEED_RATE is now MMU3_VERIFY_LOAD_TO_NOZZLE_FEED_RATE."
|
||||
#elif defined(MMU2_RETRY_UNLOAD_TO_FINDA_LENGTH)
|
||||
#error "MMU2_RETRY_UNLOAD_TO_FINDA_LENGTH is now MMU3_RETRY_UNLOAD_TO_FINDA_LENGTH."
|
||||
#elif defined(MMU2_RETRY_UNLOAD_TO_FINDA_FEED_RATE)
|
||||
#error "MMU2_RETRY_UNLOAD_TO_FINDA_FEED_RATE is now MMU3_RETRY_UNLOAD_TO_FINDA_FEED_RATE."
|
||||
#elif defined(MMU2_FILAMENT_SENSOR_POSITION)
|
||||
#error "MMU2_FILAMENT_SENSOR_POSITION is now MMU3_FILAMENT_SENSOR_E_POSITION."
|
||||
#elif defined(MMU2_CHECK_FILAMENT_PRESENCE_EXTRUSION_LENGTH)
|
||||
#error "MMU2_CHECK_FILAMENT_PRESENCE_EXTRUSION_LENGTH is now MMU3_CHECK_FILAMENT_PRESENCE_EXTRUSION_LENGTH."
|
||||
#elif defined(MMU_HAS_CUTTER)
|
||||
#error "MMU_HAS_CUTTER is now MMU3_HAS_CUTTER."
|
||||
#elif defined(MMU_FORCE_STEALTH_MODE)
|
||||
#error "MMU_FORCE_STEALTH_MODE is obsolete and should be removed."
|
||||
#elif defined(MMU_SPOOL_JOIN_CONSUMES_ALL_FILAMENT)
|
||||
#error "MMU_SPOOL_JOIN_CONSUMES_ALL_FILAMENT is now MMU3_SPOOL_JOIN_CONSUMES_ALL_FILAMENT."
|
||||
#elif HAS_PRUSA_MMU3 && defined(MMU2_LOAD_TO_NOZZLE_SEQUENCE)
|
||||
#error "MMU2_LOAD_TO_NOZZLE_SEQUENCE is now MMU3_LOAD_TO_NOZZLE_SEQUENCE for MMU_MODEL MMU3."
|
||||
#elif HAS_PRUSA_MMU3 && defined(MMU2_RAMMING_SEQUENCE)
|
||||
#error "MMU2_RAMMING_SEQUENCE is now MMU3_RAMMING_SEQUENCE for MMU_MODEL MMU3."
|
||||
#elif defined(MMU_EXTRUDER_SENSOR)
|
||||
#error "MMU_EXTRUDER_SENSOR is now MMU2_EXTRUDER_SENSOR."
|
||||
#elif defined(MMU_LOADING_ATTEMPTS_NR)
|
||||
#error "MMU_LOADING_ATTEMPTS_NR is now MMU2_LOADING_ATTEMPTS_NR."
|
||||
#elif defined(MMU2_DEBUG)
|
||||
#error "MMU2_DEBUG is now MMU_DEBUG."
|
||||
#elif defined(FTM_SHAPING_DEFAULT_X_FREQ) || defined(FTM_SHAPING_DEFAULT_Y_FREQ)
|
||||
#error "FTM_SHAPING_DEFAULT_[XY]_FREQ is now FTM_SHAPING_DEFAULT_FREQ_[XY]."
|
||||
#endif
|
||||
|
@ -1851,7 +1851,7 @@
|
||||
#define SERIAL_IN_USE(N) ( (defined(SERIAL_PORT) && N == SERIAL_PORT) \
|
||||
|| (defined(SERIAL_PORT_2) && N == SERIAL_PORT_2) \
|
||||
|| (defined(SERIAL_PORT_3) && N == SERIAL_PORT_3) \
|
||||
|| (defined(MMU2_SERIAL_PORT) && N == MMU2_SERIAL_PORT) \
|
||||
|| (defined(MMU_SERIAL_PORT) && N == MMU_SERIAL_PORT) \
|
||||
|| (defined(LCD_SERIAL_PORT) && N == LCD_SERIAL_PORT) \
|
||||
|| (defined(RS485_SERIAL_PORT) && N == RS485_SERIAL_PORT) )
|
||||
|
||||
|
@ -615,10 +615,10 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L
|
||||
#error "PRUSA_MMU2(S) requires NOZZLE_PARK_FEATURE. Enable it to continue."
|
||||
#elif (HAS_PRUSA_MMU2S || HAS_PRUSA_MMU3) && DISABLED(FILAMENT_RUNOUT_SENSOR)
|
||||
#error "PRUSA_MMU2S and HAS_PRUSA_MMU3 requires FILAMENT_RUNOUT_SENSOR. Enable it to continue."
|
||||
#elif ENABLED(MMU_EXTRUDER_SENSOR) && DISABLED(FILAMENT_RUNOUT_SENSOR)
|
||||
#error "MMU_EXTRUDER_SENSOR requires FILAMENT_RUNOUT_SENSOR. Enable it to continue."
|
||||
#elif ENABLED(MMU_EXTRUDER_SENSOR) && !HAS_MARLINUI_MENU
|
||||
#error "MMU_EXTRUDER_SENSOR requires an LCD supporting MarlinUI."
|
||||
#elif ENABLED(MMU2_EXTRUDER_SENSOR) && DISABLED(FILAMENT_RUNOUT_SENSOR)
|
||||
#error "MMU2_EXTRUDER_SENSOR requires FILAMENT_RUNOUT_SENSOR. Enable it to continue."
|
||||
#elif ENABLED(MMU2_EXTRUDER_SENSOR) && !HAS_MARLINUI_MENU
|
||||
#error "MMU2_EXTRUDER_SENSOR requires an LCD supporting MarlinUI."
|
||||
#elif ENABLED(MMU_MENUS) && !HAS_MARLINUI_MENU
|
||||
#error "MMU_MENUS requires an LCD supporting MarlinUI."
|
||||
#elif HAS_PRUSA_MMU3 && !HAS_MARLINUI_MENU
|
||||
@ -628,7 +628,7 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L
|
||||
#elif HAS_PRUSA_MMU3 && DISABLED(EEPROM_SETTINGS)
|
||||
#error "MMU3 requires EEPROM_SETTINGS."
|
||||
#elif DISABLED(ADVANCED_PAUSE_FEATURE)
|
||||
static_assert(nullptr == strstr(MMU2_FILAMENT_RUNOUT_SCRIPT, "M600"), "MMU2_FILAMENT_RUNOUT_SCRIPT cannot make use of M600 unless ADVANCED_PAUSE_FEATURE is enabled");
|
||||
static_assert(nullptr == strstr(MMU2_FILAMENT_RUNOUT_SCRIPT, "M600"), "ADVANCED_PAUSE_FEATURE is required for MMU2_FILAMENT_RUNOUT_SCRIPT to use M600.");
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@ -2944,8 +2944,8 @@ static_assert(NUM_SERVOS <= NUM_SERVO_PLUGS, "NUM_SERVOS (or some servo index) i
|
||||
#error "SERIAL_PORT is set to -1, but the MOTHERBOARD has no native USB support. Set SERIAL_PORT to a valid value for your board."
|
||||
#elif SERIAL_PORT_2 == -1
|
||||
#error "SERIAL_PORT_2 is set to -1, but the MOTHERBOARD has no native USB support. Set SERIAL_PORT_2 to a valid value for your board."
|
||||
#elif MMU2_SERIAL_PORT == -1
|
||||
#error "MMU2_SERIAL_PORT is set to -1, but the MOTHERBOARD has no native USB support. Set MMU2_SERIAL_PORT to a valid value for your board."
|
||||
#elif MMU_SERIAL_PORT == -1
|
||||
#error "MMU_SERIAL_PORT is set to -1, but the MOTHERBOARD has no native USB support. Set MMU_SERIAL_PORT to a valid value for your board."
|
||||
#elif LCD_SERIAL_PORT == -1
|
||||
#error "LCD_SERIAL_PORT is set to -1, but the MOTHERBOARD has no native USB support. Set LCD_SERIAL_PORT to a valid value for your board."
|
||||
#endif
|
||||
@ -2954,15 +2954,15 @@ static_assert(NUM_SERVOS <= NUM_SERVO_PLUGS, "NUM_SERVOS (or some servo index) i
|
||||
/**
|
||||
* MMU2 require a dedicated serial port
|
||||
*/
|
||||
#ifdef MMU2_SERIAL_PORT
|
||||
#if MMU2_SERIAL_PORT == SERIAL_PORT
|
||||
#error "MMU2_SERIAL_PORT cannot be the same as SERIAL_PORT."
|
||||
#elif defined(SERIAL_PORT_2) && MMU2_SERIAL_PORT == SERIAL_PORT_2
|
||||
#error "MMU2_SERIAL_PORT cannot be the same as SERIAL_PORT_2."
|
||||
#elif defined(LCD_SERIAL_PORT) && MMU2_SERIAL_PORT == LCD_SERIAL_PORT
|
||||
#error "MMU2_SERIAL_PORT cannot be the same as LCD_SERIAL_PORT."
|
||||
#elif defined(RS485_SERIAL_PORT) && MMU2_SERIAL_PORT == RS485_SERIAL_PORT
|
||||
#error "MMU2_SERIAL_PORT cannot be the same as RS485_SERIAL_PORT."
|
||||
#ifdef MMU_SERIAL_PORT
|
||||
#if MMU_SERIAL_PORT == SERIAL_PORT
|
||||
#error "MMU_SERIAL_PORT cannot be the same as SERIAL_PORT."
|
||||
#elif defined(SERIAL_PORT_2) && MMU_SERIAL_PORT == SERIAL_PORT_2
|
||||
#error "MMU_SERIAL_PORT cannot be the same as SERIAL_PORT_2."
|
||||
#elif defined(LCD_SERIAL_PORT) && MMU_SERIAL_PORT == LCD_SERIAL_PORT
|
||||
#error "MMU_SERIAL_PORT cannot be the same as LCD_SERIAL_PORT."
|
||||
#elif defined(RS485_SERIAL_PORT) && MMU_SERIAL_PORT == RS485_SERIAL_PORT
|
||||
#error "MMU_SERIAL_PORT cannot be the same as RS485_SERIAL_PORT."
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
@ -27,8 +27,8 @@
|
||||
#include "../../MarlinCore.h"
|
||||
|
||||
#if HAS_PRUSA_MMU3
|
||||
#include "../../feature/mmu3/mmu2.h"
|
||||
#include "../../feature/mmu3/mmu2_reporting.h"
|
||||
#include "../../feature/mmu3/mmu3.h"
|
||||
#include "../../feature/mmu3/mmu3_reporting.h"
|
||||
#include "../../feature/mmu3/SpoolJoin.h"
|
||||
#else
|
||||
#include "../../feature/mmu/mmu2.h"
|
||||
@ -263,7 +263,7 @@ void menu_mmu3_statistics() {
|
||||
|
||||
void action_mmu2_reset() {
|
||||
#if HAS_PRUSA_MMU3
|
||||
#if PIN_EXISTS(MMU2_RST)
|
||||
#if PIN_EXISTS(MMU_RST)
|
||||
mmu3.reset(MMU3::MMU3::ResetForm::ResetPin);
|
||||
#else
|
||||
mmu3.reset(MMU3::MMU3::ResetForm::Software);
|
||||
|
@ -179,9 +179,9 @@
|
||||
#endif
|
||||
|
||||
#if HAS_PRUSA_MMU3
|
||||
#include "../feature/mmu3/mmu2.h"
|
||||
#include "../feature/mmu3/mmu3.h"
|
||||
#include "../feature/mmu3/SpoolJoin.h"
|
||||
#include "../feature/mmu3/mmu2_reporting.h"
|
||||
#include "../feature/mmu3/mmu3_reporting.h"
|
||||
#endif
|
||||
|
||||
#pragma pack(push, 1) // No padding between variables
|
||||
|
@ -77,7 +77,7 @@
|
||||
#endif
|
||||
|
||||
#if HAS_PRUSA_MMU3
|
||||
#include "../feature/mmu3/mmu2.h"
|
||||
#include "../feature/mmu3/mmu3.h"
|
||||
#elif HAS_PRUSA_MMU2
|
||||
#include "../feature/mmu/mmu2.h"
|
||||
#elif HAS_PRUSA_MMU1
|
||||
|
@ -2180,8 +2180,8 @@
|
||||
//
|
||||
// MMU2
|
||||
//
|
||||
#if PIN_EXISTS(MMU2_RST)
|
||||
REPORT_NAME_DIGITAL(__LINE__, MMU2_RST_PIN)
|
||||
#if PIN_EXISTS(MMU_RST)
|
||||
REPORT_NAME_DIGITAL(__LINE__, MMU_RST_PIN)
|
||||
#endif
|
||||
|
||||
//
|
||||
|
@ -3055,7 +3055,7 @@ cmt_multi_first_len_minimum = 4 # unsigned number
|
||||
# Path to a file that contains text to insert at the beginning of a file if
|
||||
# the file doesn't start with a C/C++ comment. If the inserted text contains
|
||||
# '$(filename)', that will be replaced with the current file's name.
|
||||
cmt_insert_file_header = "./buildroot/share/extras/file_header.h" # string
|
||||
cmt_insert_file_header = "./buildroot/share/uncrustify/file_header.h" # string
|
||||
|
||||
# Path to a file that contains text to insert at the end of a file if the
|
||||
# file doesn't end with a C/C++ comment. If the inserted text contains
|
||||
|
@ -74,7 +74,7 @@ opt_set MOTHERBOARD BOARD_BTT_SKR_V1_4 SERIAL_PORT -1 \
|
||||
Z_STEPPER_ALIGN_XY '{{10,110},{200,110}}' \
|
||||
Z_STEPPER_ALIGN_ITERATIONS 10 DEFAULT_STEPPER_TIMEOUT_SEC 0 \
|
||||
SLOWDOWN_DIVISOR 16 SDCARD_CONNECTION ONBOARD BLOCK_BUFFER_SIZE 64 \
|
||||
CHOPPER_TIMING CHOPPER_DEFAULT_24V MMU2_SERIAL_PORT 0
|
||||
CHOPPER_TIMING CHOPPER_DEFAULT_24V MMU_SERIAL_PORT 0
|
||||
opt_enable PIDTEMPBED S_CURVE_ACCELERATION \
|
||||
USE_PROBE_FOR_Z_HOMING BLTOUCH FILAMENT_RUNOUT_SENSOR \
|
||||
AUTO_BED_LEVELING_BILINEAR RESTORE_LEVELING_AFTER_G28 \
|
||||
@ -89,7 +89,7 @@ opt_enable PIDTEMPBED S_CURVE_ACCELERATION \
|
||||
DOUBLECLICK_FOR_Z_BABYSTEPPING BABYSTEP_DISPLAY_TOTAL LIN_ADVANCE \
|
||||
BEZIER_CURVE_SUPPORT EMERGENCY_PARSER ADVANCED_PAUSE_FEATURE \
|
||||
TMC_DEBUG HOST_ACTION_COMMANDS HOST_PAUSE_M76 HOST_PROMPT_SUPPORT \
|
||||
HOST_STATUS_NOTIFICATIONS MMU2_DEBUG
|
||||
HOST_STATUS_NOTIFICATIONS MMU_DEBUG
|
||||
opt_disable Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN FILAMENT_LOAD_UNLOAD_GCODES \
|
||||
PARK_HEAD_ON_PAUSE
|
||||
exec_test $1 $2 "BigTreeTech SKR 1.4 | MMU2" "$3"
|
||||
|
@ -79,7 +79,7 @@ opt_set MOTHERBOARD BOARD_BTT_SKR_V1_4_TURBO SERIAL_PORT -1 \
|
||||
Z_STEPPER_ALIGN_XY '{{10,110},{200,110}}' \
|
||||
Z_STEPPER_ALIGN_ITERATIONS 10 DEFAULT_STEPPER_TIMEOUT_SEC 0 \
|
||||
SLOWDOWN_DIVISOR 16 SDCARD_CONNECTION ONBOARD BLOCK_BUFFER_SIZE 64 \
|
||||
CHOPPER_TIMING CHOPPER_DEFAULT_24V MMU2_SERIAL_PORT 0 \
|
||||
CHOPPER_TIMING CHOPPER_DEFAULT_24V MMU_SERIAL_PORT 0 \
|
||||
Z_MIN_ENDSTOP_HIT_STATE HIGH
|
||||
opt_enable PIDTEMPBED S_CURVE_ACCELERATION \
|
||||
USE_PROBE_FOR_Z_HOMING BLTOUCH FILAMENT_RUNOUT_SENSOR \
|
||||
@ -95,6 +95,6 @@ opt_enable PIDTEMPBED S_CURVE_ACCELERATION \
|
||||
DOUBLECLICK_FOR_Z_BABYSTEPPING BABYSTEP_DISPLAY_TOTAL LIN_ADVANCE \
|
||||
BEZIER_CURVE_SUPPORT EMERGENCY_PARSER ADVANCED_PAUSE_FEATURE \
|
||||
TMC_DEBUG HOST_ACTION_COMMANDS HOST_PAUSE_M76 HOST_PROMPT_SUPPORT HOST_STATUS_NOTIFICATIONS \
|
||||
MMU_SPOOL_JOIN_CONSUMES_ALL_FILAMENT MMU_MENUS MMU2_DEBUG
|
||||
MMU3_SPOOL_JOIN_CONSUMES_ALL_FILAMENT MMU_MENUS MMU_DEBUG
|
||||
opt_disable Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN FILAMENT_LOAD_UNLOAD_GCODES PARK_HEAD_ON_PAUSE
|
||||
exec_test $1 $2 "BigTreeTech SKR 1.4 Turbo | MMU3" "$3"
|
||||
|
@ -37,7 +37,7 @@ opt_set MOTHERBOARD BOARD_BTT_SKR_V3_0_EZ SERIAL_PORT -1 \
|
||||
Z_STEPPER_ALIGN_XY '{{10,110},{200,110}}' \
|
||||
Z_STEPPER_ALIGN_ITERATIONS 10 DEFAULT_STEPPER_TIMEOUT_SEC 0 \
|
||||
SLOWDOWN_DIVISOR 16 SDCARD_CONNECTION ONBOARD BLOCK_BUFFER_SIZE 64 \
|
||||
CHOPPER_TIMING CHOPPER_DEFAULT_24V MMU2_SERIAL_PORT 2
|
||||
CHOPPER_TIMING CHOPPER_DEFAULT_24V MMU_SERIAL_PORT 2
|
||||
opt_enable PIDTEMPBED ENDSTOP_INTERRUPTS_FEATURE S_CURVE_ACCELERATION \
|
||||
USE_PROBE_FOR_Z_HOMING BLTOUCH FILAMENT_RUNOUT_SENSOR \
|
||||
AUTO_BED_LEVELING_BILINEAR RESTORE_LEVELING_AFTER_G28 \
|
||||
@ -52,7 +52,7 @@ opt_enable PIDTEMPBED ENDSTOP_INTERRUPTS_FEATURE S_CURVE_ACCELERATION \
|
||||
DOUBLECLICK_FOR_Z_BABYSTEPPING BABYSTEP_DISPLAY_TOTAL LIN_ADVANCE \
|
||||
BEZIER_CURVE_SUPPORT EMERGENCY_PARSER ADVANCED_PAUSE_FEATURE \
|
||||
TMC_DEBUG HOST_ACTION_COMMANDS HOST_PAUSE_M76 HOST_PROMPT_SUPPORT HOST_STATUS_NOTIFICATIONS \
|
||||
MMU2_DEBUG
|
||||
MMU_DEBUG
|
||||
opt_disable Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN FILAMENT_LOAD_UNLOAD_GCODES PARK_HEAD_ON_PAUSE
|
||||
exec_test $1 $2 "BigTreeTech SKR 3 EZ | MMU2" "$3"
|
||||
|
||||
@ -71,7 +71,7 @@ opt_set MOTHERBOARD BOARD_BTT_SKR_V3_0_EZ SERIAL_PORT -1 \
|
||||
Z_STEPPER_ALIGN_XY '{{10,110},{200,110}}' \
|
||||
Z_STEPPER_ALIGN_ITERATIONS 10 DEFAULT_STEPPER_TIMEOUT_SEC 0 \
|
||||
SLOWDOWN_DIVISOR 16 SDCARD_CONNECTION ONBOARD BLOCK_BUFFER_SIZE 64 \
|
||||
CHOPPER_TIMING CHOPPER_DEFAULT_24V MMU2_SERIAL_PORT 2
|
||||
CHOPPER_TIMING CHOPPER_DEFAULT_24V MMU_SERIAL_PORT 2
|
||||
opt_enable PIDTEMPBED ENDSTOP_INTERRUPTS_FEATURE S_CURVE_ACCELERATION \
|
||||
USE_PROBE_FOR_Z_HOMING BLTOUCH FILAMENT_RUNOUT_SENSOR \
|
||||
AUTO_BED_LEVELING_BILINEAR RESTORE_LEVELING_AFTER_G28 \
|
||||
@ -86,6 +86,6 @@ opt_enable PIDTEMPBED ENDSTOP_INTERRUPTS_FEATURE S_CURVE_ACCELERATION \
|
||||
DOUBLECLICK_FOR_Z_BABYSTEPPING BABYSTEP_DISPLAY_TOTAL LIN_ADVANCE \
|
||||
BEZIER_CURVE_SUPPORT EMERGENCY_PARSER ADVANCED_PAUSE_FEATURE \
|
||||
TMC_DEBUG HOST_ACTION_COMMANDS HOST_PAUSE_M76 HOST_PROMPT_SUPPORT HOST_STATUS_NOTIFICATIONS \
|
||||
MMU_MENUS MMU_SPOOL_JOIN_CONSUMES_ALL_FILAMENT MMU2_DEBUG
|
||||
MMU_MENUS MMU3_SPOOL_JOIN_CONSUMES_ALL_FILAMENT MMU_DEBUG
|
||||
opt_disable Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN FILAMENT_LOAD_UNLOAD_GCODES PARK_HEAD_ON_PAUSE
|
||||
exec_test $1 $2 "BigTreeTech SKR 3 EZ | MMU3" "$3"
|
||||
|
@ -79,7 +79,7 @@ exec_test $1 $2 "Rambo heated bed only" "$3"
|
||||
#
|
||||
restore_configs
|
||||
opt_set MOTHERBOARD BOARD_RAMBO EXTRUDERS 5 MMU_MODEL PRUSA_MMU2
|
||||
opt_enable REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER NOZZLE_PARK_FEATURE ADVANCED_PAUSE_FEATURE EMERGENCY_PARSER MMU2_DEBUG
|
||||
opt_enable REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER NOZZLE_PARK_FEATURE ADVANCED_PAUSE_FEATURE EMERGENCY_PARSER MMU_DEBUG
|
||||
exec_test $1 $2 "Rambo with PRUSA_MMU2 " "$3"
|
||||
|
||||
#
|
||||
@ -87,7 +87,7 @@ exec_test $1 $2 "Rambo with PRUSA_MMU2 " "$3"
|
||||
#
|
||||
restore_configs
|
||||
opt_set MOTHERBOARD BOARD_RAMBO EXTRUDERS 5 MMU_MODEL PRUSA_MMU3
|
||||
opt_enable REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER FILAMENT_RUNOUT_SENSOR NOZZLE_PARK_FEATURE ADVANCED_PAUSE_FEATURE EMERGENCY_PARSER MMU_MENUS MMU2_DEBUG EEPROM_SETTINGS
|
||||
opt_enable REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER FILAMENT_RUNOUT_SENSOR NOZZLE_PARK_FEATURE ADVANCED_PAUSE_FEATURE EMERGENCY_PARSER MMU_MENUS MMU_DEBUG EEPROM_SETTINGS
|
||||
exec_test $1 $2 "Rambo with PRUSA_MMU3 " "$3"
|
||||
|
||||
#
|
||||
|
Loading…
Reference in New Issue
Block a user