From 6eeea402e4564dcdcd4bce24983ae1677894217b Mon Sep 17 00:00:00 2001 From: PavelSindler Date: Fri, 1 Sep 2017 14:06:54 +0200 Subject: [PATCH 1/7] initial --- Firmware/Marlin_main.cpp | 13 +++++++++---- Firmware/pins.h | 2 ++ Firmware/ultralcd.cpp | 10 +++++++--- 3 files changed, 18 insertions(+), 7 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index b1f2a5f55..a6c5f9699 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -4775,8 +4775,12 @@ Sigma_Exit: { if(code_seen('S')) { + saved_feedmultiply = feedmultiply; feedmultiply = code_value() ; } + if (code_seen('R')) { //restore + feedmultiply = saved_feedmultiply; + } } break; case 221: // M221 S- set extrude factor override percentage @@ -5659,6 +5663,7 @@ case 404: //M404 Enter the nominal filament width (3mm, 1.75mm ) N<3.0> or disp pinMode(E_MUX0_PIN, OUTPUT); pinMode(E_MUX1_PIN, OUTPUT); + pinMode(E_MUX2_PIN, OUTPUT); delay(100); SERIAL_ECHO_START; @@ -5668,22 +5673,22 @@ case 404: //M404 Enter the nominal filament width (3mm, 1.75mm ) N<3.0> or disp case 1: WRITE(E_MUX0_PIN, HIGH); WRITE(E_MUX1_PIN, LOW); - + WRITE(E_MUX2_PIN, LOW); break; case 2: WRITE(E_MUX0_PIN, LOW); WRITE(E_MUX1_PIN, HIGH); - + WRITE(E_MUX2_PIN, LOW); break; case 3: WRITE(E_MUX0_PIN, HIGH); WRITE(E_MUX1_PIN, HIGH); - + WRITE(E_MUX2_PIN, LOW); break; default: WRITE(E_MUX0_PIN, LOW); WRITE(E_MUX1_PIN, LOW); - + WRITE(E_MUX2_PIN, LOW); break; } delay(100); diff --git a/Firmware/pins.h b/Firmware/pins.h index 68375db79..9a979fdd3 100644 --- a/Firmware/pins.h +++ b/Firmware/pins.h @@ -67,6 +67,7 @@ #define E_MUX0_PIN 17 #define E_MUX1_PIN 16 +#define E_MUX2_PIN 84 #endif @@ -228,6 +229,7 @@ #define E_MUX0_PIN 17 #define E_MUX1_PIN 16 +#define E_MUX2_PIN 84 #endif diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index b0fd89638..a84df75d1 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -3264,26 +3264,29 @@ void change_extr(int extr) { //switches multiplexer for extruders pinMode(E_MUX0_PIN, OUTPUT); pinMode(E_MUX1_PIN, OUTPUT); + pinMode(E_MUX2_PIN, OUTPUT); switch (extr) { case 1: WRITE(E_MUX0_PIN, HIGH); WRITE(E_MUX1_PIN, LOW); - + WRITE(E_MUX2_PIN, LOW); break; case 2: WRITE(E_MUX0_PIN, LOW); WRITE(E_MUX1_PIN, HIGH); - + WRITE(E_MUX2_PIN, LOW); break; case 3: WRITE(E_MUX0_PIN, HIGH); WRITE(E_MUX1_PIN, HIGH); + WRITE(E_MUX2_PIN, LOW); break; default: WRITE(E_MUX0_PIN, LOW); WRITE(E_MUX1_PIN, LOW); + WRITE(E_MUX2_PIN, LOW); break; } @@ -3291,7 +3294,8 @@ void change_extr(int extr) { //switches multiplexer for extruders } static int get_ext_nr() { //reads multiplexer input pins and return current extruder number (counted from 0) - return(2 * READ(E_MUX1_PIN) + READ(E_MUX0_PIN)); + return(4 * READ(E_MUX2_PIN) + 2 * READ(E_MUX1_PIN) + READ(E_MUX0_PIN)); + //return(2 * READ(E_MUX1_PIN) + READ(E_MUX0_PIN)); } From 5017cdeaa4d64fafffb7c4dc725be8eb16e6f489 Mon Sep 17 00:00:00 2001 From: PavelSindler Date: Mon, 4 Sep 2017 11:26:18 +0200 Subject: [PATCH 2/7] farm number and farm mode initialization duplicity removed, prepare for shipping typo (reseting farm mode) --- Firmware/Marlin_main.cpp | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index a6c5f9699..1915f14fc 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -948,7 +948,7 @@ void factory_reset(char level, bool quiet) // Force the "Follow calibration flow" message at the next boot up. calibration_status_store(CALIBRATION_STATUS_Z_CALIBRATION); farm_no = 0; - farm_mode == false; + farm_mode = false; eeprom_update_byte((uint8_t*)EEPROM_FARM_MODE, farm_mode); EEPROM_save_B(EEPROM_FARM_NUMBER, &farm_no); @@ -1011,7 +1011,7 @@ void setup() setup_powerhold(); farm_mode = eeprom_read_byte((uint8_t*)EEPROM_FARM_MODE); EEPROM_read_B(EEPROM_FARM_NUMBER, &farm_no); - //if ((farm_mode == 0xFF && farm_no == 0) || (farm_no == 0xFFFF)) farm_mode = false; //if farm_mode has not been stored to eeprom yet and farm number is set to zero or EEPROM is fresh, deactivate farm mode + if ((farm_mode == 0xFF && farm_no == 0) || (farm_no == 0xFFFF)) farm_mode = false; //if farm_mode has not been stored to eeprom yet and farm number is set to zero or EEPROM is fresh, deactivate farm mode if (farm_no == 0xFFFF) farm_no = 0; if (farm_mode) { @@ -1168,16 +1168,6 @@ void setup() #if defined(Z_AXIS_ALWAYS_ON) enable_z(); #endif - farm_mode = eeprom_read_byte((uint8_t*)EEPROM_FARM_MODE); - EEPROM_read_B(EEPROM_FARM_NUMBER, &farm_no); - if ((farm_mode == 0xFF && farm_no == 0) || (farm_no == 0xFFFF)) farm_mode = false; //if farm_mode has not been stored to eeprom yet and farm number is set to zero or EEPROM is fresh, deactivate farm mode - if (farm_no == 0xFFFF) farm_no = 0; - if (farm_mode) - { - prusa_statistics(8); - no_response = true; //we need confirmation by recieving PRUSA thx - important_status = 8; - } // Enable Toshiba FlashAir SD card / WiFi enahanced card. card.ToshibaFlashAir_enable(eeprom_read_byte((unsigned char*)EEPROM_TOSHIBA_FLASH_AIR_COMPATIBLITY) == 1); From bf2c5ae3101360f670e0b33a6ed7f8cf2825edc2 Mon Sep 17 00:00:00 2001 From: PavelSindler Date: Mon, 4 Sep 2017 18:17:28 +0200 Subject: [PATCH 3/7] info on serial added --- Firmware/ultralcd.cpp | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index a84df75d1..53907e960 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -3268,32 +3268,44 @@ void change_extr(int extr) { //switches multiplexer for extruders switch (extr) { case 1: + SERIAL_ECHOPGM("extr2"); WRITE(E_MUX0_PIN, HIGH); WRITE(E_MUX1_PIN, LOW); WRITE(E_MUX2_PIN, LOW); break; case 2: + SERIAL_ECHOPGM("extr3"); WRITE(E_MUX0_PIN, LOW); WRITE(E_MUX1_PIN, HIGH); WRITE(E_MUX2_PIN, LOW); break; case 3: + SERIAL_ECHOPGM("extr4"); WRITE(E_MUX0_PIN, HIGH); WRITE(E_MUX1_PIN, HIGH); WRITE(E_MUX2_PIN, LOW); break; default: + SERIAL_ECHOPGM("extr1"); WRITE(E_MUX0_PIN, LOW); WRITE(E_MUX1_PIN, LOW); WRITE(E_MUX2_PIN, LOW); break; - } + } delay(100); + get_ext_nr(); } static int get_ext_nr() { //reads multiplexer input pins and return current extruder number (counted from 0) + SERIAL_ECHOPGM("E_MUX0_PIN:"); + READ(E_MUX0_PIN) ? SERIAL_ECHOLNPGM(" true") : SERIAL_ECHOLNPGM(" false"); + SERIAL_ECHOPGM("E_MUX1_PIN:"); + READ(E_MUX1_PIN) ? SERIAL_ECHOLNPGM(" true") : SERIAL_ECHOLNPGM(" false"); + SERIAL_ECHOPGM("E_MUX2_PIN:"); + READ(E_MUX2_PIN) ? SERIAL_ECHOLNPGM(" true") : SERIAL_ECHOLNPGM(" false"); + return(4 * READ(E_MUX2_PIN) + 2 * READ(E_MUX1_PIN) + READ(E_MUX0_PIN)); //return(2 * READ(E_MUX1_PIN) + READ(E_MUX0_PIN)); } From 4af075a316a09d72a2f1b89dc03b1d558e250754 Mon Sep 17 00:00:00 2001 From: PavelSindler Date: Thu, 14 Sep 2017 19:55:03 +0200 Subject: [PATCH 4/7] fixed typos, removed M84 pin usage for MM --- Firmware/Marlin_main.cpp | 5 ---- Firmware/pins.h | 2 -- Firmware/ultralcd.cpp | 25 +++---------------- .../ultralcd_implementation_hitachi_HD44780.h | 1 + 4 files changed, 5 insertions(+), 28 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 8a938cefa..4a25372c7 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -5803,7 +5803,6 @@ case 404: //M404 Enter the nominal filament width (3mm, 1.75mm ) N<3.0> or disp pinMode(E_MUX0_PIN, OUTPUT); pinMode(E_MUX1_PIN, OUTPUT); - pinMode(E_MUX2_PIN, OUTPUT); delay(100); SERIAL_ECHO_START; @@ -5813,22 +5812,18 @@ case 404: //M404 Enter the nominal filament width (3mm, 1.75mm ) N<3.0> or disp case 1: WRITE(E_MUX0_PIN, HIGH); WRITE(E_MUX1_PIN, LOW); - WRITE(E_MUX2_PIN, LOW); break; case 2: WRITE(E_MUX0_PIN, LOW); WRITE(E_MUX1_PIN, HIGH); - WRITE(E_MUX2_PIN, LOW); break; case 3: WRITE(E_MUX0_PIN, HIGH); WRITE(E_MUX1_PIN, HIGH); - WRITE(E_MUX2_PIN, LOW); break; default: WRITE(E_MUX0_PIN, LOW); WRITE(E_MUX1_PIN, LOW); - WRITE(E_MUX2_PIN, LOW); break; } delay(100); diff --git a/Firmware/pins.h b/Firmware/pins.h index 9a979fdd3..68375db79 100644 --- a/Firmware/pins.h +++ b/Firmware/pins.h @@ -67,7 +67,6 @@ #define E_MUX0_PIN 17 #define E_MUX1_PIN 16 -#define E_MUX2_PIN 84 #endif @@ -229,7 +228,6 @@ #define E_MUX0_PIN 17 #define E_MUX1_PIN 16 -#define E_MUX2_PIN 84 #endif diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 0c7e4e178..a2d43ae3a 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -620,9 +620,9 @@ void lcd_commands() { lcd_timeoutToStatus = millis() + LCD_TIMEOUT_TO_STATUS; enquecommand_P(PSTR("G1 Z0.250 F7200.000")); - enquecommand_P(PSTR("G1 X50.0 E80.0 F1000.0)); - nquecommand_P(PSTR("G1 X160.0 E20.0 F1000.0)); - enquecommand_P(PSTR("G1 Z0.200 F7200.000)); + enquecommand_P(PSTR("G1 X50.0 E80.0 F1000.0")); + enquecommand_P(PSTR("G1 X160.0 E20.0 F1000.0")); + enquecommand_P(PSTR("G1 Z0.200 F7200.000")); enquecommand_P(PSTR("G1 X220.0 E13 F1000.0")); enquecommand_P(PSTR("G1 X240.0 E0 F1000.0")); enquecommand_P(PSTR("G92 E0.0")); @@ -3799,33 +3799,24 @@ void change_extr(int extr) { //switches multiplexer for extruders pinMode(E_MUX0_PIN, OUTPUT); pinMode(E_MUX1_PIN, OUTPUT); - pinMode(E_MUX2_PIN, OUTPUT); switch (extr) { case 1: - SERIAL_ECHOPGM("extr2"); WRITE(E_MUX0_PIN, HIGH); WRITE(E_MUX1_PIN, LOW); - WRITE(E_MUX2_PIN, LOW); break; case 2: - SERIAL_ECHOPGM("extr3"); WRITE(E_MUX0_PIN, LOW); WRITE(E_MUX1_PIN, HIGH); - WRITE(E_MUX2_PIN, LOW); break; case 3: - SERIAL_ECHOPGM("extr4"); WRITE(E_MUX0_PIN, HIGH); WRITE(E_MUX1_PIN, HIGH); - WRITE(E_MUX2_PIN, LOW); break; default: - SERIAL_ECHOPGM("extr1"); WRITE(E_MUX0_PIN, LOW); WRITE(E_MUX1_PIN, LOW); - WRITE(E_MUX2_PIN, LOW); break; } @@ -3834,15 +3825,7 @@ void change_extr(int extr) { //switches multiplexer for extruders } static int get_ext_nr() { //reads multiplexer input pins and return current extruder number (counted from 0) - SERIAL_ECHOPGM("E_MUX0_PIN:"); - READ(E_MUX0_PIN) ? SERIAL_ECHOLNPGM(" true") : SERIAL_ECHOLNPGM(" false"); - SERIAL_ECHOPGM("E_MUX1_PIN:"); - READ(E_MUX1_PIN) ? SERIAL_ECHOLNPGM(" true") : SERIAL_ECHOLNPGM(" false"); - SERIAL_ECHOPGM("E_MUX2_PIN:"); - READ(E_MUX2_PIN) ? SERIAL_ECHOLNPGM(" true") : SERIAL_ECHOLNPGM(" false"); - - return(4 * READ(E_MUX2_PIN) + 2 * READ(E_MUX1_PIN) + READ(E_MUX0_PIN)); - //return(2 * READ(E_MUX1_PIN) + READ(E_MUX0_PIN)); + return(2 * READ(E_MUX1_PIN) + READ(E_MUX0_PIN)); } diff --git a/Firmware/ultralcd_implementation_hitachi_HD44780.h b/Firmware/ultralcd_implementation_hitachi_HD44780.h index f880da88c..4f91947cc 100644 --- a/Firmware/ultralcd_implementation_hitachi_HD44780.h +++ b/Firmware/ultralcd_implementation_hitachi_HD44780.h @@ -498,6 +498,7 @@ void lcd_set_custom_characters_nextpage() B10110, B11100, B01000, + B00000, B00000 }; From 4960127240f7fe2b5038248e6ba9e0d3f29b9b6d Mon Sep 17 00:00:00 2001 From: PavelSindler Date: Thu, 14 Sep 2017 20:33:25 +0200 Subject: [PATCH 5/7] special variable for saving/restoring feedmultiply using M220 --- Firmware/Marlin_main.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 4a25372c7..00490e2c9 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -498,6 +498,8 @@ unsigned long chdkHigh = 0; boolean chdkActive = false; #endif +static int saved_feedmultiply_mm = 100; + //=========================================================================== //=============================Routines====================================== //=========================================================================== @@ -4938,11 +4940,11 @@ Sigma_Exit: { if(code_seen('S')) { - saved_feedmultiply = feedmultiply; + saved_feedmultiply_mm = feedmultiply; feedmultiply = code_value() ; } - if (code_seen('R')) { //restore - feedmultiply = saved_feedmultiply; + if (code_seen('R')) { //restore previous feedmultiply + feedmultiply = saved_feedmultiply_mm; } } break; From 376c6ad5a830a74fb8189a6fcdb964157ba340a9 Mon Sep 17 00:00:00 2001 From: PavelSindler Date: Fri, 15 Sep 2017 11:12:41 +0200 Subject: [PATCH 6/7] removed redundant code --- Firmware/ultralcd.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index a2d43ae3a..7c5b98708 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -3821,7 +3821,6 @@ void change_extr(int extr) { //switches multiplexer for extruders break; } delay(100); - get_ext_nr(); } static int get_ext_nr() { //reads multiplexer input pins and return current extruder number (counted from 0) From dc7b1e3f8e7aa3f3b5f73f8510dbf334ecce2261 Mon Sep 17 00:00:00 2001 From: PavelSindler Date: Fri, 15 Sep 2017 11:29:35 +0200 Subject: [PATCH 7/7] changed M220 --- Firmware/Marlin_main.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 00490e2c9..f7ab5dbc8 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -4936,11 +4936,15 @@ Sigma_Exit: SERIAL_ECHOLN(""); }break; #endif + case 220: // M220 S- set speed factor override percentage { - if(code_seen('S')) - { + if (code_seen('B')) //backup current speed factor + { saved_feedmultiply_mm = feedmultiply; + } + if(code_seen('S')) + { feedmultiply = code_value() ; } if (code_seen('R')) { //restore previous feedmultiply