diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index af98be4d1bad..fccdf9ced3aa 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -1595,6 +1595,10 @@ // Enable for a purge/clean station that's always at the gantry height (thus no Z move) //#define NOZZLE_CLEAN_NO_Z + + // Explicit wipe G-code script applies to a G12 with no arguments. + //#define WIPE_SEQUENCE_COMMANDS "G1 X-17 Y25 Z10 F4000\nG1 Z1\nM114\nG1 X-17 Y25\nG1 X-17 Y95\nG1 X-17 Y25\nG1 X-17 Y95\nG1 X-17 Y25\nG1 X-17 Y95\nG1 X-17 Y25\nG1 X-17 Y95\nG1 X-17 Y25\nG1 X-17 Y95\nG1 X-17 Y25\nG1 X-17 Y95\nG1 Z15\nM400\nG0 X-10.0 Y-9.0" + #endif /** diff --git a/Marlin/src/gcode/feature/clean/G12.cpp b/Marlin/src/gcode/feature/clean/G12.cpp index bdfaf38a06cf..6337665d4cf2 100644 --- a/Marlin/src/gcode/feature/clean/G12.cpp +++ b/Marlin/src/gcode/feature/clean/G12.cpp @@ -47,6 +47,13 @@ void GcodeSuite::G12() { // Don't allow nozzle cleaning without homing first if (axis_unhomed_error()) return; + #ifdef WIPE_SEQUENCE_COMMANDS + if (!parser.seen_any()) { + gcode.process_subcommands_now_P(PSTR(WIPE_SEQUENCE_COMMANDS)); + return; + } + #endif + const uint8_t pattern = parser.ushortval('P', 0), strokes = parser.ushortval('S', NOZZLE_CLEAN_STROKES), objects = parser.ushortval('T', NOZZLE_CLEAN_TRIANGLES); diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h index b5ce78172269..48f7b5a3aafe 100644 --- a/Marlin/src/inc/Version.h +++ b/Marlin/src/inc/Version.h @@ -42,7 +42,7 @@ * version was tagged. */ #ifndef STRING_DISTRIBUTION_DATE - #define STRING_DISTRIBUTION_DATE "2020-07-21" + #define STRING_DISTRIBUTION_DATE "2020-07-22" #endif /** diff --git a/Marlin/src/lcd/extui/lib/anycubic/anycubic_serial.cpp b/Marlin/src/lcd/extui/lib/anycubic/anycubic_serial.cpp index 3fad103bb415..fd5f2691bdfb 100644 --- a/Marlin/src/lcd/extui/lib/anycubic/anycubic_serial.cpp +++ b/Marlin/src/lcd/extui/lib/anycubic/anycubic_serial.cpp @@ -29,10 +29,10 @@ #if ENABLED(ANYCUBIC_TFT_MODEL) -#include "Arduino.h" +#include -// this next line disables the entire HardwareSerial.cpp, -// so I can support AtTiny series and other chips without a UART +// This next line disables the entire anycubic_serial.cpp, +// to support AtTiny series and other chips without a UART #ifdef UBRR3H #include "anycubic_serial.h" @@ -59,10 +59,8 @@ struct ring_buffer { volatile unsigned int tail; }; -#ifdef UBRR3H - ring_buffer rx_buffer_ajg = { { 0 }, 0, 0 }; - ring_buffer tx_buffer_ajg = { { 0 }, 0, 0 }; -#endif +ring_buffer rx_buffer_ajg = { { 0 }, 0, 0 }; +ring_buffer tx_buffer_ajg = { { 0 }, 0, 0 }; inline void store_char(unsigned char c, ring_buffer *buffer) { int i = (unsigned int)(buffer->head + 1) % SERIAL_BUFFER_SIZE; @@ -286,9 +284,7 @@ AnycubicSerialClass::operator bool() { // Preinstantiate Objects ////////////////////////////////////////////////////// -#ifdef UBRR3H - AnycubicSerialClass AnycubicSerial(&rx_buffer_ajg, &tx_buffer_ajg, &UBRR3H, &UBRR3L, &UCSR3A, &UCSR3B, &UCSR3C, &UDR3, RXEN3, TXEN3, RXCIE3, UDRIE3, U2X3); -#endif +AnycubicSerialClass AnycubicSerial(&rx_buffer_ajg, &tx_buffer_ajg, &UBRR3H, &UBRR3L, &UCSR3A, &UCSR3B, &UCSR3C, &UDR3, RXEN3, TXEN3, RXCIE3, UDRIE3, U2X3); #endif // UBRR3H #endif // ANYCUBIC_TFT_MODEL diff --git a/Marlin/src/lcd/extui/lib/anycubic/anycubic_serial.h b/Marlin/src/lcd/extui/lib/anycubic/anycubic_serial.h index a568a50c9887..ed4c19b63e88 100644 --- a/Marlin/src/lcd/extui/lib/anycubic/anycubic_serial.h +++ b/Marlin/src/lcd/extui/lib/anycubic/anycubic_serial.h @@ -103,15 +103,15 @@ class AnycubicSerialClass : public Stream { extern void serialEventRun(void) __attribute__((weak)); #define ANYCUBIC_SERIAL_PROTOCOL(x) (AnycubicSerial.print(x)) -#define ANYCUBIC_SERIAL_PROTOCOL_F(x,y) (AnycubicSerial.print(x,y)) +#define ANYCUBIC_SERIAL_PROTOCOL_F(x,y) (AnycubicSerial.print(x, y)) #define ANYCUBIC_SERIAL_PROTOCOLPGM(x) (AnycubicSerialprintPGM(PSTR(x))) -#define ANYCUBIC_SERIAL_(x) (AnycubicSerial.print(x),AnycubicSerial.write('\n')) -#define ANYCUBIC_SERIAL_PROTOCOLLN(x) (AnycubicSerial.print(x),AnycubicSerial.write('\r'),AnycubicSerial.write('\n')) -#define ANYCUBIC_SERIAL_PROTOCOLLNPGM(x) (AnycubicSerialprintPGM(PSTR(x)),AnycubicSerial.write('\r'),AnycubicSerial.write('\n')) +#define ANYCUBIC_SERIAL_(x) (AnycubicSerial.print(x), AnycubicSerial.write('\n')) +#define ANYCUBIC_SERIAL_PROTOCOLLN(x) (AnycubicSerial.print(x), AnycubicSerial.write('\r'), AnycubicSerial.write('\n')) +#define ANYCUBIC_SERIAL_PROTOCOLLNPGM(x) (AnycubicSerialprintPGM(PSTR(x)), AnycubicSerial.write('\r'), AnycubicSerial.write('\n')) -#define ANYCUBIC_SERIAL_START() (AnycubicSerial.write('\r'),AnycubicSerial.write('\n')) -#define ANYCUBIC_SERIAL_CMD_SEND(x) (AnycubicSerialprintPGM(PSTR(x)),AnycubicSerial.write('\r'),AnycubicSerial.write('\n')) -#define ANYCUBIC_SERIAL_ENTER() (AnycubicSerial.write('\r'),AnycubicSerial.write('\n')) +#define ANYCUBIC_SERIAL_START() (AnycubicSerial.write('\r'), AnycubicSerial.write('\n')) +#define ANYCUBIC_SERIAL_CMD_SEND(x) (AnycubicSerialprintPGM(PSTR(x)), AnycubicSerial.write('\r'), AnycubicSerial.write('\n')) +#define ANYCUBIC_SERIAL_ENTER() (AnycubicSerial.write('\r'), AnycubicSerial.write('\n')) #define ANYCUBIC_SERIAL_SPACE() (AnycubicSerial.write(' ')) const char newErr[] PROGMEM = "ERR "; @@ -130,14 +130,16 @@ const char newSucc[] PROGMEM = "OK"; #define ANYCUBIC_SERIAL_ECHOPGM(x) ANYCUBIC_SERIAL_PROTOCOLPGM(x) #define ANYCUBIC_SERIAL_ECHO(x) ANYCUBIC_SERIAL_PROTOCOL(x) -FORCE_INLINE void AnycubicSerialprintPGM(const char *str) { - char ch = pgm_read_byte(str); - while (ch) { - AnycubicSerialClass::write(ch); - ch = pgm_read_byte(++str); - } -} - #ifdef UBRR3H + extern AnycubicSerialClass AnycubicSerial; + + FORCE_INLINE void AnycubicSerialprintPGM(const char *str) { + char ch = pgm_read_byte(str); + while (ch) { + AnycubicSerial.write(ch); + ch = pgm_read_byte(++str); + } + } + #endif diff --git a/Marlin/src/lcd/language/language_es.h b/Marlin/src/lcd/language/language_es.h index 0af31f9a3c61..fbd6981f3ec8 100644 --- a/Marlin/src/lcd/language/language_es.h +++ b/Marlin/src/lcd/language/language_es.h @@ -70,21 +70,21 @@ namespace Language_es { PROGMEM Language_Str MSG_HOME_OFFSETS_APPLIED = _UxGT("Desfase aplicada"); PROGMEM Language_Str MSG_SET_ORIGIN = _UxGT("Establecer origen"); #if PREHEAT_COUNT - PROGMEM Language_Str MSG_PREHEAT_1 = _UxGT("Precal. $"); - PROGMEM Language_Str MSG_PREHEAT_1_H = _UxGT("Precal. $ ~"); - PROGMEM Language_Str MSG_PREHEAT_1_END = _UxGT("Precal. $ Fusor"); - PROGMEM Language_Str MSG_PREHEAT_1_END_E = _UxGT("Precal. $ Fusor ~"); - PROGMEM Language_Str MSG_PREHEAT_1_ALL = _UxGT("Precal. $ Todo"); - PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY = _UxGT("Precal. $ Cama"); - PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS = _UxGT("Precal. $ Ajuste"); + PROGMEM Language_Str MSG_PREHEAT_1 = _UxGT("Precal. ") PREHEAT_1_LABEL; + PROGMEM Language_Str MSG_PREHEAT_1_H = _UxGT("Precal. ") PREHEAT_1_LABEL " ~"; + PROGMEM Language_Str MSG_PREHEAT_1_END = _UxGT("Precal. ") PREHEAT_1_LABEL _UxGT(" Fusor"); + PROGMEM Language_Str MSG_PREHEAT_1_END_E = _UxGT("Precal. ") PREHEAT_1_LABEL _UxGT(" Fusor ~"); + PROGMEM Language_Str MSG_PREHEAT_1_ALL = _UxGT("Precal. ") PREHEAT_1_LABEL _UxGT(" Todo"); + PROGMEM Language_Str MSG_PREHEAT_1_BEDONLY = _UxGT("Precal. ") PREHEAT_1_LABEL _UxGT(" Cama"); + PROGMEM Language_Str MSG_PREHEAT_1_SETTINGS = _UxGT("Precal. ") PREHEAT_1_LABEL _UxGT(" Ajuste"); - PROGMEM Language_Str MSG_PREHEAT_M = _UxGT("Precal. ") PREHEAT_1_LABEL; - PROGMEM Language_Str MSG_PREHEAT_M_H = _UxGT("Precal. ") PREHEAT_1_LABEL " ~"; - PROGMEM Language_Str MSG_PREHEAT_M_END = _UxGT("Precal. ") PREHEAT_1_LABEL _UxGT(" Fusor"); - PROGMEM Language_Str MSG_PREHEAT_M_END_E = _UxGT("Precal. ") PREHEAT_1_LABEL _UxGT(" Fusor ~"); - PROGMEM Language_Str MSG_PREHEAT_M_ALL = _UxGT("Precal. ") PREHEAT_1_LABEL _UxGT(" Todo"); - PROGMEM Language_Str MSG_PREHEAT_M_BEDONLY = _UxGT("Precal. ") PREHEAT_1_LABEL _UxGT(" Cama"); - PROGMEM Language_Str MSG_PREHEAT_M_SETTINGS = _UxGT("Precal. ") PREHEAT_1_LABEL _UxGT(" Ajuste"); + PROGMEM Language_Str MSG_PREHEAT_M = _UxGT("Precal. $"); + PROGMEM Language_Str MSG_PREHEAT_M_H = _UxGT("Precal. $ ~"); + PROGMEM Language_Str MSG_PREHEAT_M_END = _UxGT("Precal. $ Fusor"); + PROGMEM Language_Str MSG_PREHEAT_M_END_E = _UxGT("Precal. $ Fusor ~"); + PROGMEM Language_Str MSG_PREHEAT_M_ALL = _UxGT("Precal. $ Todo"); + PROGMEM Language_Str MSG_PREHEAT_M_BEDONLY = _UxGT("Precal. $ Cama"); + PROGMEM Language_Str MSG_PREHEAT_M_SETTINGS = _UxGT("Precal. $ Ajuste"); #endif PROGMEM Language_Str MSG_PREHEAT_CUSTOM = _UxGT("Precal. manual"); PROGMEM Language_Str MSG_COOLDOWN = _UxGT("Enfriar"); diff --git a/platformio.ini b/platformio.ini index c59f2790733a..cfbd5e5a1923 100644 --- a/platformio.ini +++ b/platformio.ini @@ -290,7 +290,8 @@ build_unflags = -std=gnu++11 src_filter = ${common.default_src_filter} + lib_deps = ${common.lib_deps} SoftwareSerialM - Adafruit_SPIFlash=https://github.com/adafruit/Adafruit_SPIFlash/archive/master.zip + Adafruit SPIFlash + SdFat - Adafruit Fork debug_tool = jlink #################################