From ffaf1b4f2219894c4b2caf70b24c7d3f8b6633d8 Mon Sep 17 00:00:00 2001 From: Chris Petersen Date: Thu, 9 Apr 2015 22:11:50 -0700 Subject: [PATCH 01/88] Add pin configuration for Brainwave Pro Copied from jcrocholl's contributions to the OpenBeamUSA Marlin fork --- Marlin/pins.h | 2 ++ Marlin/pins_BRAINWAVE_PRO.h | 63 +++++++++++++++++++++++++++++++++++++ 2 files changed, 65 insertions(+) create mode 100644 Marlin/pins_BRAINWAVE_PRO.h diff --git a/Marlin/pins.h b/Marlin/pins.h index e5af0af179..e45ba09dff 100644 --- a/Marlin/pins.h +++ b/Marlin/pins.h @@ -76,6 +76,8 @@ #include "pins_PRINTRBOARD.h" #elif MB(BRAINWAVE) #include "pins_BRAINWAVE.h" +#elif MB(BRAINWAVE_PRO) + #include "pins_BRAINWAVE_PRO.h" #elif MB(SAV_MKI) #include "pins_SAV_MKI.h" #elif MB(TEENSY2) diff --git a/Marlin/pins_BRAINWAVE_PRO.h b/Marlin/pins_BRAINWAVE_PRO.h new file mode 100644 index 0000000000..3744870467 --- /dev/null +++ b/Marlin/pins_BRAINWAVE_PRO.h @@ -0,0 +1,63 @@ +/** + * Brainwave Pro pin assignments (AT90USB186) + * + * Requires hardware bundle for Arduino: + * https://github.com/unrepentantgeek/brainwave-arduino + */ + +#ifndef __AVR_AT90USB1286__ + #error Oops! Make sure you have 'Brainwave Pro' selected from the 'Tools -> Boards' menu. +#endif + +#ifndef AT90USBxx_TEENSYPP_ASSIGNMENTS // use Teensyduino Teensy++2.0 pin assignments instead of Marlin alphabetical. + #error Uncomment #define AT90USBxx_TEENSYPP_ASSIGNMENTS in fastio.h for this config +#endif + +#define AT90USB 1286 // Disable MarlinSerial etc. + +#define X_STEP_PIN 33 +#define X_DIR_PIN 32 +#define X_ENABLE_PIN 11 +#define X_STOP_PIN 47 + +#define Y_STEP_PIN 31 +#define Y_DIR_PIN 30 +#define Y_ENABLE_PIN 8 +#define Y_STOP_PIN 18 + +#define Z_STEP_PIN 29 +#define Z_DIR_PIN 28 +#define Z_ENABLE_PIN 37 +#define Z_MAX_PIN 36 +#define Z_MIN_PIN 17 // Bed probe + +#define E0_STEP_PIN 35 +#define E0_DIR_PIN 34 +#define E0_ENABLE_PIN 13 + +#define HEATER_0_PIN 15 +#define HEATER_1_PIN -1 +#define HEATER_2_PIN -1 +#define HEATER_BED_PIN 14 // Bed +#define FAN_PIN 16 // Fan, PWM + +#define TEMP_0_PIN 2 // Extruder / Analog pin numbering +#define TEMP_1_PIN 1 // Spare / Analog pin numbering +#define TEMP_2_PIN -1 +#define TEMP_BED_PIN 0 // Bed / Analog pin numbering + +#define SDPOWER -1 +#define SDSS 20 +#define LED_PIN 19 +#define PS_ON_PIN -1 +#define KILL_PIN -1 +#define ALARM_PIN -1 +#define SDCARDDETECT 12 + +#ifndef SDSUPPORT +// these pins are defined in the SD library if building with SD support + #define SCK_PIN 21 + #define MISO_PIN 23 + #define MOSI_PIN 22 +#endif + From 0af5e3a04f48abe9c0972d3f7d95ce67d01f2d82 Mon Sep 17 00:00:00 2001 From: CONSULitAS Date: Wed, 15 Apr 2015 10:00:41 +0200 Subject: [PATCH 02/88] Example Configuration for K8200: comments/URL/readme Example Configuration for K8200 : comments/URL/readme example_configurations\K8200\Configuration.h: * add machine specific header * change STRING_URL to K8200 fork (@thinkyhead: What do you think?) example_configurations\K8200\readme.md: * updated documentation * added URLs and links --- Marlin/example_configurations/K8200/Configuration.h | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/Marlin/example_configurations/K8200/Configuration.h b/Marlin/example_configurations/K8200/Configuration.h index 1cde25fca3..6f47b972ff 100644 --- a/Marlin/example_configurations/K8200/Configuration.h +++ b/Marlin/example_configurations/K8200/Configuration.h @@ -1,4 +1,9 @@ -#ifndef CONFIGURATION_H +// Example configuration file for Vellemann K8200 +// tested on K8200 with VM8201 (Display) +// and Arduino 1.6.1 (Win) by @CONSULitAS, 2015-04-14 +// https://github.com/CONSULitAS/Marlin-K8200/archive/K8200_stable_2015-04-14.zip + +#ifndef CONFIGURATION_H #define CONFIGURATION_H #include "boards.h" @@ -41,7 +46,7 @@ Here are some standard links for getting your machine calibrated: // startup. Implementation of an idea by Prof Braino to inform user that any changes made to this // build by the user have been successfully uploaded into firmware. #define STRING_VERSION "1.0.3 dev" -#define STRING_URL "reprap.org" +#define STRING_URL "https://github.com/CONSULitAS/Marlin-K8200/" #define STRING_VERSION_CONFIG_H __DATE__ " " __TIME__ // build date and time #define STRING_CONFIG_H_AUTHOR "(K8200, CONSULitAS)" // Who made the changes. #define STRING_SPLASH_LINE1 "v" STRING_VERSION // will be shown during bootup in line 1 From 1de9b568dbb8f489ce2d8afd76db4bad850d1434 Mon Sep 17 00:00:00 2001 From: CONSULitAS Date: Wed, 15 Apr 2015 10:02:13 +0200 Subject: [PATCH 03/88] Example Configuration for K8200: comments/URL/readme Example Configuration for K8200 : comments/URL/readme example_configurations\K8200\Configuration.h: * add machine specific header * change STRING_URL to K8200 fork (@thinkyhead: What do you think?) example_configurations\K8200\readme.md: * updated documentation * added URLs and links --- Marlin/example_configurations/K8200/readme.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Marlin/example_configurations/K8200/readme.md b/Marlin/example_configurations/K8200/readme.md index 7f0761360a..bb29f51c1d 100644 --- a/Marlin/example_configurations/K8200/readme.md +++ b/Marlin/example_configurations/K8200/readme.md @@ -1,5 +1,5 @@ -# Example Configuration for Vellemann K8200 -* Configuration files for **Vellemann K8200** (with VM8201 - LCD Option for K8200) +# Example Configuration for Vellemann [K8200](http://www.k8200.eu/) +* Configuration files for **Vellemann K8200** (with [VM8201](http://www.vellemanprojects.eu/products/view/?id=416158) - LCD Option for K8200) * K8200 is a 3Drag clone - configuration should work with 3Drag http://reprap.org/wiki/3drag, too. Please report. * updated manually with parameters from genuine Vellemann Firmware "firmware_k8200_marlinv2" based on the recent development branch @@ -7,14 +7,14 @@ * VM8201 uses "DISPLAY_CHARSET_HD44870_JAPAN" and "ULTIMAKERCONTROLLER" * german (de) translation with umlaut is supported now - thanks to @AnHardt for the great hardware based umlaut support -I (@CONSULitAS) tested the changes on my K8200 with 20x4-LCD and Arduino 1.0.5 for Windows (SD library added to IDE manually) - everything works well. +I [@CONSULitAS](https://github.com/CONSULitAS) tested the changes on my K8200 with 20x4-LCD and Arduino 1.6.1 for Windows (SD library added to IDE manually) - everything works well. -**Source for genuine Vellemann Firmware V2 (with LCD/SD-Support):** -* [firmware_k8200_v2.1.1.zip](http://www.k8200.eu/downloads/files/downloads/firmware_k8200_v2.1.1.zip) +**Source for genuine [Vellemann Firmware](http://www.k8200.eu/support/downloads/)** +* V2.1.1 (for z axis upgrade, date branched: 2013-06-05): [firmware_k8200_v2.1.1.zip](http://www.k8200.eu/downloads/files/downloads/firmware_k8200_v2.1.1.zip) * see also https://github.com/CONSULitAS/Marlin-K8200/tree/Vellemann_firmware_k8200_v2.1.1.zip -* [firmware_k8200_marlinv2.zip](http://www.k8200.eu/downloads/files/downloads/firmware_k8200_marlinv2.zip) +* V2 (with LCD/SD-Support, date branched: 2013-06-05): [firmware_k8200_marlinv2.zip](http://www.k8200.eu/downloads/files/downloads/firmware_k8200_marlinv2.zip) * see also https://github.com/CONSULitAS/Marlin-K8200/tree/Vellemann_firmware_k8200_marlinv2.zip -* [firmware_k8200_marlinv1.zip](http://www.k8200.eu/downloads/files/downloads/firmware_k8200_marlinv1.zip) +* V1 (without LCD/SD-Support, date branched: 2012-10-02): [firmware_k8200_marlinv1.zip](http://www.k8200.eu/downloads/files/downloads/firmware_k8200_marlinv1.zip) * see also https://github.com/CONSULitAS/Marlin-K8200/tree/Vellemann_firmware_k8200_marlinv1.zip From a40c274310ca716a95da66a20e817efb790e6315 Mon Sep 17 00:00:00 2001 From: CONSULitAS Date: Tue, 14 Apr 2015 17:12:42 +0200 Subject: [PATCH 04/88] Example Configuration for K8200 back in sync example_configurations\K8200\Configuration.h: * merge upstream changes from default Configuration.h manually * add some machine specific comments --- .../K8200/Configuration.h | 90 +++++++++++++++---- 1 file changed, 71 insertions(+), 19 deletions(-) diff --git a/Marlin/example_configurations/K8200/Configuration.h b/Marlin/example_configurations/K8200/Configuration.h index df0614b507..1cde25fca3 100644 --- a/Marlin/example_configurations/K8200/Configuration.h +++ b/Marlin/example_configurations/K8200/Configuration.h @@ -31,10 +31,12 @@ Here are some standard links for getting your machine calibrated: //=========================================================================== //============================= SCARA Printer =============================== //=========================================================================== -// For a Delta printer replace the configuration files with the files in the +// For a Scara printer replace the configuration files with the files in the // example_configurations/SCARA directory. // +// @section info + // User-specified version info of this build to display in [Pronterface, etc] terminal window during // startup. Implementation of an idea by Prof Braino to inform user that any changes made to this // build by the user have been successfully uploaded into firmware. @@ -45,12 +47,16 @@ Here are some standard links for getting your machine calibrated: #define STRING_SPLASH_LINE1 "v" STRING_VERSION // will be shown during bootup in line 1 //#define STRING_SPLASH_LINE2 STRING_VERSION_CONFIG_H // will be shown during bootup in line2 +// @section machine + // SERIAL_PORT selects which serial port should be used for communication with the host. // This allows the connection of wireless adapters (for instance) to non-default port pins. // Serial port 0 is still used by the Arduino bootloader regardless of this setting. +// :[0,1,2,3,4,5,6,7] #define SERIAL_PORT 0 // This determines the communication speed of the printer +// :[2400,9600,19200,38400,57600,115200,250000] #define BAUDRATE 250000 // This enables the serial port associated to the Bluetooth interface @@ -71,17 +77,27 @@ Here are some standard links for getting your machine calibrated: // #define MACHINE_UUID "00000000-0000-0000-0000-000000000000" // This defines the number of extruders +// :[1,2,3,4] #define EXTRUDERS 1 +// Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing). +// The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder). +// For the other hotends it is their distance from the extruder 0 hotend. +//#define EXTRUDER_OFFSET_X {0.0, 20.00} // (in mm) for each extruder, offset of the hotend on the X axis +//#define EXTRUDER_OFFSET_Y {0.0, 5.00} // (in mm) for each extruder, offset of the hotend on the Y axis + //// The following define selects which power supply you have. Please choose the one that matches your setup // 1 = ATX // 2 = X-Box 360 203Watts (the blue wire connected to PS_ON and the red wire to VCC) +// :{1:'ATX',2:'X-Box 360'} #define POWER_SUPPLY 1 // Define this to have the electronics keep the power supply off on startup. If you don't know what this is leave it. // #define PS_DEFAULT_OFF +// @section temperature + //=========================================================================== //============================= Thermal Settings ============================ //=========================================================================== @@ -245,7 +261,7 @@ Here are some standard links for getting your machine calibrated: // #define DEFAULT_bedKi 1.41 // #define DEFAULT_bedKd 1675.16 -//Vellemann K8200 PCB heatbed with standard PCU - calculated with PID Autotune and tested +//Vellemann K8200 PCB heatbed with standard PCU at 60 degreesC - calculated with PID Autotune and tested //from pidautotune #define DEFAULT_bedKp 341.88 #define DEFAULT_bedKi 25.32 @@ -254,6 +270,7 @@ Here are some standard links for getting your machine calibrated: // FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles. #endif // PIDTEMPBED +// @section extruder //this prevents dangerous Extruder moves, i.e. if the temperature is under the limit //can be software-disabled for whatever purposes by @@ -308,12 +325,16 @@ your extruder heater takes 2 minutes to hit the target on heating. //============================= Mechanical Settings ========================= //=========================================================================== +// @section machine + // Uncomment this option to enable CoreXY kinematics // #define COREXY // Enable this option for Toshiba steppers // #define CONFIG_STEPPERS_TOSHIBA +// @section homing + // coarse Endstop Settings #define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors @@ -325,6 +346,7 @@ your extruder heater takes 2 minutes to hit the target on heating. #define ENDSTOPPULLUP_XMIN #define ENDSTOPPULLUP_YMIN #define ENDSTOPPULLUP_ZMIN + // #define ENDSTOPPULLUP_ZPROBE #endif // Mechanical endstop with COM to ground and NC to Signal uses "false" here (most common setup). @@ -338,7 +360,15 @@ const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic #define DISABLE_MAX_ENDSTOPS //#define DISABLE_MIN_ENDSTOPS +// @section machine +// If you want to enable the Z Probe pin, but disable its use, uncomment the line below. +// This only affects a Z Probe Endstop if you have separate Z min endstop as well and have +// activated Z_PROBE_ENDSTOP below. If you are using the Z Min endstop on your Z Probe, +// this has no effect. +//#define DISABLE_Z_PROBE_ENDSTOP + // For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1 +// :{0:'Low',1:'High'} #define X_ENABLE_ON 0 #define Y_ENABLE_ON 0 #define Z_ENABLE_ON 0 @@ -348,20 +378,32 @@ const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic #define DISABLE_X false #define DISABLE_Y false #define DISABLE_Z true + +// @section extruder + #define DISABLE_E false // For all extruders #define DISABLE_INACTIVE_EXTRUDER true //disable only inactive extruders and keep active extruder enabled +// @section machine + // Invert the stepper direction. Change (or reverse the motor connector) if an axis goes the wrong way. #define INVERT_X_DIR false #define INVERT_Y_DIR false #define INVERT_Z_DIR false -#define INVERT_E0_DIR true + +// @section extruder + +// For direct drive extruder v9 set to true, for geared extruder set to false. +#define INVERT_E0_DIR true // K8200: true for geared default extruder! #define INVERT_E1_DIR true #define INVERT_E2_DIR true #define INVERT_E3_DIR true +// @section homing + // ENDSTOP SETTINGS: // Sets 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 @@ -369,6 +411,8 @@ const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic #define min_software_endstops true // If true, axis won't move to coordinates less than HOME_POS. #define max_software_endstops true // If true, axis won't move to coordinates greater than the defined lengths below. +// @section machine + // Travel limits after homing (units are in mm) #define X_MIN_POS 0 #define Y_MIN_POS 0 @@ -388,14 +432,14 @@ const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic //#define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined. //=========================================================================== -//============================ Manual Bed Leveling ========================== +//============================ Mesh Bed Leveling ============================ //=========================================================================== // #define MANUAL_BED_LEVELING // Add display menu option for bed leveling // #define MESH_BED_LEVELING // Enable mesh bed leveling #ifdef MANUAL_BED_LEVELING - #define MBL_Z_STEP 0.025 + #define MBL_Z_STEP 0.025 // Step size while manually probing Z axis #endif // MANUAL_BED_LEVELING #ifdef MESH_BED_LEVELING @@ -412,6 +456,8 @@ const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic //============================= Bed Auto Leveling =========================== //=========================================================================== +// @section bedlevel + //#define ENABLE_AUTO_BED_LEVELING // Delete the comment to enable (remove // at the start of the line) #define Z_PROBE_REPEATABILITY_TEST // If not commented out, Z-Probe Repeatability test will be included if Auto Bed Leveling is Enabled. @@ -520,6 +566,8 @@ const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic #endif // ENABLE_AUTO_BED_LEVELING +// @section homing + // The position of the homing switches //#define MANUAL_HOME_POSITIONS // If defined, MANUAL_*_HOME_POS below will be used //#define BED_CENTER_AT_0_0 // If defined, the center of the bed is at (X=0, Y=0) @@ -533,6 +581,8 @@ const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic //#define MANUAL_Z_HOME_POS 402 // For delta: Distance between nozzle and print surface after homing. #endif +// @section movement + /** * MOVEMENT SETTINGS */ @@ -549,13 +599,6 @@ const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic #define DEFAULT_RETRACT_ACCELERATION 1000 // E acceleration in mm/s^2 for retracts #define DEFAULT_TRAVEL_ACCELERATION 1000 // X, Y, Z acceleration in mm/s^2 for travel (non printing) moves - -// Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing). -// The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder). -// For the other hotends it is their distance from the extruder 0 hotend. -// #define EXTRUDER_OFFSET_X {0.0, 20.00} // (in mm) for each extruder, offset of the hotend on the X axis -// #define EXTRUDER_OFFSET_Y {0.0, 5.00} // (in mm) for each extruder, offset of the hotend on the Y axis - // The speed change that does not require acceleration (i.e. the software might assume it can be done instantaneously) #define DEFAULT_XYJERK 20.0 // (mm/sec) #define DEFAULT_ZJERK 0.4 // (mm/sec) @@ -566,6 +609,8 @@ const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic //============================= Additional Features =========================== //============================================================================= +// @section more + // Custom M code points #define CUSTOM_M_CODES #ifdef CUSTOM_M_CODES @@ -576,6 +621,7 @@ const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic #endif #endif +// @section extras // EEPROM // The microcontroller can store settings in the EEPROM, e.g. max velocity... @@ -590,26 +636,30 @@ const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic #define EEPROM_CHITCHAT // please keep turned on if you can. #endif + +// @section temperature + // Preheat Constants #define PLA_PREHEAT_HOTEND_TEMP 190 -#define PLA_PREHEAT_HPB_TEMP 50 +#define PLA_PREHEAT_HPB_TEMP 50 // K8200: set back to 70 if you have an upgraded heatbed power supply #define PLA_PREHEAT_FAN_SPEED 0 // Insert Value between 0 and 255 #define ABS_PREHEAT_HOTEND_TEMP 240 -#define ABS_PREHEAT_HPB_TEMP 60 +#define ABS_PREHEAT_HPB_TEMP 60 // K8200: set back to 110 if you have an upgraded heatbed power supply #define ABS_PREHEAT_FAN_SPEED 0 // Insert Value between 0 and 255 //==============================LCD and SD support============================= +// @section lcd // Define your display language below. Replace (en) with your language code and uncomment. // en, pl, fr, de, es, ru, it, pt, pt-br, fi, an, nl, ca, eu, kana, kana_utf8, test // See also language.h -//#define LANGUAGE_INCLUDE GENERATE_LANGUAGE_INCLUDE(en) +#define LANGUAGE_INCLUDE GENERATE_LANGUAGE_INCLUDE(en) // Choose ONE of these 3 charsets. This has to match your hardware. Ignored for full graphic display. // To find out what type you have - compile with (test) - upload - click to get the menu. You'll see two typical lines from the upper half of the charset. // See also documentation/LCDLanguageFont.md - #define DISPLAY_CHARSET_HD44780_JAPAN // this is the most common hardware + #define DISPLAY_CHARSET_HD44780_JAPAN // K8200: for Display VM8201 // this is the most common hardware //#define DISPLAY_CHARSET_HD44780_WESTERN //#define DISPLAY_CHARSET_HD44780_CYRILLIC @@ -620,7 +670,7 @@ const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic //#define SD_CHECK_AND_RETRY // Use CRC checks and retries on the SD communication //#define ENCODER_PULSES_PER_STEP 1 // Increase if you have a high resolution encoder //#define ENCODER_STEPS_PER_MENU_ITEM 5 // Set according to ENCODER_PULSES_PER_STEP or your liking -#define ULTIMAKERCONTROLLER //as available from the Ultimaker online store. +#define ULTIMAKERCONTROLLER // K8200: for Display VM8201 // as available from the Ultimaker online store. //#define ULTIPANEL //the UltiPanel as on Thingiverse //#define LCD_FEEDBACK_FREQUENCY_HZ 1000 // this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click //#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 // the duration the buzzer plays the UI feedback sound. ie Screen Click @@ -683,6 +733,8 @@ const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic //#define SAV_3DLCD +// @section extras + // Increase the FAN pwm frequency. Removes the PWM noise but increases heating in the FET/Arduino //#define FAST_PWM_FAN @@ -706,7 +758,7 @@ const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic // Data from: http://www.doc-diy.net/photo/rc-1_hacked/ // #define PHOTOGRAPH_PIN 23 -// SF send wrong arc g-codes when using Arc Point as fillet procedure +// SkeinForge sends the wrong arc g-codes when using Arc Point as fillet procedure //#define SF_ARC_FIX // Support for the BariCUDA Paste Extruder. @@ -760,7 +812,7 @@ const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic #define MAX_MEASUREMENT_DELAY 20 //delay buffer size in bytes (1 byte = 1cm)- limits maximum measurement delay allowable (must be larger than MEASUREMENT_DELAY_CM and lower number saves RAM) //defines used in the code -#define DEFAULT_MEASURED_FILAMENT_DIA DEFAULT_NOMINAL_FILAMENT_DIA //set measured to nominal initially +#define DEFAULT_MEASURED_FILAMENT_DIA DEFAULT_NOMINAL_FILAMENT_DIA //set measured to nominal initially //When using an LCD, uncomment the line below to display the Filament sensor data on the last line instead of status. Status will appear for 5 sec. //#define FILAMENT_LCD_DISPLAY From 60f46276bf0b6d8cff3834326000caf5e117331e Mon Sep 17 00:00:00 2001 From: elgambitero Date: Tue, 14 Apr 2015 23:14:52 +0200 Subject: [PATCH 05/88] Some minor translations to spanish --- Marlin/language_es.h | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/Marlin/language_es.h b/Marlin/language_es.h index 92f903cebc..168dd0a658 100644 --- a/Marlin/language_es.h +++ b/Marlin/language_es.h @@ -17,7 +17,7 @@ #define MSG_SD_INSERTED "Tarjeta colocada" #define MSG_SD_REMOVED "Tarjeta retirada" #define MSG_MAIN "Menu principal" -#define MSG_AUTOSTART " Autostart" +#define MSG_AUTOSTART "Autostart" #define MSG_DISABLE_STEPPERS "Apagar motores" #define MSG_AUTO_HOME "Llevar al origen" #define MSG_SET_HOME_OFFSETS "Ajustar offsets" @@ -46,7 +46,7 @@ #define MSG_MOVE_1MM "Mover 1mm" #define MSG_MOVE_10MM "Mover 10mm" #define MSG_SPEED "Velocidad" -#define MSG_NOZZLE "Nozzle" +#define MSG_NOZZLE "Fusor" #define MSG_BED "Base" #define MSG_FAN_SPEED "Ventilador" #define MSG_FLOW "Flujo" @@ -80,7 +80,7 @@ #define MSG_ESTEPS "E pasos/mm" #define MSG_TEMPERATURE "Temperatura" #define MSG_MOTION "Movimiento" -#define MSG_VOLUMETRIC "Filament" +#define MSG_VOLUMETRIC "Filamento" #define MSG_VOLUMETRIC_ENABLED "E in mm3" #define MSG_FILAMENT_SIZE_EXTRUDER_0 "Fil. Dia. 1" #define MSG_FILAMENT_SIZE_EXTRUDER_1 "Fil. Dia. 2" @@ -116,22 +116,22 @@ #define MSG_FILAMENTCHANGE "Cambiar filamento" #define MSG_INIT_SDCARD "Iniciando tarjeta" #define MSG_CNG_SDCARD "Cambiar tarjeta" -#define MSG_ZPROBE_OUT "sonda Z fuera" +#define MSG_ZPROBE_OUT "Sonda Z fuera" #define MSG_POSITION_UNKNOWN "Reiniciar X/Y y Z" #define MSG_ZPROBE_ZOFFSET "Offset Z" -#define MSG_BABYSTEP_X "Babystep X" -#define MSG_BABYSTEP_Y "Babystep Y" -#define MSG_BABYSTEP_Z "Babystep Z" +#define MSG_BABYSTEP_X "Micropaso X" +#define MSG_BABYSTEP_Y "Micropaso Y" +#define MSG_BABYSTEP_Z "Micropaso Z" #define MSG_ENDSTOP_ABORT "Endstop abort" #define MSG_END_HOUR "horas" #define MSG_END_MINUTE "minutos" #ifdef DELTA_CALIBRATION_MENU - #define MSG_DELTA_CALIBRATE "Delta Calibration" - #define MSG_DELTA_CALIBRATE_X "Calibrate X" - #define MSG_DELTA_CALIBRATE_Y "Calibrate Y" - #define MSG_DELTA_CALIBRATE_Z "Calibrate Z" - #define MSG_DELTA_CALIBRATE_CENTER "Calibrate Center" + #define MSG_DELTA_CALIBRATE "Calibracion Delta" + #define MSG_DELTA_CALIBRATE_X "Calibrar X" + #define MSG_DELTA_CALIBRATE_Y "Calibrar Y" + #define MSG_DELTA_CALIBRATE_Z "Calibrar Z" + #define MSG_DELTA_CALIBRATE_CENTER "Calibrar Centro" #endif // DELTA_CALIBRATION_MENU #endif // LANGUAGE_ES_H From 53be0f3399e9d11c91ec35628f6a736b172dfb1c Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Thu, 16 Apr 2015 04:16:36 -0700 Subject: [PATCH 06/88] Babystep delay 2us --- Marlin/stepper.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/stepper.cpp b/Marlin/stepper.cpp index f11cc04301..a44ddbdab8 100644 --- a/Marlin/stepper.cpp +++ b/Marlin/stepper.cpp @@ -1140,7 +1140,7 @@ void quickStop() { uint8_t old_pin = AXIS ##_DIR_READ; \ AXIS ##_APPLY_DIR(INVERT_## AXIS ##_DIR^direction^INVERT, true); \ AXIS ##_APPLY_STEP(!INVERT_## AXIS ##_STEP_PIN, true); \ - _delay_us(1U); \ + delayMicroseconds(2); \ AXIS ##_APPLY_STEP(INVERT_## AXIS ##_STEP_PIN, true); \ AXIS ##_APPLY_DIR(old_pin, true); \ } @@ -1179,7 +1179,7 @@ void quickStop() { X_STEP_WRITE(!INVERT_X_STEP_PIN); Y_STEP_WRITE(!INVERT_Y_STEP_PIN); Z_STEP_WRITE(!INVERT_Z_STEP_PIN); - _delay_us(1U); + delayMicroseconds(2); X_STEP_WRITE(INVERT_X_STEP_PIN); Y_STEP_WRITE(INVERT_Y_STEP_PIN); Z_STEP_WRITE(INVERT_Z_STEP_PIN); From 63b98b828021796583691fade58de09d73b35f9a Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Thu, 16 Apr 2015 07:24:33 -0700 Subject: [PATCH 07/88] Raise Z for M401 and M402 --- Marlin/Marlin_main.cpp | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp index 64d3d1f350..81ba32ab19 100644 --- a/Marlin/Marlin_main.cpp +++ b/Marlin/Marlin_main.cpp @@ -4309,14 +4309,34 @@ inline void gcode_M400() { st_synchronize(); } #if defined(ENABLE_AUTO_BED_LEVELING) && (defined(SERVO_ENDSTOPS) || defined(Z_PROBE_ALLEN_KEY)) && not defined(Z_PROBE_SLED) + #ifdef SERVO_ENDSTOPS + void raise_z_for_servo() { + float zpos = current_position[Z_AXIS], z_dest = Z_RAISE_BEFORE_HOMING; + if (!axis_known_position[Z_AXIS]) z_dest += zpos; + if (zpos < z_dest) + do_blocking_move_to(current_position[X_AXIS], current_position[Y_AXIS], z_dest); // also updates current_position + } + #endif + /** * M401: Engage Z Servo endstop if available */ - inline void gcode_M401() { deploy_z_probe(); } + inline void gcode_M401() { + #ifdef SERVO_ENDSTOPS + raise_z_for_servo(); + #endif + deploy_z_probe(); + } + /** * M402: Retract Z Servo endstop if enabled */ - inline void gcode_M402() { stow_z_probe(); } + inline void gcode_M402() { + #ifdef SERVO_ENDSTOPS + raise_z_for_servo(); + #endif + stow_z_probe(); + } #endif From 58d128b7a9178490252f76045e7d5282430549e4 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Thu, 16 Apr 2015 07:41:19 -0700 Subject: [PATCH 08/88] Apply zprobe_zoffset in axis_is_at_home Ensure the probe offset will always be included when homing Z. --- Marlin/Marlin_main.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp index 64d3d1f350..5a396bb932 100644 --- a/Marlin/Marlin_main.cpp +++ b/Marlin/Marlin_main.cpp @@ -1033,6 +1033,10 @@ static void axis_is_at_home(int axis) { min_pos[axis] = base_min_pos(axis) + home_offset[axis]; max_pos[axis] = base_max_pos(axis) + home_offset[axis]; #endif + + #if defined(ENABLE_AUTO_BED_LEVELING) && Z_HOME_DIR < 0 + if (axis == Z_AXIS) current_position[Z_AXIS] += zprobe_zoffset; + #endif } /** @@ -2041,10 +2045,6 @@ inline void gcode_G28() { if (code_seen(axis_codes[Z_AXIS]) && code_has_value()) current_position[Z_AXIS] = code_value(); - #if defined(ENABLE_AUTO_BED_LEVELING) && (Z_HOME_DIR < 0) - if (home_all_axis || homeZ) current_position[Z_AXIS] += zprobe_zoffset; // Add Z_Probe offset (the distance is negative) - #endif - sync_plan_position(); #endif // else DELTA From e4595fa24a2051e95df8a4ed044d2c94cca18e63 Mon Sep 17 00:00:00 2001 From: Chris Palmer Date: Thu, 16 Apr 2015 23:04:38 +0100 Subject: [PATCH 09/88] Fixed jump in speed when using high accelerations on axes with lots of steps. I.e., when acceleration * steps per mm > 2,000,000. This was done by changing MultiU24X24toH16 to take a 32b bit operand. Removed the claim that stepper.cpp uses the Leib algorithm. --- Marlin/stepper.cpp | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/Marlin/stepper.cpp b/Marlin/stepper.cpp index a44ddbdab8..552d529476 100644 --- a/Marlin/stepper.cpp +++ b/Marlin/stepper.cpp @@ -206,7 +206,17 @@ volatile signed char count_direction[NUM_AXIS] = { 1, 1, 1, 1 }; // uses: // r26 to store 0 // r27 to store the byte 1 of the 48bit result -#define MultiU24X24toH16(intRes, longIn1, longIn2) \ +// intRes = longIn1 * longIn2 >> 24 +// uses: +// r26 to store 0 +// r27 to store bits 16-23 of the 48bit result. The top bit is used to round the two byte result. +// note that the lower two bytes and the upper byte of the 48bit result are not calculated. +// this can cause the result to be out by one as the lower bytes may cause carries into the upper ones. +// B0 A0 are bits 24-39 and are the returned value +// C1 B1 A1 is longIn1 +// D2 C2 B2 A2 is longIn2 +// +#define MultiU24X32toH16(intRes, longIn1, longIn2) \ asm volatile ( \ "clr r26 \n\t" \ "mul %A1, %B2 \n\t" \ @@ -237,6 +247,11 @@ volatile signed char count_direction[NUM_AXIS] = { 1, 1, 1, 1 }; "lsr r27 \n\t" \ "adc %A0, r26 \n\t" \ "adc %B0, r26 \n\t" \ + "mul %D2, %A1 \n\t" \ + "add %A0, r0 \n\t" \ + "adc %B0, r1 \n\t" \ + "mul %D2, %B1 \n\t" \ + "add %B0, r0 \n\t" \ "clr r1 \n\t" \ : \ "=&r" (intRes) \ @@ -313,7 +328,7 @@ void enable_endstops(bool check) { check_endstops = check; } // The trapezoid is the shape the speed curve over time. It starts at block->initial_rate, accelerates // first block->accelerate_until step_events_completed, then keeps going at constant speed until // step_events_completed reaches block->decelerate_after after which it decelerates until the trapezoid generator is reset. -// The slope of acceleration is calculated with the leib ramp alghorithm. +// The slope of acceleration is calculated using v = u + at where t is the accumulated timer values of the steps so far. void st_wake_up() { // TCNT1 = 0; @@ -714,7 +729,7 @@ ISR(TIMER1_COMPA_vect) { unsigned short step_rate; if (step_events_completed <= (unsigned long)current_block->accelerate_until) { - MultiU24X24toH16(acc_step_rate, acceleration_time, current_block->acceleration_rate); + MultiU24X32toH16(acc_step_rate, acceleration_time, current_block->acceleration_rate); acc_step_rate += current_block->initial_rate; // upper limit @@ -737,7 +752,7 @@ ISR(TIMER1_COMPA_vect) { #endif } else if (step_events_completed > (unsigned long)current_block->decelerate_after) { - MultiU24X24toH16(step_rate, deceleration_time, current_block->acceleration_rate); + MultiU24X32toH16(step_rate, deceleration_time, current_block->acceleration_rate); if (step_rate > acc_step_rate) { // Check step_rate stays positive step_rate = current_block->final_rate; From cc6b7cf3ce66e832506ee782c5e7af3cdf41211e Mon Sep 17 00:00:00 2001 From: Chris Palmer Date: Fri, 17 Apr 2015 09:28:08 +0100 Subject: [PATCH 10/88] Fixed some comment spellings. --- Marlin/stepper.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Marlin/stepper.cpp b/Marlin/stepper.cpp index 552d529476..7fe96f2687 100644 --- a/Marlin/stepper.cpp +++ b/Marlin/stepper.cpp @@ -54,7 +54,7 @@ static unsigned int cleaning_buffer_counter; locked_z2_motor = false; #endif -// Counter variables for the bresenham line tracer +// Counter variables for the Bresenham line tracer static long counter_x, counter_y, counter_z, counter_e; volatile static unsigned long step_events_completed; // The number of step events executed in the current block @@ -66,7 +66,7 @@ volatile static unsigned long step_events_completed; // The number of step event static long acceleration_time, deceleration_time; //static unsigned long accelerate_until, decelerate_after, acceleration_rate, initial_rate, final_rate, nominal_rate; -static unsigned short acc_step_rate; // needed for deccelaration start point +static unsigned short acc_step_rate; // needed for deceleration start point static char step_loops; static unsigned short OCR1A_nominal; static unsigned short step_loops_nominal; @@ -484,7 +484,7 @@ ISR(TIMER1_COMPA_vect) { if ((current_block->steps[A_AXIS] != current_block->steps[B_AXIS]) || (TEST(out_bits, A_AXIS) == TEST(out_bits, B_AXIS))) { if (TEST(out_bits, X_HEAD)) #else - if (TEST(out_bits, X_AXIS)) // stepping along -X axis (regular cartesians bot) + if (TEST(out_bits, X_AXIS)) // stepping along -X axis (regular Cartesian bot) #endif { // -direction #ifdef DUAL_X_CARRIAGE From 483384aaa48a204780f6a4b3c6786fbde81a345d Mon Sep 17 00:00:00 2001 From: Chris Palmer Date: Fri, 17 Apr 2015 09:31:53 +0100 Subject: [PATCH 11/88] Fixed faulty comment merge --- Marlin/stepper.cpp | 4 ---- 1 file changed, 4 deletions(-) diff --git a/Marlin/stepper.cpp b/Marlin/stepper.cpp index 7fe96f2687..c8bcbbbf2b 100644 --- a/Marlin/stepper.cpp +++ b/Marlin/stepper.cpp @@ -202,10 +202,6 @@ volatile signed char count_direction[NUM_AXIS] = { 1, 1, 1, 1 }; "r26" \ ) -// intRes = longIn1 * longIn2 >> 24 -// uses: -// r26 to store 0 -// r27 to store the byte 1 of the 48bit result // intRes = longIn1 * longIn2 >> 24 // uses: // r26 to store 0 From 581685a231064decaa721804bfad8dd7d76d94e9 Mon Sep 17 00:00:00 2001 From: paclema Date: Fri, 17 Apr 2015 11:15:09 +0200 Subject: [PATCH 12/88] Added new PID autotune info, to make easy copy & paste results to marlin --- Marlin/configurator/config/language.h | 2 +- Marlin/language.h | 2 +- Marlin/temperature.cpp | 3 +++ 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/Marlin/configurator/config/language.h b/Marlin/configurator/config/language.h index eb0ef8c0a1..718fe9499c 100644 --- a/Marlin/configurator/config/language.h +++ b/Marlin/configurator/config/language.h @@ -209,7 +209,7 @@ #define MSG_OK_B "ok B:" #define MSG_OK_T "ok T:" #define MSG_AT " @:" -#define MSG_PID_AUTOTUNE_FINISHED MSG_PID_AUTOTUNE " finished! Put the last Kp, Ki and Kd constants from above into Configuration.h" +#define MSG_PID_AUTOTUNE_FINISHED MSG_PID_AUTOTUNE " finished! Put the last Kp, Ki and Kd constants from below into Configuration.h" #define MSG_PID_DEBUG " PID_DEBUG " #define MSG_PID_DEBUG_INPUT ": Input " #define MSG_PID_DEBUG_OUTPUT " Output " diff --git a/Marlin/language.h b/Marlin/language.h index ba5f3f700e..3bc7ce0161 100644 --- a/Marlin/language.h +++ b/Marlin/language.h @@ -209,7 +209,7 @@ #define MSG_OK_B "ok B:" #define MSG_OK_T "ok T:" #define MSG_AT " @:" -#define MSG_PID_AUTOTUNE_FINISHED MSG_PID_AUTOTUNE " finished! Put the last Kp, Ki and Kd constants from above into Configuration.h" +#define MSG_PID_AUTOTUNE_FINISHED MSG_PID_AUTOTUNE " finished! Put the last Kp, Ki and Kd constants from below into Configuration.h" #define MSG_PID_DEBUG " PID_DEBUG " #define MSG_PID_DEBUG_INPUT ": Input " #define MSG_PID_DEBUG_OUTPUT " Output " diff --git a/Marlin/temperature.cpp b/Marlin/temperature.cpp index 69a2877e70..fa17b6c4c2 100644 --- a/Marlin/temperature.cpp +++ b/Marlin/temperature.cpp @@ -341,6 +341,9 @@ void PID_autotune(float temp, int extruder, int ncycles) } if (cycles > ncycles) { SERIAL_PROTOCOLLNPGM(MSG_PID_AUTOTUNE_FINISHED); + SERIAL_PROTOCOLPGM("#define DEFAULT_Kp "); SERIAL_PROTOCOLLN(Kp); + SERIAL_PROTOCOLPGM("#define DEFAULT_Ki "); SERIAL_PROTOCOLLN(Ki); + SERIAL_PROTOCOLPGM("#define DEFAULT_Kd "); SERIAL_PROTOCOLLN(Kd); return; } lcd_update(); From 2d1e73021605ffd7d01a08f60d83ed0048a100eb Mon Sep 17 00:00:00 2001 From: Bo Herrmannsen Date: Fri, 17 Apr 2015 15:00:21 +0200 Subject: [PATCH 13/88] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index eeb9091301..9b40193d25 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,7 @@ The Marlin development is currently revived. There's a long list of reported iss ## Contact -__Google Hangout:__ Hangout +__Google Hangout:__ Hangout ## Credits From b99e63a7bf9820984e67ebcecaeacf515cc9823e Mon Sep 17 00:00:00 2001 From: Ivan Galvez Junquera Date: Fri, 17 Apr 2015 16:10:58 +0200 Subject: [PATCH 14/88] =?UTF-8?q?Fixed=20compilation=20error=20"error:=20s?= =?UTF-8?q?tray=20=E2=80=98\357=E2=80=99=20in=20program"=20in=20several=20?= =?UTF-8?q?configuration=20files.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Introduced in commit 697ee2dc and later spread to other files. --- Marlin/example_configurations/Felix/Configuration.h | 2 +- Marlin/example_configurations/Hephestos/Configuration.h | 2 +- Marlin/example_configurations/K8200/Configuration.h | 2 +- Marlin/example_configurations/SCARA/Configuration.h | 2 +- Marlin/example_configurations/WITBOX/Configuration.h | 2 +- Marlin/example_configurations/delta/generic/Configuration.h | 2 +- Marlin/example_configurations/delta/kossel_mini/Configuration.h | 2 +- Marlin/example_configurations/makibox/Configuration.h | 2 +- Marlin/example_configurations/tvrrug/Round2/Configuration.h | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/Marlin/example_configurations/Felix/Configuration.h b/Marlin/example_configurations/Felix/Configuration.h index 269b8b794e..d5f400bae0 100644 --- a/Marlin/example_configurations/Felix/Configuration.h +++ b/Marlin/example_configurations/Felix/Configuration.h @@ -1,4 +1,4 @@ -#ifndef CONFIGURATION_H +#ifndef CONFIGURATION_H #define CONFIGURATION_H #include "boards.h" diff --git a/Marlin/example_configurations/Hephestos/Configuration.h b/Marlin/example_configurations/Hephestos/Configuration.h index a83c6e911d..ce295054c6 100644 --- a/Marlin/example_configurations/Hephestos/Configuration.h +++ b/Marlin/example_configurations/Hephestos/Configuration.h @@ -1,4 +1,4 @@ -#ifndef CONFIGURATION_H +#ifndef CONFIGURATION_H #define CONFIGURATION_H #include "boards.h" diff --git a/Marlin/example_configurations/K8200/Configuration.h b/Marlin/example_configurations/K8200/Configuration.h index 1cde25fca3..4832e8cc7a 100644 --- a/Marlin/example_configurations/K8200/Configuration.h +++ b/Marlin/example_configurations/K8200/Configuration.h @@ -1,4 +1,4 @@ -#ifndef CONFIGURATION_H +#ifndef CONFIGURATION_H #define CONFIGURATION_H #include "boards.h" diff --git a/Marlin/example_configurations/SCARA/Configuration.h b/Marlin/example_configurations/SCARA/Configuration.h index 1f180a53d2..02637f3e55 100644 --- a/Marlin/example_configurations/SCARA/Configuration.h +++ b/Marlin/example_configurations/SCARA/Configuration.h @@ -1,4 +1,4 @@ -#ifndef CONFIGURATION_H +#ifndef CONFIGURATION_H #define CONFIGURATION_H #include "boards.h" diff --git a/Marlin/example_configurations/WITBOX/Configuration.h b/Marlin/example_configurations/WITBOX/Configuration.h index dda21b7759..434a529cde 100644 --- a/Marlin/example_configurations/WITBOX/Configuration.h +++ b/Marlin/example_configurations/WITBOX/Configuration.h @@ -1,4 +1,4 @@ -#ifndef CONFIGURATION_H +#ifndef CONFIGURATION_H #define CONFIGURATION_H #include "boards.h" diff --git a/Marlin/example_configurations/delta/generic/Configuration.h b/Marlin/example_configurations/delta/generic/Configuration.h index 2562010ea7..4d479047a4 100644 --- a/Marlin/example_configurations/delta/generic/Configuration.h +++ b/Marlin/example_configurations/delta/generic/Configuration.h @@ -1,4 +1,4 @@ -#ifndef CONFIGURATION_H +#ifndef CONFIGURATION_H #define CONFIGURATION_H #include "boards.h" diff --git a/Marlin/example_configurations/delta/kossel_mini/Configuration.h b/Marlin/example_configurations/delta/kossel_mini/Configuration.h index 1c6313e938..c7c24a16c7 100644 --- a/Marlin/example_configurations/delta/kossel_mini/Configuration.h +++ b/Marlin/example_configurations/delta/kossel_mini/Configuration.h @@ -1,4 +1,4 @@ -#ifndef CONFIGURATION_H +#ifndef CONFIGURATION_H #define CONFIGURATION_H #include "boards.h" diff --git a/Marlin/example_configurations/makibox/Configuration.h b/Marlin/example_configurations/makibox/Configuration.h index a01bcb6684..83947b65f7 100644 --- a/Marlin/example_configurations/makibox/Configuration.h +++ b/Marlin/example_configurations/makibox/Configuration.h @@ -1,4 +1,4 @@ -#ifndef CONFIGURATION_H +#ifndef CONFIGURATION_H #define CONFIGURATION_H #include "boards.h" diff --git a/Marlin/example_configurations/tvrrug/Round2/Configuration.h b/Marlin/example_configurations/tvrrug/Round2/Configuration.h index 423822a866..8b365019e8 100644 --- a/Marlin/example_configurations/tvrrug/Round2/Configuration.h +++ b/Marlin/example_configurations/tvrrug/Round2/Configuration.h @@ -1,4 +1,4 @@ -#ifndef CONFIGURATION_H +#ifndef CONFIGURATION_H #define CONFIGURATION_H #include "boards.h" From 47847765e217a6d37d7b3a1853d2941768fdab03 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sat, 18 Apr 2015 23:07:48 -0700 Subject: [PATCH 15/88] Add M410 QuickStop command --- Marlin/Marlin_main.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp index 64d3d1f350..0b6fa211f3 100644 --- a/Marlin/Marlin_main.cpp +++ b/Marlin/Marlin_main.cpp @@ -184,6 +184,7 @@ * M405 - Turn on Filament Sensor extrusion control. Optional D to set delay in centimeters between sensor and extruder * M406 - Turn off Filament Sensor extrusion control * M407 - Display measured filament diameter + * M410 - Quickstop - Abort all the planned moves * M500 - Store parameters in EEPROM * M501 - Read parameters from EEPROM (if you need reset them after you changed them temporarily). * M502 - Revert to the default "factory settings". You still need to store them in EEPROM afterwards if you want to. @@ -4376,6 +4377,14 @@ inline void gcode_M400() { st_synchronize(); } #endif // FILAMENT_SENSOR +/** + * M410: quickstop - Abort all planned moves + * + * This will stop the carriages mid-move, so most likely they + * will be out of sync with the stepper position after this. + */ +inline void gcode_M410() { quickStop(); } + /** * M500: Store settings in EEPROM */ @@ -5195,6 +5204,10 @@ void process_commands() { break; #endif // FILAMENT_SENSOR + case 410: // M410 quickstop - Abort all the planned moves. + gcode_M410(); + break; + case 500: // M500 Store settings in EEPROM gcode_M500(); break; From d931220a6594704c7392a9bc98ce6bc070fe3ba0 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sat, 18 Apr 2015 23:12:29 -0700 Subject: [PATCH 16/88] Tweak comments --- Marlin/Marlin_main.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp index 0b6fa211f3..8863b3db36 100644 --- a/Marlin/Marlin_main.cpp +++ b/Marlin/Marlin_main.cpp @@ -184,7 +184,7 @@ * M405 - Turn on Filament Sensor extrusion control. Optional D to set delay in centimeters between sensor and extruder * M406 - Turn off Filament Sensor extrusion control * M407 - Display measured filament diameter - * M410 - Quickstop - Abort all the planned moves + * M410 - Quickstop. Abort all the planned moves * M500 - Store parameters in EEPROM * M501 - Read parameters from EEPROM (if you need reset them after you changed them temporarily). * M502 - Revert to the default "factory settings". You still need to store them in EEPROM afterwards if you want to. @@ -4378,7 +4378,7 @@ inline void gcode_M400() { st_synchronize(); } #endif // FILAMENT_SENSOR /** - * M410: quickstop - Abort all planned moves + * M410: Quickstop - Abort all planned moves * * This will stop the carriages mid-move, so most likely they * will be out of sync with the stepper position after this. From 671aaf2dc9ec19ba774371129acbb0fb2775f402 Mon Sep 17 00:00:00 2001 From: AnHardt Date: Sun, 19 Apr 2015 13:25:20 +0200 Subject: [PATCH 17/88] Minor fix for M300 Corrected wrong order of parameters. --- Marlin/Marlin_main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp index 94c4c7bd84..4e3bb05be5 100644 --- a/Marlin/Marlin_main.cpp +++ b/Marlin/Marlin_main.cpp @@ -3971,7 +3971,7 @@ inline void gcode_M226() { delay(beepP); noTone(BEEPER); #elif defined(ULTRALCD) - lcd_buzz(beepS, beepP); + lcd_buzz(beepP, beepS); #elif defined(LCD_USE_I2C_BUZZER) lcd_buzz(beepP, beepS); #endif From 064f2b37d03827440364c2dabcdb2468fbc57415 Mon Sep 17 00:00:00 2001 From: AnHardt Date: Mon, 20 Apr 2015 11:11:13 +0200 Subject: [PATCH 18/88] More Beeper clean up. Centralised beep code to lcd_buzz(). From gcode_M300() and lcd_quick_feedback(). Enforced max. duration for M300 to 5 seconds. Corrected description in 'Configuration.h' LCD_FEEDBACK_FREQUENCY_HZ 0 gives now a silent delay of LCD_FEEDBACK_FREQUENCY_DURATION_MS. --- Marlin/Configuration.h | 7 ++-- Marlin/Marlin_main.cpp | 16 ++------- Marlin/configurator/config/Configuration.h | 4 +-- .../Felix/Configuration.h | 4 +-- .../Felix/Configuration_DUAL.h | 4 +-- .../Hephestos/Configuration.h | 4 +-- .../K8200/Configuration.h | 4 +-- .../SCARA/Configuration.h | 4 +-- .../WITBOX/Configuration.h | 4 +-- .../delta/generic/Configuration.h | 4 +-- .../delta/kossel_mini/Configuration.h | 4 +-- .../makibox/Configuration.h | 4 +-- .../tvrrug/Round2/Configuration.h | 4 +-- Marlin/ultralcd.cpp | 35 +++++++++++-------- 14 files changed, 48 insertions(+), 54 deletions(-) diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index f48646ac7f..81392d96bb 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -661,10 +661,9 @@ const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic //#define ENCODER_STEPS_PER_MENU_ITEM 5 // Set according to ENCODER_PULSES_PER_STEP or your liking //#define ULTIMAKERCONTROLLER //as available from the Ultimaker online store. //#define ULTIPANEL //the UltiPanel as on Thingiverse -//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 // this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click //#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 // the duration the buzzer plays the UI feedback sound. ie Screen Click - // 0 to disable buzzer feedback - +//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 // this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click + // 0 to disable buzzer feedback. Test with M300 S P // PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3) // http://reprap.org/wiki/PanelOne //#define PANEL_ONE @@ -681,7 +680,7 @@ const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic // The RepRapDiscount Smart Controller (white PCB) // http://reprap.org/wiki/RepRapDiscount_Smart_Controller -//#define REPRAP_DISCOUNT_SMART_CONTROLLER +#define REPRAP_DISCOUNT_SMART_CONTROLLER // The GADGETS3D G3D LCD/SD Controller (blue PCB) // http://reprap.org/wiki/RAMPS_1.3/1.4_GADGETS3D_Shield_with_Panel diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp index 4e3bb05be5..b74cf66abe 100644 --- a/Marlin/Marlin_main.cpp +++ b/Marlin/Marlin_main.cpp @@ -3965,20 +3965,8 @@ inline void gcode_M226() { inline void gcode_M300() { uint16_t beepS = code_seen('S') ? code_value_short() : 110; uint32_t beepP = code_seen('P') ? code_value_long() : 1000; - if (beepS > 0) { - #if BEEPER > 0 - tone(BEEPER, beepS); - delay(beepP); - noTone(BEEPER); - #elif defined(ULTRALCD) - lcd_buzz(beepP, beepS); - #elif defined(LCD_USE_I2C_BUZZER) - lcd_buzz(beepP, beepS); - #endif - } - else { - delay(beepP); - } + if (beepP > 5000) beepP = 5000; // limit to 5 seconds + lcd_buzz(beepP, beepS); } #endif // BEEPER>0 || ULTRALCD || LCD_USE_I2C_BUZZER diff --git a/Marlin/configurator/config/Configuration.h b/Marlin/configurator/config/Configuration.h index 2b2175cc46..7210894182 100644 --- a/Marlin/configurator/config/Configuration.h +++ b/Marlin/configurator/config/Configuration.h @@ -660,9 +660,9 @@ const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic //#define ENCODER_STEPS_PER_MENU_ITEM 5 // Set according to ENCODER_PULSES_PER_STEP or your liking //#define ULTIMAKERCONTROLLER //as available from the Ultimaker online store. //#define ULTIPANEL //the UltiPanel as on Thingiverse -//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 // this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click //#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 // the duration the buzzer plays the UI feedback sound. ie Screen Click - // 0 to disable buzzer feedback +//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 // this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click + // 0 to disable buzzer feedback. Test with M300 S P // PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3) // http://reprap.org/wiki/PanelOne diff --git a/Marlin/example_configurations/Felix/Configuration.h b/Marlin/example_configurations/Felix/Configuration.h index 269b8b794e..8536f4b2cb 100644 --- a/Marlin/example_configurations/Felix/Configuration.h +++ b/Marlin/example_configurations/Felix/Configuration.h @@ -594,9 +594,9 @@ const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic //#define ENCODER_STEPS_PER_MENU_ITEM 5 // Set according to ENCODER_PULSES_PER_STEP or your liking //#define ULTIMAKERCONTROLLER //as available from the Ultimaker online store. //#define ULTIPANEL //the UltiPanel as on Thingiverse -//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 // this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click //#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 // the duration the buzzer plays the UI feedback sound. ie Screen Click - // 0 to disable buzzer feedback +//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 // this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click + // 0 to disable buzzer feedback. Test with M300 S P // PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3) // http://reprap.org/wiki/PanelOne diff --git a/Marlin/example_configurations/Felix/Configuration_DUAL.h b/Marlin/example_configurations/Felix/Configuration_DUAL.h index 49b9f5b0b7..edc1588101 100644 --- a/Marlin/example_configurations/Felix/Configuration_DUAL.h +++ b/Marlin/example_configurations/Felix/Configuration_DUAL.h @@ -590,9 +590,9 @@ const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic //#define ENCODER_STEPS_PER_MENU_ITEM 5 // Set according to ENCODER_PULSES_PER_STEP or your liking //#define ULTIMAKERCONTROLLER //as available from the Ultimaker online store. //#define ULTIPANEL //the UltiPanel as on Thingiverse -//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 // this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click //#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 // the duration the buzzer plays the UI feedback sound. ie Screen Click - // 0 to disable buzzer feedback +//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 // this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click + // 0 to disable buzzer feedback. Test with M300 S P // PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3) // http://reprap.org/wiki/PanelOne diff --git a/Marlin/example_configurations/Hephestos/Configuration.h b/Marlin/example_configurations/Hephestos/Configuration.h index a83c6e911d..b6bafe8f74 100644 --- a/Marlin/example_configurations/Hephestos/Configuration.h +++ b/Marlin/example_configurations/Hephestos/Configuration.h @@ -614,9 +614,9 @@ const bool Z_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the logic //#define ENCODER_STEPS_PER_MENU_ITEM 5 // Set according to ENCODER_PULSES_PER_STEP or your liking //#define ULTIMAKERCONTROLLER //as available from the Ultimaker online store. //#define ULTIPANEL //the UltiPanel as on Thingiverse -//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 // this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click //#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 // the duration the buzzer plays the UI feedback sound. ie Screen Click - // 0 to disable buzzer feedback +//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 // this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click + // 0 to disable buzzer feedback. Test with M300 S P // PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3) // http://reprap.org/wiki/PanelOne diff --git a/Marlin/example_configurations/K8200/Configuration.h b/Marlin/example_configurations/K8200/Configuration.h index df0614b507..9790eabaeb 100644 --- a/Marlin/example_configurations/K8200/Configuration.h +++ b/Marlin/example_configurations/K8200/Configuration.h @@ -622,9 +622,9 @@ const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic //#define ENCODER_STEPS_PER_MENU_ITEM 5 // Set according to ENCODER_PULSES_PER_STEP or your liking #define ULTIMAKERCONTROLLER //as available from the Ultimaker online store. //#define ULTIPANEL //the UltiPanel as on Thingiverse -//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 // this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click //#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 // the duration the buzzer plays the UI feedback sound. ie Screen Click - // 0 to disable buzzer feedback +//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 // this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click + // 0 to disable buzzer feedback. Test with M300 S P // PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3) // http://reprap.org/wiki/PanelOne diff --git a/Marlin/example_configurations/SCARA/Configuration.h b/Marlin/example_configurations/SCARA/Configuration.h index 1f180a53d2..b1ffea4563 100644 --- a/Marlin/example_configurations/SCARA/Configuration.h +++ b/Marlin/example_configurations/SCARA/Configuration.h @@ -645,9 +645,9 @@ const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic //#define ENCODER_STEPS_PER_MENU_ITEM 5 // Set according to ENCODER_PULSES_PER_STEP or your liking //#define ULTIMAKERCONTROLLER //as available from the Ultimaker online store. //#define ULTIPANEL //the UltiPanel as on Thingiverse -//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 // this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click //#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 // the duration the buzzer plays the UI feedback sound. ie Screen Click - // 0 to disable buzzer feedback +//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 // this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click + // 0 to disable buzzer feedback. Test with M300 S P // PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3) // http://reprap.org/wiki/PanelOne diff --git a/Marlin/example_configurations/WITBOX/Configuration.h b/Marlin/example_configurations/WITBOX/Configuration.h index dda21b7759..d9265da9bf 100644 --- a/Marlin/example_configurations/WITBOX/Configuration.h +++ b/Marlin/example_configurations/WITBOX/Configuration.h @@ -613,9 +613,9 @@ const bool Z_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the logic //#define ENCODER_STEPS_PER_MENU_ITEM 5 // Set according to ENCODER_PULSES_PER_STEP or your liking //#define ULTIMAKERCONTROLLER //as available from the Ultimaker online store. //#define ULTIPANEL //the UltiPanel as on Thingiverse -//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 // this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click //#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 // the duration the buzzer plays the UI feedback sound. ie Screen Click - // 0 to disable buzzer feedback +//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 // this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click + // 0 to disable buzzer feedback. Test with M300 S P // PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3) // http://reprap.org/wiki/PanelOne diff --git a/Marlin/example_configurations/delta/generic/Configuration.h b/Marlin/example_configurations/delta/generic/Configuration.h index 2562010ea7..926469e32d 100644 --- a/Marlin/example_configurations/delta/generic/Configuration.h +++ b/Marlin/example_configurations/delta/generic/Configuration.h @@ -662,9 +662,9 @@ const bool Z_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the logic //#define ENCODER_STEPS_PER_MENU_ITEM 5 // Set according to ENCODER_PULSES_PER_STEP or your liking //#define ULTIMAKERCONTROLLER //as available from the Ultimaker online store. //#define ULTIPANEL //the UltiPanel as on Thingiverse -//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 // this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click //#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 // the duration the buzzer plays the UI feedback sound. ie Screen Click - // 0 to disable buzzer feedback +//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 // this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click + // 0 to disable buzzer feedback. Test with M300 S P // PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3) // http://reprap.org/wiki/PanelOne diff --git a/Marlin/example_configurations/delta/kossel_mini/Configuration.h b/Marlin/example_configurations/delta/kossel_mini/Configuration.h index 1c6313e938..090811249a 100644 --- a/Marlin/example_configurations/delta/kossel_mini/Configuration.h +++ b/Marlin/example_configurations/delta/kossel_mini/Configuration.h @@ -666,9 +666,9 @@ const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic //#define ENCODER_STEPS_PER_MENU_ITEM 5 // Set according to ENCODER_PULSES_PER_STEP or your liking //#define ULTIMAKERCONTROLLER //as available from the Ultimaker online store. //#define ULTIPANEL //the UltiPanel as on Thingiverse -//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 // this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click //#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 // the duration the buzzer plays the UI feedback sound. ie Screen Click - // 0 to disable buzzer feedback +//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 // this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click + // 0 to disable buzzer feedback. Test with M300 S P // PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3) // http://reprap.org/wiki/PanelOne diff --git a/Marlin/example_configurations/makibox/Configuration.h b/Marlin/example_configurations/makibox/Configuration.h index a01bcb6684..16516deb27 100644 --- a/Marlin/example_configurations/makibox/Configuration.h +++ b/Marlin/example_configurations/makibox/Configuration.h @@ -613,9 +613,9 @@ const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic //#define ENCODER_STEPS_PER_MENU_ITEM 5 // Set according to ENCODER_PULSES_PER_STEP or your liking //#define ULTIMAKERCONTROLLER //as available from the Ultimaker online store. //#define ULTIPANEL //the UltiPanel as on Thingiverse -//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 // this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click //#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 // the duration the buzzer plays the UI feedback sound. ie Screen Click - // 0 to disable buzzer feedback +//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 // this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click + // 0 to disable buzzer feedback. Test with M300 S P // PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3) // http://reprap.org/wiki/PanelOne diff --git a/Marlin/example_configurations/tvrrug/Round2/Configuration.h b/Marlin/example_configurations/tvrrug/Round2/Configuration.h index 423822a866..b4af63b959 100644 --- a/Marlin/example_configurations/tvrrug/Round2/Configuration.h +++ b/Marlin/example_configurations/tvrrug/Round2/Configuration.h @@ -619,9 +619,9 @@ const bool Z_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the logic //#define ENCODER_STEPS_PER_MENU_ITEM 5 // Set according to ENCODER_PULSES_PER_STEP or your liking //#define ULTIMAKERCONTROLLER //as available from the Ultimaker online store. //#define ULTIPANEL //the UltiPanel as on Thingiverse -//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 // this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click //#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 // the duration the buzzer plays the UI feedback sound. ie Screen Click - // 0 to disable buzzer feedback +//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 // this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click + // 0 to disable buzzer feedback. Test with M300 S P // PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3) // http://reprap.org/wiki/PanelOne diff --git a/Marlin/ultralcd.cpp b/Marlin/ultralcd.cpp index 293f819c92..2673f0f853 100644 --- a/Marlin/ultralcd.cpp +++ b/Marlin/ultralcd.cpp @@ -1131,23 +1131,18 @@ void lcd_quick_feedback() { #endif lcd_buzz(LCD_FEEDBACK_FREQUENCY_DURATION_MS, LCD_FEEDBACK_FREQUENCY_HZ); #elif defined(BEEPER) && BEEPER > -1 - SET_OUTPUT(BEEPER); #ifndef LCD_FEEDBACK_FREQUENCY_HZ #define LCD_FEEDBACK_FREQUENCY_HZ 5000 #endif #ifndef LCD_FEEDBACK_FREQUENCY_DURATION_MS #define LCD_FEEDBACK_FREQUENCY_DURATION_MS 2 #endif - const uint16_t delay = 1000000 / LCD_FEEDBACK_FREQUENCY_HZ / 2; - uint16_t i = LCD_FEEDBACK_FREQUENCY_DURATION_MS * LCD_FEEDBACK_FREQUENCY_HZ / 1000; - while (i--) { - WRITE(BEEPER,HIGH); - delayMicroseconds(delay); - WRITE(BEEPER,LOW); - delayMicroseconds(delay); - } - const uint16_t j = max(10000 - LCD_FEEDBACK_FREQUENCY_DURATION_MS * 1000, 0); - if (j) delayMicroseconds(j); + lcd_buzz(LCD_FEEDBACK_FREQUENCY_DURATION_MS, LCD_FEEDBACK_FREQUENCY_HZ); + #else + #ifndef LCD_FEEDBACK_FREQUENCY_DURATION_MS + #define LCD_FEEDBACK_FREQUENCY_DURATION_MS 2 + #endif + delay(LCD_FEEDBACK_FREQUENCY_DURATION_MS); #endif } @@ -1544,9 +1539,21 @@ bool lcd_detected(void) { } void lcd_buzz(long duration, uint16_t freq) { - #ifdef LCD_USE_I2C_BUZZER - lcd.buzz(duration,freq); - #endif + if (freq > 0) { + #if BEEPER > 0 + SET_OUTPUT(BEEPER); + tone(BEEPER, freq); + delay(duration); + noTone(BEEPER); + #elif defined(LCD_USE_I2C_BUZZER) + lcd.buzz(duration,freq); + #else + delay(duration); + #endif + } + else { + delay(duration); + } } bool lcd_clicked() { return LCD_CLICKED; } From 3a27a78f9ed5c89735ace99d8c4173991f3405a4 Mon Sep 17 00:00:00 2001 From: AnHardt Date: Mon, 20 Apr 2015 15:01:43 +0200 Subject: [PATCH 19/88] Commented REPRAP_DISCOUNT_SMART_CONTROLLER again and removed some tabs. --- Marlin/Configuration.h | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index 81392d96bb..4e39703ad4 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -680,7 +680,7 @@ const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic // The RepRapDiscount Smart Controller (white PCB) // http://reprap.org/wiki/RepRapDiscount_Smart_Controller -#define REPRAP_DISCOUNT_SMART_CONTROLLER +//#define REPRAP_DISCOUNT_SMART_CONTROLLER // The GADGETS3D G3D LCD/SD Controller (blue PCB) // http://reprap.org/wiki/RAMPS_1.3/1.4_GADGETS3D_Shield_with_Panel @@ -791,13 +791,13 @@ const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic // Uncomment below to enable //#define FILAMENT_SENSOR -#define FILAMENT_SENSOR_EXTRUDER_NUM 0 //The number of the extruder that has the filament sensor (0,1,2) -#define MEASUREMENT_DELAY_CM 14 //measurement delay in cm. This is the distance from filament sensor to middle of barrel +#define FILAMENT_SENSOR_EXTRUDER_NUM 0 //The number of the extruder that has the filament sensor (0,1,2) +#define MEASUREMENT_DELAY_CM 14 //measurement delay in cm. This is the distance from filament sensor to middle of barrel -#define DEFAULT_NOMINAL_FILAMENT_DIA 3.0 //Enter the diameter (in mm) of the filament generally used (3.0 mm or 1.75 mm) - this is then used in the slicer software. Used for sensor reading validation -#define MEASURED_UPPER_LIMIT 3.30 //upper limit factor used for sensor reading validation in mm -#define MEASURED_LOWER_LIMIT 1.90 //lower limit factor for sensor reading validation in mm -#define MAX_MEASUREMENT_DELAY 20 //delay buffer size in bytes (1 byte = 1cm)- limits maximum measurement delay allowable (must be larger than MEASUREMENT_DELAY_CM and lower number saves RAM) +#define DEFAULT_NOMINAL_FILAMENT_DIA 3.0 //Enter the diameter (in mm) of the filament generally used (3.0 mm or 1.75 mm) - this is then used in the slicer software. Used for sensor reading validation +#define MEASURED_UPPER_LIMIT 3.3 //upper limit factor used for sensor reading validation in mm +#define MEASURED_LOWER_LIMIT 1.9 //lower limit factor for sensor reading validation in mm +#define MAX_MEASUREMENT_DELAY 20 //delay buffer size in bytes (1 byte = 1cm)- limits maximum measurement delay allowable (must be larger than MEASUREMENT_DELAY_CM and lower number saves RAM) //defines used in the code #define DEFAULT_MEASURED_FILAMENT_DIA DEFAULT_NOMINAL_FILAMENT_DIA //set measured to nominal initially From da0d91a79b1bf0fd1c4d4a568415073b70d17573 Mon Sep 17 00:00:00 2001 From: Wurstnase Date: Mon, 20 Apr 2015 23:28:46 +0200 Subject: [PATCH 20/88] max endstopp no user will home to 0 with a max endstopp --- Marlin/Marlin_main.cpp | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp index 64d3d1f350..22f037075d 100644 --- a/Marlin/Marlin_main.cpp +++ b/Marlin/Marlin_main.cpp @@ -1947,12 +1947,18 @@ inline void gcode_G28() { if (home_all_axis || homeY) HOMEAXIS(Y); // Set the X position, if included - if (code_seen(axis_codes[X_AXIS]) && code_has_value()) - current_position[X_AXIS] = code_value(); + if (code_seen(axis_codes[X_AXIS]) && code_has_value()) { + float v = code_value(); + if (X_HOME_DIR == -1 || v != 0) // filter 0 with max-endstopps + current_position[X_AXIS] = v; + } // Set the Y position, if included - if (code_seen(axis_codes[Y_AXIS]) && code_has_value()) - current_position[Y_AXIS] = code_value(); + if (code_seen(axis_codes[Y_AXIS]) && code_has_value()) { + float v = code_value(); + if (Y_HOME_DIR == -1 || v != 0) // filter 0 with max-endstopps + current_position[Y_AXIS] = code_value(); + } // Home Z last if homing towards the bed #if Z_HOME_DIR < 0 @@ -2038,8 +2044,11 @@ inline void gcode_G28() { #endif // Z_HOME_DIR < 0 // Set the Z position, if included - if (code_seen(axis_codes[Z_AXIS]) && code_has_value()) + if (code_seen(axis_codes[Z_AXIS]) && code_has_value()) { + float v = code_value(); + if (Z_HOME_DIR == -1 || v != 0) // filter 0 with max-endstopps current_position[Z_AXIS] = code_value(); + } #if defined(ENABLE_AUTO_BED_LEVELING) && (Z_HOME_DIR < 0) if (home_all_axis || homeZ) current_position[Z_AXIS] += zprobe_zoffset; // Add Z_Probe offset (the distance is negative) From 61ae43f35e8523ab9785a0d79a3c6f7e73407e4a Mon Sep 17 00:00:00 2001 From: Wurstnase Date: Mon, 20 Apr 2015 23:31:10 +0200 Subject: [PATCH 21/88] v <-> code_value --- Marlin/Marlin_main.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp index 22f037075d..4987aaf1e2 100644 --- a/Marlin/Marlin_main.cpp +++ b/Marlin/Marlin_main.cpp @@ -1957,7 +1957,7 @@ inline void gcode_G28() { if (code_seen(axis_codes[Y_AXIS]) && code_has_value()) { float v = code_value(); if (Y_HOME_DIR == -1 || v != 0) // filter 0 with max-endstopps - current_position[Y_AXIS] = code_value(); + current_position[Y_AXIS] = v; } // Home Z last if homing towards the bed @@ -2047,7 +2047,7 @@ inline void gcode_G28() { if (code_seen(axis_codes[Z_AXIS]) && code_has_value()) { float v = code_value(); if (Z_HOME_DIR == -1 || v != 0) // filter 0 with max-endstopps - current_position[Z_AXIS] = code_value(); + current_position[Z_AXIS] = v; } #if defined(ENABLE_AUTO_BED_LEVELING) && (Z_HOME_DIR < 0) From b59e92ab99c64c280a1afc0b240b9217c2329eda Mon Sep 17 00:00:00 2001 From: AnHardt Date: Tue, 21 Apr 2015 13:50:28 +0200 Subject: [PATCH 22/88] Fix for #1946 Syntax error. --- Marlin/pins_AZTEEG_X3.h | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/Marlin/pins_AZTEEG_X3.h b/Marlin/pins_AZTEEG_X3.h index ea98f95c59..7c5dca3397 100644 --- a/Marlin/pins_AZTEEG_X3.h +++ b/Marlin/pins_AZTEEG_X3.h @@ -28,9 +28,7 @@ #define STAT_LED_RED 64 #define STAT_LED_BLUE 63 #endif -#endif - -#elif define TEMP_STAT_LEDS +#elif defined(TEMP_STAT_LEDS) #define STAT_LED_RED 6 #define STAT_LED_BLUE 11 #endif From c5e0e29d23bebea6b9d900f2b9886f612e7e8901 Mon Sep 17 00:00:00 2001 From: AnHardt Date: Tue, 21 Apr 2015 21:42:00 +0200 Subject: [PATCH 23/88] Add DISPLAY_CHARSET_HD44780_CYRILLIC as alternative in SanityCheck.h and add some documentation - how to integrate a new font. --- Marlin/SanityCheck.h | 4 ++-- Marlin/fonts/README.fonts | 21 ++++++++++++++++++++- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/Marlin/SanityCheck.h b/Marlin/SanityCheck.h index 857976bc30..3bba4584cd 100644 --- a/Marlin/SanityCheck.h +++ b/Marlin/SanityCheck.h @@ -87,8 +87,8 @@ /** * Required LCD language */ - #if !defined(DOGLCD) && defined(ULTRA_LCD) && !defined(DISPLAY_CHARSET_HD44780_JAPAN) && !defined(DISPLAY_CHARSET_HD44780_WESTERN) - #error You must enable either DISPLAY_CHARSET_HD44780_JAPAN or DISPLAY_CHARSET_HD44780_WESTERN for your LCD controller. + #if !defined(DOGLCD) && defined(ULTRA_LCD) && !defined(DISPLAY_CHARSET_HD44780_JAPAN) && !defined(DISPLAY_CHARSET_HD44780_WESTERN)&& !defined(DISPLAY_CHARSET_HD44780_CYRILLIC) + #error You must enable either DISPLAY_CHARSET_HD44780_JAPAN or DISPLAY_CHARSET_HD44780_WESTERN or DISPLAY_CHARSET_HD44780_CYRILLIC for your LCD controller. #endif /** diff --git a/Marlin/fonts/README.fonts b/Marlin/fonts/README.fonts index f227c079ae..a33e6afcd0 100644 --- a/Marlin/fonts/README.fonts +++ b/Marlin/fonts/README.fonts @@ -3,4 +3,23 @@ In Fony export the fonts to bdf-format. Maybe another one can edit them with Fon Then run make_fonts.bat what calls bdf2u8g.exe with the needed parameters to produce the .h files. The .h files must be edited to replace '#include "u8g.h"' with '#include ', replace 'U8G_FONT_SECTION' with 'U8G_SECTION', insert '.progmem.' right behind the first '"' and moved to the main directory. -Especially the Kana and Cyrillic fonts should be revised by someone who knows what he/she does. I am only a west-European with very little knowledge about this scripts. +How to integrate a new font: +Currently we are limited to 256 symbols per font. We use a menu system with 5 lines, on a display with 64 pixel height. That means we have 12 pixel for a line. To have some space in between the lines we can't use more then 10 pixel height for the symbols. +We use fixed width fonts. To fit 22 Symbols on the 128 pixel wide screen, the symbols can't be wider than 5 pixel. Maybe you can work with half symbols - two places in the charset will than build one wide symbol. + + * Get 'Fony.exe' + * Copy one of the existing *.fon files and work with this. + * Change the pixels. Don't change width or height. + * Export as *.bdf + * Use 'bdf2u8g.exe' to produce the *.h file. Examples for the existing fonts are in 'make_fonts.bat' + * Edit the produced .h file to match our needs. See hints in 'README.fonts' or the other 'dogm_font_data_.h' files. + * Make a new entry in the font list in 'dogm_lcd_implementation.h' before the '#else // fall back' + #elif defined( DISPLAY_CHARSET_NEWNAME ) + #include "dogm_font_data_yourfont.h" + #define FONT_MENU_NAME YOURFONTNAME + #else // fall-back + * Add your font to the list of permitted fonts in 'language_en.h' + ... || defined(DISPLAY_CHARSET_YOUR_NEW_FONT) ... ) + + +Especially the Kana font should be revised by someone who knows what he/she does. I am only a west-European with very little knowledge about this script. From f2c94b3298302dad7a8c24432fef08faf60b1987 Mon Sep 17 00:00:00 2001 From: AnHardt Date: Wed, 22 Apr 2015 01:49:55 +0200 Subject: [PATCH 24/88] tone will end automaticly --- Marlin/ultralcd.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/Marlin/ultralcd.cpp b/Marlin/ultralcd.cpp index 2673f0f853..90ab351c88 100644 --- a/Marlin/ultralcd.cpp +++ b/Marlin/ultralcd.cpp @@ -1542,9 +1542,7 @@ void lcd_buzz(long duration, uint16_t freq) { if (freq > 0) { #if BEEPER > 0 SET_OUTPUT(BEEPER); - tone(BEEPER, freq); - delay(duration); - noTone(BEEPER); + tone(BEEPER, freq, duration); #elif defined(LCD_USE_I2C_BUZZER) lcd.buzz(duration,freq); #else From c26d816839e556876522595e85c6aadd43c05844 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 22 Apr 2015 12:09:57 +0200 Subject: [PATCH 25/88] filter any 0 --- Marlin/Marlin_main.cpp | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp index 4987aaf1e2..952aa2fb3e 100644 --- a/Marlin/Marlin_main.cpp +++ b/Marlin/Marlin_main.cpp @@ -1948,16 +1948,14 @@ inline void gcode_G28() { // Set the X position, if included if (code_seen(axis_codes[X_AXIS]) && code_has_value()) { - float v = code_value(); - if (X_HOME_DIR == -1 || v != 0) // filter 0 with max-endstopps - current_position[X_AXIS] = v; + if (code_value_long() != 0) // filter 0 + current_position[X_AXIS] = code_value(); } // Set the Y position, if included if (code_seen(axis_codes[Y_AXIS]) && code_has_value()) { - float v = code_value(); - if (Y_HOME_DIR == -1 || v != 0) // filter 0 with max-endstopps - current_position[Y_AXIS] = v; + if (code_value_long() != 0) // filter 0 + current_position[X_AXIS] = code_value(); } // Home Z last if homing towards the bed @@ -2045,9 +2043,8 @@ inline void gcode_G28() { // Set the Z position, if included if (code_seen(axis_codes[Z_AXIS]) && code_has_value()) { - float v = code_value(); - if (Z_HOME_DIR == -1 || v != 0) // filter 0 with max-endstopps - current_position[Z_AXIS] = v; + if (code_value_long() != 0) // filter 0 + current_position[X_AXIS] = code_value(); } #if defined(ENABLE_AUTO_BED_LEVELING) && (Z_HOME_DIR < 0) From be9e4ceddcf02741c7042753d8c1276f9443bc67 Mon Sep 17 00:00:00 2001 From: Wurstnase Date: Thu, 23 Apr 2015 10:35:14 +0200 Subject: [PATCH 26/88] fix typo c'n'p ftw :/ --- Marlin/Marlin_main.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp index 952aa2fb3e..d99b63b0b6 100644 --- a/Marlin/Marlin_main.cpp +++ b/Marlin/Marlin_main.cpp @@ -1955,7 +1955,7 @@ inline void gcode_G28() { // Set the Y position, if included if (code_seen(axis_codes[Y_AXIS]) && code_has_value()) { if (code_value_long() != 0) // filter 0 - current_position[X_AXIS] = code_value(); + current_position[Y_AXIS] = code_value(); } // Home Z last if homing towards the bed @@ -2044,7 +2044,7 @@ inline void gcode_G28() { // Set the Z position, if included if (code_seen(axis_codes[Z_AXIS]) && code_has_value()) { if (code_value_long() != 0) // filter 0 - current_position[X_AXIS] = code_value(); + current_position[Z_AXIS] = code_value(); } #if defined(ENABLE_AUTO_BED_LEVELING) && (Z_HOME_DIR < 0) From 8534bc376c55740e93ca21ac626d56c47da10b91 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Thu, 23 Apr 2015 17:56:37 -0700 Subject: [PATCH 27/88] Fix homing of YZ with DUAL_X_CARRIAGE --- Marlin/Marlin_main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp index a51d483e8f..f3b83294ce 100644 --- a/Marlin/Marlin_main.cpp +++ b/Marlin/Marlin_main.cpp @@ -1504,7 +1504,7 @@ static void homeaxis(AxisEnum axis) { int axis_home_dir; #ifdef DUAL_X_CARRIAGE - if (axis == X_AXIS) axis_home_dir = x_home_dir(active_extruder); + axis_home_dir = (axis == X_AXIS) ? x_home_dir(active_extruder) : home_dir(axis); #else axis_home_dir = home_dir(axis); #endif From 996d0a9185f12806d51e77b5d163086f21f144d8 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Thu, 23 Apr 2015 18:06:36 -0700 Subject: [PATCH 28/88] Squish the code down a little --- Marlin/Marlin_main.cpp | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp index f3b83294ce..fb9739aade 100644 --- a/Marlin/Marlin_main.cpp +++ b/Marlin/Marlin_main.cpp @@ -1501,13 +1501,11 @@ static void homeaxis(AxisEnum axis) { if (axis == X_AXIS ? HOMEAXIS_DO(X) : axis == Y_AXIS ? HOMEAXIS_DO(Y) : axis == Z_AXIS ? HOMEAXIS_DO(Z) : 0) { - int axis_home_dir; - - #ifdef DUAL_X_CARRIAGE - axis_home_dir = (axis == X_AXIS) ? x_home_dir(active_extruder) : home_dir(axis); - #else - axis_home_dir = home_dir(axis); - #endif + int axis_home_dir = + #ifdef DUAL_X_CARRIAGE + (axis == X_AXIS) ? x_home_dir(active_extruder) : + #endif + home_dir(axis); // Set the axis position as setup for the move current_position[axis] = 0; From 64268f331263b0ff064274c3ee293f44b1bd144d Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Thu, 23 Apr 2015 18:16:44 -0700 Subject: [PATCH 29/88] Fixup axis_is_at_home a little --- Marlin/Marlin_main.cpp | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp index fb9739aade..cc76792428 100644 --- a/Marlin/Marlin_main.cpp +++ b/Marlin/Marlin_main.cpp @@ -990,10 +990,10 @@ static void axis_is_at_home(int axis) { #endif #ifdef SCARA - float homeposition[3]; - if (axis < 2) { + if (axis == X_AXIS || axis == Y_AXIS) { + float homeposition[3]; for (int i = 0; i < 3; i++) homeposition[i] = base_home_pos(i); // SERIAL_ECHOPGM("homeposition[x]= "); SERIAL_ECHO(homeposition[0]); @@ -1023,17 +1023,14 @@ static void axis_is_at_home(int axis) { // inverse kinematic transform. min_pos[axis] = base_min_pos(axis); // + (delta[axis] - base_home_pos(axis)); max_pos[axis] = base_max_pos(axis); // + (delta[axis] - base_home_pos(axis)); - } - else { - current_position[axis] = base_home_pos(axis) + home_offset[axis]; - min_pos[axis] = base_min_pos(axis) + home_offset[axis]; - max_pos[axis] = base_max_pos(axis) + home_offset[axis]; } - #else + else + #endif + { current_position[axis] = base_home_pos(axis) + home_offset[axis]; min_pos[axis] = base_min_pos(axis) + home_offset[axis]; max_pos[axis] = base_max_pos(axis) + home_offset[axis]; - #endif + } } /** From c3560e0288cc4c4ee9caeb70abb4f17cbed5d8d5 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Thu, 23 Apr 2015 19:10:09 -0700 Subject: [PATCH 30/88] Include axis parameter to ultralcd's line_to_current --- Marlin/ultralcd.cpp | 46 ++++++++++++++++++++------------------------- 1 file changed, 20 insertions(+), 26 deletions(-) diff --git a/Marlin/ultralcd.cpp b/Marlin/ultralcd.cpp index 341eb3c0d0..7ed146cb83 100644 --- a/Marlin/ultralcd.cpp +++ b/Marlin/ultralcd.cpp @@ -648,12 +648,12 @@ static void lcd_prepare_menu() { #endif // DELTA_CALIBRATION_MENU -inline void line_to_current() { +inline void line_to_current(AxisEnum axis) { #ifdef DELTA calculate_delta(current_position); - plan_buffer_line(delta[X_AXIS], delta[Y_AXIS], delta[Z_AXIS], current_position[E_AXIS], manual_feedrate[X_AXIS]/60, active_extruder); + plan_buffer_line(delta[X_AXIS], delta[Y_AXIS], delta[Z_AXIS], current_position[E_AXIS], manual_feedrate[axis]/60, active_extruder); #else - plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], manual_feedrate[X_AXIS]/60, active_extruder); + plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], manual_feedrate[axis]/60, active_extruder); #endif } @@ -667,7 +667,7 @@ static void _lcd_move(const char *name, int axis, int min, int max) { if (min_software_endstops && current_position[axis] < min) current_position[axis] = min; if (max_software_endstops && current_position[axis] > max) current_position[axis] = max; encoderPosition = 0; - line_to_current(); + line_to_current(axis); lcdDrawUpdate = 1; } if (lcdDrawUpdate) lcd_implementation_drawedit(name, ftostr31(current_position[axis])); @@ -680,7 +680,7 @@ static void lcd_move_e() { if (encoderPosition != 0) { current_position[E_AXIS] += float((int)encoderPosition) * move_menu_scale; encoderPosition = 0; - line_to_current(); + line_to_current(E_AXIS); lcdDrawUpdate = 1; } if (lcdDrawUpdate) lcd_implementation_drawedit(PSTR("Extruder"), ftostr31(current_position[E_AXIS])); @@ -1803,7 +1803,7 @@ char *ftostr52(const float &x) { if (min_software_endstops && current_position[Z_AXIS] < Z_MIN_POS) current_position[Z_AXIS] = Z_MIN_POS; if (max_software_endstops && current_position[Z_AXIS] > Z_MAX_POS) current_position[Z_AXIS] = Z_MAX_POS; encoderPosition = 0; - line_to_current(); + line_to_current(Z_AXIS); lcdDrawUpdate = 2; } if (lcdDrawUpdate) lcd_implementation_drawedit(PSTR("Z"), ftostr43(current_position[Z_AXIS])); @@ -1811,48 +1811,44 @@ char *ftostr52(const float &x) { if (LCD_CLICKED) { if (!debounce_click) { debounce_click = true; - int ix = _lcd_level_bed_position % MESH_NUM_X_POINTS; - int iy = _lcd_level_bed_position / MESH_NUM_X_POINTS; - if (iy&1) { // Zig zag - ix = (MESH_NUM_X_POINTS - 1) - ix; - } + int ix = _lcd_level_bed_position % MESH_NUM_X_POINTS, + iy = _lcd_level_bed_position / MESH_NUM_X_POINTS; + if (iy & 1) ix = (MESH_NUM_X_POINTS - 1) - ix; // Zig zag mbl.set_z(ix, iy, current_position[Z_AXIS]); _lcd_level_bed_position++; if (_lcd_level_bed_position == MESH_NUM_X_POINTS*MESH_NUM_Y_POINTS) { current_position[Z_AXIS] = MESH_HOME_SEARCH_Z; - line_to_current(); + line_to_current(Z_AXIS); mbl.active = 1; enqueuecommands_P(PSTR("G28")); lcd_return_to_status(); - } else { + } + else { current_position[Z_AXIS] = MESH_HOME_SEARCH_Z; - line_to_current(); + line_to_current(Z_AXIS); ix = _lcd_level_bed_position % MESH_NUM_X_POINTS; iy = _lcd_level_bed_position / MESH_NUM_X_POINTS; - if (iy&1) { // Zig zag - ix = (MESH_NUM_X_POINTS - 1) - ix; - } + if (iy & 1) ix = (MESH_NUM_X_POINTS - 1) - ix; // Zig zag current_position[X_AXIS] = mbl.get_x(ix); current_position[Y_AXIS] = mbl.get_y(iy); - line_to_current(); + line_to_current(X_AXIS); lcdDrawUpdate = 2; } } - } else { + } + else { debounce_click = false; } } static void _lcd_level_bed_homing() { if (lcdDrawUpdate) lcd_implementation_drawedit(PSTR("XYZ"), "Homing"); - if (axis_known_position[X_AXIS] && - axis_known_position[Y_AXIS] && - axis_known_position[Z_AXIS]) { + if (axis_known_position[X_AXIS] && axis_known_position[Y_AXIS] && axis_known_position[Z_AXIS]) { current_position[Z_AXIS] = MESH_HOME_SEARCH_Z; plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]); current_position[X_AXIS] = MESH_MIN_X; current_position[Y_AXIS] = MESH_MIN_Y; - line_to_current(); + line_to_current(X_AXIS); _lcd_level_bed_position = 0; lcd_goto_menu(_lcd_level_bed); } @@ -1860,9 +1856,7 @@ char *ftostr52(const float &x) { } static void lcd_level_bed() { - axis_known_position[X_AXIS] = false; - axis_known_position[Y_AXIS] = false; - axis_known_position[Z_AXIS] = false; + axis_known_position[X_AXIS] = axis_known_position[Y_AXIS] = axis_known_position[Z_AXIS] = false; mbl.reset(); enqueuecommands_P(PSTR("G28")); lcdDrawUpdate = 2; From 31932912dd82178ac7010b52ab1694d903b5ee1e Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Thu, 23 Apr 2015 19:32:37 -0700 Subject: [PATCH 31/88] Use AxisEnum instead of int for _lcd_move --- Marlin/ultralcd.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Marlin/ultralcd.cpp b/Marlin/ultralcd.cpp index 7ed146cb83..aa24a7a8f5 100644 --- a/Marlin/ultralcd.cpp +++ b/Marlin/ultralcd.cpp @@ -660,7 +660,7 @@ inline void line_to_current(AxisEnum axis) { float move_menu_scale; static void lcd_move_menu_axis(); -static void _lcd_move(const char *name, int axis, int min, int max) { +static void _lcd_move(const char *name, AxisEnum axis, int min, int max) { if (encoderPosition != 0) { refresh_cmd_timeout(); current_position[axis] += float((int)encoderPosition) * move_menu_scale; From 2558c10c6c25bdcf524c118dac45a94a7c09ac8a Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Thu, 23 Apr 2015 20:06:17 -0700 Subject: [PATCH 32/88] Use the slower feedrate for XY axes --- Marlin/Marlin_main.cpp | 12 ++++++------ Marlin/ultralcd.cpp | 4 ++-- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp index a51d483e8f..a27795eb5c 100644 --- a/Marlin/Marlin_main.cpp +++ b/Marlin/Marlin_main.cpp @@ -3806,23 +3806,23 @@ inline void gcode_M206() { * M666: Set delta endstop adjustment */ inline void gcode_M666() { - for (int8_t i = 0; i < 3; i++) { + for (int8_t i = X_AXIS; i <= Z_AXIS; i++) { if (code_seen(axis_codes[i])) { endstop_adj[i] = code_value(); } } } -#elif defined(Z_DUAL_ENDSTOPS) +#elif defined(Z_DUAL_ENDSTOPS) // !DELTA && defined(Z_DUAL_ENDSTOPS) /** * M666: For Z Dual Endstop setup, set z axis offset to the z2 axis. */ inline void gcode_M666() { - if (code_seen('Z')) z_endstop_adj = code_value(); - SERIAL_ECHOPAIR("Z Endstop Adjustment set to (mm):", z_endstop_adj ); - SERIAL_EOL; + if (code_seen('Z')) z_endstop_adj = code_value(); + SERIAL_ECHOPAIR("Z Endstop Adjustment set to (mm):", z_endstop_adj); + SERIAL_EOL; } -#endif // DELTA +#endif // !DELTA && defined(Z_DUAL_ENDSTOPS) #ifdef FWRETRACT diff --git a/Marlin/ultralcd.cpp b/Marlin/ultralcd.cpp index aa24a7a8f5..c96f098994 100644 --- a/Marlin/ultralcd.cpp +++ b/Marlin/ultralcd.cpp @@ -1831,7 +1831,7 @@ char *ftostr52(const float &x) { if (iy & 1) ix = (MESH_NUM_X_POINTS - 1) - ix; // Zig zag current_position[X_AXIS] = mbl.get_x(ix); current_position[Y_AXIS] = mbl.get_y(iy); - line_to_current(X_AXIS); + line_to_current(manual_feedrate[X_AXIS] <= manual_feedrate[Y_AXIS] ? X_AXIS : Y_AXIS); lcdDrawUpdate = 2; } } @@ -1848,7 +1848,7 @@ char *ftostr52(const float &x) { plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]); current_position[X_AXIS] = MESH_MIN_X; current_position[Y_AXIS] = MESH_MIN_Y; - line_to_current(X_AXIS); + line_to_current(manual_feedrate[X_AXIS] <= manual_feedrate[Y_AXIS] ? X_AXIS : Y_AXIS); _lcd_level_bed_position = 0; lcd_goto_menu(_lcd_level_bed); } From 01655603330b67319fa5dc4be27819099857a006 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Thu, 16 Apr 2015 07:41:19 -0700 Subject: [PATCH 33/88] Apply zprobe_zoffset in axis_is_at_home Ensure the probe offset will always be included when homing Z. --- Marlin/Marlin_main.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp index a51d483e8f..5849fdd685 100644 --- a/Marlin/Marlin_main.cpp +++ b/Marlin/Marlin_main.cpp @@ -1034,6 +1034,10 @@ static void axis_is_at_home(int axis) { min_pos[axis] = base_min_pos(axis) + home_offset[axis]; max_pos[axis] = base_max_pos(axis) + home_offset[axis]; #endif + + #if defined(ENABLE_AUTO_BED_LEVELING) && Z_HOME_DIR < 0 + if (axis == Z_AXIS) current_position[Z_AXIS] += zprobe_zoffset; + #endif } /** @@ -2042,10 +2046,6 @@ inline void gcode_G28() { if (code_seen(axis_codes[Z_AXIS]) && code_has_value()) current_position[Z_AXIS] = code_value(); - #if defined(ENABLE_AUTO_BED_LEVELING) && (Z_HOME_DIR < 0) - if (home_all_axis || homeZ) current_position[Z_AXIS] += zprobe_zoffset; // Add Z_Probe offset (the distance is negative) - #endif - sync_plan_position(); #endif // else DELTA From 79a44a9de37859b58a8de288341a54df42e26061 Mon Sep 17 00:00:00 2001 From: Wurstnase Date: Fri, 24 Apr 2015 08:03:17 +0200 Subject: [PATCH 34/88] stepper.cpp macros rework delete some tabs --- Marlin/stepper.cpp | 121 ++++++++++++++++++++++++++------------------- 1 file changed, 71 insertions(+), 50 deletions(-) diff --git a/Marlin/stepper.cpp b/Marlin/stepper.cpp index c8bcbbbf2b..ca17b3f9f2 100644 --- a/Marlin/stepper.cpp +++ b/Marlin/stepper.cpp @@ -46,7 +46,7 @@ block_t *current_block; // A pointer to the block currently being traced // Variables used by The Stepper Driver Interrupt static unsigned char out_bits; // The next stepping-bits to be output -static unsigned int cleaning_buffer_counter; +static unsigned int cleaning_buffer_counter; #ifdef Z_DUAL_ENDSTOPS static bool performing_homing = false, @@ -285,8 +285,8 @@ void checkHitEndstops() { } #ifdef Z_PROBE_ENDSTOP if (endstop_z_probe_hit) { - SERIAL_ECHOPAIR(" Z_PROBE:", (float)endstops_trigsteps[Z_AXIS] / axis_steps_per_unit[Z_AXIS]); - LCD_MESSAGEPGM(MSG_ENDSTOPS_HIT "ZP"); + SERIAL_ECHOPAIR(" Z_PROBE:", (float)endstops_trigsteps[Z_AXIS] / axis_steps_per_unit[Z_AXIS]); + LCD_MESSAGEPGM(MSG_ENDSTOPS_HIT "ZP"); } #endif SERIAL_EOL; @@ -411,7 +411,7 @@ ISR(TIMER1_COMPA_vect) { OCR1A = 200; return; } - + // If there is no current block, attempt to pop one from the buffer if (!current_block) { // Anything in the buffer? @@ -463,14 +463,22 @@ ISR(TIMER1_COMPA_vect) { count_direction[Y_AXIS] = 1; } + #define _ENDSTOP(axis, minmax) axis ##_## minmax ##_endstop + #define _ENDSTOP_PIN(AXIS, MINMAX) AXIS ##_## MINMAX ##_PIN + #define _ENDSTOP_INVERTING(AXIS, MINMAX) AXIS ##_## MINMAX ##_ENDSTOP_INVERTING + #define _OLD_ENDSTOP(axis, minmax) old_## axis ##_## minmax ##_endstop + #define _AXIS(AXIS) AXIS ##_AXIS + #define _ENDSTOP_HIT(axis) endstop_## axis ##_hit + #define UPDATE_ENDSTOP(axis,AXIS,minmax,MINMAX) \ - bool axis ##_## minmax ##_endstop = (READ(AXIS ##_## MINMAX ##_PIN) != AXIS ##_## MINMAX ##_ENDSTOP_INVERTING); \ - if (axis ##_## minmax ##_endstop && old_## axis ##_## minmax ##_endstop && (current_block->steps[AXIS ##_AXIS] > 0)) { \ - endstops_trigsteps[AXIS ##_AXIS] = count_position[AXIS ##_AXIS]; \ - endstop_## axis ##_hit = true; \ + bool _ENDSTOP(axis, minmax) = (READ(_ENDSTOP_PIN(AXIS, MINMAX)) != _ENDSTOP_INVERTING(AXIS, MINMAX)); \ + if (_ENDSTOP(axis, minmax) && _OLD_ENDSTOP(axis, minmax) && (current_block->steps[_AXIS(AXIS)] > 0)) { \ + endstops_trigsteps[_AXIS(AXIS)] = count_position[_AXIS(AXIS)]; \ + _ENDSTOP_HIT(axis) = true; \ step_events_completed = current_block->step_event_count; \ } \ - old_## axis ##_## minmax ##_endstop = axis ##_## minmax ##_endstop; + _OLD_ENDSTOP(axis, minmax) = _ENDSTOP(axis, minmax); + // Check X and Y endstops if (check_endstops) { @@ -486,7 +494,7 @@ ISR(TIMER1_COMPA_vect) { #ifdef DUAL_X_CARRIAGE // with 2 x-carriages, endstops are only checked in the homing direction for the active extruder if ((current_block->active_extruder == 0 && X_HOME_DIR == -1) || (current_block->active_extruder != 0 && X2_HOME_DIR == -1)) - #endif + #endif { #if HAS_X_MIN UPDATE_ENDSTOP(x, X, min, MIN); @@ -572,14 +580,14 @@ ISR(TIMER1_COMPA_vect) { z_probe_endstop=(READ(Z_PROBE_PIN) != Z_PROBE_ENDSTOP_INVERTING); if(z_probe_endstop && old_z_probe_endstop) { - endstops_trigsteps[Z_AXIS] = count_position[Z_AXIS]; - endstop_z_probe_hit=true; + endstops_trigsteps[Z_AXIS] = count_position[Z_AXIS]; + endstop_z_probe_hit=true; -// if (z_probe_endstop && old_z_probe_endstop) SERIAL_ECHOLN("z_probe_endstop = true"); +// if (z_probe_endstop && old_z_probe_endstop) SERIAL_ECHOLN("z_probe_endstop = true"); } old_z_probe_endstop = z_probe_endstop; #endif - + } // check_endstops } @@ -625,15 +633,15 @@ ISR(TIMER1_COMPA_vect) { #endif // !Z_DUAL_ENDSTOPS #endif // Z_MAX_PIN - + #ifdef Z_PROBE_ENDSTOP UPDATE_ENDSTOP(z, Z, probe, PROBE); z_probe_endstop=(READ(Z_PROBE_PIN) != Z_PROBE_ENDSTOP_INVERTING); if(z_probe_endstop && old_z_probe_endstop) { - endstops_trigsteps[Z_AXIS] = count_position[Z_AXIS]; - endstop_z_probe_hit=true; -// if (z_probe_endstop && old_z_probe_endstop) SERIAL_ECHOLN("z_probe_endstop = true"); + endstops_trigsteps[Z_AXIS] = count_position[Z_AXIS]; + endstop_z_probe_hit=true; +// if (z_probe_endstop && old_z_probe_endstop) SERIAL_ECHOLN("z_probe_endstop = true"); } old_z_probe_endstop = z_probe_endstop; #endif @@ -667,6 +675,11 @@ ISR(TIMER1_COMPA_vect) { } #endif //ADVANCE + #define _COUNTER(axis) counter_## axis + #define _WRITE_STEP(AXIS, HIGHLOW) AXIS ##_STEP_WRITE(HIGHLOW) + #define _APPLY_STEP(AXIS) AXIS ##_APPLY_STEP + #define _INVERT_STEP_PIN(AXIS) INVERT_## AXIS ##_STEP_PIN + #ifdef CONFIG_STEPPERS_TOSHIBA /** * The Toshiba stepper controller require much longer pulses. @@ -675,8 +688,8 @@ ISR(TIMER1_COMPA_vect) { * lag to allow it work with without needing NOPs */ #define STEP_ADD(axis, AXIS) \ - counter_## axis += current_block->steps[AXIS ##_AXIS]; \ - if (counter_## axis > 0) { AXIS ##_STEP_WRITE(HIGH); } + _COUNTER(axis) += current_block->steps[_AXIS(AXIS)]; \ + if (_COUNTER(axis) > 0) { _WRITE_STEP(AXIS, HIGH); } STEP_ADD(x,X); STEP_ADD(y,Y); STEP_ADD(z,Z); @@ -685,10 +698,10 @@ ISR(TIMER1_COMPA_vect) { #endif #define STEP_IF_COUNTER(axis, AXIS) \ - if (counter_## axis > 0) { \ - counter_## axis -= current_block->step_event_count; \ - count_position[AXIS ##_AXIS] += count_direction[AXIS ##_AXIS]; \ - AXIS ##_STEP_WRITE(LOW); \ + if (_COUNTER(axis) > 0) { \ + _COUNTER(axis) -= current_block->step_event_count; \ + count_position[_AXIS(AXIS)] += count_direction[_AXIS(AXIS)]; \ + _WRITE_STEP(AXIS, LOW); \ } STEP_IF_COUNTER(x, X); @@ -701,12 +714,12 @@ ISR(TIMER1_COMPA_vect) { #else // !CONFIG_STEPPERS_TOSHIBA #define APPLY_MOVEMENT(axis, AXIS) \ - counter_## axis += current_block->steps[AXIS ##_AXIS]; \ - if (counter_## axis > 0) { \ - AXIS ##_APPLY_STEP(!INVERT_## AXIS ##_STEP_PIN,0); \ - counter_## axis -= current_block->step_event_count; \ - count_position[AXIS ##_AXIS] += count_direction[AXIS ##_AXIS]; \ - AXIS ##_APPLY_STEP(INVERT_## AXIS ##_STEP_PIN,0); \ + _COUNTER(axis) += current_block->steps[_AXIS(AXIS)]; \ + if (_COUNTER(axis) > 0) { \ + _APPLY_STEP(AXIS)(!_INVERT_STEP_PIN(AXIS),0); \ + _COUNTER(axis) -= current_block->step_event_count; \ + count_position[_AXIS(AXIS)] += count_direction[_AXIS(AXIS)]; \ + _APPLY_STEP(AXIS)(_INVERT_STEP_PIN(AXIS),0); \ } APPLY_MOVEMENT(x, X); @@ -874,7 +887,7 @@ void st_init() { #ifdef HAVE_L6470DRIVER L6470_init(); #endif - + // Initialize Dir Pins #if HAS_X_DIR X_DIR_INIT; @@ -920,11 +933,11 @@ void st_init() { #if HAS_Y_ENABLE Y_ENABLE_INIT; if (!Y_ENABLE_ON) Y_ENABLE_WRITE(HIGH); - - #if defined(Y_DUAL_STEPPER_DRIVERS) && HAS_Y2_ENABLE - Y2_ENABLE_INIT; - if (!Y_ENABLE_ON) Y2_ENABLE_WRITE(HIGH); - #endif + + #if defined(Y_DUAL_STEPPER_DRIVERS) && HAS_Y2_ENABLE + Y2_ENABLE_INIT; + if (!Y_ENABLE_ON) Y2_ENABLE_WRITE(HIGH); + #endif #endif #if HAS_Z_ENABLE Z_ENABLE_INIT; @@ -1001,8 +1014,8 @@ void st_init() { #ifdef ENDSTOPPULLUP_ZMAX WRITE(Z2_MAX_PIN,HIGH); #endif - #endif - + #endif + #if (defined(Z_PROBE_PIN) && Z_PROBE_PIN >= 0) && defined(Z_PROBE_ENDSTOP) // Check for Z_PROBE_ENDSTOP so we don't pull a pin high unless it's to be used. SET_INPUT(Z_PROBE_PIN); #ifdef ENDSTOPPULLUP_ZPROBE @@ -1010,10 +1023,13 @@ void st_init() { #endif #endif + #define _STEP_INIT(AXIS) AXIS ##_STEP_INIT + #define _DISABLE(axis) disable_## axis() + #define AXIS_INIT(axis, AXIS, PIN) \ - AXIS ##_STEP_INIT; \ - AXIS ##_STEP_WRITE(INVERT_## PIN ##_STEP_PIN); \ - disable_## axis() + _STEP_INIT(AXIS); \ + _WRITE_STEP(AXIS, _INVERT_STEP_PIN(PIN)); \ + _DISABLE(axis) #define E_AXIS_INIT(NUM) AXIS_INIT(e## NUM, E## NUM, E) @@ -1146,14 +1162,19 @@ void quickStop() { // No other ISR should ever interrupt this! void babystep(const uint8_t axis, const bool direction) { + #define _ENABLE(axis) enable_## axis() + #define _READ_DIR(AXIS) AXIS ##_DIR_READ + #define _INVERT_DIR(AXIS) INVERT_## AXIS ##_DIR + #define _APPLY_DIR(AXIS, INVERT) AXIS ##_APPLY_DIR(INVERT, true) + #define BABYSTEP_AXIS(axis, AXIS, INVERT) { \ - enable_## axis(); \ - uint8_t old_pin = AXIS ##_DIR_READ; \ - AXIS ##_APPLY_DIR(INVERT_## AXIS ##_DIR^direction^INVERT, true); \ - AXIS ##_APPLY_STEP(!INVERT_## AXIS ##_STEP_PIN, true); \ + _ENABLE(axis); \ + uint8_t old_pin = _READ_DIR(AXIS); \ + _APPLY_DIR(AXIS, _INVERT_DIR(AXIS)^direction^INVERT); \ + _APPLY_STEP(AXIS)(!_INVERT_STEP_PIN(AXIS), true); \ delayMicroseconds(2); \ - AXIS ##_APPLY_STEP(INVERT_## AXIS ##_STEP_PIN, true); \ - AXIS ##_APPLY_DIR(old_pin, true); \ + _APPLY_STEP(AXIS)(_INVERT_STEP_PIN(AXIS), true); \ + _APPLY_DIR(AXIS, old_pin); \ } switch(axis) { @@ -1165,7 +1186,7 @@ void quickStop() { case Y_AXIS: BABYSTEP_AXIS(y, Y, false); break; - + case Z_AXIS: { #ifndef DELTA @@ -1202,7 +1223,7 @@ void quickStop() { #endif } break; - + default: break; } } @@ -1266,7 +1287,7 @@ void microstep_init() { #if HAS_MICROSTEPS pinMode(X_MS1_PIN,OUTPUT); - pinMode(X_MS2_PIN,OUTPUT); + pinMode(X_MS2_PIN,OUTPUT); pinMode(Y_MS1_PIN,OUTPUT); pinMode(Y_MS2_PIN,OUTPUT); pinMode(Z_MS1_PIN,OUTPUT); From 0fed46360c7b43ecb49f0fc404a46fa48ad3a4cc Mon Sep 17 00:00:00 2001 From: AnHardt Date: Fri, 24 Apr 2015 16:43:19 +0200 Subject: [PATCH 35/88] Add variant for MAX6675 in M104 Else will throw error: @:0 B@:0 Error:No thermistors - no temperature [ERROR] Error:No thermistors - no temperature when no bed is defined --- Marlin/Marlin_main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp index a06bf78d0c..52b79c7dee 100644 --- a/Marlin/Marlin_main.cpp +++ b/Marlin/Marlin_main.cpp @@ -3152,7 +3152,7 @@ inline void gcode_M104() { inline void gcode_M105() { if (setTargetedHotend(105)) return; - #if HAS_TEMP_0 || HAS_TEMP_BED + #if HAS_TEMP_0 || HAS_TEMP_BED || defined(HEATER_0_USES_MAX6675) SERIAL_PROTOCOLPGM("ok"); #if HAS_TEMP_0 SERIAL_PROTOCOLPGM(" T:"); From 35e79d56a5e5af903f310f28d92298bfc5bb5548 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 24 Apr 2015 19:23:12 -0700 Subject: [PATCH 36/88] Remove set-coordinate extension of G28 --- Marlin/Marlin_main.cpp | 26 +------------------------- 1 file changed, 1 insertion(+), 25 deletions(-) diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp index 7d417bd228..a09ef49070 100644 --- a/Marlin/Marlin_main.cpp +++ b/Marlin/Marlin_main.cpp @@ -1790,12 +1790,6 @@ inline void gcode_G4() { * Y Home to the Y endstop * Z Home to the Z endstop * - * If numbers are included with XYZ set the position as with G92 - * Currently adds the home_offset, which may be wrong and removed soon. - * - * Xn Home X, setting X to n + home_offset[X_AXIS] - * Yn Home Y, setting Y to n + home_offset[Y_AXIS] - * Zn Home Z, setting Z to n + home_offset[Z_AXIS] */ inline void gcode_G28() { @@ -1855,7 +1849,7 @@ inline void gcode_G28() { homeY = code_seen(axis_codes[Y_AXIS]), homeZ = code_seen(axis_codes[Z_AXIS]); - home_all_axis = !(homeX || homeY || homeZ) || (homeX && homeY && homeZ); + home_all_axis = (!homeX && !homeY && !homeZ) || (homeX && homeY && homeZ); if (home_all_axis || homeZ) { @@ -1942,18 +1936,6 @@ inline void gcode_G28() { // Home Y if (home_all_axis || homeY) HOMEAXIS(Y); - // Set the X position, if included - if (code_seen(axis_codes[X_AXIS]) && code_has_value()) { - if (code_value_long() != 0) // filter 0 - current_position[X_AXIS] = code_value(); - } - - // Set the Y position, if included - if (code_seen(axis_codes[Y_AXIS]) && code_has_value()) { - if (code_value_long() != 0) // filter 0 - current_position[Y_AXIS] = code_value(); - } - // Home Z last if homing towards the bed #if Z_HOME_DIR < 0 @@ -2037,12 +2019,6 @@ inline void gcode_G28() { #endif // Z_HOME_DIR < 0 - // Set the Z position, if included - if (code_seen(axis_codes[Z_AXIS]) && code_has_value()) { - if (code_value_long() != 0) // filter 0 - current_position[Z_AXIS] = code_value(); - } - #if defined(ENABLE_AUTO_BED_LEVELING) && (Z_HOME_DIR < 0) if (home_all_axis || homeZ) current_position[Z_AXIS] += zprobe_zoffset; // Add Z_Probe offset (the distance is negative) #endif From ce142afddae60aad7ce6f7fb2d223613607b700d Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 24 Apr 2015 20:13:01 -0700 Subject: [PATCH 37/88] G4 shows status message only if no message is set already - Address issue raised in #1961 --- Marlin/Marlin_main.cpp | 5 +++-- Marlin/ultralcd.cpp | 2 ++ Marlin/ultralcd.h | 1 + 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp index a09ef49070..e1a9cd6e01 100644 --- a/Marlin/Marlin_main.cpp +++ b/Marlin/Marlin_main.cpp @@ -1740,14 +1740,15 @@ inline void gcode_G2_G3(bool clockwise) { inline void gcode_G4() { millis_t codenum = 0; - LCD_MESSAGEPGM(MSG_DWELL); - if (code_seen('P')) codenum = code_value_long(); // milliseconds to wait if (code_seen('S')) codenum = code_value_long() * 1000; // seconds to wait st_synchronize(); refresh_cmd_timeout(); codenum += previous_cmd_ms; // keep track of when we started waiting + + if (!lcd_hasstatus()) LCD_MESSAGEPGM(MSG_DWELL); + while (millis() < codenum) { manage_heater(); manage_inactivity(); diff --git a/Marlin/ultralcd.cpp b/Marlin/ultralcd.cpp index c96f098994..03da2366b3 100644 --- a/Marlin/ultralcd.cpp +++ b/Marlin/ultralcd.cpp @@ -1418,6 +1418,8 @@ void set_utf_strlen(char *s, uint8_t n) { s[i] = 0; } +bool lcd_hasstatus() { return (lcd_status_message[0] != '\0'); } + void lcd_setstatus(const char* message, bool persist) { if (lcd_status_message_level > 0) return; strncpy(lcd_status_message, message, 3*LCD_WIDTH); diff --git a/Marlin/ultralcd.h b/Marlin/ultralcd.h index b8d5cba8ad..97d939fa34 100644 --- a/Marlin/ultralcd.h +++ b/Marlin/ultralcd.h @@ -8,6 +8,7 @@ int lcd_strlen_P(const char *s); void lcd_update(); void lcd_init(); + bool lcd_hasstatus(); void lcd_setstatus(const char* message, const bool persist=false); void lcd_setstatuspgm(const char* message, const uint8_t level=0); void lcd_setalertstatuspgm(const char* message); From 56ff46eb8b34d3fa8db9ea6ddac22dab6f79878c Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 24 Apr 2015 20:43:16 -0700 Subject: [PATCH 38/88] Improve code_has_value test --- Marlin/Marlin_main.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp index e1a9cd6e01..27027c8332 100644 --- a/Marlin/Marlin_main.cpp +++ b/Marlin/Marlin_main.cpp @@ -890,8 +890,11 @@ void get_command() { } bool code_has_value() { - char c = strchr_pointer[1]; - return (c >= '0' && c <= '9') || c == '-' || c == '+' || c == '.'; + int i = 1; + char c = strchr_pointer[i]; + if (c == '-' || c == '+') c = strchr_pointer[++i]; + if (c == '.') c = strchr_pointer[++i]; + return (c >= '0' && c <= '9'); } float code_value() { From 182f2cda350b284db5d71cc194ed7f3ea7872d4c Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 24 Apr 2015 21:26:36 -0700 Subject: [PATCH 39/88] Minor cleanup of M48 --- Marlin/Marlin_main.cpp | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp index 05a864e6a6..65290b3cb8 100644 --- a/Marlin/Marlin_main.cpp +++ b/Marlin/Marlin_main.cpp @@ -1189,8 +1189,8 @@ inline void set_destination_to_current() { memcpy(destination, current_position, st_synchronize(); endstops_hit_on_purpose(); // clear endstop hit flags + // Get the current stepper position after bumping an endstop current_position[Z_AXIS] = st_get_position_mm(Z_AXIS); - // make sure the planner knows where we are as it may be a bit different than we last said to move to sync_plan_position(); #endif // !DELTA @@ -2908,12 +2908,12 @@ inline void gcode_M42() { } } - double X_probe_location, Y_probe_location, - X_current = X_probe_location = st_get_position_mm(X_AXIS), - Y_current = Y_probe_location = st_get_position_mm(Y_AXIS), + double X_current = st_get_position_mm(X_AXIS), + Y_current = st_get_position_mm(Y_AXIS), Z_current = st_get_position_mm(Z_AXIS), - Z_start_location = Z_current + Z_RAISE_BEFORE_PROBING, - ext_position = st_get_position_mm(E_AXIS); + E_current = st_get_position_mm(E_AXIS), + X_probe_location = X_current, Y_probe_location = Y_current, + Z_start_location = Z_current + Z_RAISE_BEFORE_PROBING; bool deploy_probe_for_each_reading = code_seen('E') || code_seen('e'); @@ -2948,10 +2948,7 @@ inline void gcode_M42() { st_synchronize(); plan_bed_level_matrix.set_to_identity(); - plan_buffer_line(X_current, Y_current, Z_start_location, - ext_position, - homing_feedrate[Z_AXIS] / 60, - active_extruder); + plan_buffer_line(X_current, Y_current, Z_start_location, E_current, homing_feedrate[Z_AXIS] / 60, active_extruder); st_synchronize(); // @@ -2963,7 +2960,7 @@ inline void gcode_M42() { SERIAL_PROTOCOLPGM("Positioning the probe...\n"); plan_buffer_line( X_probe_location, Y_probe_location, Z_start_location, - ext_position, + E_current, homing_feedrate[X_AXIS]/60, active_extruder); st_synchronize(); @@ -2971,7 +2968,7 @@ inline void gcode_M42() { current_position[X_AXIS] = X_current = st_get_position_mm(X_AXIS); current_position[Y_AXIS] = Y_current = st_get_position_mm(Y_AXIS); current_position[Z_AXIS] = Z_current = st_get_position_mm(Z_AXIS); - current_position[E_AXIS] = ext_position = st_get_position_mm(E_AXIS); + current_position[E_AXIS] = E_current = st_get_position_mm(E_AXIS); // // OK, do the inital probe to get us close to the bed. @@ -2987,7 +2984,7 @@ inline void gcode_M42() { Z_start_location = st_get_position_mm(Z_AXIS) + Z_RAISE_BEFORE_PROBING; plan_buffer_line( X_probe_location, Y_probe_location, Z_start_location, - ext_position, + E_current, homing_feedrate[X_AXIS]/60, active_extruder); st_synchronize(); @@ -3017,8 +3014,8 @@ inline void gcode_M42() { if (radius < 0.0) radius = -radius; X_current = X_probe_location + cos(theta) * radius; - Y_current = Y_probe_location + sin(theta) * radius; X_current = constrain(X_current, X_MIN_POS, X_MAX_POS); + Y_current = Y_probe_location + sin(theta) * radius; Y_current = constrain(Y_current, Y_MIN_POS, Y_MAX_POS); if (verbose_level > 3) { From 0d8c00d3f644e569489b61ba5bdb0ec22ba6fcf3 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 24 Apr 2015 21:36:04 -0700 Subject: [PATCH 40/88] Define lcd_hasstatus for no lcd also --- Marlin/ultralcd.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Marlin/ultralcd.h b/Marlin/ultralcd.h index 97d939fa34..94ec168778 100644 --- a/Marlin/ultralcd.h +++ b/Marlin/ultralcd.h @@ -101,6 +101,7 @@ #else //no LCD FORCE_INLINE void lcd_update() {} FORCE_INLINE void lcd_init() {} + FORCE_INLINE bool lcd_hasstatus() { return false; }; FORCE_INLINE void lcd_setstatus(const char* message, const bool persist=false) {} FORCE_INLINE void lcd_setstatuspgm(const char* message, const uint8_t level=0) {} FORCE_INLINE void lcd_buttons_update() {} @@ -108,8 +109,8 @@ FORCE_INLINE void lcd_buzz(long duration,uint16_t freq) {} FORCE_INLINE bool lcd_detected(void) { return true; } - #define LCD_MESSAGEPGM(x) - #define LCD_ALERTMESSAGEPGM(x) + #define LCD_MESSAGEPGM(x) do{}while(0) + #define LCD_ALERTMESSAGEPGM(x) do{}while(0) #endif //ULTRA_LCD From 7295640f44636e779c1d8dec142c0b987c65fb59 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 24 Apr 2015 21:37:27 -0700 Subject: [PATCH 41/88] Remove extraneous ; --- Marlin/ultralcd.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Marlin/ultralcd.h b/Marlin/ultralcd.h index 94ec168778..8f96f008ba 100644 --- a/Marlin/ultralcd.h +++ b/Marlin/ultralcd.h @@ -101,7 +101,7 @@ #else //no LCD FORCE_INLINE void lcd_update() {} FORCE_INLINE void lcd_init() {} - FORCE_INLINE bool lcd_hasstatus() { return false; }; + FORCE_INLINE bool lcd_hasstatus() { return false; } FORCE_INLINE void lcd_setstatus(const char* message, const bool persist=false) {} FORCE_INLINE void lcd_setstatuspgm(const char* message, const uint8_t level=0) {} FORCE_INLINE void lcd_buttons_update() {} From 97dfa0365d7d83303bbc2bea547d1815005c02f6 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 24 Apr 2015 21:51:10 -0700 Subject: [PATCH 42/88] Rename expireStatusMillis to expire_status_ms --- Marlin/ultralcd.cpp | 14 +++++++------- Marlin/ultralcd_implementation_hitachi_HD44780.h | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Marlin/ultralcd.cpp b/Marlin/ultralcd.cpp index 03da2366b3..a310db6143 100644 --- a/Marlin/ultralcd.cpp +++ b/Marlin/ultralcd.cpp @@ -273,22 +273,22 @@ static void lcd_status_screen() { #endif #if PROGRESS_MSG_EXPIRE > 0 // Handle message expire - if (expireStatusMillis > 0) { + if (expire_status_ms > 0) { if (card.isFileOpen()) { // Expire the message when printing is active if (IS_SD_PRINTING) { // Expire the message when printing is active - if (ms >= expireStatusMillis) { + if (ms >= expire_status_ms) { lcd_status_message[0] = '\0'; - expireStatusMillis = 0; + expire_status_ms = 0; } } else { - expireStatusMillis += LCD_UPDATE_INTERVAL; + expire_status_ms += LCD_UPDATE_INTERVAL; } } else { - expireStatusMillis = 0; + expire_status_ms = 0; } } #endif @@ -1394,7 +1394,7 @@ void lcd_finishstatus(bool persist=false) { #ifdef LCD_PROGRESS_BAR progressBarTick = millis(); #if PROGRESS_MSG_EXPIRE > 0 - expireStatusMillis = persist ? 0 : progressBarTick + PROGRESS_MSG_EXPIRE; + expire_status_ms = persist ? 0 : progressBarTick + PROGRESS_MSG_EXPIRE; #endif #endif lcdDrawUpdate = 2; @@ -1405,7 +1405,7 @@ void lcd_finishstatus(bool persist=false) { } #if defined(LCD_PROGRESS_BAR) && PROGRESS_MSG_EXPIRE > 0 - void dontExpireStatus() { expireStatusMillis = 0; } + void dontExpireStatus() { expire_status_ms = 0; } #endif void set_utf_strlen(char *s, uint8_t n) { diff --git a/Marlin/ultralcd_implementation_hitachi_HD44780.h b/Marlin/ultralcd_implementation_hitachi_HD44780.h index f9ed56a7dc..50c6deb5e4 100644 --- a/Marlin/ultralcd_implementation_hitachi_HD44780.h +++ b/Marlin/ultralcd_implementation_hitachi_HD44780.h @@ -196,7 +196,7 @@ #ifdef LCD_PROGRESS_BAR static uint16_t progressBarTick = 0; #if PROGRESS_MSG_EXPIRE > 0 - static uint16_t expireStatusMillis = 0; + static uint16_t expire_status_ms = 0; #endif #define LCD_STR_PROGRESS "\x03\x04\x05" #endif From c92b59952a9eb517d92df58f428df8dbb03a1f05 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 24 Apr 2015 22:16:09 -0700 Subject: [PATCH 43/88] Use millis_t for progress_bar_ms and expire_status_ms --- Marlin/ultralcd.cpp | 8 ++++---- Marlin/ultralcd_implementation_hitachi_HD44780.h | 9 +++++---- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/Marlin/ultralcd.cpp b/Marlin/ultralcd.cpp index a310db6143..1d4e167287 100644 --- a/Marlin/ultralcd.cpp +++ b/Marlin/ultralcd.cpp @@ -267,8 +267,8 @@ static void lcd_status_screen() { #ifdef LCD_PROGRESS_BAR millis_t ms = millis(); #ifndef PROGRESS_MSG_ONCE - if (ms > progressBarTick + PROGRESS_BAR_MSG_TIME + PROGRESS_BAR_BAR_TIME) { - progressBarTick = ms; + if (ms > progress_bar_ms + PROGRESS_BAR_MSG_TIME + PROGRESS_BAR_BAR_TIME) { + progress_bar_ms = ms; } #endif #if PROGRESS_MSG_EXPIRE > 0 @@ -1392,9 +1392,9 @@ void lcd_ignore_click(bool b) { void lcd_finishstatus(bool persist=false) { #ifdef LCD_PROGRESS_BAR - progressBarTick = millis(); + progress_bar_ms = millis(); #if PROGRESS_MSG_EXPIRE > 0 - expire_status_ms = persist ? 0 : progressBarTick + PROGRESS_MSG_EXPIRE; + expire_status_ms = persist ? 0 : progress_bar_ms + PROGRESS_MSG_EXPIRE; #endif #endif lcdDrawUpdate = 2; diff --git a/Marlin/ultralcd_implementation_hitachi_HD44780.h b/Marlin/ultralcd_implementation_hitachi_HD44780.h index 50c6deb5e4..eb1f525cc2 100644 --- a/Marlin/ultralcd_implementation_hitachi_HD44780.h +++ b/Marlin/ultralcd_implementation_hitachi_HD44780.h @@ -194,9 +194,9 @@ #include "utf_mapper.h" #ifdef LCD_PROGRESS_BAR - static uint16_t progressBarTick = 0; + static millis_t progress_bar_ms = 0; #if PROGRESS_MSG_EXPIRE > 0 - static uint16_t expire_status_ms = 0; + static millis_t expire_status_ms = 0; #endif #define LCD_STR_PROGRESS "\x03\x04\x05" #endif @@ -588,8 +588,9 @@ static void lcd_implementation_status_screen() { #ifdef LCD_PROGRESS_BAR if (card.isFileOpen()) { - if (millis() >= progressBarTick + PROGRESS_BAR_MSG_TIME || !lcd_status_message[0]) { - // draw the progress bar + // Draw the progress bar if the message has shown long enough + // or if there is no message set. + if (millis() >= progress_bar_ms + PROGRESS_BAR_MSG_TIME || !lcd_status_message[0]) { int tix = (int)(card.percentDone() * LCD_WIDTH * 3) / 100, cel = tix / 3, rem = tix % 3, i = LCD_WIDTH; char msg[LCD_WIDTH+1], b = ' '; From 5c29fda16756d28b231444b1e54ed656650bc8ab Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sat, 25 Apr 2015 00:46:33 -0700 Subject: [PATCH 44/88] Add a warning for DISABLE_[XYZ] options --- Marlin/Configuration.h | 1 + Marlin/configurator/config/Configuration.h | 1 + Marlin/example_configurations/Felix/Configuration.h | 1 + Marlin/example_configurations/Felix/Configuration_DUAL.h | 1 + Marlin/example_configurations/Hephestos/Configuration.h | 1 + Marlin/example_configurations/K8200/Configuration.h | 1 + Marlin/example_configurations/SCARA/Configuration.h | 1 + Marlin/example_configurations/WITBOX/Configuration.h | 1 + Marlin/example_configurations/delta/generic/Configuration.h | 1 + Marlin/example_configurations/delta/kossel_mini/Configuration.h | 1 + Marlin/example_configurations/makibox/Configuration.h | 1 + Marlin/example_configurations/tvrrug/Round2/Configuration.h | 1 + 12 files changed, 12 insertions(+) diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index 4e39703ad4..e3d0c339a2 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -364,6 +364,7 @@ const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic #define E_ENABLE_ON 0 // For all extruders // Disables axis when it's not being used. +// WARNING: When motors turn off there is a chance of losing position accuracy! #define DISABLE_X false #define DISABLE_Y false #define DISABLE_Z false diff --git a/Marlin/configurator/config/Configuration.h b/Marlin/configurator/config/Configuration.h index 7210894182..59d13ab64e 100644 --- a/Marlin/configurator/config/Configuration.h +++ b/Marlin/configurator/config/Configuration.h @@ -364,6 +364,7 @@ const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic #define E_ENABLE_ON 0 // For all extruders // Disables axis when it's not being used. +// WARNING: When motors turn off there is a chance of losing position accuracy! #define DISABLE_X false #define DISABLE_Y false #define DISABLE_Z false diff --git a/Marlin/example_configurations/Felix/Configuration.h b/Marlin/example_configurations/Felix/Configuration.h index 5b1bca2256..558ee3bb03 100644 --- a/Marlin/example_configurations/Felix/Configuration.h +++ b/Marlin/example_configurations/Felix/Configuration.h @@ -317,6 +317,7 @@ const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic #define E_ENABLE_ON 0 // For all extruders // Disables axis when it's not being used. +// WARNING: When motors turn off there is a chance of losing position accuracy! #define DISABLE_X false #define DISABLE_Y false #define DISABLE_Z false diff --git a/Marlin/example_configurations/Felix/Configuration_DUAL.h b/Marlin/example_configurations/Felix/Configuration_DUAL.h index edc1588101..2e5633b8c1 100644 --- a/Marlin/example_configurations/Felix/Configuration_DUAL.h +++ b/Marlin/example_configurations/Felix/Configuration_DUAL.h @@ -317,6 +317,7 @@ const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic #define E_ENABLE_ON 0 // For all extruders // Disables axis when it's not being used. +// WARNING: When motors turn off there is a chance of losing position accuracy! #define DISABLE_X false #define DISABLE_Y false #define DISABLE_Z false diff --git a/Marlin/example_configurations/Hephestos/Configuration.h b/Marlin/example_configurations/Hephestos/Configuration.h index 0ebea087c6..69841816fd 100644 --- a/Marlin/example_configurations/Hephestos/Configuration.h +++ b/Marlin/example_configurations/Hephestos/Configuration.h @@ -338,6 +338,7 @@ const bool Z_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the logic #define E_ENABLE_ON 0 // For all extruders // Disables axis when it's not being used. +// WARNING: When motors turn off there is a chance of losing position accuracy! #define DISABLE_X false #define DISABLE_Y false #define DISABLE_Z false diff --git a/Marlin/example_configurations/K8200/Configuration.h b/Marlin/example_configurations/K8200/Configuration.h index 68634b552a..2987552f6d 100644 --- a/Marlin/example_configurations/K8200/Configuration.h +++ b/Marlin/example_configurations/K8200/Configuration.h @@ -375,6 +375,7 @@ const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic #define E_ENABLE_ON 0 // For all extruders // Disables axis when it's not being used. +// WARNING: When motors turn off there is a chance of losing position accuracy! #define DISABLE_X false #define DISABLE_Y false #define DISABLE_Z true diff --git a/Marlin/example_configurations/SCARA/Configuration.h b/Marlin/example_configurations/SCARA/Configuration.h index 3718edbe7b..6d70fa244f 100644 --- a/Marlin/example_configurations/SCARA/Configuration.h +++ b/Marlin/example_configurations/SCARA/Configuration.h @@ -369,6 +369,7 @@ const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic #define E_ENABLE_ON 0 // For all extruders // Disables axis when it's not being used. +// WARNING: When motors turn off there is a chance of losing position accuracy! #define DISABLE_X false #define DISABLE_Y false #define DISABLE_Z false diff --git a/Marlin/example_configurations/WITBOX/Configuration.h b/Marlin/example_configurations/WITBOX/Configuration.h index d4ff5b2aca..7022f78887 100644 --- a/Marlin/example_configurations/WITBOX/Configuration.h +++ b/Marlin/example_configurations/WITBOX/Configuration.h @@ -337,6 +337,7 @@ const bool Z_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the logic #define E_ENABLE_ON 0 // For all extruders // Disables axis when it's not being used. +// WARNING: When motors turn off there is a chance of losing position accuracy! #define DISABLE_X false #define DISABLE_Y false #define DISABLE_Z true diff --git a/Marlin/example_configurations/delta/generic/Configuration.h b/Marlin/example_configurations/delta/generic/Configuration.h index 1fa08d0cb4..ae094ccac5 100644 --- a/Marlin/example_configurations/delta/generic/Configuration.h +++ b/Marlin/example_configurations/delta/generic/Configuration.h @@ -367,6 +367,7 @@ const bool Z_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the logic #define E_ENABLE_ON 0 // For all extruders // Disables axis when it's not being used. +// WARNING: When motors turn off there is a chance of losing position accuracy! #define DISABLE_X false #define DISABLE_Y false #define DISABLE_Z false diff --git a/Marlin/example_configurations/delta/kossel_mini/Configuration.h b/Marlin/example_configurations/delta/kossel_mini/Configuration.h index 5557932838..f6b6a1e036 100644 --- a/Marlin/example_configurations/delta/kossel_mini/Configuration.h +++ b/Marlin/example_configurations/delta/kossel_mini/Configuration.h @@ -367,6 +367,7 @@ const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic #define E_ENABLE_ON 0 // For all extruders // Disables axis when it's not being used. +// WARNING: When motors turn off there is a chance of losing position accuracy! #define DISABLE_X false #define DISABLE_Y false #define DISABLE_Z false diff --git a/Marlin/example_configurations/makibox/Configuration.h b/Marlin/example_configurations/makibox/Configuration.h index bc6cbb949f..500f47fe86 100644 --- a/Marlin/example_configurations/makibox/Configuration.h +++ b/Marlin/example_configurations/makibox/Configuration.h @@ -337,6 +337,7 @@ const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic #define E_ENABLE_ON 0 // For all extruders // Disables axis when it's not being used. +// WARNING: When motors turn off there is a chance of losing position accuracy! #define DISABLE_X false #define DISABLE_Y false #define DISABLE_Z false diff --git a/Marlin/example_configurations/tvrrug/Round2/Configuration.h b/Marlin/example_configurations/tvrrug/Round2/Configuration.h index a785543ca7..314faf2d6a 100644 --- a/Marlin/example_configurations/tvrrug/Round2/Configuration.h +++ b/Marlin/example_configurations/tvrrug/Round2/Configuration.h @@ -339,6 +339,7 @@ const bool Z_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the logic #define E_ENABLE_ON 1 // For all extruders // Disables axis when it's not being used. +// WARNING: When motors turn off there is a chance of losing position accuracy! #define DISABLE_X false #define DISABLE_Y false #define DISABLE_Z false From 9c5d14ea683099cbc70597894488281ab380c4f1 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sat, 25 Apr 2015 03:12:49 -0700 Subject: [PATCH 45/88] Fix BEEPER duration --- Marlin/ultralcd.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Marlin/ultralcd.cpp b/Marlin/ultralcd.cpp index 1d4e167287..433d0087b1 100644 --- a/Marlin/ultralcd.cpp +++ b/Marlin/ultralcd.cpp @@ -1544,7 +1544,9 @@ void lcd_buzz(long duration, uint16_t freq) { if (freq > 0) { #if BEEPER > 0 SET_OUTPUT(BEEPER); - tone(BEEPER, freq, duration); + tone(BEEPER, freq); + delay(duration); + noTone(BEEPER); #elif defined(LCD_USE_I2C_BUZZER) lcd.buzz(duration,freq); #else From a932e7490fcfa01eb64c3675a0ce83d29c16045c Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sat, 25 Apr 2015 03:25:30 -0700 Subject: [PATCH 46/88] No noTone needed, but delay is --- Marlin/ultralcd.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Marlin/ultralcd.cpp b/Marlin/ultralcd.cpp index 433d0087b1..d2fb575ce0 100644 --- a/Marlin/ultralcd.cpp +++ b/Marlin/ultralcd.cpp @@ -1544,11 +1544,10 @@ void lcd_buzz(long duration, uint16_t freq) { if (freq > 0) { #if BEEPER > 0 SET_OUTPUT(BEEPER); - tone(BEEPER, freq); + tone(BEEPER, freq, duration); delay(duration); - noTone(BEEPER); #elif defined(LCD_USE_I2C_BUZZER) - lcd.buzz(duration,freq); + lcd.buzz(duration, freq); #else delay(duration); #endif From a22a228bcc65e30c9c500dc17fbed51cc9718ef4 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sat, 25 Apr 2015 21:04:54 -0700 Subject: [PATCH 47/88] Rename files to move them in the IDE --- Marlin/BlinkM.cpp | 4 ++-- Marlin/BlinkM.h | 2 +- Marlin/Makefile | 4 ++-- Marlin/Marlin_main.cpp | 8 ++++---- Marlin/Servo.cpp | 4 ++-- Marlin/Servo.h | 6 +++--- .../{ConfigurationStore.cpp => configuration_store.cpp} | 4 ++-- Marlin/{ConfigurationStore.h => configuration_store.h} | 6 +++--- Marlin/{DOGMbitmaps.h => dogm_bitmaps.h} | 0 Marlin/dogm_lcd_implementation.h | 2 +- Marlin/pins_SAV_MKI.h | 2 +- Marlin/ultralcd.cpp | 2 +- 12 files changed, 22 insertions(+), 22 deletions(-) rename Marlin/{ConfigurationStore.cpp => configuration_store.cpp} (99%) rename Marlin/{ConfigurationStore.h => configuration_store.h} (83%) rename Marlin/{DOGMbitmaps.h => dogm_bitmaps.h} (100%) diff --git a/Marlin/BlinkM.cpp b/Marlin/BlinkM.cpp index b340f968c0..1ec5b656cc 100644 --- a/Marlin/BlinkM.cpp +++ b/Marlin/BlinkM.cpp @@ -1,11 +1,11 @@ /* - BlinkM.cpp - Library for controlling a BlinkM over i2c + blinkm.cpp - Library for controlling a BlinkM over i2c Created by Tim Koster, August 21 2013. */ #include "Marlin.h" #ifdef BLINKM -#include "BlinkM.h" +#include "blinkm.h" void SendColors(byte red, byte grn, byte blu) { Wire.begin(); diff --git a/Marlin/BlinkM.h b/Marlin/BlinkM.h index 5b802b718b..08169e589c 100644 --- a/Marlin/BlinkM.h +++ b/Marlin/BlinkM.h @@ -1,5 +1,5 @@ /* - BlinkM.h + blinkm.h Library header file for BlinkM library */ #if ARDUINO >= 100 diff --git a/Marlin/Makefile b/Marlin/Makefile index 56e5dda734..e23c2a19b4 100644 --- a/Marlin/Makefile +++ b/Marlin/Makefile @@ -267,8 +267,8 @@ endif CXXSRC = WMath.cpp WString.cpp Print.cpp Marlin_main.cpp \ MarlinSerial.cpp Sd2Card.cpp SdBaseFile.cpp SdFatUtil.cpp \ SdFile.cpp SdVolume.cpp motion_control.cpp planner.cpp \ - stepper.cpp temperature.cpp cardreader.cpp ConfigurationStore.cpp \ - watchdog.cpp SPI.cpp Servo.cpp Tone.cpp ultralcd.cpp digipot_mcp4451.cpp \ + stepper.cpp temperature.cpp cardreader.cpp configuration_store.cpp \ + watchdog.cpp SPI.cpp servo.cpp Tone.cpp ultralcd.cpp digipot_mcp4451.cpp \ vector_3.cpp qr_solve.cpp ifeq ($(LIQUID_TWI2), 0) CXXSRC += LiquidCrystal.cpp diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp index e22fddb271..33432ac366 100644 --- a/Marlin/Marlin_main.cpp +++ b/Marlin/Marlin_main.cpp @@ -49,18 +49,18 @@ #include "motion_control.h" #include "cardreader.h" #include "watchdog.h" -#include "ConfigurationStore.h" +#include "configuration_store.h" #include "language.h" #include "pins_arduino.h" #include "math.h" #ifdef BLINKM - #include "BlinkM.h" + #include "blinkm.h" #include "Wire.h" #endif #if NUM_SERVOS > 0 - #include "Servo.h" + #include "servo.h" #endif #if HAS_DIGIPOTSS @@ -4417,7 +4417,7 @@ inline void gcode_M503() { if (code_seen('Z')) { value = code_value(); if (Z_PROBE_OFFSET_RANGE_MIN <= value && value <= Z_PROBE_OFFSET_RANGE_MAX) { - zprobe_zoffset = -value; // compare w/ line 278 of ConfigurationStore.cpp + zprobe_zoffset = -value; // compare w/ line 278 of configuration_store.cpp SERIAL_ECHO_START; SERIAL_ECHOLNPGM(MSG_ZPROBE_ZOFFSET " " MSG_OK); SERIAL_EOL; diff --git a/Marlin/Servo.cpp b/Marlin/Servo.cpp index 27a7d3cf3e..81d73ae870 100644 --- a/Marlin/Servo.cpp +++ b/Marlin/Servo.cpp @@ -1,5 +1,5 @@ /* - Servo.cpp - Interrupt driven Servo library for Arduino using 16 bit timers- Version 2 + servo.cpp - Interrupt driven Servo library for Arduino using 16 bit timers- Version 2 Copyright (c) 2009 Michael Margolis. All right reserved. This library is free software; you can redistribute it and/or @@ -48,7 +48,7 @@ #include #include -#include "Servo.h" +#include "servo.h" #define usToTicks(_us) (( clockCyclesPerMicrosecond()* _us) / 8) // converts microseconds to tick (assumes prescale of 8) // 12 Aug 2009 #define ticksToUs(_ticks) (( (unsigned)_ticks * 8)/ clockCyclesPerMicrosecond() ) // converts from ticks back to microseconds diff --git a/Marlin/Servo.h b/Marlin/Servo.h index 682a3b3798..4647561754 100644 --- a/Marlin/Servo.h +++ b/Marlin/Servo.h @@ -1,5 +1,5 @@ /* - Servo.h - Interrupt driven Servo library for Arduino using 16 bit timers- Version 2 + servo.h - Interrupt driven Servo library for Arduino using 16 bit timers- Version 2 Copyright (c) 2009 Michael Margolis. All right reserved. This library is free software; you can redistribute it and/or @@ -42,8 +42,8 @@ detach() - Stops an attached servos from pulsing its i/o pin. */ -#ifndef Servo_h -#define Servo_h +#ifndef servo_h +#define servo_h #include diff --git a/Marlin/ConfigurationStore.cpp b/Marlin/configuration_store.cpp similarity index 99% rename from Marlin/ConfigurationStore.cpp rename to Marlin/configuration_store.cpp index 0154691de0..9f91db0985 100644 --- a/Marlin/ConfigurationStore.cpp +++ b/Marlin/configuration_store.cpp @@ -1,5 +1,5 @@ /** - * ConfigurationStore.cpp + * configuration_store.cpp * * Configuration and EEPROM storage * @@ -93,7 +93,7 @@ #include "planner.h" #include "temperature.h" #include "ultralcd.h" -#include "ConfigurationStore.h" +#include "configuration_store.h" #ifdef MESH_BED_LEVELING #include "mesh_bed_leveling.h" diff --git a/Marlin/ConfigurationStore.h b/Marlin/configuration_store.h similarity index 83% rename from Marlin/ConfigurationStore.h rename to Marlin/configuration_store.h index 3dc4a92cfd..6f1a8fcbdc 100644 --- a/Marlin/ConfigurationStore.h +++ b/Marlin/configuration_store.h @@ -1,5 +1,5 @@ -#ifndef CONFIGURATIONSTORE_H -#define CONFIGURATIONSTORE_H +#ifndef CONFIGURATION_STORE_H +#define CONFIGURATION_STORE_H #include "Configuration.h" @@ -19,4 +19,4 @@ void Config_ResetDefault(); FORCE_INLINE void Config_RetrieveSettings() { Config_ResetDefault(); Config_PrintSettings(); } #endif -#endif //CONFIGURATIONSTORE_H +#endif //CONFIGURATION_STORE_H diff --git a/Marlin/DOGMbitmaps.h b/Marlin/dogm_bitmaps.h similarity index 100% rename from Marlin/DOGMbitmaps.h rename to Marlin/dogm_bitmaps.h diff --git a/Marlin/dogm_lcd_implementation.h b/Marlin/dogm_lcd_implementation.h index 3ab18af75c..0965b90972 100644 --- a/Marlin/dogm_lcd_implementation.h +++ b/Marlin/dogm_lcd_implementation.h @@ -29,7 +29,7 @@ #endif #include -#include "DOGMbitmaps.h" +#include "dogm_bitmaps.h" #include "ultralcd.h" #include "ultralcd_st7920_u8glib_rrd.h" diff --git a/Marlin/pins_SAV_MKI.h b/Marlin/pins_SAV_MKI.h index e898c9f285..e853b63b95 100644 --- a/Marlin/pins_SAV_MKI.h +++ b/Marlin/pins_SAV_MKI.h @@ -82,7 +82,7 @@ #define HOME_PIN -1 // A4 = marlin 44 - teensy = 42 #ifdef NUM_SERVOS - #define SERVO0_PIN 41 // In teensy's pin definition for pinMode (in Servo.cpp) + #define SERVO0_PIN 41 // In teensy's pin definition for pinMode (in servo.cpp) #endif #endif // SAV_3DLCD diff --git a/Marlin/ultralcd.cpp b/Marlin/ultralcd.cpp index d2fb575ce0..81844573ea 100644 --- a/Marlin/ultralcd.cpp +++ b/Marlin/ultralcd.cpp @@ -5,7 +5,7 @@ #include "cardreader.h" #include "temperature.h" #include "stepper.h" -#include "ConfigurationStore.h" +#include "configuration_store.h" int8_t encoderDiff; /* encoderDiff is updated from interrupt context and added to encoderPosition every LCD update */ From 0ec444720f32a25175b6aa6846d31e457d751bdf Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sat, 25 Apr 2015 21:06:19 -0700 Subject: [PATCH 48/88] Rename blinkm files --- Marlin/{BlinkM.cpp => blinkm.cpp} | 0 Marlin/{BlinkM.h => blinkm.h} | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename Marlin/{BlinkM.cpp => blinkm.cpp} (100%) rename Marlin/{BlinkM.h => blinkm.h} (100%) diff --git a/Marlin/BlinkM.cpp b/Marlin/blinkm.cpp similarity index 100% rename from Marlin/BlinkM.cpp rename to Marlin/blinkm.cpp diff --git a/Marlin/BlinkM.h b/Marlin/blinkm.h similarity index 100% rename from Marlin/BlinkM.h rename to Marlin/blinkm.h From d43cc2dd5f52c9b71b486e7778d7fb44ea67fad6 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sun, 26 Apr 2015 20:08:45 -0700 Subject: [PATCH 49/88] M111 - Debug Level - Add `M111` as a standard option to set the debug level - Implement `DEBUG_ECHO` in `process_commands` - Other debug levels (e.g., `DEBUG_DRYRUN`) need more work --- Marlin/Marlin.h | 12 ++++++ Marlin/Marlin_main.cpp | 59 ++++++++++++++++++--------- Marlin/configurator/config/language.h | 3 +- Marlin/language.h | 3 +- 4 files changed, 55 insertions(+), 22 deletions(-) diff --git a/Marlin/Marlin.h b/Marlin/Marlin.h index 0158a1d714..97978c45f7 100644 --- a/Marlin/Marlin.h +++ b/Marlin/Marlin.h @@ -223,6 +223,18 @@ void Stop(); void filrunout(); #endif +/** + * Debug flags - not yet widely applied + */ +enum DebugFlags { + DEBUG_ECHO = BIT(0), + DEBUG_INFO = BIT(1), + DEBUG_ERRORS = BIT(2), + DEBUG_DRYRUN = BIT(3), + DEBUG_COMMUNICATION = BIT(4) +}; +extern uint8_t marlin_debug_flags; + extern bool Running; inline bool IsRunning() { return Running; } inline bool IsStopped() { return !Running; } diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp index 33432ac366..ac86cb05b7 100644 --- a/Marlin/Marlin_main.cpp +++ b/Marlin/Marlin_main.cpp @@ -138,6 +138,7 @@ * M109 - Sxxx Wait for extruder current temp to reach target temp. Waits only when heating * Rxxx Wait for extruder current temp to reach target temp. Waits when heating and cooling * IF AUTOTEMP is enabled, S B F. Exit autotemp by any M109 without F + * M111 - Set debug flags with S. See flag bits defined in Marlin.h. * M112 - Emergency stop * M114 - Output current position to serial port * M115 - Capabilities string @@ -218,6 +219,8 @@ bool Running = true; +uint8_t marlin_debug_flags = DEBUG_INFO|DEBUG_ERRORS; + static float feedrate = 1500.0, next_feedrate, saved_feedrate; float current_position[NUM_AXIS] = { 0.0 }; static float destination[NUM_AXIS] = { 0.0 }; @@ -749,9 +752,10 @@ void get_command() { gcode_N = (strtol(strchr_pointer + 1, NULL, 10)); if (gcode_N != gcode_LastN + 1 && strstr_P(command, PSTR("M110")) == NULL) { SERIAL_ERROR_START; - SERIAL_ERRORPGM(MSG_ERR_LINE_NO); - SERIAL_ERRORLN(gcode_LastN); - //Serial.println(gcode_N); + SERIAL_ERRORPGM(MSG_ERR_LINE_NO1); + SERIAL_ERROR(gcode_LastN + 1); + SERIAL_ERRORPGM(MSG_ERR_LINE_NO2); + SERIAL_ERRORLN(gcode_N); FlushSerialRequestResend(); serial_count = 0; return; @@ -3337,12 +3341,17 @@ inline void gcode_M109() { #endif // HAS_TEMP_BED /** - * M112: Emergency Stop + * M111: Set the debug level */ -inline void gcode_M112() { - kill(); +inline void gcode_M111() { + marlin_debug_flags = code_seen('S') ? code_value_short() : DEBUG_INFO|DEBUG_ERRORS; } +/** + * M112: Emergency Stop + */ +inline void gcode_M112() { kill(); } + #ifdef BARICUDA #if HAS_HEATER_1 @@ -4781,6 +4790,12 @@ inline void gcode_T() { * This is called from the main loop() */ void process_commands() { + + if ((marlin_debug_flags & DEBUG_ECHO)) { + SERIAL_ECHO_START; + SERIAL_ECHOLN(command_queue[cmd_queue_index_r]); + } + if (code_seen('G')) { int gCode = code_value_short(); @@ -4919,34 +4934,38 @@ void process_commands() { gcode_M104(); break; - case 112: // M112 Emergency Stop + case 111: // M111: Set debug level + gcode_M111(); + break; + + case 112: // M112: Emergency Stop gcode_M112(); break; - case 140: // M140 Set bed temp + case 140: // M140: Set bed temp gcode_M140(); break; - case 105: // M105 Read current temperature + case 105: // M105: Read current temperature gcode_M105(); return; break; - case 109: // M109 Wait for temperature + case 109: // M109: Wait for temperature gcode_M109(); break; #if HAS_TEMP_BED - case 190: // M190 - Wait for bed heater to reach target. + case 190: // M190: Wait for bed heater to reach target gcode_M190(); break; #endif // HAS_TEMP_BED #if HAS_FAN - case 106: //M106 Fan On + case 106: // M106: Fan On gcode_M106(); break; - case 107: //M107 Fan Off + case 107: // M107: Fan Off gcode_M107(); break; #endif // HAS_FAN @@ -4954,20 +4973,20 @@ void process_commands() { #ifdef BARICUDA // PWM for HEATER_1_PIN #if HAS_HEATER_1 - case 126: // M126 valve open + case 126: // M126: valve open gcode_M126(); break; - case 127: // M127 valve closed + case 127: // M127: valve closed gcode_M127(); break; #endif // HAS_HEATER_1 // PWM for HEATER_2_PIN #if HAS_HEATER_2 - case 128: // M128 valve open + case 128: // M128: valve open gcode_M128(); break; - case 129: // M129 valve closed + case 129: // M129: valve closed gcode_M129(); break; #endif // HAS_HEATER_2 @@ -4975,13 +4994,13 @@ void process_commands() { #if HAS_POWER_SWITCH - case 80: // M80 - Turn on Power Supply + case 80: // M80: Turn on Power Supply gcode_M80(); break; #endif // HAS_POWER_SWITCH - case 81: // M81 - Turn off Power, including Power Supply, if possible + case 81: // M81: Turn off Power, including Power Supply, if possible gcode_M81(); break; @@ -4991,7 +5010,7 @@ void process_commands() { case 83: gcode_M83(); break; - case 18: //compatibility + case 18: // (for compatibility) case 84: // M84 gcode_M18_M84(); break; diff --git a/Marlin/configurator/config/language.h b/Marlin/configurator/config/language.h index 718fe9499c..2576bec42b 100644 --- a/Marlin/configurator/config/language.h +++ b/Marlin/configurator/config/language.h @@ -122,7 +122,8 @@ #define MSG_PLANNER_BUFFER_BYTES " PlannerBufferBytes: " #define MSG_OK "ok" #define MSG_FILE_SAVED "Done saving file." -#define MSG_ERR_LINE_NO "Line Number is not Last Line Number+1, Last Line: " +#define MSG_ERR_LINE_NO1 "Line Number out of sequence. Expected: " +#define MSG_ERR_LINE_NO2 " Got: " #define MSG_ERR_CHECKSUM_MISMATCH "checksum mismatch, Last Line: " #define MSG_ERR_NO_CHECKSUM "No Checksum with line number, Last Line: " #define MSG_ERR_NO_LINENUMBER_WITH_CHECKSUM "No Line Number with checksum, Last Line: " diff --git a/Marlin/language.h b/Marlin/language.h index 3bc7ce0161..c9ddfeee41 100644 --- a/Marlin/language.h +++ b/Marlin/language.h @@ -122,7 +122,8 @@ #define MSG_PLANNER_BUFFER_BYTES " PlannerBufferBytes: " #define MSG_OK "ok" #define MSG_FILE_SAVED "Done saving file." -#define MSG_ERR_LINE_NO "Line Number is not Last Line Number+1, Last Line: " +#define MSG_ERR_LINE_NO1 "Line Number out of sequence. Expected: " +#define MSG_ERR_LINE_NO2 " Got: " #define MSG_ERR_CHECKSUM_MISMATCH "checksum mismatch, Last Line: " #define MSG_ERR_NO_CHECKSUM "No Checksum with line number, Last Line: " #define MSG_ERR_NO_LINENUMBER_WITH_CHECKSUM "No Line Number with checksum, Last Line: " From 0fca084ea688aed41b892f9cea7e069510c73c94 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sun, 26 Apr 2015 18:44:01 -0700 Subject: [PATCH 50/88] Make EEPROM reproducible in GCode MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit With these changes the output of `M503 S0` is all you need to restore the EEPROM. Building on this it is straightforward to save and restore the EEPROM state using the SD card or external GCode file. - Added `M145` to set “heatup states” for the LCD menu - Added `M420` to toggle Mesh Bed Leveling - Added `M421` to set a single Mesh coordinate - Extended `Config_PrintSettings` with added M codes - Cleaned up some comments here and there --- Marlin/Configuration_adv.h | 2 +- Marlin/Marlin_main.cpp | 153 +++++++- Marlin/configuration_store.cpp | 334 +++++++++++------- .../configurator/config/Configuration_adv.h | 2 +- Marlin/configurator/config/language.h | 5 +- .../Felix/Configuration_adv.h | 2 +- .../Hephestos/Configuration_adv.h | 2 +- .../K8200/Configuration_adv.h | 2 +- .../SCARA/Configuration_adv.h | 2 +- .../WITBOX/Configuration_adv.h | 2 +- .../delta/generic/Configuration_adv.h | 2 +- .../delta/kossel_mini/Configuration_adv.h | 2 +- .../makibox/Configuration_adv.h | 2 +- .../tvrrug/Round2/Configuration_adv.h | 2 +- Marlin/language.h | 3 + Marlin/planner.cpp | 137 ++++--- Marlin/planner.h | 14 +- Marlin/temperature.cpp | 5 +- Marlin/ultralcd.cpp | 8 +- Marlin/watchdog.cpp | 6 +- 20 files changed, 453 insertions(+), 234 deletions(-) diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index 6478eb923e..059f0c5c16 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -355,7 +355,7 @@ const unsigned int dropsegments=5; //everything with less than this number of st //#define HEATERS_PARALLEL //=========================================================================== -//=============================Buffers ============================ +//================================= Buffers ================================= //=========================================================================== // @section hidden diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp index ac86cb05b7..cbeb9a0912 100644 --- a/Marlin/Marlin_main.cpp +++ b/Marlin/Marlin_main.cpp @@ -151,6 +151,7 @@ * M128 - EtoP Open (BariCUDA EtoP = electricity to air pressure transducer by jmil) * M129 - EtoP Closed (BariCUDA EtoP = electricity to air pressure transducer by jmil) * M140 - Set bed target temp + * M145 - Set the heatup state H B F for S (0=PLA, 1=ABS) * M150 - Set BlinkM Color Output R: Red<0-255> U(!): Green<0-255> B: Blue<0-255> over i2c, G for green does not work. * M190 - Sxxx Wait for bed current temp to reach target temp. Waits only when heating * Rxxx Wait for bed current temp to reach target temp. Waits when heating and cooling @@ -186,6 +187,8 @@ * M406 - Turn off Filament Sensor extrusion control * M407 - Display measured filament diameter * M410 - Quickstop. Abort all the planned moves + * M420 - Enable/Disable Mesh Leveling (with current values) S1=enable S0=disable + * M421 - Set a single Z coordinate in the Mesh Leveling grid. X Y Z * M500 - Store parameters in EEPROM * M501 - Read parameters from EEPROM (if you need reset them after you changed them temporarily). * M502 - Revert to the default "factory settings". You still need to store them in EEPROM afterwards if you want to. @@ -3385,6 +3388,62 @@ inline void gcode_M140() { if (code_seen('S')) setTargetBed(code_value()); } +#ifdef ULTIPANEL + + /** + * M145: Set the heatup state for a material in the LCD menu + * S (0=PLA, 1=ABS) + * H + * B + * F + */ + inline void gcode_M145() { + uint8_t material = code_seen('S') ? code_value_short() : 0; + if (material < 0 || material > 1) { + SERIAL_ERROR_START; + SERIAL_ERRORLNPGM(MSG_ERR_MATERIAL_INDEX); + } + else { + int v; + switch (material) { + case 0: + if (code_seen('H')) { + v = code_value_short(); + plaPreheatHotendTemp = constrain(v, EXTRUDE_MINTEMP, HEATER_0_MAXTEMP - 15); + } + if (code_seen('F')) { + v = code_value_short(); + plaPreheatFanSpeed = constrain(v, 0, 255); + } + #if TEMP_SENSOR_BED != 0 + if (code_seen('B')) { + v = code_value_short(); + plaPreheatHPBTemp = constrain(v, BED_MINTEMP, BED_MAXTEMP - 15); + } + #endif + break; + case 1: + if (code_seen('H')) { + v = code_value_short(); + absPreheatHotendTemp = constrain(v, EXTRUDE_MINTEMP, HEATER_0_MAXTEMP - 15); + } + if (code_seen('F')) { + v = code_value_short(); + absPreheatFanSpeed = constrain(v, 0, 255); + } + #if TEMP_SENSOR_BED != 0 + if (code_seen('B')) { + v = code_value_short(); + absPreheatHPBTemp = constrain(v, BED_MINTEMP, BED_MAXTEMP - 15); + } + #endif + break; + } + } + } + +#endif + #if HAS_POWER_SWITCH /** @@ -3492,7 +3551,8 @@ inline void gcode_M85() { } /** - * M92: Set inactivity shutdown timer with parameter S. To disable set zero (default) + * M92: Set axis steps-per-unit for one or more axes, X, Y, Z, and E. + * (Follows the same syntax as G92) */ inline void gcode_M92() { for(int8_t i=0; i < NUM_AXIS; i++) { @@ -3814,20 +3874,35 @@ inline void gcode_M206() { #ifdef FWRETRACT /** - * M207: Set retract length S[positive mm] F[feedrate mm/min] Z[additional zlift/hop] + * M207: Set firmware retraction values + * + * S[+mm] retract_length + * W[+mm] retract_length_swap (multi-extruder) + * F[mm/min] retract_feedrate + * Z[mm] retract_zlift */ inline void gcode_M207() { if (code_seen('S')) retract_length = code_value(); if (code_seen('F')) retract_feedrate = code_value() / 60; if (code_seen('Z')) retract_zlift = code_value(); + #if EXTRUDERS > 1 + if (code_seen('W')) retract_length_swap = code_value(); + #endif } /** - * M208: Set retract recover length S[positive mm surplus to the M207 S*] F[feedrate mm/min] + * M208: Set firmware un-retraction values + * + * S[+mm] retract_recover_length (in addition to M207 S*) + * W[+mm] retract_recover_length_swap (multi-extruder) + * F[mm/min] retract_recover_feedrate */ inline void gcode_M208() { if (code_seen('S')) retract_recover_length = code_value(); if (code_seen('F')) retract_recover_feedrate = code_value() / 60; + #if EXTRUDERS > 1 + if (code_seen('W')) retract_recover_length_swap = code_value(); + #endif } /** @@ -4380,6 +4455,42 @@ inline void gcode_M400() { st_synchronize(); } */ inline void gcode_M410() { quickStop(); } + +#ifdef MESH_BED_LEVELING + + /** + * M420: Enable/Disable Mesh Bed Leveling + */ + inline void gcode_M420() { if (code_seen('S') && code_has_value()) mbl.active = !!code_value_short(); } + + /** + * M421: Set a single Mesh Bed Leveling Z coordinate + */ + inline void gcode_M421() { + int x, y; + float z; + bool err = false, hasX, hasY, hasZ; + if ((hasX = code_seen('X'))) x = code_value_short(); + if ((hasY = code_seen('Y'))) y = code_value_short(); + if ((hasZ = code_seen('Z'))) z = code_value(); + + if (!hasX || !hasY || !hasZ) { + SERIAL_ERROR_START; + SERIAL_ERRORLNPGM(MSG_ERR_XYZ_REQUIRED_FOR_M421); + err = true; + } + + if (x >= MESH_NUM_X_POINTS || y >= MESH_NUM_Y_POINTS) { + SERIAL_ERROR_START; + SERIAL_ERRORLNPGM(MSG_ERR_MESH_INDEX_OOB); + err = true; + } + + if (!err) mbl.z_values[y][x] = z; + } + +#endif + /** * M500: Store settings in EEPROM */ @@ -4934,11 +5045,11 @@ void process_commands() { gcode_M104(); break; - case 111: // M111: Set debug level + case 111: // M111: Set debug level gcode_M111(); break; - case 112: // M112: Emergency Stop + case 112: // M112: Emergency Stop gcode_M112(); break; @@ -5017,28 +5128,35 @@ void process_commands() { case 85: // M85 gcode_M85(); break; - case 92: // M92 + case 92: // M92: Set the steps-per-unit for one or more axes gcode_M92(); break; - case 115: // M115 + case 115: // M115: Report capabilities gcode_M115(); break; - case 117: // M117 display message + case 117: // M117: Set LCD message text gcode_M117(); break; - case 114: // M114 + case 114: // M114: Report current position gcode_M114(); break; - case 120: // M120 + case 120: // M120: Enable endstops gcode_M120(); break; - case 121: // M121 + case 121: // M121: Disable endstops gcode_M121(); break; - case 119: // M119 + case 119: // M119: Report endstop states gcode_M119(); break; - //TODO: update for all axis, use for loop + + #ifdef ULTIPANEL + + case 145: // M145: Set material heatup parameters + gcode_M145(); + break; + + #endif #ifdef BLINKM @@ -5213,6 +5331,15 @@ void process_commands() { gcode_M410(); break; + #ifdef MESH_BED_LEVELING + case 420: // M420 Enable/Disable Mesh Bed Leveling + gcode_M420(); + break; + case 421: // M421 Set a Mesh Bed Leveling Z coordinate + gcode_M421(); + break; + #endif + case 500: // M500 Store settings in EEPROM gcode_M500(); break; diff --git a/Marlin/configuration_store.cpp b/Marlin/configuration_store.cpp index 9f91db0985..318501db62 100644 --- a/Marlin/configuration_store.cpp +++ b/Marlin/configuration_store.cpp @@ -20,72 +20,72 @@ * V19 EEPROM Layout: * * ver - * axis_steps_per_unit (x4) - * max_feedrate (x4) - * max_acceleration_units_per_sq_second (x4) - * acceleration - * retract_acceleration - * travel_acceleration - * minimumfeedrate - * mintravelfeedrate - * minsegmenttime - * max_xy_jerk - * max_z_jerk - * max_e_jerk - * home_offset (x3) + * M92 XYZE axis_steps_per_unit (x4) + * M203 XYZE max_feedrate (x4) + * M201 XYZE max_acceleration_units_per_sq_second (x4) + * M204 P acceleration + * M204 R retract_acceleration + * M204 T travel_acceleration + * M205 S minimumfeedrate + * M205 T mintravelfeedrate + * M205 B minsegmenttime + * M205 X max_xy_jerk + * M205 Z max_z_jerk + * M205 E max_e_jerk + * M206 XYZ home_offset (x3) * * Mesh bed leveling: - * active - * mesh_num_x - * mesh_num_y - * z_values[][] - * zprobe_zoffset + * M420 S active + * mesh_num_x (set in firmware) + * mesh_num_y (set in firmware) + * M421 XYZ z_values[][] + * M851 zprobe_zoffset * * DELTA: - * endstop_adj (x3) - * delta_radius - * delta_diagonal_rod - * delta_segments_per_second + * M666 XYZ endstop_adj (x3) + * M665 R delta_radius + * M665 L delta_diagonal_rod + * M665 S delta_segments_per_second * * ULTIPANEL: - * plaPreheatHotendTemp - * plaPreheatHPBTemp - * plaPreheatFanSpeed - * absPreheatHotendTemp - * absPreheatHPBTemp - * absPreheatFanSpeed + * M145 S0 H plaPreheatHotendTemp + * M145 S0 B plaPreheatHPBTemp + * M145 S0 F plaPreheatFanSpeed + * M145 S1 H absPreheatHotendTemp + * M145 S1 B absPreheatHPBTemp + * M145 S1 F absPreheatFanSpeed * * PIDTEMP: - * Kp[0], Ki[0], Kd[0], Kc[0] - * Kp[1], Ki[1], Kd[1], Kc[1] - * Kp[2], Ki[2], Kd[2], Kc[2] - * Kp[3], Ki[3], Kd[3], Kc[3] + * M301 E0 PIDC Kp[0], Ki[0], Kd[0], Kc[0] + * M301 E1 PIDC Kp[1], Ki[1], Kd[1], Kc[1] + * M301 E2 PIDC Kp[2], Ki[2], Kd[2], Kc[2] + * M301 E3 PIDC Kp[3], Ki[3], Kd[3], Kc[3] * * PIDTEMPBED: - * bedKp, bedKi, bedKd + * M304 PID bedKp, bedKi, bedKd * * DOGLCD: - * lcd_contrast + * M250 C lcd_contrast * * SCARA: - * axis_scaling (x3) + * M365 XYZ axis_scaling (x3) * * FWRETRACT: - * autoretract_enabled - * retract_length - * retract_length_swap - * retract_feedrate - * retract_zlift - * retract_recover_length - * retract_recover_length_swap - * retract_recover_feedrate + * M209 S autoretract_enabled + * M207 S retract_length + * M207 W retract_length_swap + * M207 F retract_feedrate + * M207 Z retract_zlift + * M208 S retract_recover_length + * M208 W retract_recover_length_swap + * M208 F retract_recover_feedrate * - * volumetric_enabled + * M200 D volumetric_enabled (D>0 makes this enabled) * - * filament_size (x4) + * M200 T D filament_size (x4) (T0..3) * - * Z_DUAL_ENDSTOPS - * z_endstop_adj + * Z_DUAL_ENDSTOPS: + * M666 Z z_endstop_adj * */ #include "Marlin.h" @@ -122,7 +122,9 @@ void _EEPROM_readData(int &pos, uint8_t* value, uint8_t size) { #define EEPROM_WRITE_VAR(pos, value) _EEPROM_writeData(pos, (uint8_t*)&value, sizeof(value)) #define EEPROM_READ_VAR(pos, value) _EEPROM_readData(pos, (uint8_t*)&value, sizeof(value)) -//====================================================================================== +/** + * Store Configuration Settings - M500 + */ #define DUMMY_PID_VALUE 3000.0f @@ -235,7 +237,7 @@ void Config_StoreSettings() { EEPROM_WRITE_VAR(i, bedKi); EEPROM_WRITE_VAR(i, bedKd); - #ifndef DOGLCD + #ifndef HAS_LCD_CONTRAST int lcd_contrast = 32; #endif EEPROM_WRITE_VAR(i, lcd_contrast); @@ -286,6 +288,10 @@ void Config_StoreSettings() { SERIAL_ECHOLNPGM(" bytes)"); } +/** + * Retrieve Configuration Settings - M501 + */ + void Config_RetrieveSettings() { int i = EEPROM_OFFSET; @@ -412,7 +418,7 @@ void Config_RetrieveSettings() { for (int q=2; q--;) EEPROM_READ_VAR(i, dummy); // bedKi, bedKd } - #ifndef DOGLCD + #ifndef HAS_LCD_CONTRAST int lcd_contrast; #endif EEPROM_READ_VAR(i, lcd_contrast); @@ -467,6 +473,10 @@ void Config_RetrieveSettings() { #endif // EEPROM_SETTINGS +/** + * Reset Configuration Settings - M502 + */ + void Config_ResetDefault() { float tmp1[] = DEFAULT_AXIS_STEPS_PER_UNIT; float tmp2[] = DEFAULT_MAX_FEEDRATE; @@ -522,7 +532,7 @@ void Config_ResetDefault() { absPreheatFanSpeed = ABS_PREHEAT_FAN_SPEED; #endif - #ifdef DOGLCD + #ifdef HAS_LCD_CONTRAST lcd_contrast = DEFAULT_LCD_CONTRAST; #endif @@ -584,14 +594,20 @@ void Config_ResetDefault() { #ifndef DISABLE_M503 +/** + * Print Configuration Settings - M503 + */ + +#define CONFIG_ECHO_START do{ if (!forReplay) SERIAL_ECHO_START; }while(0) + void Config_PrintSettings(bool forReplay) { // Always have this function, even with EEPROM_SETTINGS disabled, the current values will be shown - SERIAL_ECHO_START; + CONFIG_ECHO_START; if (!forReplay) { SERIAL_ECHOLNPGM("Steps per unit:"); - SERIAL_ECHO_START; + CONFIG_ECHO_START; } SERIAL_ECHOPAIR(" M92 X", axis_steps_per_unit[X_AXIS]); SERIAL_ECHOPAIR(" Y", axis_steps_per_unit[Y_AXIS]); @@ -599,23 +615,23 @@ void Config_PrintSettings(bool forReplay) { SERIAL_ECHOPAIR(" E", axis_steps_per_unit[E_AXIS]); SERIAL_EOL; - SERIAL_ECHO_START; + CONFIG_ECHO_START; #ifdef SCARA if (!forReplay) { SERIAL_ECHOLNPGM("Scaling factors:"); - SERIAL_ECHO_START; + CONFIG_ECHO_START; } SERIAL_ECHOPAIR(" M365 X", axis_scaling[X_AXIS]); SERIAL_ECHOPAIR(" Y", axis_scaling[Y_AXIS]); SERIAL_ECHOPAIR(" Z", axis_scaling[Z_AXIS]); SERIAL_EOL; - SERIAL_ECHO_START; + CONFIG_ECHO_START; #endif // SCARA if (!forReplay) { SERIAL_ECHOLNPGM("Maximum feedrates (mm/s):"); - SERIAL_ECHO_START; + CONFIG_ECHO_START; } SERIAL_ECHOPAIR(" M203 X", max_feedrate[X_AXIS]); SERIAL_ECHOPAIR(" Y", max_feedrate[Y_AXIS]); @@ -623,160 +639,224 @@ void Config_PrintSettings(bool forReplay) { SERIAL_ECHOPAIR(" E", max_feedrate[E_AXIS]); SERIAL_EOL; - SERIAL_ECHO_START; + CONFIG_ECHO_START; if (!forReplay) { SERIAL_ECHOLNPGM("Maximum Acceleration (mm/s2):"); - SERIAL_ECHO_START; + CONFIG_ECHO_START; } - SERIAL_ECHOPAIR(" M201 X", max_acceleration_units_per_sq_second[X_AXIS] ); - SERIAL_ECHOPAIR(" Y", max_acceleration_units_per_sq_second[Y_AXIS] ); - SERIAL_ECHOPAIR(" Z", max_acceleration_units_per_sq_second[Z_AXIS] ); + SERIAL_ECHOPAIR(" M201 X", max_acceleration_units_per_sq_second[X_AXIS]); + SERIAL_ECHOPAIR(" Y", max_acceleration_units_per_sq_second[Y_AXIS]); + SERIAL_ECHOPAIR(" Z", max_acceleration_units_per_sq_second[Z_AXIS]); SERIAL_ECHOPAIR(" E", max_acceleration_units_per_sq_second[E_AXIS]); SERIAL_EOL; - SERIAL_ECHO_START; + CONFIG_ECHO_START; if (!forReplay) { SERIAL_ECHOLNPGM("Accelerations: P=printing, R=retract and T=travel"); - SERIAL_ECHO_START; + CONFIG_ECHO_START; } - SERIAL_ECHOPAIR(" M204 P", acceleration ); + SERIAL_ECHOPAIR(" M204 P", acceleration); SERIAL_ECHOPAIR(" R", retract_acceleration); SERIAL_ECHOPAIR(" T", travel_acceleration); SERIAL_EOL; - SERIAL_ECHO_START; + CONFIG_ECHO_START; if (!forReplay) { SERIAL_ECHOLNPGM("Advanced variables: S=Min feedrate (mm/s), T=Min travel feedrate (mm/s), B=minimum segment time (ms), X=maximum XY jerk (mm/s), Z=maximum Z jerk (mm/s), E=maximum E jerk (mm/s)"); - SERIAL_ECHO_START; + CONFIG_ECHO_START; } - SERIAL_ECHOPAIR(" M205 S", minimumfeedrate ); - SERIAL_ECHOPAIR(" T", mintravelfeedrate ); - SERIAL_ECHOPAIR(" B", minsegmenttime ); - SERIAL_ECHOPAIR(" X", max_xy_jerk ); + SERIAL_ECHOPAIR(" M205 S", minimumfeedrate); + SERIAL_ECHOPAIR(" T", mintravelfeedrate); + SERIAL_ECHOPAIR(" B", minsegmenttime); + SERIAL_ECHOPAIR(" X", max_xy_jerk); SERIAL_ECHOPAIR(" Z", max_z_jerk); SERIAL_ECHOPAIR(" E", max_e_jerk); SERIAL_EOL; - SERIAL_ECHO_START; + CONFIG_ECHO_START; if (!forReplay) { SERIAL_ECHOLNPGM("Home offset (mm):"); - SERIAL_ECHO_START; + CONFIG_ECHO_START; } - SERIAL_ECHOPAIR(" M206 X", home_offset[X_AXIS] ); - SERIAL_ECHOPAIR(" Y", home_offset[Y_AXIS] ); - SERIAL_ECHOPAIR(" Z", home_offset[Z_AXIS] ); + SERIAL_ECHOPAIR(" M206 X", home_offset[X_AXIS]); + SERIAL_ECHOPAIR(" Y", home_offset[Y_AXIS]); + SERIAL_ECHOPAIR(" Z", home_offset[Z_AXIS]); SERIAL_EOL; + #ifdef MESH_BED_LEVELING + if (!forReplay) { + SERIAL_ECHOLNPGM("Mesh bed leveling:"); + CONFIG_ECHO_START; + } + SERIAL_ECHOPAIR(" M420 S", (int32_t)mbl.active); + SERIAL_ECHOPAIR(" X", MESH_NUM_X_POINTS); + SERIAL_ECHOPAIR(" Y", MESH_NUM_Y_POINTS); + SERIAL_EOL; + for (int y=0; y 1 + if (forReplay) { + for (uint8_t i = 0; i < EXTRUDERS; i++) { + CONFIG_ECHO_START; + SERIAL_ECHOPAIR(" M301 E", (unsigned long)i); + SERIAL_ECHOPAIR(" P", PID_PARAM(Kp, i)); + SERIAL_ECHOPAIR(" I", unscalePID_i(PID_PARAM(Ki, i))); + SERIAL_ECHOPAIR(" D", unscalePID_d(PID_PARAM(Kd, i))); + #ifdef PID_ADD_EXTRUSION_RATE + SERIAL_ECHOPAIR(" C", PID_PARAM(Kc, i)); + #endif + SERIAL_EOL; + } + } + else + #endif // EXTRUDERS > 1 + // !forReplay || EXTRUDERS == 1 + { + CONFIG_ECHO_START; + SERIAL_ECHOPAIR(" M301 P", PID_PARAM(Kp, 0)); // for compatibility with hosts, only echo values for E0 + SERIAL_ECHOPAIR(" I", unscalePID_i(PID_PARAM(Ki, 0))); + SERIAL_ECHOPAIR(" D", unscalePID_d(PID_PARAM(Kd, 0))); + #ifdef PID_ADD_EXTRUSION_RATE + SERIAL_ECHOPAIR(" C", PID_PARAM(Kc, 0)); + #endif + SERIAL_EOL; + } + #endif // PIDTEMP + #ifdef PIDTEMPBED - SERIAL_ECHOPAIR(" M304 P", bedKp); // for compatibility with hosts, only echos values for E0 + CONFIG_ECHO_START; + SERIAL_ECHOPAIR(" M304 P", bedKp); SERIAL_ECHOPAIR(" I", unscalePID_i(bedKi)); SERIAL_ECHOPAIR(" D", unscalePID_d(bedKd)); SERIAL_EOL; #endif + + #endif // PIDTEMP || PIDTEMPBED + + #ifdef HAS_LCD_CONTRAST + CONFIG_ECHO_START; + if (!forReplay) { + SERIAL_ECHOLNPGM("LCD Contrast:"); + CONFIG_ECHO_START; + } + SERIAL_ECHOPAIR(" M250 C", (unsigned long)lcd_contrast); + SERIAL_EOL; #endif #ifdef FWRETRACT - SERIAL_ECHO_START; + CONFIG_ECHO_START; if (!forReplay) { SERIAL_ECHOLNPGM("Retract: S=Length (mm) F:Speed (mm/m) Z: ZLift (mm)"); - SERIAL_ECHO_START; + CONFIG_ECHO_START; } SERIAL_ECHOPAIR(" M207 S", retract_length); + #if EXTRUDERS > 1 + SERIAL_ECHOPAIR(" W", retract_length_swap); + #endif SERIAL_ECHOPAIR(" F", retract_feedrate*60); SERIAL_ECHOPAIR(" Z", retract_zlift); SERIAL_EOL; - SERIAL_ECHO_START; + CONFIG_ECHO_START; if (!forReplay) { SERIAL_ECHOLNPGM("Recover: S=Extra length (mm) F:Speed (mm/m)"); - SERIAL_ECHO_START; + CONFIG_ECHO_START; } SERIAL_ECHOPAIR(" M208 S", retract_recover_length); + #if EXTRUDERS > 1 + SERIAL_ECHOPAIR(" W", retract_recover_length_swap); + #endif SERIAL_ECHOPAIR(" F", retract_recover_feedrate*60); SERIAL_EOL; - SERIAL_ECHO_START; + CONFIG_ECHO_START; if (!forReplay) { SERIAL_ECHOLNPGM("Auto-Retract: S=0 to disable, 1 to interpret extrude-only moves as retracts or recoveries"); - SERIAL_ECHO_START; + CONFIG_ECHO_START; } SERIAL_ECHOPAIR(" M209 S", (unsigned long)(autoretract_enabled ? 1 : 0)); SERIAL_EOL; - #if EXTRUDERS > 1 - if (!forReplay) { - SERIAL_ECHO_START; - SERIAL_ECHOLNPGM("Multi-extruder settings:"); - SERIAL_ECHO_START; - SERIAL_ECHOPAIR(" Swap retract length (mm): ", retract_length_swap); - SERIAL_EOL; - SERIAL_ECHO_START; - SERIAL_ECHOPAIR(" Swap rec. addl. length (mm): ", retract_recover_length_swap); - SERIAL_EOL; - } - #endif // EXTRUDERS > 1 - #endif // FWRETRACT - SERIAL_ECHO_START; if (volumetric_enabled) { if (!forReplay) { + CONFIG_ECHO_START; SERIAL_ECHOLNPGM("Filament settings:"); - SERIAL_ECHO_START; } + + CONFIG_ECHO_START; SERIAL_ECHOPAIR(" M200 D", filament_size[0]); SERIAL_EOL; #if EXTRUDERS > 1 - SERIAL_ECHO_START; + CONFIG_ECHO_START; SERIAL_ECHOPAIR(" M200 T1 D", filament_size[1]); SERIAL_EOL; #if EXTRUDERS > 2 - SERIAL_ECHO_START; + CONFIG_ECHO_START; SERIAL_ECHOPAIR(" M200 T2 D", filament_size[2]); SERIAL_EOL; #if EXTRUDERS > 3 - SERIAL_ECHO_START; + CONFIG_ECHO_START; SERIAL_ECHOPAIR(" M200 T3 D", filament_size[3]); SERIAL_EOL; #endif @@ -785,21 +865,23 @@ void Config_PrintSettings(bool forReplay) { } else { if (!forReplay) { + CONFIG_ECHO_START; SERIAL_ECHOLNPGM("Filament settings: Disabled"); } } #ifdef ENABLE_AUTO_BED_LEVELING - SERIAL_ECHO_START; #ifdef CUSTOM_M_CODES if (!forReplay) { + CONFIG_ECHO_START; SERIAL_ECHOLNPGM("Z-Probe Offset (mm):"); - SERIAL_ECHO_START; } + CONFIG_ECHO_START; SERIAL_ECHOPAIR(" M", (unsigned long)CUSTOM_M_CODE_SET_Z_PROBE_OFFSET); SERIAL_ECHOPAIR(" Z", -zprobe_zoffset); #else if (!forReplay) { + CONFIG_ECHO_START; SERIAL_ECHOPAIR("Z-Probe Offset (mm):", -zprobe_zoffset); } #endif diff --git a/Marlin/configurator/config/Configuration_adv.h b/Marlin/configurator/config/Configuration_adv.h index 6478eb923e..059f0c5c16 100644 --- a/Marlin/configurator/config/Configuration_adv.h +++ b/Marlin/configurator/config/Configuration_adv.h @@ -355,7 +355,7 @@ const unsigned int dropsegments=5; //everything with less than this number of st //#define HEATERS_PARALLEL //=========================================================================== -//=============================Buffers ============================ +//================================= Buffers ================================= //=========================================================================== // @section hidden diff --git a/Marlin/configurator/config/language.h b/Marlin/configurator/config/language.h index 2576bec42b..b6beb47473 100644 --- a/Marlin/configurator/config/language.h +++ b/Marlin/configurator/config/language.h @@ -70,7 +70,7 @@ #endif #else #ifndef MACHINE_NAME - #define MACHINE_NAME "Mendel" + #define MACHINE_NAME "3D Printer" #endif #endif @@ -158,6 +158,9 @@ #define MSG_Z_MAX "z_max: " #define MSG_Z2_MAX "z2_max: " #define MSG_Z_PROBE "z_probe: " +#define MSG_ERR_MATERIAL_INDEX "M145 S out of range (0-1)" +#define MSG_ERR_XYZ_REQUIRED_FOR_M421 "M421 requires XYZ parameters" +#define MSG_ERR_MESH_INDEX_OOB "Mesh XY index is out of bounds" #define MSG_M119_REPORT "Reporting endstop status" #define MSG_ENDSTOP_HIT "TRIGGERED" #define MSG_ENDSTOP_OPEN "open" diff --git a/Marlin/example_configurations/Felix/Configuration_adv.h b/Marlin/example_configurations/Felix/Configuration_adv.h index a80790b957..bc27cd8dcf 100644 --- a/Marlin/example_configurations/Felix/Configuration_adv.h +++ b/Marlin/example_configurations/Felix/Configuration_adv.h @@ -355,7 +355,7 @@ const unsigned int dropsegments=5; //everything with less than this number of st //#define HEATERS_PARALLEL //=========================================================================== -//=============================Buffers ============================ +//================================= Buffers ================================= //=========================================================================== // @section hidden diff --git a/Marlin/example_configurations/Hephestos/Configuration_adv.h b/Marlin/example_configurations/Hephestos/Configuration_adv.h index 84536d044e..39545c378b 100644 --- a/Marlin/example_configurations/Hephestos/Configuration_adv.h +++ b/Marlin/example_configurations/Hephestos/Configuration_adv.h @@ -355,7 +355,7 @@ const unsigned int dropsegments=5; //everything with less than this number of st //#define HEATERS_PARALLEL //=========================================================================== -//=============================Buffers ============================ +//================================= Buffers ================================= //=========================================================================== // @section hidden diff --git a/Marlin/example_configurations/K8200/Configuration_adv.h b/Marlin/example_configurations/K8200/Configuration_adv.h index a80790b957..bc27cd8dcf 100644 --- a/Marlin/example_configurations/K8200/Configuration_adv.h +++ b/Marlin/example_configurations/K8200/Configuration_adv.h @@ -355,7 +355,7 @@ const unsigned int dropsegments=5; //everything with less than this number of st //#define HEATERS_PARALLEL //=========================================================================== -//=============================Buffers ============================ +//================================= Buffers ================================= //=========================================================================== // @section hidden diff --git a/Marlin/example_configurations/SCARA/Configuration_adv.h b/Marlin/example_configurations/SCARA/Configuration_adv.h index edc2445af6..bdf2eab4b2 100644 --- a/Marlin/example_configurations/SCARA/Configuration_adv.h +++ b/Marlin/example_configurations/SCARA/Configuration_adv.h @@ -355,7 +355,7 @@ const unsigned int dropsegments=5; //everything with less than this number of st //#define HEATERS_PARALLEL //=========================================================================== -//=============================Buffers ============================ +//================================= Buffers ================================= //=========================================================================== // @section hidden diff --git a/Marlin/example_configurations/WITBOX/Configuration_adv.h b/Marlin/example_configurations/WITBOX/Configuration_adv.h index 15c5232848..e9c0cd0f1a 100644 --- a/Marlin/example_configurations/WITBOX/Configuration_adv.h +++ b/Marlin/example_configurations/WITBOX/Configuration_adv.h @@ -355,7 +355,7 @@ const unsigned int dropsegments=5; //everything with less than this number of st //#define HEATERS_PARALLEL //=========================================================================== -//=============================Buffers ============================ +//================================= Buffers ================================= //=========================================================================== // @section hidden diff --git a/Marlin/example_configurations/delta/generic/Configuration_adv.h b/Marlin/example_configurations/delta/generic/Configuration_adv.h index 88b76c66e1..aebfa59d5a 100644 --- a/Marlin/example_configurations/delta/generic/Configuration_adv.h +++ b/Marlin/example_configurations/delta/generic/Configuration_adv.h @@ -356,7 +356,7 @@ const unsigned int dropsegments=5; //everything with less than this number of st //#define HEATERS_PARALLEL //=========================================================================== -//=============================Buffers ============================ +//================================= Buffers ================================= //=========================================================================== // @section hidden diff --git a/Marlin/example_configurations/delta/kossel_mini/Configuration_adv.h b/Marlin/example_configurations/delta/kossel_mini/Configuration_adv.h index 9b52ede7b7..5e8337ce84 100644 --- a/Marlin/example_configurations/delta/kossel_mini/Configuration_adv.h +++ b/Marlin/example_configurations/delta/kossel_mini/Configuration_adv.h @@ -355,7 +355,7 @@ const unsigned int dropsegments=5; //everything with less than this number of st //#define HEATERS_PARALLEL //=========================================================================== -//=============================Buffers ============================ +//================================= Buffers ================================= //=========================================================================== // @section hidden diff --git a/Marlin/example_configurations/makibox/Configuration_adv.h b/Marlin/example_configurations/makibox/Configuration_adv.h index 7b63732a69..2d97c626bc 100644 --- a/Marlin/example_configurations/makibox/Configuration_adv.h +++ b/Marlin/example_configurations/makibox/Configuration_adv.h @@ -355,7 +355,7 @@ const unsigned int dropsegments=5; //everything with less than this number of st //#define HEATERS_PARALLEL //=========================================================================== -//=============================Buffers ============================ +//================================= Buffers ================================= //=========================================================================== // @section hidden diff --git a/Marlin/example_configurations/tvrrug/Round2/Configuration_adv.h b/Marlin/example_configurations/tvrrug/Round2/Configuration_adv.h index d221f080b4..832fb83552 100644 --- a/Marlin/example_configurations/tvrrug/Round2/Configuration_adv.h +++ b/Marlin/example_configurations/tvrrug/Round2/Configuration_adv.h @@ -355,7 +355,7 @@ const unsigned int dropsegments=5; //everything with less than this number of st //#define HEATERS_PARALLEL //=========================================================================== -//=============================Buffers ============================ +//================================= Buffers ================================= //=========================================================================== // @section hidden diff --git a/Marlin/language.h b/Marlin/language.h index c9ddfeee41..b6beb47473 100644 --- a/Marlin/language.h +++ b/Marlin/language.h @@ -158,6 +158,9 @@ #define MSG_Z_MAX "z_max: " #define MSG_Z2_MAX "z2_max: " #define MSG_Z_PROBE "z_probe: " +#define MSG_ERR_MATERIAL_INDEX "M145 S out of range (0-1)" +#define MSG_ERR_XYZ_REQUIRED_FOR_M421 "M421 requires XYZ parameters" +#define MSG_ERR_MESH_INDEX_OOB "Mesh XY index is out of bounds" #define MSG_M119_REPORT "Reporting endstop status" #define MSG_ENDSTOP_HIT "TRIGGERED" #define MSG_ENDSTOP_OPEN "open" diff --git a/Marlin/planner.cpp b/Marlin/planner.cpp index 060be3007e..a8558d6c49 100644 --- a/Marlin/planner.cpp +++ b/Marlin/planner.cpp @@ -1,54 +1,51 @@ -/* - planner.c - buffers movement commands and manages the acceleration profile plan - Part of Grbl - - Copyright (c) 2009-2011 Simen Svale Skogsrud - - Grbl is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Grbl is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with Grbl. If not, see . - */ - -/* The ring buffer implementation gleaned from the wiring_serial library by David A. Mellis. */ - -/* - Reasoning behind the mathematics in this module (in the key of 'Mathematica'): - - s == speed, a == acceleration, t == time, d == distance - - Basic definitions: - - Speed[s_, a_, t_] := s + (a*t) - Travel[s_, a_, t_] := Integrate[Speed[s, a, t], t] - - Distance to reach a specific speed with a constant acceleration: - - Solve[{Speed[s, a, t] == m, Travel[s, a, t] == d}, d, t] - d -> (m^2 - s^2)/(2 a) --> estimate_acceleration_distance() - - Speed after a given distance of travel with constant acceleration: - - Solve[{Speed[s, a, t] == m, Travel[s, a, t] == d}, m, t] - m -> Sqrt[2 a d + s^2] - - DestinationSpeed[s_, a_, d_] := Sqrt[2 a d + s^2] - - When to start braking (di) to reach a specified destionation speed (s2) after accelerating - from initial speed s1 without ever stopping at a plateau: - - Solve[{DestinationSpeed[s1, a, di] == DestinationSpeed[s2, a, d - di]}, di] - di -> (2 a d - s1^2 + s2^2)/(4 a) --> intersection_distance() - - IntersectionDistance[s1_, s2_, a_, d_] := (2 a d - s1^2 + s2^2)/(4 a) +/** + * planner.cpp - Buffer movement commands and manage the acceleration profile plan + * Part of Grbl + * + * Copyright (c) 2009-2011 Simen Svale Skogsrud + * + * Grbl is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Grbl is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Grbl. If not, see . + * + * + * The ring buffer implementation gleaned from the wiring_serial library by David A. Mellis. + * + * + * Reasoning behind the mathematics in this module (in the key of 'Mathematica'): + * + * s == speed, a == acceleration, t == time, d == distance + * + * Basic definitions: + * Speed[s_, a_, t_] := s + (a*t) + * Travel[s_, a_, t_] := Integrate[Speed[s, a, t], t] + * + * Distance to reach a specific speed with a constant acceleration: + * Solve[{Speed[s, a, t] == m, Travel[s, a, t] == d}, d, t] + * d -> (m^2 - s^2)/(2 a) --> estimate_acceleration_distance() + * + * Speed after a given distance of travel with constant acceleration: + * Solve[{Speed[s, a, t] == m, Travel[s, a, t] == d}, m, t] + * m -> Sqrt[2 a d + s^2] + * + * DestinationSpeed[s_, a_, d_] := Sqrt[2 a d + s^2] + * + * When to start braking (di) to reach a specified destination speed (s2) after accelerating + * from initial speed s1 without ever stopping at a plateau: + * Solve[{DestinationSpeed[s1, a, di] == DestinationSpeed[s2, a, d - di]}, di] + * di -> (2 a d - s1^2 + s2^2)/(4 a) --> intersection_distance() + * + * IntersectionDistance[s1_, s2_, a_, d_] := (2 a d - s1^2 + s2^2)/(4 a) + * */ #include "Marlin.h" @@ -71,17 +68,17 @@ float max_feedrate[NUM_AXIS]; // Max speeds in mm per minute float axis_steps_per_unit[NUM_AXIS]; unsigned long max_acceleration_units_per_sq_second[NUM_AXIS]; // Use M201 to override by software float minimumfeedrate; -float acceleration; // Normal acceleration mm/s^2 THIS IS THE DEFAULT ACCELERATION for all printing moves. M204 SXXXX -float retract_acceleration; // mm/s^2 filament pull-pack and push-forward while standing still in the other axis M204 TXXXX -float travel_acceleration; // Travel acceleration mm/s^2 THIS IS THE DEFAULT ACCELERATION for all NON printing moves. M204 MXXXX -float max_xy_jerk; //speed than can be stopped at once, if i understand correctly. +float acceleration; // Normal acceleration mm/s^2 DEFAULT ACCELERATION for all printing moves. M204 SXXXX +float retract_acceleration; // Retract acceleration mm/s^2 filament pull-back and push-forward while standing still in the other axes M204 TXXXX +float travel_acceleration; // Travel acceleration mm/s^2 DEFAULT ACCELERATION for all NON printing moves. M204 MXXXX +float max_xy_jerk; // The largest speed change requiring no acceleration float max_z_jerk; float max_e_jerk; float mintravelfeedrate; unsigned long axis_steps_per_sqr_second[NUM_AXIS]; #ifdef ENABLE_AUTO_BED_LEVELING - // this holds the required transform to compensate for bed level + // Transform required to compensate for bed level matrix_3x3 plan_bed_level_matrix = { 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, @@ -89,11 +86,6 @@ unsigned long axis_steps_per_sqr_second[NUM_AXIS]; }; #endif // ENABLE_AUTO_BED_LEVELING -// The current position of the tool in absolute steps -long position[NUM_AXIS]; //rescaled from extern when axis_steps_per_unit are changed by gcode -static float previous_speed[NUM_AXIS]; // Speed of previous path line segment -static float previous_nominal_speed; // Nominal speed of previous path line segment - #ifdef AUTOTEMP float autotemp_max = 250; float autotemp_min = 210; @@ -101,18 +93,25 @@ static float previous_nominal_speed; // Nominal speed of previous path line segm bool autotemp_enabled = false; #endif -unsigned char g_uc_extruder_last_move[4] = {0,0,0,0}; - //=========================================================================== -//=================semi-private variables, used in inline functions ===== +//============ semi-private variables, used in inline functions ============= //=========================================================================== + block_t block_buffer[BLOCK_BUFFER_SIZE]; // A ring buffer for motion instfructions volatile unsigned char block_buffer_head; // Index of the next block to be pushed volatile unsigned char block_buffer_tail; // Index of the block to process now //=========================================================================== -//=============================private variables ============================ +//============================ private variables ============================ //=========================================================================== + +// The current position of the tool in absolute steps +long position[NUM_AXIS]; // Rescaled from extern when axis_steps_per_unit are changed by gcode +static float previous_speed[NUM_AXIS]; // Speed of previous path line segment +static float previous_nominal_speed; // Nominal speed of previous path line segment + +unsigned char g_uc_extruder_last_move[4] = {0,0,0,0}; + #ifdef XY_FREQUENCY_LIMIT // Used for the frequency limit #define MAX_FREQ_TIME (1000000.0/XY_FREQUENCY_LIMIT) @@ -126,15 +125,15 @@ volatile unsigned char block_buffer_tail; // Index of the block to pro static char meas_sample; //temporary variable to hold filament measurement sample #endif +//=========================================================================== +//================================ functions ================================ +//=========================================================================== + // Get the next / previous index of the next block in the ring buffer // NOTE: Using & here (not %) because BLOCK_BUFFER_SIZE is always a power of 2 FORCE_INLINE int8_t next_block_index(int8_t block_index) { return BLOCK_MOD(block_index + 1); } FORCE_INLINE int8_t prev_block_index(int8_t block_index) { return BLOCK_MOD(block_index - 1); } -//=========================================================================== -//================================ Functions ================================ -//=========================================================================== - // Calculates the distance (not time) it takes to accelerate from initial_rate to target_rate using the // given acceleration: FORCE_INLINE float estimate_acceleration_distance(float initial_rate, float target_rate, float acceleration) { diff --git a/Marlin/planner.h b/Marlin/planner.h index d96aa8c112..c54ed4411a 100644 --- a/Marlin/planner.h +++ b/Marlin/planner.h @@ -115,15 +115,19 @@ FORCE_INLINE uint8_t movesplanned() { return BLOCK_MOD(block_buffer_head - block void plan_set_e_position(const float &e); +//=========================================================================== +//============================= public variables ============================ +//=========================================================================== + extern millis_t minsegmenttime; -extern float max_feedrate[NUM_AXIS]; // set the max speeds +extern float max_feedrate[NUM_AXIS]; // Max speeds in mm per minute extern float axis_steps_per_unit[NUM_AXIS]; extern unsigned long max_acceleration_units_per_sq_second[NUM_AXIS]; // Use M201 to override by software extern float minimumfeedrate; -extern float acceleration; // Normal acceleration mm/s^2 THIS IS THE DEFAULT ACCELERATION for all moves. M204 SXXXX -extern float retract_acceleration; // mm/s^2 filament pull-pack and push-forward while standing still in the other axis M204 TXXXX -extern float travel_acceleration; // Travel acceleration mm/s^2 THIS IS THE DEFAULT ACCELERATION for all NON printing moves. M204 MXXXX -extern float max_xy_jerk; //speed than can be stopped at once, if i understand correctly. +extern float acceleration; // Normal acceleration mm/s^2 DEFAULT ACCELERATION for all printing moves. M204 SXXXX +extern float retract_acceleration; // Retract acceleration mm/s^2 filament pull-back and push-forward while standing still in the other axes M204 TXXXX +extern float travel_acceleration; // Travel acceleration mm/s^2 DEFAULT ACCELERATION for all NON printing moves. M204 MXXXX +extern float max_xy_jerk; // The largest speed change requiring no acceleration extern float max_z_jerk; extern float max_e_jerk; extern float mintravelfeedrate; diff --git a/Marlin/temperature.cpp b/Marlin/temperature.cpp index fa17b6c4c2..a494e3a9d0 100644 --- a/Marlin/temperature.cpp +++ b/Marlin/temperature.cpp @@ -89,8 +89,9 @@ unsigned char soft_pwm_bed; #endif //=========================================================================== -//=============================private variables============================ +//============================ private variables ============================ //=========================================================================== + static volatile bool temp_meas_ready = false; #ifdef PIDTEMP @@ -187,7 +188,7 @@ static void updateTemperaturesFromRawValues(); #endif //=========================================================================== -//============================= functions ============================ +//================================ functions ================================ //=========================================================================== void PID_autotune(float temp, int extruder, int ncycles) diff --git a/Marlin/ultralcd.cpp b/Marlin/ultralcd.cpp index 81844573ea..3895dc5519 100644 --- a/Marlin/ultralcd.cpp +++ b/Marlin/ultralcd.cpp @@ -868,10 +868,10 @@ static void lcd_control_temperature_preheat_pla_settings_menu() { MENU_ITEM(back, MSG_TEMPERATURE, lcd_control_temperature_menu); MENU_ITEM_EDIT(int3, MSG_FAN_SPEED, &plaPreheatFanSpeed, 0, 255); #if TEMP_SENSOR_0 != 0 - MENU_ITEM_EDIT(int3, MSG_NOZZLE, &plaPreheatHotendTemp, 0, HEATER_0_MAXTEMP - 15); + MENU_ITEM_EDIT(int3, MSG_NOZZLE, &plaPreheatHotendTemp, HEATER_0_MINTEMP, HEATER_0_MAXTEMP - 15); #endif #if TEMP_SENSOR_BED != 0 - MENU_ITEM_EDIT(int3, MSG_BED, &plaPreheatHPBTemp, 0, BED_MAXTEMP - 15); + MENU_ITEM_EDIT(int3, MSG_BED, &plaPreheatHPBTemp, BED_MINTEMP, BED_MAXTEMP - 15); #endif #ifdef EEPROM_SETTINGS MENU_ITEM(function, MSG_STORE_EPROM, Config_StoreSettings); @@ -884,10 +884,10 @@ static void lcd_control_temperature_preheat_abs_settings_menu() { MENU_ITEM(back, MSG_TEMPERATURE, lcd_control_temperature_menu); MENU_ITEM_EDIT(int3, MSG_FAN_SPEED, &absPreheatFanSpeed, 0, 255); #if TEMP_SENSOR_0 != 0 - MENU_ITEM_EDIT(int3, MSG_NOZZLE, &absPreheatHotendTemp, 0, HEATER_0_MAXTEMP - 15); + MENU_ITEM_EDIT(int3, MSG_NOZZLE, &absPreheatHotendTemp, HEATER_0_MINTEMP, HEATER_0_MAXTEMP - 15); #endif #if TEMP_SENSOR_BED != 0 - MENU_ITEM_EDIT(int3, MSG_BED, &absPreheatHPBTemp, 0, BED_MAXTEMP - 15); + MENU_ITEM_EDIT(int3, MSG_BED, &absPreheatHPBTemp, BED_MINTEMP, BED_MAXTEMP - 15); #endif #ifdef EEPROM_SETTINGS MENU_ITEM(function, MSG_STORE_EPROM, Config_StoreSettings); diff --git a/Marlin/watchdog.cpp b/Marlin/watchdog.cpp index b378ca706a..8505f7efac 100644 --- a/Marlin/watchdog.cpp +++ b/Marlin/watchdog.cpp @@ -7,11 +7,11 @@ #include "ultralcd.h" //=========================================================================== -//=============================private variables ============================ +//============================ private variables ============================ //=========================================================================== //=========================================================================== -//=============================functinos ============================ +//================================ functions ================================ //=========================================================================== @@ -36,7 +36,7 @@ void watchdog_reset() } //=========================================================================== -//=============================ISR ============================ +//=================================== ISR =================================== //=========================================================================== //Watchdog timer interrupt, called if main program blocks >1sec and manual reset is enabled. From fb379384ee79eabb42b8edad06e4588b84cb9544 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sun, 26 Apr 2015 21:06:04 -0700 Subject: [PATCH 51/88] Reduce MBL eeprom read code --- Marlin/configuration_store.cpp | 31 +++++++++++-------------------- 1 file changed, 11 insertions(+), 20 deletions(-) diff --git a/Marlin/configuration_store.cpp b/Marlin/configuration_store.cpp index 318501db62..0cd7faa7c1 100644 --- a/Marlin/configuration_store.cpp +++ b/Marlin/configuration_store.cpp @@ -325,30 +325,21 @@ void Config_RetrieveSettings() { EEPROM_READ_VAR(i, max_e_jerk); EEPROM_READ_VAR(i, home_offset); - uint8_t mesh_num_x = 0; - uint8_t mesh_num_y = 0; + uint8_t dummy_uint8 = 0, mesh_num_x = 0, mesh_num_y = 0; + EEPROM_READ_VAR(i, dummy_uint8); + EEPROM_READ_VAR(i, mesh_num_x); + EEPROM_READ_VAR(i, mesh_num_y); #ifdef MESH_BED_LEVELING - EEPROM_READ_VAR(i, mbl.active); - EEPROM_READ_VAR(i, mesh_num_x); - EEPROM_READ_VAR(i, mesh_num_y); - if (mesh_num_x != MESH_NUM_X_POINTS || - mesh_num_y != MESH_NUM_Y_POINTS) { - mbl.reset(); - for (int q=0; q Date: Mon, 27 Apr 2015 12:15:36 +0200 Subject: [PATCH 52/88] Intit. commit for Chinese Edited the European part of 'ISO10646_CN.fon' to match the existing fonts. Added Chinese font to make_fonts.bat Created 'dogm_font_data_ISO10646_CN.h' Added Chinese to 'language.h' Added 'language_cn.h' with some minor edits. Added Chinese font in 'language_en.h' to not fall back to European font. Added cn to 'Configuration.h' Changed WIDTH to LCD_PIXEL_WIDTH and HEIGHT to LCD_PIXEL_HEIGHT to have more descriptive names. In 'dogm_lcd_implementation.h' Added Chinese Font Made 1 pixel more room for the larger Chinese font on the status line. Changed geometry of the 'select bar' by one pixel. Changed the way the position for values and postcars are set. --- Marlin/Configuration.h | 2 +- Marlin/dogm_font_data_ISO10646_CN.h | 270 ++++++++++++++++++++++++++++ Marlin/dogm_lcd_implementation.h | 35 ++-- Marlin/fonts/ISO10646_CN.fon | Bin 0 -> 6192 bytes Marlin/fonts/make_fonts.bat | 1 + Marlin/language.h | 1 + Marlin/language_cn.h | 159 ++++++++++++++++ Marlin/language_en.h | 2 +- Marlin/ultralcd_st7920_u8glib_rrd.h | 14 +- 9 files changed, 465 insertions(+), 19 deletions(-) create mode 100644 Marlin/dogm_font_data_ISO10646_CN.h create mode 100644 Marlin/fonts/ISO10646_CN.fon create mode 100644 Marlin/language_cn.h diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index e3d0c339a2..0ba1d0594b 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -642,7 +642,7 @@ const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic // @section lcd // Define your display language below. Replace (en) with your language code and uncomment. -// en, pl, fr, de, es, ru, it, pt, pt-br, fi, an, nl, ca, eu, kana, kana_utf8, test +// en, pl, fr, de, es, ru, it, pt, pt-br, fi, an, nl, ca, eu, kana, kana_utf8, cn, test // See also language.h #define LANGUAGE_INCLUDE GENERATE_LANGUAGE_INCLUDE(en) diff --git a/Marlin/dogm_font_data_ISO10646_CN.h b/Marlin/dogm_font_data_ISO10646_CN.h new file mode 100644 index 0000000000..f74e8a6054 --- /dev/null +++ b/Marlin/dogm_font_data_ISO10646_CN.h @@ -0,0 +1,270 @@ +/* + Fontname: ISO10646_CN + Copyright: A. Hardtung, public domain + Capital A Height: 7, '1' Height: 7 + Calculated Max Values w=11 h=11 x= 2 y=10 dx=12 dy= 0 ascent=10 len=22 + Font Bounding box w=12 h=11 x= 0 y=-2 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent = 7 descent=-1 + X Font ascent = 7 descent=-1 + Max Font ascent =10 descent=-1 +*/ +#include +const u8g_fntpgm_uint8_t ISO10646_CN[4105] U8G_SECTION(".progmem.ISO10646_CN") = { + 0,12,11,0,254,7,1,146,3,33,32,255,255,10,255,7, + 255,0,0,0,6,0,10,1,7,7,6,2,0,128,128,128, + 128,128,0,128,3,2,2,6,1,5,160,160,5,7,7,6, + 0,0,80,80,248,80,248,80,80,5,7,7,6,0,0,32, + 120,160,112,40,240,32,5,7,7,6,0,0,192,200,16,32, + 64,152,24,5,7,7,6,0,0,96,144,160,64,168,144,104, + 2,3,3,6,1,4,192,64,128,3,7,7,6,1,0,32, + 64,128,128,128,64,32,3,7,7,6,1,0,128,64,32,32, + 32,64,128,5,5,5,6,0,1,32,168,112,168,32,5,5, + 5,6,0,1,32,32,248,32,32,2,3,3,6,2,255,192, + 64,128,5,1,1,6,0,3,248,2,2,2,6,2,0,192, + 192,5,5,5,6,0,1,8,16,32,64,128,5,7,7,6, + 0,0,112,136,152,168,200,136,112,3,7,7,6,1,0,64, + 192,64,64,64,64,224,5,7,7,6,0,0,112,136,8,112, + 128,128,248,5,7,7,6,0,0,248,16,32,16,8,8,240, + 5,7,7,6,0,0,16,48,80,144,248,16,16,5,7,7, + 6,0,0,248,128,240,8,8,136,112,5,7,7,6,0,0, + 112,128,128,240,136,136,112,5,7,7,6,0,0,248,8,16, + 32,32,32,32,5,7,7,6,0,0,112,136,136,112,136,136, + 112,5,7,7,6,0,0,112,136,136,120,8,8,112,2,5, + 5,6,2,0,192,192,0,192,192,2,6,6,6,2,255,192, + 192,0,192,64,128,4,7,7,6,0,0,16,32,64,128,64, + 32,16,5,3,3,6,0,2,248,0,248,4,7,7,6,0, + 0,128,64,32,16,32,64,128,5,7,7,6,0,0,112,136, + 8,16,32,0,32,5,7,7,6,0,0,112,136,8,104,168, + 168,112,5,7,7,6,0,0,112,136,136,248,136,136,136,5, + 7,7,6,0,0,240,136,136,240,136,136,240,5,7,7,6, + 0,0,112,136,128,128,128,136,112,5,7,7,6,0,0,240, + 136,136,136,136,136,240,5,7,7,6,0,0,248,128,128,240, + 128,128,248,5,7,7,6,0,0,248,128,128,240,128,128,128, + 5,7,7,6,0,0,112,136,128,184,136,136,112,5,7,7, + 6,0,0,136,136,136,248,136,136,136,1,7,7,6,2,0, + 128,128,128,128,128,128,128,5,7,7,6,0,0,56,16,16, + 16,16,144,96,5,7,7,6,0,0,136,144,160,192,160,144, + 136,5,7,7,6,0,0,128,128,128,128,128,128,248,5,7, + 7,6,0,0,136,216,168,136,136,136,136,5,7,7,6,0, + 0,136,136,200,168,152,136,136,5,7,7,6,0,0,112,136, + 136,136,136,136,112,5,7,7,6,0,0,240,136,136,240,128, + 128,128,5,7,7,6,0,0,112,136,136,136,168,144,104,5, + 7,7,6,0,0,240,136,136,240,160,144,136,5,7,7,6, + 0,0,120,128,128,112,8,8,240,5,7,7,6,0,0,248, + 32,32,32,32,32,32,5,7,7,6,0,0,136,136,136,136, + 136,136,112,5,7,7,6,0,0,136,136,136,136,136,80,32, + 5,7,7,6,0,0,136,136,136,136,136,168,80,5,7,7, + 6,0,0,136,136,80,32,80,136,136,5,7,7,6,0,0, + 136,136,136,80,32,32,32,5,7,7,6,0,0,248,8,16, + 32,64,128,248,3,7,7,6,0,0,224,128,128,128,128,128, + 224,5,5,5,6,0,1,128,64,32,16,8,3,7,7,6, + 0,0,224,32,32,32,32,32,224,5,3,3,6,0,4,32, + 80,136,5,1,1,6,0,0,248,2,2,2,6,2,5,128, + 64,5,5,5,6,0,0,112,8,120,136,120,5,7,7,6, + 0,0,128,128,176,200,136,136,240,5,5,5,6,0,0,112, + 128,128,136,112,5,7,7,6,0,0,8,8,104,152,136,136, + 120,5,5,5,6,0,0,112,136,248,128,112,5,7,7,6, + 0,0,48,72,224,64,64,64,64,5,6,6,6,0,255,112, + 136,136,120,8,112,5,7,7,6,0,0,128,128,176,200,136, + 136,136,1,7,7,6,2,0,128,0,128,128,128,128,128,3, + 8,8,6,1,255,32,0,32,32,32,32,160,64,4,7,7, + 6,1,0,128,128,144,160,192,160,144,3,7,7,6,1,0, + 192,64,64,64,64,64,224,5,5,5,6,0,0,208,168,168, + 168,168,5,5,5,6,0,0,176,200,136,136,136,5,5,5, + 6,0,0,112,136,136,136,112,5,6,6,6,0,255,240,136, + 136,240,128,128,5,6,6,6,0,255,120,136,136,120,8,8, + 5,5,5,6,0,0,176,200,128,128,128,5,5,5,6,0, + 0,112,128,112,8,240,4,7,7,6,0,0,64,64,224,64, + 64,64,48,5,5,5,6,0,0,136,136,136,152,104,5,5, + 5,6,0,0,136,136,136,80,32,5,5,5,6,0,0,136, + 136,168,168,80,5,5,5,6,0,0,136,80,32,80,136,5, + 6,6,6,0,255,136,136,136,120,8,112,5,5,5,6,0, + 0,248,16,32,64,248,3,7,7,6,1,0,32,64,64,128, + 64,64,32,1,7,7,6,2,0,128,128,128,128,128,128,128, + 3,7,7,6,1,0,128,64,64,32,64,64,128,5,2,2, + 6,0,3,104,144,0,0,0,6,0,10,0,0,0,12,0, + 10,0,0,0,12,0,10,0,0,0,12,0,10,0,0,0, + 12,0,10,0,0,0,12,0,10,0,0,0,12,0,10,0, + 0,0,12,0,10,0,0,0,12,0,10,0,0,0,12,0, + 10,0,0,0,12,0,10,0,0,0,12,0,10,0,0,0, + 12,0,10,0,0,0,12,0,10,0,0,0,12,0,10,0, + 0,0,12,0,10,0,0,0,12,0,10,0,0,0,12,0, + 10,0,0,0,12,0,10,0,0,0,12,0,10,0,0,0, + 12,0,10,0,0,0,12,0,10,0,0,0,12,0,10,0, + 0,0,12,0,10,0,0,0,12,0,10,0,0,0,12,0, + 10,0,0,0,12,0,10,0,0,0,12,0,10,0,0,0, + 12,0,10,0,0,0,12,0,10,11,11,22,12,0,255,255, + 224,2,0,2,0,4,0,13,0,20,128,36,64,196,32,4, + 0,4,0,4,0,11,11,22,12,0,255,249,0,138,0,171, + 224,172,64,170,64,170,64,170,64,170,128,33,0,82,128,140, + 96,11,11,22,12,0,255,36,0,36,0,63,128,68,0,132, + 0,4,0,255,224,10,0,17,0,32,128,192,96,11,11,22, + 12,0,255,36,0,36,0,63,192,68,0,4,0,255,224,9, + 0,9,0,17,32,33,32,64,224,11,11,22,12,0,255,32, + 0,61,224,81,32,145,32,17,32,255,32,17,32,41,32,37, + 224,69,32,128,0,11,11,22,12,0,255,32,128,127,192,8, + 64,255,224,17,0,32,128,95,64,128,32,63,128,0,0,127, + 192,11,11,22,12,0,255,34,64,71,224,148,128,228,128,47, + 224,68,128,244,128,7,224,52,128,196,128,7,224,11,11,22, + 12,0,255,4,128,143,224,73,0,25,0,47,192,9,0,9, + 0,47,192,73,0,137,0,15,224,11,11,22,12,0,255,16, + 0,63,128,81,0,14,0,49,128,192,96,63,128,36,128,63, + 128,36,128,63,128,11,11,22,12,0,255,34,128,250,64,7, + 224,250,128,138,128,138,128,250,128,34,128,178,128,170,160,100, + 224,11,11,22,12,0,255,34,32,71,64,146,128,239,224,34, + 0,71,192,236,64,7,192,52,64,199,192,4,64,11,11,22, + 12,0,255,8,0,15,192,8,0,8,0,255,224,8,0,14, + 0,9,128,8,64,8,0,8,0,10,11,22,12,0,255,255, + 128,0,128,0,128,128,128,128,128,255,128,128,0,128,0,128, + 64,128,64,127,192,11,11,22,12,0,255,71,192,65,0,239, + 224,65,0,69,0,105,96,201,32,77,96,73,32,79,224,200, + 32,11,11,22,12,0,255,8,0,4,0,4,0,10,0,10, + 0,10,0,17,0,17,0,32,128,64,64,128,32,11,11,22, + 12,0,255,34,64,34,0,247,224,34,0,35,224,53,32,229, + 32,37,64,40,128,41,64,114,32,11,10,20,12,0,0,68, + 64,68,64,68,64,127,192,4,0,4,0,132,32,132,32,132, + 32,255,224,11,11,22,12,0,255,4,0,0,0,127,192,4, + 0,4,0,4,0,127,192,4,0,4,0,4,0,255,224,11, + 11,22,12,0,255,255,224,17,0,1,192,254,0,72,128,37, + 0,4,0,255,224,21,0,36,128,196,96,11,11,22,12,0, + 255,17,0,127,192,68,64,127,192,68,64,127,192,4,0,255, + 224,4,0,4,0,4,0,9,11,22,12,0,255,16,0,255, + 128,128,128,128,128,255,128,128,128,128,128,255,128,128,128,128, + 128,255,128,11,11,22,12,0,255,113,0,1,0,3,224,249, + 32,33,32,65,32,81,32,137,32,250,32,2,32,4,192,11, + 11,22,12,0,255,127,192,17,0,17,0,17,0,17,0,255, + 224,17,0,17,0,33,0,33,0,65,0,11,11,22,12,0, + 255,33,0,34,0,244,64,87,224,80,32,87,192,148,64,84, + 64,36,64,87,192,148,64,11,11,22,12,0,255,17,0,10, + 0,127,192,4,0,4,0,255,224,4,0,10,0,17,0,32, + 128,192,96,10,11,22,12,0,255,95,192,0,64,132,64,132, + 64,191,64,132,64,140,64,148,64,164,64,140,64,129,192,11, + 11,22,12,0,255,36,0,39,192,36,0,36,0,255,224,0, + 0,20,64,36,128,71,0,12,0,112,0,11,11,22,12,0, + 255,36,128,4,128,15,192,228,128,36,128,63,224,36,128,36, + 128,40,128,80,0,143,224,11,11,22,12,0,255,8,0,8, + 0,255,128,136,128,136,128,255,128,136,128,136,128,255,160,136, + 32,7,224,11,11,22,12,0,255,39,128,36,128,244,128,36, + 128,116,128,108,128,164,128,36,128,36,160,40,160,48,96,10, + 11,22,12,0,255,255,192,128,64,128,64,158,64,146,64,146, + 64,158,64,128,64,128,64,255,192,128,64,11,11,22,12,0, + 255,127,192,68,0,95,192,80,64,95,192,80,64,95,192,66, + 0,74,128,82,64,166,32,11,11,22,12,0,255,4,0,7, + 224,4,0,127,192,64,64,64,64,64,64,127,192,0,0,82, + 64,137,32,11,11,22,12,0,255,71,128,36,128,4,128,4, + 128,232,96,32,0,47,192,36,64,34,128,49,0,38,192,11, + 11,22,12,0,255,127,192,74,64,127,192,4,0,255,224,4, + 0,63,128,32,128,36,128,36,128,255,224,11,11,22,12,0, + 255,34,0,79,224,72,32,79,224,200,0,79,224,74,160,90, + 160,111,224,74,160,72,96,11,11,22,12,0,255,243,192,36, + 64,42,128,241,0,34,128,101,224,114,32,165,64,32,128,35, + 0,44,0,11,11,22,12,0,255,4,0,255,224,128,32,0, + 0,255,224,4,0,36,0,39,192,36,0,84,0,143,224,11, + 11,22,12,0,255,115,224,16,128,81,0,35,224,250,32,42, + 160,34,160,34,160,32,128,33,64,98,32,11,11,22,12,0, + 255,34,0,247,128,34,128,54,128,226,160,37,160,36,96,104, + 32,0,0,82,64,137,32,11,11,22,12,0,255,115,192,66, + 0,66,0,123,224,74,64,74,64,122,64,74,64,66,64,68, + 64,136,64,11,11,22,12,0,255,8,0,255,224,8,0,31, + 192,48,64,95,192,144,64,31,192,16,64,16,64,16,192,11, + 11,22,12,0,255,2,0,127,224,66,0,66,0,95,192,66, + 0,71,0,74,128,82,64,98,32,130,0,11,11,22,12,0, + 255,243,192,150,64,145,128,166,96,161,0,151,192,145,0,149, + 0,231,224,129,0,129,0,11,11,22,12,0,255,15,128,136, + 128,79,128,8,128,143,128,64,0,31,192,53,64,85,64,149, + 64,63,224,11,11,22,12,0,255,39,224,32,128,248,128,32, + 128,32,128,56,128,224,128,32,128,32,128,32,128,97,128,11, + 11,22,12,0,255,31,224,145,0,87,192,20,64,23,192,148, + 64,87,192,17,0,85,64,153,32,35,0,11,11,22,12,0, + 255,32,128,39,224,242,64,33,128,34,64,52,32,226,64,34, + 64,34,64,34,64,100,64,11,11,22,12,0,255,65,0,65, + 0,79,224,233,32,73,32,73,32,111,224,201,32,73,32,73, + 32,207,224,11,11,22,12,0,255,33,0,241,0,79,224,169, + 32,249,32,47,224,57,32,233,32,41,32,47,224,40,32,11, + 11,22,12,0,255,143,224,73,32,9,32,203,160,73,32,79, + 224,72,32,75,160,74,160,107,160,80,224,11,11,22,12,0, + 255,127,192,4,0,68,64,36,64,36,128,4,0,255,224,4, + 0,4,0,4,0,4,0,11,11,22,12,0,255,130,0,66, + 0,31,224,194,0,95,192,82,64,95,192,71,0,74,128,82, + 64,191,224,11,11,22,12,0,255,4,0,127,224,72,128,127, + 224,72,128,79,128,64,0,95,192,72,64,71,128,152,96,11, + 11,22,12,0,255,1,0,239,224,161,0,164,64,175,224,164, + 64,175,224,169,32,233,32,2,128,12,96,11,11,22,12,0, + 255,20,192,246,160,188,96,167,128,168,128,191,224,169,32,239, + 224,9,32,15,224,9,32,11,11,22,12,0,255,127,128,64, + 128,66,128,98,128,84,128,72,128,72,128,84,160,98,160,64, + 96,128,32,11,11,22,12,0,255,4,0,127,224,64,32,127, + 224,64,0,125,224,84,32,76,160,84,96,100,160,141,96,11, + 11,22,12,0,255,130,0,95,224,4,0,8,64,159,224,64, + 32,10,128,10,128,74,160,146,160,34,96,11,11,22,12,0, + 255,65,0,79,224,232,32,66,128,68,64,104,32,199,192,65, + 0,65,0,65,0,207,224,11,11,22,12,0,255,80,32,125, + 32,145,32,255,32,17,32,125,32,85,32,85,32,84,32,92, + 32,16,224,11,11,22,12,0,255,63,128,32,128,63,128,32, + 128,255,224,72,0,123,192,73,64,121,64,72,128,251,96,11, + 11,22,12,0,255,4,0,4,0,4,0,36,128,36,64,68, + 64,68,32,132,32,4,0,4,0,28,0,11,11,22,12,0, + 255,4,0,4,0,4,0,255,224,4,0,10,0,10,0,17, + 0,17,0,32,128,192,96,9,10,20,10,0,0,136,128,73, + 0,8,0,255,128,0,128,0,128,127,128,0,128,0,128,255, + 128,11,11,22,12,0,255,33,0,18,0,255,224,0,0,120, + 128,74,128,122,128,74,128,122,128,72,128,89,128,11,11,22, + 12,0,255,39,192,0,0,0,0,239,224,33,0,34,0,36, + 64,47,224,32,32,80,0,143,224,11,11,22,12,0,255,32, + 128,39,0,249,0,33,192,119,0,33,0,249,224,39,0,113, + 32,169,32,32,224,11,11,22,12,0,255,16,64,16,64,253, + 224,16,64,56,192,53,64,82,64,148,64,16,64,16,64,16, + 192,11,11,22,12,0,255,0,64,248,64,11,224,8,64,136, + 64,82,64,81,64,33,64,80,64,72,64,137,192,10,11,22, + 12,0,255,132,0,132,64,132,128,245,0,134,0,132,0,132, + 0,148,0,164,64,196,64,131,192,11,11,22,12,0,255,17, + 32,125,0,17,0,255,224,41,0,253,64,73,64,124,128,8, + 160,253,96,10,32,11,11,22,12,0,255,23,192,36,64,36, + 64,103,192,161,0,47,224,33,0,35,128,37,64,41,32,33, + 0,11,11,22,12,0,255,8,0,255,224,16,0,39,192,32, + 128,97,0,175,224,33,0,33,0,33,0,35,0,11,11,22, + 12,0,255,36,0,47,224,180,0,164,128,164,160,170,192,42, + 128,40,128,41,64,50,64,36,32,11,11,22,12,0,255,127, + 224,128,0,63,192,32,64,63,192,16,0,31,192,16,64,40, + 128,71,0,56,224,11,11,22,12,0,255,127,224,64,0,64, + 0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,128, + 0,11,11,22,12,0,255,255,224,4,0,127,192,68,64,127, + 192,68,64,127,192,68,0,36,0,24,0,231,224,11,11,22, + 12,0,255,17,224,253,0,69,0,41,224,253,64,17,64,125, + 64,17,64,85,64,146,64,52,64,11,11,22,12,0,255,33, + 0,95,224,64,0,207,192,64,0,79,192,64,0,79,192,72, + 64,79,192,72,64,11,11,22,12,0,255,4,0,127,192,64, + 64,127,192,64,64,127,192,64,64,127,192,4,64,82,32,191, + 160,11,11,22,12,0,255,127,192,68,64,127,192,68,64,127, + 192,4,0,27,0,224,224,17,0,17,0,97,0,11,11,22, + 12,0,255,255,224,4,0,8,0,127,224,73,32,79,32,73, + 32,79,32,73,32,73,32,127,224,11,11,22,12,0,255,253, + 224,86,64,121,64,56,128,85,64,146,32,255,224,4,0,39, + 192,36,0,255,224,11,11,22,12,0,255,251,128,82,0,123, + 224,18,64,250,64,20,64,63,128,32,128,63,128,32,128,63, + 128,11,11,22,12,0,255,31,224,32,0,39,192,100,64,167, + 192,32,0,47,224,40,32,39,192,33,0,35,0,11,11,22, + 12,0,255,243,224,130,32,130,32,250,32,130,32,130,32,138, + 32,178,32,194,224,2,0,2,0,11,11,22,12,0,255,36, + 128,70,160,149,192,228,128,39,224,68,128,245,192,6,160,52, + 128,196,128,7,224,11,11,22,12,0,255,39,192,65,0,135, + 224,224,32,34,128,69,128,242,128,15,224,48,128,193,64,2, + 32,11,11,22,12,0,255,2,0,2,0,34,0,35,192,34, + 0,34,0,34,0,34,0,34,0,34,0,255,224,9,11,22, + 12,0,255,8,0,8,0,255,128,136,128,136,128,136,128,255, + 128,136,128,136,128,136,128,255,128,11,11,22,12,0,255,33, + 0,83,160,65,0,247,224,81,0,83,192,86,64,83,192,90, + 64,83,192,66,64,11,11,22,12,0,255,127,192,4,0,4, + 0,4,0,255,224,10,0,10,0,18,0,34,32,66,32,129, + 224,11,11,22,12,0,255,17,0,33,0,47,224,97,0,163, + 128,35,128,37,64,37,64,41,32,33,0,33,0,11,11,22, + 12,0,255,247,224,148,32,244,32,151,224,148,128,244,128,151, + 224,148,128,244,160,150,96,4,32,11,11,22,12,0,255,123, + 224,148,128,4,0,127,192,4,0,255,224,1,0,255,224,33, + 0,17,0,7,0,11,11,22,12,0,255,33,0,71,192,145, + 0,47,224,96,128,175,224,32,128,36,128,34,128,32,128,35, + 128,11,11,22,12,0,255,39,192,36,64,247,192,46,224,42, + 160,62,224,225,0,47,224,35,128,37,64,105,32,11,11,22, + 12,0,255,20,0,39,224,42,0,98,0,163,192,34,0,34, + 0,35,224,34,0,34,0,34,0}; diff --git a/Marlin/dogm_lcd_implementation.h b/Marlin/dogm_lcd_implementation.h index 3ab18af75c..927904c7a7 100644 --- a/Marlin/dogm_lcd_implementation.h +++ b/Marlin/dogm_lcd_implementation.h @@ -64,6 +64,10 @@ #elif defined( DISPLAY_CHARSET_ISO10646_KANA ) #include "dogm_font_data_ISO10646_Kana.h" #define FONT_MENU_NAME ISO10646_Kana_5x7 + #elif defined( DISPLAY_CHARSET_ISO10646_CN ) + #include "dogm_font_data_ISO10646_CN.h" + #define FONT_MENU_NAME ISO10646_CN + #define TALL_FONT_CORRECTION 1 #else // fall-back #include "dogm_font_data_ISO10646_1.h" #define FONT_MENU_NAME ISO10646_1_5x7 @@ -123,6 +127,13 @@ U8GLIB_DOGM128 u8g(DOGLCD_CS, DOGLCD_A0); // HW-SPI Com: CS, A0 #endif +#ifndef LCD_PIXEL_WIDTH + #define LCD_PIXEL_WIDTH 128 +#endif +#ifndef LCD_PIXEL_HEIGHT + #define LCD_PIXEL_HEIGHT 64 +#endif + #include "utf_mapper.h" int lcd_contrast; @@ -252,20 +263,21 @@ static void lcd_implementation_status_screen() { #ifdef SDSUPPORT // SD Card Symbol - u8g.drawBox(42,42,8,7); - u8g.drawBox(50,44,2,5); - u8g.drawFrame(42,49,10,4); - u8g.drawPixel(50,43); + u8g.drawBox(42, 42 - TALL_FONT_CORRECTION, 8, 7); + u8g.drawBox(50, 44 - TALL_FONT_CORRECTION, 2, 5); + u8g.drawFrame(42, 49 - TALL_FONT_CORRECTION, 10, 4); + u8g.drawPixel(50, 43 - TALL_FONT_CORRECTION); + // Progress bar frame - u8g.drawFrame(54,49,73,4); + u8g.drawFrame(54, 49, 73, 4 - TALL_FONT_CORRECTION); // SD Card Progress bar and clock lcd_setFont(FONT_STATUSMENU); if (IS_SD_PRINTING) { // Progress bar solid part - u8g.drawBox(55, 50, (unsigned int)(71.f * card.percentDone() / 100.f), 2); + u8g.drawBox(55, 50, (unsigned int)(71.f * card.percentDone() / 100.f), 2 - TALL_FONT_CORRECTION); } u8g.setPrintPos(80,48); @@ -306,9 +318,9 @@ static void lcd_implementation_status_screen() { lcd_setFont(FONT_STATUSMENU); #ifdef USE_SMALL_INFOFONT - u8g.drawBox(0,30,128,10); + u8g.drawBox(0,30,LCD_PIXEL_WIDTH,10); #else - u8g.drawBox(0,30,128,9); + u8g.drawBox(0,30,LCD_PIXEL_WIDTH,9); #endif u8g.setColorIndex(0); // white on black u8g.setPrintPos(2,XYZ_BASELINE); @@ -366,7 +378,7 @@ static void lcd_implementation_status_screen() { static void lcd_implementation_mark_as_selected(uint8_t row, bool isSelected) { if (isSelected) { u8g.setColorIndex(1); // black on white - u8g.drawBox(0, row * DOG_CHAR_HEIGHT + 3, 128, DOG_CHAR_HEIGHT); + u8g.drawBox(0, row * DOG_CHAR_HEIGHT + 3 - TALL_FONT_CORRECTION, LCD_PIXEL_WIDTH, DOG_CHAR_HEIGHT); u8g.setColorIndex(0); // following text must be white on black } else { @@ -386,13 +398,15 @@ static void lcd_implementation_drawmenu_generic(bool isSelected, uint8_t row, co pstr++; } while (n--) lcd_print(' '); + u8g.setPrintPos(LCD_PIXEL_WIDTH - DOG_CHAR_WIDTH, (row + 1) * DOG_CHAR_HEIGHT); lcd_print(post_char); lcd_print(' '); } static void _drawmenu_setting_edit_generic(bool isSelected, uint8_t row, const char* pstr, const char* data, bool pgm) { char c; - uint8_t n = LCD_WIDTH - 2 - (pgm ? lcd_strlen_P(data) : (lcd_strlen((char*)data))); + uint8_t vallen = (pgm ? lcd_strlen_P(data) : (lcd_strlen((char*)data))); + uint8_t n = LCD_WIDTH - 2 - vallen; lcd_implementation_mark_as_selected(row, isSelected); @@ -402,6 +416,7 @@ static void _drawmenu_setting_edit_generic(bool isSelected, uint8_t row, const c } lcd_print(':'); while (n--) lcd_print(' '); + u8g.setPrintPos(LCD_PIXEL_WIDTH - DOG_CHAR_WIDTH * vallen, (row + 1) * DOG_CHAR_HEIGHT); if (pgm) { lcd_printPGM(data); } else { lcd_print((char *)data); } } diff --git a/Marlin/fonts/ISO10646_CN.fon b/Marlin/fonts/ISO10646_CN.fon new file mode 100644 index 0000000000000000000000000000000000000000..6c77eeccd8dea480f2759b0b987b777c34b48083 GIT binary patch literal 6192 zcmeH~e{7WX9mhXCAKRxV!d=B5W5#~(`qY+&&_a+P+3eF>v3ED6$59|_mi4G8EmNok z6=8UfrEy2YMrkTC{%|KUE!`r9n8lD~-U!jk;#|nGEc{`fHEt?d1QDgw;O+f=KhG7D zE&jP=iQnh$b>I6upYP}U{(ion=X>q_ou5dVh!}Vmiz2V%Q#YIZdN{Z}yZXdzd9CuD z$m?bIy%Xu^>D{XO`nPQCU;l{efAG=Adix*Ts_yT7pnuEOEe~x|>v}hD*z&~Ig*OH* zKlI8K*MDa>6^NL-|8u^2D6wUm?8aqip;Q_$eb4I*sc>kPo1{`wvlj4%>Dz9Xjb%-@ zmpPty#l7t-J6aRz8xpJA7d0(ivb5`aEA<^q+tVvnt3^#s3+`Tums+mA;-em4v~ZCZ z0!lI4b=|j!v@BHd_5B;RJ+^t{0@e3e_rtvps0~{lS>L@3Ms)B3!%k}>KuZSs)D1H8~wM=SFRi)Yg>u0%Wr*iq2oF>c5wWW%@gKQv|k}+~6 z*-1V`_LEPML*xPSF!>63f_#%aL%v6zBR?kt6?*pB2WYrw%Cu3wM*-s9UhshJ<8S)$%2vI+|m`sx0gT9>Y5R~rY7&Ji71ZO?aLh;o5=O?i^}K) zc>TVd+2=Uk@TrgrndSxhgql*rQ=t(1Q_cm`^vA;aLeB3`AwC*?`d}>C(b;aAUVMrv z>CwV`&01M$y&_Y%yrzvM(a?qkmg1W|V`C-Fxv5+(#{m$dU+nkg9LMps!HDMBr=WRe zjqE!m|JO^J;XD&lFA9x5%di!p;SBq^;d~)K?9Gdr&^*<-zm4h1JfGae*g?OKJfL}+ zwMY!0kG7X;K-)_(w>wT>DgW5$84V2M$6-IE{JC_Xl;2OO)QpB)s-$1i=aAuou=7?GIMP=t|)YFOD}i_FOmmghX$Ew_w|jr!uKH?HRgwF-877hUUlAdP-~1nJ)S0O#2%k z+gYLBfLAAw6n|_VHsAvLwykwG`F4ak*mJG#=U)Wr_w$dw-hgX9{<=`x*Z?nwcv@`b zCzA60HEJVn`D1&A{mwTZ-(=wbI|Ic)z_@X)b;>XdarIJg=;)6tL%;sbI9epV7vJ=Q zhMy@XBbL?NI%pJwVO4J>!pe%rz*sDaTIzlG4>_C)mT~CnAkH%9G5e2l2G%i z*^3Iz7B0$hGLCK%ovxT38k&wCAK!q`uC_T&-bMV8^U=0{RV;bS5S+TM6l{HoIma}M z=Ilz-G)wXwTkzjLqB=!A7&_VT<8K$Ft>t{nir%;HPqa@!H3VhwlZ}O$h7k+~!{O2o zBtkHy(dgx9&0YVft)Jg7HvEwaTc^6UwKZ!PgM)*Z2sthwGdgWz2+W3l;|6B%-mVnG zWnac?jpEJLDMTsg9dLF2!`W6`Mp5shw5!)mc_i=2~sDaOl(Bb}&LLW6t~7M5{iv4>AkfbqB$)E4dtB74Y)(=anmU z)+KA(!$&Zn$+u#A^BKWfpC1`{UN8FEywI6#?MmT_CDSiqTD|23?u$`jWT7rA={;Jz zmRb<(OPggFAF4(xy68^E&)^m!N;avJ+^qB}bPShwQCIEp_KEgn=ays~aUjsm=UwRe z)N1%7`e6UBRLufLa9r#=R$@S3(Lgpj_Gy2_L2z(uXjRR0Lo}))-Qqg9lh5aMouGV{ zPS#pI)QL1;txD_M8jI~rCU+!btvLpOe%%DcT;0?)T#a959hM8$OABOUv94HKGTl9( z?Rtz3FP|RR|I!Q3?SJ-zr}che1F1%2POjbDXII~~=GkU1&$w&b$iMzOcNwZ!t%uH; zCe{1b&AoMWU3kqeYD&{;nWE}0Mxsk5qtWOFJiog15e7P2TG~HKB(}VrNW3c$q>Ep_ zCGtu8(JPI2e>A_b-m`nRWM884kBRp9_me+PY41GTks%jPORHtE{0&IAkz*I*L|hDrvdhlDaOBvLV@E#<;9pl4g>GXOq+{;q zzk7M?jicu)=Tu4|pFw?MW>-npj&*m$;~m|Y(eWC$233`{cXiy?vEgTkqg=f68Pvl- zmtp?W4hEAWQ7^vo>b9l*!&qz2TP-au$b+kpp91x!cI_{Qcdc2|@xzd)ndVBfYF5Sg z&cu`PFF3DWncg-$|CZH?Bigtf0t&xf9fXs7|dv7Kub^w0FS)bh8>?J91>ap?>~i zOWU1%!Euly$vVhrs5(^NwoJPtPyw@}uIy4PMPL{_yF74Pt=m5E{Pmj93twF^|0=|; z8CimF;`*Z{(q+GEx7#=+^!XqNuP3olho}==hOSR-(U;2Oywb<{x7~1fy=T^=(29nc zO|;`mWEtNp30JPJeRA2Fk)lzDa|x3o2YM1$zDVz^nx3nx1tC#?#kNNn*V{#r%cGZ`JG_g>3A`0I7et!wChG0L@xj!+ @@ -64,12 +64,12 @@ uint8_t u8g_dev_rrd_st7920_128x64_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, vo ST7920_WRITE_BYTE(0x01); //clear CGRAM ram u8g_Delay(15); //delay for CGRAM clear ST7920_WRITE_BYTE(0x3E); //extended mode + GDRAM active - for(y=0;y Date: Mon, 27 Apr 2015 12:47:11 +0200 Subject: [PATCH 53/88] Give TALL_FONT_CORRECTION a default --- Marlin/dogm_lcd_implementation.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Marlin/dogm_lcd_implementation.h b/Marlin/dogm_lcd_implementation.h index 927904c7a7..d0b9642d87 100644 --- a/Marlin/dogm_lcd_implementation.h +++ b/Marlin/dogm_lcd_implementation.h @@ -110,6 +110,10 @@ #define LCD_WIDTH_EDIT 22 #endif +#ifndef TALL_FONT_CORRECTION + #define TALL_FONT_CORRECTION 0 +#endif + #define START_ROW 0 // LCD selection From 1d9699be0f74b3f689128cdbbd38526112be2d7a Mon Sep 17 00:00:00 2001 From: AnHardt Date: Mon, 27 Apr 2015 13:16:20 +0200 Subject: [PATCH 54/88] Add some doku --- Documentation/LCDLanguageFont.md | 9 +++++---- Marlin/fonts/README.fonts | 5 +++-- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/Documentation/LCDLanguageFont.md b/Documentation/LCDLanguageFont.md index a1acfb63fb..ff9c1222e9 100644 --- a/Documentation/LCDLanguageFont.md +++ b/Documentation/LCDLanguageFont.md @@ -46,11 +46,9 @@ We have two different technologies for the displays: * nl Dutch * ca Catalan * eu Basque-Euskera + * cn Chinese + * jp Japanese (Katakana) - and recently on [Thingiverse](http://www.thingiverse.com/) a new port to - * jp [Japanese](http://www.thingiverse.com/thing:664397) - - appeared. ## The Problem All of this languages, except the English, normally use extended symbol sets, not contained in US-ASCII. @@ -132,6 +130,9 @@ We have two different technologies for the displays: You'll find all translatable strings in 'language_en.h'. Please don't translate any strings from 'language.h', this may break the serial protocol. + For information about fonts see: Marlin\fonts\README.fonts + + ## User Instructions Define your hardware and the wanted language in 'Configuration.h'. To find out what charset your hardware is, define language 'test' and compile. In the menu you will see two lines from the upper half of the charset. diff --git a/Marlin/fonts/README.fonts b/Marlin/fonts/README.fonts index a33e6afcd0..f7d41fa982 100644 --- a/Marlin/fonts/README.fonts +++ b/Marlin/fonts/README.fonts @@ -4,8 +4,9 @@ Then run make_fonts.bat what calls bdf2u8g.exe with the needed parameters to pro The .h files must be edited to replace '#include "u8g.h"' with '#include ', replace 'U8G_FONT_SECTION' with 'U8G_SECTION', insert '.progmem.' right behind the first '"' and moved to the main directory. How to integrate a new font: -Currently we are limited to 256 symbols per font. We use a menu system with 5 lines, on a display with 64 pixel height. That means we have 12 pixel for a line. To have some space in between the lines we can't use more then 10 pixel height for the symbols. -We use fixed width fonts. To fit 22 Symbols on the 128 pixel wide screen, the symbols can't be wider than 5 pixel. Maybe you can work with half symbols - two places in the charset will than build one wide symbol. +Currently we are limited to 256 symbols per font. We use a menu system with 5 lines, on a display with 64 pixel height. That means we have 12 pixel for a line. To have some space in between the lines we can't use more then 10 pixel height for the symbols. For up to 11 pixel set TALL_FONT_CORRECTION 1 when loading the font. +To fit 22 Symbols on the 128 pixel wide screen, the symbols can't be wider than 5 pixel, for the first 128 symbols. +For the second half of the font we now support up to 11x11 pixel. * Get 'Fony.exe' * Copy one of the existing *.fon files and work with this. From 6cba6bcd82f60f488518fe95ae1c65dc84fc3b60 Mon Sep 17 00:00:00 2001 From: AnHardt Date: Mon, 27 Apr 2015 13:24:51 +0200 Subject: [PATCH 55/88] Add 'cn' to the other 'Configuration.h's --- Marlin/configurator/config/Configuration.h | 2 +- Marlin/example_configurations/Felix/Configuration.h | 2 +- Marlin/example_configurations/Felix/Configuration_DUAL.h | 2 +- Marlin/example_configurations/Hephestos/Configuration.h | 2 +- Marlin/example_configurations/K8200/Configuration.h | 2 +- Marlin/example_configurations/SCARA/Configuration.h | 2 +- Marlin/example_configurations/WITBOX/Configuration.h | 2 +- Marlin/example_configurations/delta/generic/Configuration.h | 2 +- Marlin/example_configurations/delta/kossel_mini/Configuration.h | 2 +- Marlin/example_configurations/makibox/Configuration.h | 2 +- Marlin/example_configurations/tvrrug/Round2/Configuration.h | 2 +- 11 files changed, 11 insertions(+), 11 deletions(-) diff --git a/Marlin/configurator/config/Configuration.h b/Marlin/configurator/config/Configuration.h index 59d13ab64e..9ed528059a 100644 --- a/Marlin/configurator/config/Configuration.h +++ b/Marlin/configurator/config/Configuration.h @@ -641,7 +641,7 @@ const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic // @section lcd // Define your display language below. Replace (en) with your language code and uncomment. -// en, pl, fr, de, es, ru, it, pt, pt-br, fi, an, nl, ca, eu, kana, kana_utf8, test +// en, pl, fr, de, es, ru, it, pt, pt-br, fi, an, nl, ca, eu, kana, kana_utf8, cn, test // See also language.h #define LANGUAGE_INCLUDE GENERATE_LANGUAGE_INCLUDE(en) diff --git a/Marlin/example_configurations/Felix/Configuration.h b/Marlin/example_configurations/Felix/Configuration.h index 558ee3bb03..5407cc7952 100644 --- a/Marlin/example_configurations/Felix/Configuration.h +++ b/Marlin/example_configurations/Felix/Configuration.h @@ -575,7 +575,7 @@ const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic //==============================LCD and SD support============================= // Define your display language below. Replace (en) with your language code and uncomment. -// en, pl, fr, de, es, ru, it, pt, pt-br, fi, an, nl, ca, eu, kana, kana_utf8, test +// en, pl, fr, de, es, ru, it, pt, pt-br, fi, an, nl, ca, eu, kana, kana_utf8, cn, test // See also language.h //#define LANGUAGE_INCLUDE GENERATE_LANGUAGE_INCLUDE(en) diff --git a/Marlin/example_configurations/Felix/Configuration_DUAL.h b/Marlin/example_configurations/Felix/Configuration_DUAL.h index 2e5633b8c1..aefabced9f 100644 --- a/Marlin/example_configurations/Felix/Configuration_DUAL.h +++ b/Marlin/example_configurations/Felix/Configuration_DUAL.h @@ -571,7 +571,7 @@ const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic //==============================LCD and SD support============================= // Define your display language below. Replace (en) with your language code and uncomment. -// en, pl, fr, de, es, ru, it, pt, pt-br, fi, an, nl, ca, eu, kana, kana_utf8, test +// en, pl, fr, de, es, ru, it, pt, pt-br, fi, an, nl, ca, eu, kana, kana_utf8, cn, test // See also language.h //#define LANGUAGE_INCLUDE GENERATE_LANGUAGE_INCLUDE(en) diff --git a/Marlin/example_configurations/Hephestos/Configuration.h b/Marlin/example_configurations/Hephestos/Configuration.h index 69841816fd..596a286f51 100644 --- a/Marlin/example_configurations/Hephestos/Configuration.h +++ b/Marlin/example_configurations/Hephestos/Configuration.h @@ -595,7 +595,7 @@ const bool Z_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the logic //==============================LCD and SD support============================= // Define your display language below. Replace (en) with your language code and uncomment. -// en, pl, fr, de, es, ru, it, pt, pt-br, fi, an, nl, ca, eu, kana, kana_utf8, test +// en, pl, fr, de, es, ru, it, pt, pt-br, fi, an, nl, ca, eu, kana, kana_utf8, cn, test // See also language.h //#define LANGUAGE_INCLUDE GENERATE_LANGUAGE_INCLUDE(en) diff --git a/Marlin/example_configurations/K8200/Configuration.h b/Marlin/example_configurations/K8200/Configuration.h index 2987552f6d..d920757486 100644 --- a/Marlin/example_configurations/K8200/Configuration.h +++ b/Marlin/example_configurations/K8200/Configuration.h @@ -653,7 +653,7 @@ const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic // @section lcd // Define your display language below. Replace (en) with your language code and uncomment. -// en, pl, fr, de, es, ru, it, pt, pt-br, fi, an, nl, ca, eu, kana, kana_utf8, test +// en, pl, fr, de, es, ru, it, pt, pt-br, fi, an, nl, ca, eu, kana, kana_utf8, cn, test // See also language.h #define LANGUAGE_INCLUDE GENERATE_LANGUAGE_INCLUDE(en) diff --git a/Marlin/example_configurations/SCARA/Configuration.h b/Marlin/example_configurations/SCARA/Configuration.h index 6d70fa244f..c136191c40 100644 --- a/Marlin/example_configurations/SCARA/Configuration.h +++ b/Marlin/example_configurations/SCARA/Configuration.h @@ -626,7 +626,7 @@ const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic //==============================LCD and SD support============================= // Define your display language below. Replace (en) with your language code and uncomment. -// en, pl, fr, de, es, ru, it, pt, pt-br, fi, an, nl, ca, eu, kana, kana_utf8, test +// en, pl, fr, de, es, ru, it, pt, pt-br, fi, an, nl, ca, eu, kana, kana_utf8, cn, test // See also language.h //#define LANGUAGE_INCLUDE GENERATE_LANGUAGE_INCLUDE(en) diff --git a/Marlin/example_configurations/WITBOX/Configuration.h b/Marlin/example_configurations/WITBOX/Configuration.h index 7022f78887..b7ed17ef54 100644 --- a/Marlin/example_configurations/WITBOX/Configuration.h +++ b/Marlin/example_configurations/WITBOX/Configuration.h @@ -594,7 +594,7 @@ const bool Z_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the logic //==============================LCD and SD support============================= // Define your display language below. Replace (en) with your language code and uncomment. -// en, pl, fr, de, es, ru, it, pt, pt-br, fi, an, nl, ca, eu, kana, kana_utf8, test +// en, pl, fr, de, es, ru, it, pt, pt-br, fi, an, nl, ca, eu, kana, kana_utf8, cn, test // See also language.h //#define LANGUAGE_INCLUDE GENERATE_LANGUAGE_INCLUDE(en) diff --git a/Marlin/example_configurations/delta/generic/Configuration.h b/Marlin/example_configurations/delta/generic/Configuration.h index ae094ccac5..7f93c4d8b0 100644 --- a/Marlin/example_configurations/delta/generic/Configuration.h +++ b/Marlin/example_configurations/delta/generic/Configuration.h @@ -643,7 +643,7 @@ const bool Z_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the logic //==============================LCD and SD support============================= // Define your display language below. Replace (en) with your language code and uncomment. -// en, pl, fr, de, es, ru, it, pt, pt-br, fi, an, nl, ca, eu, kana, kana_utf8, test +// en, pl, fr, de, es, ru, it, pt, pt-br, fi, an, nl, ca, eu, kana, kana_utf8, cn, test // See also language.h #define LANGUAGE_INCLUDE GENERATE_LANGUAGE_INCLUDE(en) diff --git a/Marlin/example_configurations/delta/kossel_mini/Configuration.h b/Marlin/example_configurations/delta/kossel_mini/Configuration.h index f6b6a1e036..f90344613c 100644 --- a/Marlin/example_configurations/delta/kossel_mini/Configuration.h +++ b/Marlin/example_configurations/delta/kossel_mini/Configuration.h @@ -647,7 +647,7 @@ const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic //==============================LCD and SD support============================= // Define your display language below. Replace (en) with your language code and uncomment. -// en, pl, fr, de, es, ru, it, pt, pt-br, fi, an, nl, ca, eu, kana, kana_utf8, test +// en, pl, fr, de, es, ru, it, pt, pt-br, fi, an, nl, ca, eu, kana, kana_utf8, cn, test // See also language.h #define LANGUAGE_INCLUDE GENERATE_LANGUAGE_INCLUDE(en) diff --git a/Marlin/example_configurations/makibox/Configuration.h b/Marlin/example_configurations/makibox/Configuration.h index 500f47fe86..93e152e868 100644 --- a/Marlin/example_configurations/makibox/Configuration.h +++ b/Marlin/example_configurations/makibox/Configuration.h @@ -594,7 +594,7 @@ const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic //==============================LCD and SD support============================= // Define your display language below. Replace (en) with your language code and uncomment. -// en, pl, fr, de, es, ru, it, pt, pt-br, fi, an, nl, ca, eu, kana, kana_utf8, test +// en, pl, fr, de, es, ru, it, pt, pt-br, fi, an, nl, ca, eu, kana, kana_utf8, cn, test // See also language.h //#define LANGUAGE_INCLUDE GENERATE_LANGUAGE_INCLUDE(en) diff --git a/Marlin/example_configurations/tvrrug/Round2/Configuration.h b/Marlin/example_configurations/tvrrug/Round2/Configuration.h index 314faf2d6a..ce662b2c03 100644 --- a/Marlin/example_configurations/tvrrug/Round2/Configuration.h +++ b/Marlin/example_configurations/tvrrug/Round2/Configuration.h @@ -600,7 +600,7 @@ const bool Z_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the logic //==============================LCD and SD support============================= // Define your display language below. Replace (en) with your language code and uncomment. -// en, pl, fr, de, es, ru, it, pt, pt-br, fi, an, nl, ca, eu, kana, kana_utf8, test +// en, pl, fr, de, es, ru, it, pt, pt-br, fi, an, nl, ca, eu, kana, kana_utf8, cn, test // See also language.h //#define LANGUAGE_INCLUDE GENERATE_LANGUAGE_INCLUDE(en) From 98ca46006c1c94680d8376ba9c63aab17c366c35 Mon Sep 17 00:00:00 2001 From: Steve Kelly Date: Wed, 22 Apr 2015 16:34:55 -0400 Subject: [PATCH 56/88] Allow Y to home before X with option in Configuration_adv.h. This addresses comments in #1956 and #1079. In particular, this is useful when both endstops are stationary on a CoreXY system, and the Y axis needs to be homed before the X so the flags are aligned. --- Marlin/Configuration_adv.h | 3 +++ Marlin/Marlin_main.cpp | 11 +++++++++-- Marlin/configurator/config/Configuration_adv.h | 3 +++ .../example_configurations/Felix/Configuration_adv.h | 3 +++ .../Hephestos/Configuration_adv.h | 3 +++ .../example_configurations/K8200/Configuration_adv.h | 3 +++ .../example_configurations/SCARA/Configuration_adv.h | 3 +++ .../example_configurations/WITBOX/Configuration_adv.h | 3 +++ .../delta/generic/Configuration_adv.h | 3 +++ .../delta/kossel_mini/Configuration_adv.h | 3 +++ .../makibox/Configuration_adv.h | 3 +++ .../tvrrug/Round2/Configuration_adv.h | 3 +++ 12 files changed, 42 insertions(+), 2 deletions(-) diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index 6478eb923e..bdf856e7ed 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -195,6 +195,9 @@ #define HOMING_BUMP_DIVISOR {2, 2, 4} // Re-Bump Speed Divisor (Divides the Homing Feedrate) //#define QUICK_HOME //if this is defined, if both x and y are to be homed, a diagonal move will be performed initially. +// When G28 is called, this option will make Y home before X +// #define HOME_Y_BEFORE_X + // @section machine #define AXIS_RELATIVE_MODES {false, false, false, false} diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp index 64d3d1f350..eba95e21b5 100644 --- a/Marlin/Marlin_main.cpp +++ b/Marlin/Marlin_main.cpp @@ -1924,6 +1924,11 @@ inline void gcode_G28() { #endif // QUICK_HOME + #ifdef HOME_Y_BEFORE_X + // Home Y + if (home_all_axis || homeY) HOMEAXIS(Y); + #endif + // Home X if (home_all_axis || homeX) { #ifdef DUAL_X_CARRIAGE @@ -1943,8 +1948,10 @@ inline void gcode_G28() { #endif } - // Home Y - if (home_all_axis || homeY) HOMEAXIS(Y); + #ifndef HOME_Y_BEFORE_X + // Home Y + if (home_all_axis || homeY) HOMEAXIS(Y); + #endif // Set the X position, if included if (code_seen(axis_codes[X_AXIS]) && code_has_value()) diff --git a/Marlin/configurator/config/Configuration_adv.h b/Marlin/configurator/config/Configuration_adv.h index 6478eb923e..bdf856e7ed 100644 --- a/Marlin/configurator/config/Configuration_adv.h +++ b/Marlin/configurator/config/Configuration_adv.h @@ -195,6 +195,9 @@ #define HOMING_BUMP_DIVISOR {2, 2, 4} // Re-Bump Speed Divisor (Divides the Homing Feedrate) //#define QUICK_HOME //if this is defined, if both x and y are to be homed, a diagonal move will be performed initially. +// When G28 is called, this option will make Y home before X +// #define HOME_Y_BEFORE_X + // @section machine #define AXIS_RELATIVE_MODES {false, false, false, false} diff --git a/Marlin/example_configurations/Felix/Configuration_adv.h b/Marlin/example_configurations/Felix/Configuration_adv.h index a80790b957..17649a9b3f 100644 --- a/Marlin/example_configurations/Felix/Configuration_adv.h +++ b/Marlin/example_configurations/Felix/Configuration_adv.h @@ -195,6 +195,9 @@ #define HOMING_BUMP_DIVISOR {2, 2, 4} // Re-Bump Speed Divisor (Divides the Homing Feedrate) //#define QUICK_HOME //if this is defined, if both x and y are to be homed, a diagonal move will be performed initially. +// When G28 is called, this option will make Y home before X +// #define HOME_Y_BEFORE_X + // @section machine #define AXIS_RELATIVE_MODES {false, false, false, false} diff --git a/Marlin/example_configurations/Hephestos/Configuration_adv.h b/Marlin/example_configurations/Hephestos/Configuration_adv.h index 84536d044e..d9cd7c468a 100644 --- a/Marlin/example_configurations/Hephestos/Configuration_adv.h +++ b/Marlin/example_configurations/Hephestos/Configuration_adv.h @@ -195,6 +195,9 @@ #define HOMING_BUMP_DIVISOR {2, 2, 4} // Re-Bump Speed Divisor (Divides the Homing Feedrate) //#define QUICK_HOME //if this is defined, if both x and y are to be homed, a diagonal move will be performed initially. +// When G28 is called, this option will make Y home before X +// #define HOME_Y_BEFORE_X + // @section machine #define AXIS_RELATIVE_MODES {false, false, false, false} diff --git a/Marlin/example_configurations/K8200/Configuration_adv.h b/Marlin/example_configurations/K8200/Configuration_adv.h index a80790b957..17649a9b3f 100644 --- a/Marlin/example_configurations/K8200/Configuration_adv.h +++ b/Marlin/example_configurations/K8200/Configuration_adv.h @@ -195,6 +195,9 @@ #define HOMING_BUMP_DIVISOR {2, 2, 4} // Re-Bump Speed Divisor (Divides the Homing Feedrate) //#define QUICK_HOME //if this is defined, if both x and y are to be homed, a diagonal move will be performed initially. +// When G28 is called, this option will make Y home before X +// #define HOME_Y_BEFORE_X + // @section machine #define AXIS_RELATIVE_MODES {false, false, false, false} diff --git a/Marlin/example_configurations/SCARA/Configuration_adv.h b/Marlin/example_configurations/SCARA/Configuration_adv.h index edc2445af6..c97b03f710 100644 --- a/Marlin/example_configurations/SCARA/Configuration_adv.h +++ b/Marlin/example_configurations/SCARA/Configuration_adv.h @@ -195,6 +195,9 @@ #define HOMING_BUMP_DIVISOR {2, 2, 4} // Re-Bump Speed Divisor (Divides the Homing Feedrate) //#define QUICK_HOME //if this is defined, if both x and y are to be homed, a diagonal move will be performed initially. +// When G28 is called, this option will make Y home before X +// #define HOME_Y_BEFORE_X + // @section machine #define AXIS_RELATIVE_MODES {false, false, false, false} diff --git a/Marlin/example_configurations/WITBOX/Configuration_adv.h b/Marlin/example_configurations/WITBOX/Configuration_adv.h index 15c5232848..a37f9edf5b 100644 --- a/Marlin/example_configurations/WITBOX/Configuration_adv.h +++ b/Marlin/example_configurations/WITBOX/Configuration_adv.h @@ -195,6 +195,9 @@ #define HOMING_BUMP_DIVISOR {2, 2, 4} // Re-Bump Speed Divisor (Divides the Homing Feedrate) //#define QUICK_HOME //if this is defined, if both x and y are to be homed, a diagonal move will be performed initially. +// When G28 is called, this option will make Y home before X +// #define HOME_Y_BEFORE_X + // @section machine #define AXIS_RELATIVE_MODES {false, false, false, false} diff --git a/Marlin/example_configurations/delta/generic/Configuration_adv.h b/Marlin/example_configurations/delta/generic/Configuration_adv.h index 88b76c66e1..33969ba4c5 100644 --- a/Marlin/example_configurations/delta/generic/Configuration_adv.h +++ b/Marlin/example_configurations/delta/generic/Configuration_adv.h @@ -195,6 +195,9 @@ #define HOMING_BUMP_DIVISOR {10, 10, 20} // Re-Bump Speed Divisor (Divides the Homing Feedrate) //#define QUICK_HOME //if this is defined, if both x and y are to be homed, a diagonal move will be performed initially. +// When G28 is called, this option will make Y home before X +// #define HOME_Y_BEFORE_X + // @section machine #define AXIS_RELATIVE_MODES {false, false, false, false} diff --git a/Marlin/example_configurations/delta/kossel_mini/Configuration_adv.h b/Marlin/example_configurations/delta/kossel_mini/Configuration_adv.h index 9b52ede7b7..34426b81d1 100644 --- a/Marlin/example_configurations/delta/kossel_mini/Configuration_adv.h +++ b/Marlin/example_configurations/delta/kossel_mini/Configuration_adv.h @@ -195,6 +195,9 @@ #define HOMING_BUMP_DIVISOR {10, 10, 20} // Re-Bump Speed Divisor (Divides the Homing Feedrate) //#define QUICK_HOME //if this is defined, if both x and y are to be homed, a diagonal move will be performed initially. +// When G28 is called, this option will make Y home before X +// #define HOME_Y_BEFORE_X + // @section machine #define AXIS_RELATIVE_MODES {false, false, false, false} diff --git a/Marlin/example_configurations/makibox/Configuration_adv.h b/Marlin/example_configurations/makibox/Configuration_adv.h index 7b63732a69..85a8eef803 100644 --- a/Marlin/example_configurations/makibox/Configuration_adv.h +++ b/Marlin/example_configurations/makibox/Configuration_adv.h @@ -195,6 +195,9 @@ #define HOMING_BUMP_DIVISOR {2, 2, 4} // Re-Bump Speed Divisor (Divides the Homing Feedrate) //#define QUICK_HOME //if this is defined, if both x and y are to be homed, a diagonal move will be performed initially. +// When G28 is called, this option will make Y home before X +// #define HOME_Y_BEFORE_X + // @section machine #define AXIS_RELATIVE_MODES {false, false, false, false} diff --git a/Marlin/example_configurations/tvrrug/Round2/Configuration_adv.h b/Marlin/example_configurations/tvrrug/Round2/Configuration_adv.h index d221f080b4..4276d9aebf 100644 --- a/Marlin/example_configurations/tvrrug/Round2/Configuration_adv.h +++ b/Marlin/example_configurations/tvrrug/Round2/Configuration_adv.h @@ -195,6 +195,9 @@ #define HOMING_BUMP_DIVISOR {2, 2, 4} // Re-Bump Speed Divisor (Divides the Homing Feedrate) //#define QUICK_HOME //if this is defined, if both x and y are to be homed, a diagonal move will be performed initially. +// When G28 is called, this option will make Y home before X +// #define HOME_Y_BEFORE_X + // @section machine #define AXIS_RELATIVE_MODES {false, false, false, false} From 6af40e9dc0e4e91a95e4f7ee0c7cbefbfdd19184 Mon Sep 17 00:00:00 2001 From: CONSULitAS Date: Mon, 27 Apr 2015 23:59:10 +0200 Subject: [PATCH 57/88] K8200 example Configuration.h: STRING_URL removed K8200 example Configuration.h: * STRING_URL removed: like proposed by thinkyhead in #1917 --- Marlin/example_configurations/K8200/Configuration.h | 1 - 1 file changed, 1 deletion(-) diff --git a/Marlin/example_configurations/K8200/Configuration.h b/Marlin/example_configurations/K8200/Configuration.h index f324817c3c..43e15440e0 100644 --- a/Marlin/example_configurations/K8200/Configuration.h +++ b/Marlin/example_configurations/K8200/Configuration.h @@ -46,7 +46,6 @@ Here are some standard links for getting your machine calibrated: // startup. Implementation of an idea by Prof Braino to inform user that any changes made to this // build by the user have been successfully uploaded into firmware. #define STRING_VERSION "1.0.3 dev" -#define STRING_URL "https://github.com/CONSULitAS/Marlin-K8200/" #define STRING_VERSION_CONFIG_H __DATE__ " " __TIME__ // build date and time #define STRING_CONFIG_H_AUTHOR "(K8200, CONSULitAS)" // Who made the changes. #define STRING_SPLASH_LINE1 "v" STRING_VERSION // will be shown during bootup in line 1 From c5dfb355970427b848f927ad587e19bfa4884f03 Mon Sep 17 00:00:00 2001 From: CONSULitAS Date: Tue, 28 Apr 2015 01:03:54 +0200 Subject: [PATCH 58/88] language_de.h: updated translation and minor typos language_de.h: updated translation and minor typos --- Marlin/language_de.h | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Marlin/language_de.h b/Marlin/language_de.h index 8c8496f02c..57db43f245 100644 --- a/Marlin/language_de.h +++ b/Marlin/language_de.h @@ -13,7 +13,7 @@ //#define SIMULATE_ROMFONT #define DISPLAY_CHARSET_ISO10646_1 -#define WELCOME_MSG MACHINE_NAME " Bereit." +#define WELCOME_MSG MACHINE_NAME " bereit." #define MSG_SD_INSERTED "SDKarte erkannt." #define MSG_SD_REMOVED "SDKarte entfernt." #define MSG_MAIN "Hauptmenü" @@ -61,9 +61,9 @@ #define MSG_PID_D "PID D" #define MSG_PID_C "PID C" #define MSG_ACC "A" -#define MSG_VXY_JERK "V xy jerk" -#define MSG_VZ_JERK "V z jerk" -#define MSG_VE_JERK "V e jerk" +#define MSG_VXY_JERK "V xy Ruck" +#define MSG_VZ_JERK "V z Ruck" +#define MSG_VE_JERK "V e Ruck" #define MSG_VMAX "V max " // space by purpose #define MSG_X "x" #define MSG_Y "y" @@ -84,7 +84,7 @@ #define MSG_FILAMENT_SIZE_EXTRUDER_0 "Filament D 1" #define MSG_FILAMENT_SIZE_EXTRUDER_1 "Filament D 2" #define MSG_FILAMENT_SIZE_EXTRUDER_2 "Filament D 3" -#define MSG_CONTRAST "LCD contrast" +#define MSG_CONTRAST "LCD Kontrast" #define MSG_STORE_EPROM "EPROM speichern" #define MSG_LOAD_EPROM "EPROM laden" #define MSG_RESTORE_FAILSAFE "Standardkonfig." @@ -116,7 +116,7 @@ #define MSG_INIT_SDCARD "SDKarte erkennen"// Manually initialize the SD-card via user interface #define MSG_CNG_SDCARD "SDKarte erkennen"// SD-card changed by user. For machines with no autocarddetect. Both send "M21" #define MSG_ZPROBE_OUT "Sensor ausserhalb" -#define MSG_POSITION_UNKNOWN "X/Y vor Z Homen." +#define MSG_POSITION_UNKNOWN "X/Y vor Z homen." #define MSG_ZPROBE_ZOFFSET "Z Offset" #define MSG_BABYSTEP_X "Babystep X" #define MSG_BABYSTEP_Y "Babystep Y" @@ -126,7 +126,7 @@ #define MSG_END_MINUTE "Minuten" #ifdef DELTA_CALIBRATION_MENU - #define MSG_DELTA_CALIBRATE "Delta Kalibrieren" + #define MSG_DELTA_CALIBRATE "Delta kalibrieren" #define MSG_DELTA_CALIBRATE_X "Kalibriere X" #define MSG_DELTA_CALIBRATE_Y "Kalibriere Y" #define MSG_DELTA_CALIBRATE_Z "Kalibriere Z" From 5b248757c71441866ec6d7fdab8125845dd4f5e2 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Mon, 27 Apr 2015 19:11:25 -0700 Subject: [PATCH 59/88] Level Bed in Prepare submenu MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add “Level Bed” menu item for auto bed leveling - Hide the option if homing has not been done yet - Arrange the Prepare submenu more logically (?) - Add documentation comments, some white-space - Apply some coding standards here and there - Move old encoder multiplier debug option to `ultralcd.cpp` --- Marlin/Configuration_adv.h | 1 - .../configurator/config/Configuration_adv.h | 1 - Marlin/dogm_lcd_implementation.h | 1 + .../Felix/Configuration_adv.h | 1 - .../Hephestos/Configuration_adv.h | 1 - .../K8200/Configuration_adv.h | 1 - .../SCARA/Configuration_adv.h | 1 - .../WITBOX/Configuration_adv.h | 1 - .../delta/generic/Configuration_adv.h | 1 - .../delta/kossel_mini/Configuration_adv.h | 1 - .../makibox/Configuration_adv.h | 1 - .../tvrrug/Round2/Configuration_adv.h | 1 - Marlin/ultralcd.cpp | 419 +++++++++++++----- 13 files changed, 306 insertions(+), 125 deletions(-) diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index 6478eb923e..d0d9329bff 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -258,7 +258,6 @@ #define ENCODER_RATE_MULTIPLIER // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly #define ENCODER_10X_STEPS_PER_SEC 75 // If the encoder steps per sec exceeds this value, multiply steps moved x10 to quickly advance the value #define ENCODER_100X_STEPS_PER_SEC 160 // If the encoder steps per sec exceeds this value, multiply steps moved x100 to really quickly advance the value -//#define ENCODER_RATE_MULTIPLIER_DEBUG // If defined, output the encoder steps per second value //#define CHDK 4 //Pin for triggering CHDK to take a picture see how to use it here http://captain-slow.dk/2014/03/09/3d-printing-timelapses/ #define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again diff --git a/Marlin/configurator/config/Configuration_adv.h b/Marlin/configurator/config/Configuration_adv.h index 6478eb923e..d0d9329bff 100644 --- a/Marlin/configurator/config/Configuration_adv.h +++ b/Marlin/configurator/config/Configuration_adv.h @@ -258,7 +258,6 @@ #define ENCODER_RATE_MULTIPLIER // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly #define ENCODER_10X_STEPS_PER_SEC 75 // If the encoder steps per sec exceeds this value, multiply steps moved x10 to quickly advance the value #define ENCODER_100X_STEPS_PER_SEC 160 // If the encoder steps per sec exceeds this value, multiply steps moved x100 to really quickly advance the value -//#define ENCODER_RATE_MULTIPLIER_DEBUG // If defined, output the encoder steps per second value //#define CHDK 4 //Pin for triggering CHDK to take a picture see how to use it here http://captain-slow.dk/2014/03/09/3d-printing-timelapses/ #define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again diff --git a/Marlin/dogm_lcd_implementation.h b/Marlin/dogm_lcd_implementation.h index 0965b90972..f8eb714aa2 100644 --- a/Marlin/dogm_lcd_implementation.h +++ b/Marlin/dogm_lcd_implementation.h @@ -172,6 +172,7 @@ char lcd_printPGM(const char* str) { static bool show_splashscreen = true; +/* Warning: This function is called from interrupt context */ static void lcd_implementation_init() { #ifdef LCD_PIN_BL // Enable LCD backlight diff --git a/Marlin/example_configurations/Felix/Configuration_adv.h b/Marlin/example_configurations/Felix/Configuration_adv.h index a80790b957..caad4c8fb9 100644 --- a/Marlin/example_configurations/Felix/Configuration_adv.h +++ b/Marlin/example_configurations/Felix/Configuration_adv.h @@ -258,7 +258,6 @@ #define ENCODER_RATE_MULTIPLIER // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly #define ENCODER_10X_STEPS_PER_SEC 75 // If the encoder steps per sec exceeds this value, multiply steps moved x10 to quickly advance the value #define ENCODER_100X_STEPS_PER_SEC 160 // If the encoder steps per sec exceeds this value, multiply steps moved x100 to really quickly advance the value -//#define ENCODER_RATE_MULTIPLIER_DEBUG // If defined, output the encoder steps per second value //#define CHDK 4 //Pin for triggering CHDK to take a picture see how to use it here http://captain-slow.dk/2014/03/09/3d-printing-timelapses/ #define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again diff --git a/Marlin/example_configurations/Hephestos/Configuration_adv.h b/Marlin/example_configurations/Hephestos/Configuration_adv.h index 84536d044e..30b37ec042 100644 --- a/Marlin/example_configurations/Hephestos/Configuration_adv.h +++ b/Marlin/example_configurations/Hephestos/Configuration_adv.h @@ -258,7 +258,6 @@ #define ENCODER_RATE_MULTIPLIER // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly #define ENCODER_10X_STEPS_PER_SEC 75 // If the encoder steps per sec exceeds this value, multiply steps moved x10 to quickly advance the value #define ENCODER_100X_STEPS_PER_SEC 160 // If the encoder steps per sec exceeds this value, multiply steps moved x100 to really quickly advance the value -//#define ENCODER_RATE_MULTIPLIER_DEBUG // If defined, output the encoder steps per second value //#define CHDK 4 //Pin for triggering CHDK to take a picture see how to use it here http://captain-slow.dk/2014/03/09/3d-printing-timelapses/ #define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again diff --git a/Marlin/example_configurations/K8200/Configuration_adv.h b/Marlin/example_configurations/K8200/Configuration_adv.h index a80790b957..caad4c8fb9 100644 --- a/Marlin/example_configurations/K8200/Configuration_adv.h +++ b/Marlin/example_configurations/K8200/Configuration_adv.h @@ -258,7 +258,6 @@ #define ENCODER_RATE_MULTIPLIER // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly #define ENCODER_10X_STEPS_PER_SEC 75 // If the encoder steps per sec exceeds this value, multiply steps moved x10 to quickly advance the value #define ENCODER_100X_STEPS_PER_SEC 160 // If the encoder steps per sec exceeds this value, multiply steps moved x100 to really quickly advance the value -//#define ENCODER_RATE_MULTIPLIER_DEBUG // If defined, output the encoder steps per second value //#define CHDK 4 //Pin for triggering CHDK to take a picture see how to use it here http://captain-slow.dk/2014/03/09/3d-printing-timelapses/ #define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again diff --git a/Marlin/example_configurations/SCARA/Configuration_adv.h b/Marlin/example_configurations/SCARA/Configuration_adv.h index edc2445af6..34e60fd96c 100644 --- a/Marlin/example_configurations/SCARA/Configuration_adv.h +++ b/Marlin/example_configurations/SCARA/Configuration_adv.h @@ -258,7 +258,6 @@ #define ENCODER_RATE_MULTIPLIER // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly #define ENCODER_10X_STEPS_PER_SEC 75 // If the encoder steps per sec exceeds this value, multiply steps moved x10 to quickly advance the value #define ENCODER_100X_STEPS_PER_SEC 160 // If the encoder steps per sec exceeds this value, multiply steps moved x100 to really quickly advance the value -//#define ENCODER_RATE_MULTIPLIER_DEBUG // If defined, output the encoder steps per second value //#define CHDK 4 //Pin for triggering CHDK to take a picture see how to use it here http://captain-slow.dk/2014/03/09/3d-printing-timelapses/ #define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again diff --git a/Marlin/example_configurations/WITBOX/Configuration_adv.h b/Marlin/example_configurations/WITBOX/Configuration_adv.h index 15c5232848..758f0e8f47 100644 --- a/Marlin/example_configurations/WITBOX/Configuration_adv.h +++ b/Marlin/example_configurations/WITBOX/Configuration_adv.h @@ -258,7 +258,6 @@ #define ENCODER_RATE_MULTIPLIER // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly #define ENCODER_10X_STEPS_PER_SEC 75 // If the encoder steps per sec exceeds this value, multiply steps moved x10 to quickly advance the value #define ENCODER_100X_STEPS_PER_SEC 160 // If the encoder steps per sec exceeds this value, multiply steps moved x100 to really quickly advance the value -//#define ENCODER_RATE_MULTIPLIER_DEBUG // If defined, output the encoder steps per second value //#define CHDK 4 //Pin for triggering CHDK to take a picture see how to use it here http://captain-slow.dk/2014/03/09/3d-printing-timelapses/ #define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again diff --git a/Marlin/example_configurations/delta/generic/Configuration_adv.h b/Marlin/example_configurations/delta/generic/Configuration_adv.h index 88b76c66e1..0360f0a5d4 100644 --- a/Marlin/example_configurations/delta/generic/Configuration_adv.h +++ b/Marlin/example_configurations/delta/generic/Configuration_adv.h @@ -259,7 +259,6 @@ #define ENCODER_RATE_MULTIPLIER // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly #define ENCODER_10X_STEPS_PER_SEC 75 // If the encoder steps per sec exceeds this value, multiply steps moved x10 to quickly advance the value #define ENCODER_100X_STEPS_PER_SEC 160 // If the encoder steps per sec exceeds this value, multiply steps moved x100 to really quickly advance the value -//#define ENCODER_RATE_MULTIPLIER_DEBUG // If defined, output the encoder steps per second value //#define CHDK 4 //Pin for triggering CHDK to take a picture see how to use it here http://captain-slow.dk/2014/03/09/3d-printing-timelapses/ #define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again diff --git a/Marlin/example_configurations/delta/kossel_mini/Configuration_adv.h b/Marlin/example_configurations/delta/kossel_mini/Configuration_adv.h index 9b52ede7b7..f941bd2dcc 100644 --- a/Marlin/example_configurations/delta/kossel_mini/Configuration_adv.h +++ b/Marlin/example_configurations/delta/kossel_mini/Configuration_adv.h @@ -258,7 +258,6 @@ #define ENCODER_RATE_MULTIPLIER // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly #define ENCODER_10X_STEPS_PER_SEC 75 // If the encoder steps per sec exceeds this value, multiply steps moved x10 to quickly advance the value #define ENCODER_100X_STEPS_PER_SEC 160 // If the encoder steps per sec exceeds this value, multiply steps moved x100 to really quickly advance the value -//#define ENCODER_RATE_MULTIPLIER_DEBUG // If defined, output the encoder steps per second value //#define CHDK 4 //Pin for triggering CHDK to take a picture see how to use it here http://captain-slow.dk/2014/03/09/3d-printing-timelapses/ #define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again diff --git a/Marlin/example_configurations/makibox/Configuration_adv.h b/Marlin/example_configurations/makibox/Configuration_adv.h index 7b63732a69..3520c6342f 100644 --- a/Marlin/example_configurations/makibox/Configuration_adv.h +++ b/Marlin/example_configurations/makibox/Configuration_adv.h @@ -258,7 +258,6 @@ #define ENCODER_RATE_MULTIPLIER // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly #define ENCODER_10X_STEPS_PER_SEC 75 // If the encoder steps per sec exceeds this value, multiply steps moved x10 to quickly advance the value #define ENCODER_100X_STEPS_PER_SEC 160 // If the encoder steps per sec exceeds this value, multiply steps moved x100 to really quickly advance the value -//#define ENCODER_RATE_MULTIPLIER_DEBUG // If defined, output the encoder steps per second value //#define CHDK 4 //Pin for triggering CHDK to take a picture see how to use it here http://captain-slow.dk/2014/03/09/3d-printing-timelapses/ #define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again diff --git a/Marlin/example_configurations/tvrrug/Round2/Configuration_adv.h b/Marlin/example_configurations/tvrrug/Round2/Configuration_adv.h index d221f080b4..77067bf892 100644 --- a/Marlin/example_configurations/tvrrug/Round2/Configuration_adv.h +++ b/Marlin/example_configurations/tvrrug/Round2/Configuration_adv.h @@ -258,7 +258,6 @@ #define ENCODER_RATE_MULTIPLIER // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly #define ENCODER_10X_STEPS_PER_SEC 75 // If the encoder steps per sec exceeds this value, multiply steps moved x10 to quickly advance the value #define ENCODER_100X_STEPS_PER_SEC 160 // If the encoder steps per sec exceeds this value, multiply steps moved x100 to really quickly advance the value -//#define ENCODER_RATE_MULTIPLIER_DEBUG // If defined, output the encoder steps per second value //#define CHDK 4 //Pin for triggering CHDK to take a picture see how to use it here http://captain-slow.dk/2014/03/09/3d-printing-timelapses/ #define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again diff --git a/Marlin/ultralcd.cpp b/Marlin/ultralcd.cpp index 81844573ea..5dc918aeac 100644 --- a/Marlin/ultralcd.cpp +++ b/Marlin/ultralcd.cpp @@ -173,6 +173,9 @@ static void lcd_status_screen(); } while(0) #ifdef ENCODER_RATE_MULTIPLIER + + //#define ENCODER_RATE_MULTIPLIER_DEBUG // If defined, output the encoder steps per second value + /** * MENU_MULTIPLIER_ITEM generates drawing and handling code for a multiplier menu item */ @@ -246,6 +249,9 @@ menuFunc_t callbackFunc; // place-holders for Ki and Kd edits float raw_Ki, raw_Kd; +/** + * General function to go directly to a menu + */ static void lcd_goto_menu(menuFunc_t menu, const bool feedback=false, const uint32_t encoder=0) { if (currentMenu != menu) { currentMenu = menu; @@ -260,7 +266,13 @@ static void lcd_goto_menu(menuFunc_t menu, const bool feedback=false, const uint } } -/* Main status screen. It's up to the implementation specific part to show what is needed. As this is very display dependent */ +/** + * + * "Info Screen" + * + * This is very display-dependent, so the lcd implementation draws this. + */ + static void lcd_status_screen() { encoderRateMultiplierEnabled = false; @@ -371,7 +383,12 @@ static void lcd_sdcard_stop() { lcd_setstatus(MSG_PRINT_ABORTED, true); } -/* Menu implementation */ +/** + * + * "Main" menu + * + */ + static void lcd_main_menu() { START_MENU(); MENU_ITEM(back, MSG_WATCH, lcd_status_screen); @@ -453,6 +470,12 @@ void lcd_set_home_offsets() { #endif //BABYSTEPPING +/** + * + * "Tune" submenu + * + */ + static void lcd_tune_menu() { START_MENU(); MENU_ITEM(back, MSG_MAIN, lcd_main_menu); @@ -594,17 +617,55 @@ void lcd_cooldown() { lcd_return_to_status(); } +/** + * + * "Prepare" submenu + * + */ + static void lcd_prepare_menu() { START_MENU(); + + // + // ^ Main + // MENU_ITEM(back, MSG_MAIN, lcd_main_menu); - #if defined( SDSUPPORT ) && defined( MENU_ADDAUTOSTART ) - MENU_ITEM(function, MSG_AUTOSTART, lcd_autostart_sd); - #endif - MENU_ITEM(gcode, MSG_DISABLE_STEPPERS, PSTR("M84")); + + // + // Auto Home + // MENU_ITEM(gcode, MSG_AUTO_HOME, PSTR("G28")); + + // + // Set Home Offsets + // MENU_ITEM(function, MSG_SET_HOME_OFFSETS, lcd_set_home_offsets); //MENU_ITEM(gcode, MSG_SET_ORIGIN, PSTR("G92 X0 Y0 Z0")); + // + // Level Bed + // + #ifdef ENABLE_AUTO_BED_LEVELING + if (axis_known_position[X_AXIS] && axis_known_position[Y_AXIS]) + MENU_ITEM(gcode, MSG_LEVEL_BED, PSTR("G29")); + #elif defined(MANUAL_BED_LEVELING) + MENU_ITEM(submenu, MSG_LEVEL_BED, lcd_level_bed); + #endif + + // + // Move Axis + // + MENU_ITEM(submenu, MSG_MOVE_AXIS, lcd_move_menu); + + // + // Disable Steppers + // + MENU_ITEM(gcode, MSG_DISABLE_STEPPERS, PSTR("M84")); + + // + // Preheat PLA + // Preheat ABS + // #if TEMP_SENSOR_0 != 0 #if TEMP_SENSOR_1 != 0 || TEMP_SENSOR_2 != 0 || TEMP_SENSOR_3 != 0 || TEMP_SENSOR_BED != 0 MENU_ITEM(submenu, MSG_PREHEAT_PLA, lcd_preheat_pla_menu); @@ -615,8 +676,14 @@ static void lcd_prepare_menu() { #endif #endif + // + // Cooldown + // MENU_ITEM(function, MSG_COOLDOWN, lcd_cooldown); + // + // Switch power on/off + // #if HAS_POWER_SWITCH if (powersupply) MENU_ITEM(gcode, MSG_SWITCH_PS_OFF, PSTR("M81")); @@ -624,12 +691,13 @@ static void lcd_prepare_menu() { MENU_ITEM(gcode, MSG_SWITCH_PS_ON, PSTR("M80")); #endif - MENU_ITEM(submenu, MSG_MOVE_AXIS, lcd_move_menu); - - #if defined(MANUAL_BED_LEVELING) - MENU_ITEM(submenu, MSG_LEVEL_BED, lcd_level_bed); + // + // Autostart + // + #if defined(SDSUPPORT) && defined(MENU_ADDAUTOSTART) + MENU_ITEM(function, MSG_AUTOSTART, lcd_autostart_sd); #endif - + END_MENU(); } @@ -657,6 +725,12 @@ inline void line_to_current(AxisEnum axis) { #endif } +/** + * + * "Prepare" > "Move Axis" submenu + * + */ + float move_menu_scale; static void lcd_move_menu_axis(); @@ -687,6 +761,12 @@ static void lcd_move_e() { if (LCD_CLICKED) lcd_goto_menu(lcd_move_menu_axis); } +/** + * + * "Prepare" > "Move Xmm" > "Move XYZ" submenu + * + */ + static void lcd_move_menu_axis() { START_MENU(); MENU_ITEM(back, MSG_MOVE_AXIS, lcd_move_menu); @@ -712,6 +792,12 @@ static void lcd_move_menu_01mm() { lcd_move_menu_axis(); } +/** + * + * "Prepare" > "Move Axis" submenu + * + */ + static void lcd_move_menu() { START_MENU(); MENU_ITEM(back, MSG_PREPARE, lcd_prepare_menu); @@ -722,6 +808,12 @@ static void lcd_move_menu() { END_MENU(); } +/** + * + * "Control" submenu + * + */ + static void lcd_control_menu() { START_MENU(); MENU_ITEM(back, MSG_MAIN, lcd_main_menu); @@ -744,6 +836,12 @@ static void lcd_control_menu() { END_MENU(); } +/** + * + * "Temperature" submenu + * + */ + #ifdef PIDTEMP // Helpers for editing PID Ki & Kd values @@ -775,6 +873,12 @@ static void lcd_control_menu() { #endif //PIDTEMP +/** + * + * "Control" > "Temperature" submenu + * + */ + static void lcd_control_temperature_menu() { START_MENU(); MENU_ITEM(back, MSG_CONTROL, lcd_control_menu); @@ -863,6 +967,12 @@ static void lcd_control_temperature_menu() { END_MENU(); } +/** + * + * "Temperature" > "Preheat PLA conf" submenu + * + */ + static void lcd_control_temperature_preheat_pla_settings_menu() { START_MENU(); MENU_ITEM(back, MSG_TEMPERATURE, lcd_control_temperature_menu); @@ -879,6 +989,12 @@ static void lcd_control_temperature_preheat_pla_settings_menu() { END_MENU(); } +/** + * + * "Temperature" > "Preheat ABS conf" submenu + * + */ + static void lcd_control_temperature_preheat_abs_settings_menu() { START_MENU(); MENU_ITEM(back, MSG_TEMPERATURE, lcd_control_temperature_menu); @@ -895,6 +1011,12 @@ static void lcd_control_temperature_preheat_abs_settings_menu() { END_MENU(); } +/** + * + * "Control" > "Motion" submenu + * + */ + static void lcd_control_motion_menu() { START_MENU(); MENU_ITEM(back, MSG_CONTROL, lcd_control_menu); @@ -931,6 +1053,12 @@ static void lcd_control_motion_menu() { END_MENU(); } +/** + * + * "Control" > "Filament" submenu + * + */ + static void lcd_control_volumetric_menu() { START_MENU(); MENU_ITEM(back, MSG_CONTROL, lcd_control_menu); @@ -953,6 +1081,12 @@ static void lcd_control_volumetric_menu() { END_MENU(); } +/** + * + * "Control" > "Contrast" submenu + * + */ + #ifdef HAS_LCD_CONTRAST static void lcd_set_contrast() { if (encoderPosition != 0) { @@ -967,6 +1101,12 @@ static void lcd_control_volumetric_menu() { } #endif // HAS_LCD_CONTRAST +/** + * + * "Control" > "Retract" submenu + * + */ + #ifdef FWRETRACT static void lcd_control_retract_menu() { START_MENU(); @@ -999,6 +1139,12 @@ static void lcd_sd_updir() { currentMenuViewOffset = 0; } +/** + * + * "Print from SD" submenu + * + */ + void lcd_sdcard_menu() { if (lcdDrawUpdate == 0 && LCD_CLICKED == 0) return; // nothing to do (so don't thrash the SD card) uint16_t fileCnt = card.getnrfilenames(); @@ -1034,6 +1180,11 @@ void lcd_sdcard_menu() { END_MENU(); } +/** + * + * Functions for editing single values + * + */ #define menu_edit_type(_type, _name, _strFunc, scale) \ bool _menu_edit_ ## _name () { \ bool isClicked = LCD_CLICKED; \ @@ -1080,6 +1231,11 @@ menu_edit_type(float, float51, ftostr51, 10) menu_edit_type(float, float52, ftostr52, 100) menu_edit_type(unsigned long, long5, ftostr5, 0.01) +/** + * + * Handlers for RepRap World Keypad input + * + */ #ifdef REPRAPWORLD_KEYPAD static void reprapworld_keypad_move_z_up() { encoderPosition = 1; @@ -1114,10 +1270,14 @@ menu_edit_type(unsigned long, long5, ftostr5, 0.01) static void reprapworld_keypad_move_home() { enqueuecommands_P((PSTR("G28"))); // move all axis home } -#endif //REPRAPWORLD_KEYPAD +#endif // REPRAPWORLD_KEYPAD -/** End of menus **/ +/** + * + * Audio feedback for controller clicks + * + */ void lcd_quick_feedback() { lcdDrawUpdate = 2; next_button_update_ms = millis() + 500; @@ -1146,11 +1306,15 @@ void lcd_quick_feedback() { #endif } -/** Menu action functions **/ -static void menu_action_back(menuFunc_t data) { lcd_goto_menu(data); } -static void menu_action_submenu(menuFunc_t data) { lcd_goto_menu(data); } +/** + * + * Menu actions + * + */ +static void menu_action_back(menuFunc_t func) { lcd_goto_menu(func); } +static void menu_action_submenu(menuFunc_t func) { lcd_goto_menu(func); } static void menu_action_gcode(const char* pgcode) { enqueuecommands_P(pgcode); } -static void menu_action_function(menuFunc_t data) { (*data)(); } +static void menu_action_function(menuFunc_t func) { (*func)(); } static void menu_action_sdfile(const char* filename, char* longFilename) { char cmd[30]; char* c; @@ -1243,6 +1407,19 @@ int lcd_strlen_P(const char *s) { return j; } +/** + * Update the LCD, read encoder buttons, etc. + * - Read button states + * - Check the SD Card slot state + * - Act on RepRap World keypad input + * - Update the encoder position + * - Apply acceleration to the encoder position + * - Reset the Info Screen timeout if there's any input + * - Update status indicators, if any + * - Clear the LCD if lcdDrawUpdate == 2 + * + * Warning: This function is called from interrupt context! + */ void lcd_update() { #ifdef ULTIPANEL static millis_t return_to_status_ms = 0; @@ -1381,7 +1558,7 @@ void lcd_update() { if (lcdDrawUpdate == 2) lcd_implementation_clear(); if (lcdDrawUpdate) lcdDrawUpdate--; - next_lcd_update_ms = millis() + LCD_UPDATE_INTERVAL; + next_lcd_update_ms = ms + LCD_UPDATE_INTERVAL; } } @@ -1454,112 +1631,116 @@ void lcd_reset_alert_level() { lcd_status_message_level = 0; } #ifdef ULTIPANEL -//////////////////////// -// Setup Rotary Encoder Bit Values (for two pin encoders to indicate movement) -// These values are independent of which pins are used for EN_A and EN_B indications -// The rotary encoder part is also independent to the chipset used for the LCD -#if defined(EN_A) && defined(EN_B) - #define encrot0 0 - #define encrot1 2 - #define encrot2 3 - #define encrot3 1 -#endif - -/* Warning: This function is called from interrupt context */ -void lcd_buttons_update() { - #ifdef NEWPANEL - uint8_t newbutton = 0; - if (READ(BTN_EN1) == 0) newbutton |= EN_A; - if (READ(BTN_EN2) == 0) newbutton |= EN_B; - #if BTN_ENC > 0 - if (millis() > next_button_update_ms && READ(BTN_ENC) == 0) newbutton |= EN_C; - #endif - buttons = newbutton; - #ifdef LCD_HAS_SLOW_BUTTONS - buttons |= slow_buttons; - #endif - #ifdef REPRAPWORLD_KEYPAD - // for the reprapworld_keypad - uint8_t newbutton_reprapworld_keypad=0; + /** + * Setup Rotary Encoder Bit Values (for two pin encoders to indicate movement) + * These values are independent of which pins are used for EN_A and EN_B indications + * The rotary encoder part is also independent to the chipset used for the LCD + */ + #if defined(EN_A) && defined(EN_B) + #define encrot0 0 + #define encrot1 2 + #define encrot2 3 + #define encrot3 1 + #endif + + /** + * Read encoder buttons from the hardware registers + * Warning: This function is called from interrupt context! + */ + void lcd_buttons_update() { + #ifdef NEWPANEL + uint8_t newbutton = 0; + if (READ(BTN_EN1) == 0) newbutton |= EN_A; + if (READ(BTN_EN2) == 0) newbutton |= EN_B; + #if BTN_ENC > 0 + if (millis() > next_button_update_ms && READ(BTN_ENC) == 0) newbutton |= EN_C; + #endif + buttons = newbutton; + #ifdef LCD_HAS_SLOW_BUTTONS + buttons |= slow_buttons; + #endif + #ifdef REPRAPWORLD_KEYPAD + // for the reprapworld_keypad + uint8_t newbutton_reprapworld_keypad=0; + WRITE(SHIFT_LD, LOW); + WRITE(SHIFT_LD, HIGH); + for(int8_t i = 0; i < 8; i++) { + newbutton_reprapworld_keypad >>= 1; + if (READ(SHIFT_OUT)) newbutton_reprapworld_keypad |= BIT(7); + WRITE(SHIFT_CLK, HIGH); + WRITE(SHIFT_CLK, LOW); + } + buttons_reprapworld_keypad=~newbutton_reprapworld_keypad; //invert it, because a pressed switch produces a logical 0 + #endif + #else //read it from the shift register + uint8_t newbutton = 0; WRITE(SHIFT_LD, LOW); WRITE(SHIFT_LD, HIGH); - for(int8_t i = 0; i < 8; i++) { - newbutton_reprapworld_keypad >>= 1; - if (READ(SHIFT_OUT)) newbutton_reprapworld_keypad |= BIT(7); + unsigned char tmp_buttons = 0; + for(int8_t i=0; i<8; i++) { + newbutton >>= 1; + if (READ(SHIFT_OUT)) newbutton |= BIT(7); WRITE(SHIFT_CLK, HIGH); WRITE(SHIFT_CLK, LOW); } - buttons_reprapworld_keypad=~newbutton_reprapworld_keypad; //invert it, because a pressed switch produces a logical 0 - #endif - #else //read it from the shift register - uint8_t newbutton = 0; - WRITE(SHIFT_LD, LOW); - WRITE(SHIFT_LD, HIGH); - unsigned char tmp_buttons = 0; - for(int8_t i=0; i<8; i++) { - newbutton >>= 1; - if (READ(SHIFT_OUT)) newbutton |= BIT(7); - WRITE(SHIFT_CLK, HIGH); - WRITE(SHIFT_CLK, LOW); - } - buttons = ~newbutton; //invert it, because a pressed switch produces a logical 0 - #endif //!NEWPANEL - - //manage encoder rotation - uint8_t enc=0; - if (buttons & EN_A) enc |= B01; - if (buttons & EN_B) enc |= B10; - if (enc != lastEncoderBits) { - switch(enc) { - case encrot0: - if (lastEncoderBits==encrot3) encoderDiff++; - else if (lastEncoderBits==encrot1) encoderDiff--; - break; - case encrot1: - if (lastEncoderBits==encrot0) encoderDiff++; - else if (lastEncoderBits==encrot2) encoderDiff--; - break; - case encrot2: - if (lastEncoderBits==encrot1) encoderDiff++; - else if (lastEncoderBits==encrot3) encoderDiff--; - break; - case encrot3: - if (lastEncoderBits==encrot2) encoderDiff++; - else if (lastEncoderBits==encrot0) encoderDiff--; - break; + buttons = ~newbutton; //invert it, because a pressed switch produces a logical 0 + #endif //!NEWPANEL + + //manage encoder rotation + uint8_t enc=0; + if (buttons & EN_A) enc |= B01; + if (buttons & EN_B) enc |= B10; + if (enc != lastEncoderBits) { + switch(enc) { + case encrot0: + if (lastEncoderBits==encrot3) encoderDiff++; + else if (lastEncoderBits==encrot1) encoderDiff--; + break; + case encrot1: + if (lastEncoderBits==encrot0) encoderDiff++; + else if (lastEncoderBits==encrot2) encoderDiff--; + break; + case encrot2: + if (lastEncoderBits==encrot1) encoderDiff++; + else if (lastEncoderBits==encrot3) encoderDiff--; + break; + case encrot3: + if (lastEncoderBits==encrot2) encoderDiff++; + else if (lastEncoderBits==encrot0) encoderDiff--; + break; + } } + lastEncoderBits = enc; } - lastEncoderBits = enc; -} - -bool lcd_detected(void) { - #if (defined(LCD_I2C_TYPE_MCP23017) || defined(LCD_I2C_TYPE_MCP23008)) && defined(DETECT_DEVICE) - return lcd.LcdDetected() == 1; - #else - return true; - #endif -} -void lcd_buzz(long duration, uint16_t freq) { - if (freq > 0) { - #if BEEPER > 0 - SET_OUTPUT(BEEPER); - tone(BEEPER, freq, duration); - delay(duration); - #elif defined(LCD_USE_I2C_BUZZER) - lcd.buzz(duration, freq); + bool lcd_detected(void) { + #if (defined(LCD_I2C_TYPE_MCP23017) || defined(LCD_I2C_TYPE_MCP23008)) && defined(DETECT_DEVICE) + return lcd.LcdDetected() == 1; #else - delay(duration); + return true; #endif } - else { - delay(duration); + + void lcd_buzz(long duration, uint16_t freq) { + if (freq > 0) { + #if BEEPER > 0 + SET_OUTPUT(BEEPER); + tone(BEEPER, freq, duration); + delay(duration); + #elif defined(LCD_USE_I2C_BUZZER) + lcd.buzz(duration, freq); + #else + delay(duration); + #endif + } + else { + delay(duration); + } } -} -bool lcd_clicked() { return LCD_CLICKED; } + bool lcd_clicked() { return LCD_CLICKED; } -#endif //ULTIPANEL +#endif // ULTIPANEL /*********************************/ /** Number to string conversion **/ @@ -1621,8 +1802,7 @@ char *ftostr32(const float &x) { } // Convert float to string with 1.234 format -char *ftostr43(const float &x) -{ +char *ftostr43(const float &x) { long xx = x * 1000; if (xx >= 0) conv[0] = (xx / 1000) % 10 + '0'; @@ -1638,8 +1818,7 @@ char *ftostr43(const float &x) } // Convert float to string with 1.23 format -char *ftostr12ns(const float &x) -{ +char *ftostr12ns(const float &x) { long xx=x*100; xx=abs(xx); @@ -1799,6 +1978,12 @@ char *ftostr52(const float &x) { #ifdef MANUAL_BED_LEVELING static int _lcd_level_bed_position; + + /** + * MBL Wait for controller movement and clicks: + * - Movement adjusts the Z axis + * - Click saves the Z and goes to the next mesh point + */ static void _lcd_level_bed() { if (encoderPosition != 0) { refresh_cmd_timeout(); @@ -1844,6 +2029,9 @@ char *ftostr52(const float &x) { } } + /** + * MBL Move to mesh starting point + */ static void _lcd_level_bed_homing() { if (lcdDrawUpdate) lcd_implementation_drawedit(PSTR("XYZ"), "Homing"); if (axis_known_position[X_AXIS] && axis_known_position[Y_AXIS] && axis_known_position[Z_AXIS]) { @@ -1858,6 +2046,9 @@ char *ftostr52(const float &x) { lcdDrawUpdate = 2; } + /** + * MBL entry-point + */ static void lcd_level_bed() { axis_known_position[X_AXIS] = axis_known_position[Y_AXIS] = axis_known_position[Z_AXIS] = false; mbl.reset(); From ff67ee73fcfbf3c2926367bd70c6614ad264fdb6 Mon Sep 17 00:00:00 2001 From: Bernardo Date: Mon, 27 Apr 2015 23:29:16 -0300 Subject: [PATCH 60/88] Update Marlin_main.cpp Corrected "servo.h" to "Servo.h" because of the updated filename. --- Marlin/Marlin_main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp index ac86cb05b7..0ea5d8c3c9 100644 --- a/Marlin/Marlin_main.cpp +++ b/Marlin/Marlin_main.cpp @@ -60,7 +60,7 @@ #endif #if NUM_SERVOS > 0 - #include "servo.h" + #include "Servo.h" #endif #if HAS_DIGIPOTSS From e44965933885da6f598436259e838e3576c7eeae Mon Sep 17 00:00:00 2001 From: Bernardo Date: Mon, 27 Apr 2015 23:30:11 -0300 Subject: [PATCH 61/88] Update Servo.cpp Updated "servo.h" to "Servo.h" --- Marlin/Servo.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Marlin/Servo.cpp b/Marlin/Servo.cpp index 81d73ae870..576b394fb7 100644 --- a/Marlin/Servo.cpp +++ b/Marlin/Servo.cpp @@ -48,7 +48,7 @@ #include #include -#include "servo.h" +#include "Servo.h" #define usToTicks(_us) (( clockCyclesPerMicrosecond()* _us) / 8) // converts microseconds to tick (assumes prescale of 8) // 12 Aug 2009 #define ticksToUs(_ticks) (( (unsigned)_ticks * 8)/ clockCyclesPerMicrosecond() ) // converts from ticks back to microseconds From ff178d8cf7dc4bb6e585862da37ae1bed2766356 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Mon, 27 Apr 2015 19:48:34 -0700 Subject: [PATCH 62/88] Change M421 to take coordinates This makes `M421` more amenable for irregular matrices --- Marlin/Marlin_main.cpp | 13 ++++++------- Marlin/configuration_store.cpp | 12 +++++------- Marlin/configurator/config/language.h | 2 +- Marlin/language.h | 2 +- 4 files changed, 13 insertions(+), 16 deletions(-) diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp index cbeb9a0912..61a4baa41d 100644 --- a/Marlin/Marlin_main.cpp +++ b/Marlin/Marlin_main.cpp @@ -188,7 +188,7 @@ * M407 - Display measured filament diameter * M410 - Quickstop. Abort all the planned moves * M420 - Enable/Disable Mesh Leveling (with current values) S1=enable S0=disable - * M421 - Set a single Z coordinate in the Mesh Leveling grid. X Y Z + * M421 - Set a single Z coordinate in the Mesh Leveling grid. X Y Z * M500 - Store parameters in EEPROM * M501 - Read parameters from EEPROM (if you need reset them after you changed them temporarily). * M502 - Revert to the default "factory settings". You still need to store them in EEPROM afterwards if you want to. @@ -4467,16 +4467,15 @@ inline void gcode_M410() { quickStop(); } * M421: Set a single Mesh Bed Leveling Z coordinate */ inline void gcode_M421() { - int x, y; - float z; + float x, y, z; bool err = false, hasX, hasY, hasZ; - if ((hasX = code_seen('X'))) x = code_value_short(); - if ((hasY = code_seen('Y'))) y = code_value_short(); + if ((hasX = code_seen('X'))) x = code_value(); + if ((hasY = code_seen('Y'))) y = code_value(); if ((hasZ = code_seen('Z'))) z = code_value(); if (!hasX || !hasY || !hasZ) { SERIAL_ERROR_START; - SERIAL_ERRORLNPGM(MSG_ERR_XYZ_REQUIRED_FOR_M421); + SERIAL_ERRORLNPGM(MSG_ERR_M421_REQUIRES_XYZ); err = true; } @@ -4486,7 +4485,7 @@ inline void gcode_M410() { quickStop(); } err = true; } - if (!err) mbl.z_values[y][x] = z; + if (!err) mbl.set_z(select_x_index(x), select_y_index(y), z); } #endif diff --git a/Marlin/configuration_store.cpp b/Marlin/configuration_store.cpp index 0cd7faa7c1..782b5d320a 100644 --- a/Marlin/configuration_store.cpp +++ b/Marlin/configuration_store.cpp @@ -96,8 +96,8 @@ #include "configuration_store.h" #ifdef MESH_BED_LEVELING - #include "mesh_bed_leveling.h" -#endif // MESH_BED_LEVELING + #include "mesh_bed_leveling.h" +#endif void _EEPROM_writeData(int &pos, uint8_t* value, uint8_t size) { uint8_t c; @@ -168,9 +168,7 @@ void Config_StoreSettings() { EEPROM_WRITE_VAR(i, mesh_num_x); EEPROM_WRITE_VAR(i, mesh_num_y); dummy = 0.0f; - for (int q=0; q out of range (0-1)" -#define MSG_ERR_XYZ_REQUIRED_FOR_M421 "M421 requires XYZ parameters" +#define MSG_ERR_M421_REQUIRES_XYZ "M421 requires XYZ parameters" #define MSG_ERR_MESH_INDEX_OOB "Mesh XY index is out of bounds" #define MSG_M119_REPORT "Reporting endstop status" #define MSG_ENDSTOP_HIT "TRIGGERED" diff --git a/Marlin/language.h b/Marlin/language.h index b6beb47473..d8ceafb1a5 100644 --- a/Marlin/language.h +++ b/Marlin/language.h @@ -159,7 +159,7 @@ #define MSG_Z2_MAX "z2_max: " #define MSG_Z_PROBE "z_probe: " #define MSG_ERR_MATERIAL_INDEX "M145 S out of range (0-1)" -#define MSG_ERR_XYZ_REQUIRED_FOR_M421 "M421 requires XYZ parameters" +#define MSG_ERR_M421_REQUIRES_XYZ "M421 requires XYZ parameters" #define MSG_ERR_MESH_INDEX_OOB "Mesh XY index is out of bounds" #define MSG_M119_REPORT "Reporting endstop status" #define MSG_ENDSTOP_HIT "TRIGGERED" From c36226c4dc0ef7153dd7e8b81749599989ee0fbe Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Mon, 27 Apr 2015 20:55:19 -0700 Subject: [PATCH 63/88] Fix homing Z position Add `sync_plan_position()` after `axis_is_at_home(axis)` to keep the planner position in sync when homing. --- Marlin/Marlin_main.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp index ac86cb05b7..88813d289e 100644 --- a/Marlin/Marlin_main.cpp +++ b/Marlin/Marlin_main.cpp @@ -1596,6 +1596,7 @@ static void homeaxis(AxisEnum axis) { // Set the axis position to its home position (plus home offsets) axis_is_at_home(axis); + sync_plan_position(); destination[axis] = current_position[axis]; feedrate = 0.0; From 71a0b1a5bb933cadb5b33855fb8a409f5793216b Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Mon, 27 Apr 2015 21:14:30 -0700 Subject: [PATCH 64/88] Disable endstops between homing bumps --- Marlin/Marlin_main.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp index 88813d289e..4dd304d371 100644 --- a/Marlin/Marlin_main.cpp +++ b/Marlin/Marlin_main.cpp @@ -1546,11 +1546,15 @@ static void homeaxis(AxisEnum axis) { current_position[axis] = 0; sync_plan_position(); + enable_endstops(false); // Disable endstops while moving away + // Move away from the endstop by the axis HOME_BUMP_MM destination[axis] = -home_bump_mm(axis) * axis_home_dir; line_to_destination(); st_synchronize(); + enable_endstops(true); // Enable endstops for next homing move + // Slow down the feedrate for the next move set_homing_bump_feedrate(axis); @@ -1587,10 +1591,12 @@ static void homeaxis(AxisEnum axis) { #ifdef DELTA // retrace by the amount specified in endstop_adj if (endstop_adj[axis] * axis_home_dir < 0) { + enable_endstops(false); // Disable endstops while moving away sync_plan_position(); destination[axis] = endstop_adj[axis]; line_to_destination(); st_synchronize(); + enable_endstops(true); // Enable endstops for next homing move } #endif From 0970102950578dca6f258f05fe3d20eb402451a3 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Mon, 27 Apr 2015 21:59:14 -0700 Subject: [PATCH 65/88] Remove obsolete STRING_URL --- Marlin/Configuration.h | 1 - Marlin/configurator/config/Configuration.h | 1 - Marlin/example_configurations/Felix/Configuration.h | 1 - Marlin/example_configurations/Felix/Configuration_DUAL.h | 1 - Marlin/example_configurations/Hephestos/Configuration.h | 1 - Marlin/example_configurations/SCARA/Configuration.h | 1 - Marlin/example_configurations/WITBOX/Configuration.h | 1 - Marlin/example_configurations/delta/generic/Configuration.h | 1 - Marlin/example_configurations/delta/kossel_mini/Configuration.h | 1 - Marlin/example_configurations/makibox/Configuration.h | 1 - Marlin/example_configurations/tvrrug/Round2/Configuration.h | 1 - 11 files changed, 11 deletions(-) diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index 0ba1d0594b..455e46a195 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -41,7 +41,6 @@ Here are some standard links for getting your machine calibrated: // startup. Implementation of an idea by Prof Braino to inform user that any changes made to this // build by the user have been successfully uploaded into firmware. #define STRING_VERSION "1.0.3 dev" -#define STRING_URL "reprap.org" #define STRING_VERSION_CONFIG_H __DATE__ " " __TIME__ // build date and time #define STRING_CONFIG_H_AUTHOR "(none, default config)" // Who made the changes. #define STRING_SPLASH_LINE1 "v" STRING_VERSION // will be shown during bootup in line 1 diff --git a/Marlin/configurator/config/Configuration.h b/Marlin/configurator/config/Configuration.h index 9ed528059a..1d85de9266 100644 --- a/Marlin/configurator/config/Configuration.h +++ b/Marlin/configurator/config/Configuration.h @@ -41,7 +41,6 @@ Here are some standard links for getting your machine calibrated: // startup. Implementation of an idea by Prof Braino to inform user that any changes made to this // build by the user have been successfully uploaded into firmware. #define STRING_VERSION "1.0.3 dev" -#define STRING_URL "reprap.org" #define STRING_VERSION_CONFIG_H __DATE__ " " __TIME__ // build date and time #define STRING_CONFIG_H_AUTHOR "(none, default config)" // Who made the changes. #define STRING_SPLASH_LINE1 "v" STRING_VERSION // will be shown during bootup in line 1 diff --git a/Marlin/example_configurations/Felix/Configuration.h b/Marlin/example_configurations/Felix/Configuration.h index 5407cc7952..63b3660d54 100644 --- a/Marlin/example_configurations/Felix/Configuration.h +++ b/Marlin/example_configurations/Felix/Configuration.h @@ -39,7 +39,6 @@ Here are some standard links for getting your machine calibrated: // startup. Implementation of an idea by Prof Braino to inform user that any changes made to this // build by the user have been successfully uploaded into firmware. #define STRING_VERSION "1.0.3 dev" -#define STRING_URL "reprap.org" #define STRING_VERSION_CONFIG_H __DATE__ " " __TIME__ // build date and time #define STRING_CONFIG_H_AUTHOR "(none, default config)" // Who made the changes. #define STRING_SPLASH_LINE1 "v" STRING_VERSION // will be shown during bootup in line 1 diff --git a/Marlin/example_configurations/Felix/Configuration_DUAL.h b/Marlin/example_configurations/Felix/Configuration_DUAL.h index aefabced9f..085d95b271 100644 --- a/Marlin/example_configurations/Felix/Configuration_DUAL.h +++ b/Marlin/example_configurations/Felix/Configuration_DUAL.h @@ -39,7 +39,6 @@ Here are some standard links for getting your machine calibrated: // startup. Implementation of an idea by Prof Braino to inform user that any changes made to this // build by the user have been successfully uploaded into firmware. #define STRING_VERSION "1.0.3 dev" -#define STRING_URL "reprap.org" #define STRING_VERSION_CONFIG_H __DATE__ " " __TIME__ // build date and time #define STRING_CONFIG_H_AUTHOR "(none, default config)" // Who made the changes. #define STRING_SPLASH_LINE1 "v" STRING_VERSION // will be shown during bootup in line 1 diff --git a/Marlin/example_configurations/Hephestos/Configuration.h b/Marlin/example_configurations/Hephestos/Configuration.h index 596a286f51..c9c079ebe6 100644 --- a/Marlin/example_configurations/Hephestos/Configuration.h +++ b/Marlin/example_configurations/Hephestos/Configuration.h @@ -39,7 +39,6 @@ Here are some standard links for getting your machine calibrated: // startup. Implementation of an idea by Prof Braino to inform user that any changes made to this // build by the user have been successfully uploaded into firmware. #define STRING_VERSION "1.0.3 dev" -#define STRING_URL "reprap.org" #define STRING_VERSION_CONFIG_H __DATE__ " " __TIME__ // build date and time #define STRING_CONFIG_H_AUTHOR "(bq Hephestos)" // Who made the changes. #define STRING_SPLASH_LINE1 "v" STRING_VERSION // will be shown during bootup in line 1 diff --git a/Marlin/example_configurations/SCARA/Configuration.h b/Marlin/example_configurations/SCARA/Configuration.h index c136191c40..cdc036cb2e 100644 --- a/Marlin/example_configurations/SCARA/Configuration.h +++ b/Marlin/example_configurations/SCARA/Configuration.h @@ -57,7 +57,6 @@ Here are some standard links for getting your machine calibrated: // startup. Implementation of an idea by Prof Braino to inform user that any changes made to this // build by the user have been successfully uploaded into firmware. #define STRING_VERSION "1.0.3 dev" -#define STRING_URL "reprap.org" #define STRING_VERSION_CONFIG_H __DATE__ " " __TIME__ // build date and time #define STRING_CONFIG_H_AUTHOR "(none, default config)" // Who made the changes. #define STRING_SPLASH_LINE1 "v" STRING_VERSION // will be shown during bootup in line 1 diff --git a/Marlin/example_configurations/WITBOX/Configuration.h b/Marlin/example_configurations/WITBOX/Configuration.h index b7ed17ef54..343c3093ac 100644 --- a/Marlin/example_configurations/WITBOX/Configuration.h +++ b/Marlin/example_configurations/WITBOX/Configuration.h @@ -39,7 +39,6 @@ Here are some standard links for getting your machine calibrated: // startup. Implementation of an idea by Prof Braino to inform user that any changes made to this // build by the user have been successfully uploaded into firmware. #define STRING_VERSION "1.0.3 dev" -#define STRING_URL "reprap.org" #define STRING_VERSION_CONFIG_H __DATE__ " " __TIME__ // build date and time #define STRING_CONFIG_H_AUTHOR "(bq Witbox)" // Who made the changes. #define STRING_SPLASH_LINE1 "v" STRING_VERSION // will be shown during bootup in line 1 diff --git a/Marlin/example_configurations/delta/generic/Configuration.h b/Marlin/example_configurations/delta/generic/Configuration.h index 7f93c4d8b0..9a1fe48756 100644 --- a/Marlin/example_configurations/delta/generic/Configuration.h +++ b/Marlin/example_configurations/delta/generic/Configuration.h @@ -39,7 +39,6 @@ Here are some standard links for getting your machine calibrated: // startup. Implementation of an idea by Prof Braino to inform user that any changes made to this // build by the user have been successfully uploaded into firmware. #define STRING_VERSION "1.0.3 dev" -#define STRING_URL "reprap.org" #define STRING_VERSION_CONFIG_H __DATE__ " " __TIME__ // build date and time #define STRING_CONFIG_H_AUTHOR "(none, default config)" // Who made the changes. #define STRING_SPLASH_LINE1 "v" STRING_VERSION // will be shown during bootup in line 1 diff --git a/Marlin/example_configurations/delta/kossel_mini/Configuration.h b/Marlin/example_configurations/delta/kossel_mini/Configuration.h index f90344613c..33391863eb 100644 --- a/Marlin/example_configurations/delta/kossel_mini/Configuration.h +++ b/Marlin/example_configurations/delta/kossel_mini/Configuration.h @@ -39,7 +39,6 @@ Here are some standard links for getting your machine calibrated: // startup. Implementation of an idea by Prof Braino to inform user that any changes made to this // build by the user have been successfully uploaded into firmware. #define STRING_VERSION "1.0.3 dev" -#define STRING_URL "reprap.org" #define STRING_VERSION_CONFIG_H __DATE__ " " __TIME__ // build date and time #define STRING_CONFIG_H_AUTHOR "(none, default config)" // Who made the changes. #define STRING_SPLASH_LINE1 "v" STRING_VERSION // will be shown during bootup in line 1 diff --git a/Marlin/example_configurations/makibox/Configuration.h b/Marlin/example_configurations/makibox/Configuration.h index 93e152e868..918d5fa8bd 100644 --- a/Marlin/example_configurations/makibox/Configuration.h +++ b/Marlin/example_configurations/makibox/Configuration.h @@ -39,7 +39,6 @@ Here are some standard links for getting your machine calibrated: // startup. Implementation of an idea by Prof Braino to inform user that any changes made to this // build by the user have been successfully uploaded into firmware. #define STRING_VERSION "1.0.3 dev" -#define STRING_URL "reprap.org" #define STRING_VERSION_CONFIG_H __DATE__ " " __TIME__ // build date and time #define STRING_CONFIG_H_AUTHOR "(none, default config)" // Who made the changes. #define STRING_SPLASH_LINE1 "v" STRING_VERSION // will be shown during bootup in line 1 diff --git a/Marlin/example_configurations/tvrrug/Round2/Configuration.h b/Marlin/example_configurations/tvrrug/Round2/Configuration.h index ce662b2c03..2fff0f21e3 100644 --- a/Marlin/example_configurations/tvrrug/Round2/Configuration.h +++ b/Marlin/example_configurations/tvrrug/Round2/Configuration.h @@ -39,7 +39,6 @@ Here are some standard links for getting your machine calibrated: // startup. Implementation of an idea by Prof Braino to inform user that any changes made to this // build by the user have been successfully uploaded into firmware. #define STRING_VERSION "1.0.3 dev" -#define STRING_URL "reprap.org" #define STRING_VERSION_CONFIG_H __DATE__ " " __TIME__ // build date and time #define STRING_CONFIG_H_AUTHOR "(none, default config)" // Who made the changes. #define STRING_SPLASH_LINE1 "v" STRING_VERSION // will be shown during bootup in line 1 From ae53b3cdc33094c68f504835b7a268c654a10f71 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Mon, 27 Apr 2015 22:25:00 -0700 Subject: [PATCH 66/88] Fix the M303 S-1 report text --- Marlin/temperature.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/Marlin/temperature.cpp b/Marlin/temperature.cpp index fa17b6c4c2..5c2a2a12e7 100644 --- a/Marlin/temperature.cpp +++ b/Marlin/temperature.cpp @@ -187,7 +187,7 @@ static void updateTemperaturesFromRawValues(); #endif //=========================================================================== -//============================= functions ============================ +//================================ Functions ================================ //=========================================================================== void PID_autotune(float temp, int extruder, int ncycles) @@ -341,9 +341,10 @@ void PID_autotune(float temp, int extruder, int ncycles) } if (cycles > ncycles) { SERIAL_PROTOCOLLNPGM(MSG_PID_AUTOTUNE_FINISHED); - SERIAL_PROTOCOLPGM("#define DEFAULT_Kp "); SERIAL_PROTOCOLLN(Kp); - SERIAL_PROTOCOLPGM("#define DEFAULT_Ki "); SERIAL_PROTOCOLLN(Ki); - SERIAL_PROTOCOLPGM("#define DEFAULT_Kd "); SERIAL_PROTOCOLLN(Kd); + const char *estring = extruder < 0 ? "bed" : ""; + SERIAL_PROTOCOLPGM("#define DEFAULT_"); SERIAL_PROTOCOL(estring); SERIAL_PROTOCOLPGM("Kp "); SERIAL_PROTOCOLLN(Kp); + SERIAL_PROTOCOLPGM("#define DEFAULT_"); SERIAL_PROTOCOL(estring); SERIAL_PROTOCOLPGM("Ki "); SERIAL_PROTOCOLLN(Ki); + SERIAL_PROTOCOLPGM("#define DEFAULT_"); SERIAL_PROTOCOL(estring); SERIAL_PROTOCOLPGM("Kd "); SERIAL_PROTOCOLLN(Kd); return; } lcd_update(); From 2610b8d047d6116a9dd0853f5281d35383aabb8e Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Tue, 28 Apr 2015 17:40:29 -0700 Subject: [PATCH 67/88] Enable thermal runaway protection by default --- Marlin/Configuration.h | 4 ++-- Marlin/configurator/config/Configuration.h | 4 ++-- Marlin/example_configurations/Felix/Configuration.h | 4 ++-- Marlin/example_configurations/Felix/Configuration_DUAL.h | 4 ++-- Marlin/example_configurations/Hephestos/Configuration.h | 4 ++-- Marlin/example_configurations/K8200/Configuration.h | 4 ++-- Marlin/example_configurations/SCARA/Configuration.h | 4 ++-- Marlin/example_configurations/WITBOX/Configuration.h | 4 ++-- Marlin/example_configurations/delta/generic/Configuration.h | 4 ++-- .../example_configurations/delta/kossel_mini/Configuration.h | 4 ++-- Marlin/example_configurations/makibox/Configuration.h | 4 ++-- Marlin/example_configurations/tvrrug/Round2/Configuration.h | 4 ++-- 12 files changed, 24 insertions(+), 24 deletions(-) diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index 455e46a195..25e0f3897e 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -298,8 +298,8 @@ your extruder heater takes 2 minutes to hit the target on heating. // uncomment the 2 defines below: // Parameters for all extruder heaters -//#define THERMAL_RUNAWAY_PROTECTION_PERIOD 40 //in seconds -//#define THERMAL_RUNAWAY_PROTECTION_HYSTERESIS 4 // in degree Celsius +#define THERMAL_RUNAWAY_PROTECTION_PERIOD 40 //in seconds +#define THERMAL_RUNAWAY_PROTECTION_HYSTERESIS 4 // in degree Celsius // If you want to enable this feature for your bed heater, // uncomment the 2 defines below: diff --git a/Marlin/configurator/config/Configuration.h b/Marlin/configurator/config/Configuration.h index 1d85de9266..8252d9654d 100644 --- a/Marlin/configurator/config/Configuration.h +++ b/Marlin/configurator/config/Configuration.h @@ -298,8 +298,8 @@ your extruder heater takes 2 minutes to hit the target on heating. // uncomment the 2 defines below: // Parameters for all extruder heaters -//#define THERMAL_RUNAWAY_PROTECTION_PERIOD 40 //in seconds -//#define THERMAL_RUNAWAY_PROTECTION_HYSTERESIS 4 // in degree Celsius +#define THERMAL_RUNAWAY_PROTECTION_PERIOD 40 //in seconds +#define THERMAL_RUNAWAY_PROTECTION_HYSTERESIS 4 // in degree Celsius // If you want to enable this feature for your bed heater, // uncomment the 2 defines below: diff --git a/Marlin/example_configurations/Felix/Configuration.h b/Marlin/example_configurations/Felix/Configuration.h index 63b3660d54..b0e74391e3 100644 --- a/Marlin/example_configurations/Felix/Configuration.h +++ b/Marlin/example_configurations/Felix/Configuration.h @@ -264,8 +264,8 @@ your extruder heater takes 2 minutes to hit the target on heating. // uncomment the 2 defines below: // Parameters for all extruder heaters -//#define THERMAL_RUNAWAY_PROTECTION_PERIOD 40 //in seconds -//#define THERMAL_RUNAWAY_PROTECTION_HYSTERESIS 4 // in degree Celsius +#define THERMAL_RUNAWAY_PROTECTION_PERIOD 40 //in seconds +#define THERMAL_RUNAWAY_PROTECTION_HYSTERESIS 4 // in degree Celsius // If you want to enable this feature for your bed heater, // uncomment the 2 defines below: diff --git a/Marlin/example_configurations/Felix/Configuration_DUAL.h b/Marlin/example_configurations/Felix/Configuration_DUAL.h index 085d95b271..eddffd06f5 100644 --- a/Marlin/example_configurations/Felix/Configuration_DUAL.h +++ b/Marlin/example_configurations/Felix/Configuration_DUAL.h @@ -264,8 +264,8 @@ your extruder heater takes 2 minutes to hit the target on heating. // uncomment the 2 defines below: // Parameters for all extruder heaters -//#define THERMAL_RUNAWAY_PROTECTION_PERIOD 40 //in seconds -//#define THERMAL_RUNAWAY_PROTECTION_HYSTERESIS 4 // in degree Celsius +#define THERMAL_RUNAWAY_PROTECTION_PERIOD 40 //in seconds +#define THERMAL_RUNAWAY_PROTECTION_HYSTERESIS 4 // in degree Celsius // If you want to enable this feature for your bed heater, // uncomment the 2 defines below: diff --git a/Marlin/example_configurations/Hephestos/Configuration.h b/Marlin/example_configurations/Hephestos/Configuration.h index c9c079ebe6..e0ba6e998e 100644 --- a/Marlin/example_configurations/Hephestos/Configuration.h +++ b/Marlin/example_configurations/Hephestos/Configuration.h @@ -285,8 +285,8 @@ your extruder heater takes 2 minutes to hit the target on heating. // uncomment the 2 defines below: // Parameters for all extruder heaters -//#define THERMAL_RUNAWAY_PROTECTION_PERIOD 40 //in seconds -//#define THERMAL_RUNAWAY_PROTECTION_HYSTERESIS 4 // in degree Celsius +#define THERMAL_RUNAWAY_PROTECTION_PERIOD 40 //in seconds +#define THERMAL_RUNAWAY_PROTECTION_HYSTERESIS 4 // in degree Celsius // If you want to enable this feature for your bed heater, // uncomment the 2 defines below: diff --git a/Marlin/example_configurations/K8200/Configuration.h b/Marlin/example_configurations/K8200/Configuration.h index d0abbcbe71..1b6bbd4eaa 100644 --- a/Marlin/example_configurations/K8200/Configuration.h +++ b/Marlin/example_configurations/K8200/Configuration.h @@ -314,8 +314,8 @@ your extruder heater takes 2 minutes to hit the target on heating. // uncomment the 2 defines below: // Parameters for all extruder heaters -//#define THERMAL_RUNAWAY_PROTECTION_PERIOD 40 //in seconds -//#define THERMAL_RUNAWAY_PROTECTION_HYSTERESIS 4 // in degree Celsius +#define THERMAL_RUNAWAY_PROTECTION_PERIOD 40 //in seconds +#define THERMAL_RUNAWAY_PROTECTION_HYSTERESIS 4 // in degree Celsius // If you want to enable this feature for your bed heater, // uncomment the 2 defines below: diff --git a/Marlin/example_configurations/SCARA/Configuration.h b/Marlin/example_configurations/SCARA/Configuration.h index cdc036cb2e..2fcb7da40d 100644 --- a/Marlin/example_configurations/SCARA/Configuration.h +++ b/Marlin/example_configurations/SCARA/Configuration.h @@ -316,8 +316,8 @@ your extruder heater takes 2 minutes to hit the target on heating. // uncomment the 2 defines below: // Parameters for all extruder heaters -//#define THERMAL_RUNAWAY_PROTECTION_PERIOD 40 //in seconds -//#define THERMAL_RUNAWAY_PROTECTION_HYSTERESIS 4 // in degree Celsius +#define THERMAL_RUNAWAY_PROTECTION_PERIOD 40 //in seconds +#define THERMAL_RUNAWAY_PROTECTION_HYSTERESIS 4 // in degree Celsius // If you want to enable this feature for your bed heater, // uncomment the 2 defines below: diff --git a/Marlin/example_configurations/WITBOX/Configuration.h b/Marlin/example_configurations/WITBOX/Configuration.h index 343c3093ac..189903dec0 100644 --- a/Marlin/example_configurations/WITBOX/Configuration.h +++ b/Marlin/example_configurations/WITBOX/Configuration.h @@ -284,8 +284,8 @@ your extruder heater takes 2 minutes to hit the target on heating. // uncomment the 2 defines below: // Parameters for all extruder heaters -//#define THERMAL_RUNAWAY_PROTECTION_PERIOD 40 //in seconds -//#define THERMAL_RUNAWAY_PROTECTION_HYSTERESIS 4 // in degree Celsius +#define THERMAL_RUNAWAY_PROTECTION_PERIOD 40 //in seconds +#define THERMAL_RUNAWAY_PROTECTION_HYSTERESIS 4 // in degree Celsius // If you want to enable this feature for your bed heater, // uncomment the 2 defines below: diff --git a/Marlin/example_configurations/delta/generic/Configuration.h b/Marlin/example_configurations/delta/generic/Configuration.h index 9a1fe48756..b4ca29c836 100644 --- a/Marlin/example_configurations/delta/generic/Configuration.h +++ b/Marlin/example_configurations/delta/generic/Configuration.h @@ -314,8 +314,8 @@ your extruder heater takes 2 minutes to hit the target on heating. // uncomment the 2 defines below: // Parameters for all extruder heaters -//#define THERMAL_RUNAWAY_PROTECTION_PERIOD 40 //in seconds -//#define THERMAL_RUNAWAY_PROTECTION_HYSTERESIS 4 // in degree Celsius +#define THERMAL_RUNAWAY_PROTECTION_PERIOD 40 //in seconds +#define THERMAL_RUNAWAY_PROTECTION_HYSTERESIS 4 // in degree Celsius // If you want to enable this feature for your bed heater, // uncomment the 2 defines below: diff --git a/Marlin/example_configurations/delta/kossel_mini/Configuration.h b/Marlin/example_configurations/delta/kossel_mini/Configuration.h index 33391863eb..d0fda1e06f 100644 --- a/Marlin/example_configurations/delta/kossel_mini/Configuration.h +++ b/Marlin/example_configurations/delta/kossel_mini/Configuration.h @@ -314,8 +314,8 @@ your extruder heater takes 2 minutes to hit the target on heating. // uncomment the 2 defines below: // Parameters for all extruder heaters -//#define THERMAL_RUNAWAY_PROTECTION_PERIOD 40 //in seconds -//#define THERMAL_RUNAWAY_PROTECTION_HYSTERESIS 4 // in degree Celsius +#define THERMAL_RUNAWAY_PROTECTION_PERIOD 40 //in seconds +#define THERMAL_RUNAWAY_PROTECTION_HYSTERESIS 4 // in degree Celsius // If you want to enable this feature for your bed heater, // uncomment the 2 defines below: diff --git a/Marlin/example_configurations/makibox/Configuration.h b/Marlin/example_configurations/makibox/Configuration.h index 918d5fa8bd..27a73231a1 100644 --- a/Marlin/example_configurations/makibox/Configuration.h +++ b/Marlin/example_configurations/makibox/Configuration.h @@ -284,8 +284,8 @@ your extruder heater takes 2 minutes to hit the target on heating. // uncomment the 2 defines below: // Parameters for all extruder heaters -//#define THERMAL_RUNAWAY_PROTECTION_PERIOD 40 //in seconds -//#define THERMAL_RUNAWAY_PROTECTION_HYSTERESIS 4 // in degree Celsius +#define THERMAL_RUNAWAY_PROTECTION_PERIOD 40 //in seconds +#define THERMAL_RUNAWAY_PROTECTION_HYSTERESIS 4 // in degree Celsius // If you want to enable this feature for your bed heater, // uncomment the 2 defines below: diff --git a/Marlin/example_configurations/tvrrug/Round2/Configuration.h b/Marlin/example_configurations/tvrrug/Round2/Configuration.h index 2fff0f21e3..9332513ba3 100644 --- a/Marlin/example_configurations/tvrrug/Round2/Configuration.h +++ b/Marlin/example_configurations/tvrrug/Round2/Configuration.h @@ -286,8 +286,8 @@ your extruder heater takes 2 minutes to hit the target on heating. // uncomment the 2 defines below: // Parameters for all extruder heaters -//#define THERMAL_RUNAWAY_PROTECTION_PERIOD 40 //in seconds -//#define THERMAL_RUNAWAY_PROTECTION_HYSTERESIS 4 // in degree Celsius +#define THERMAL_RUNAWAY_PROTECTION_PERIOD 40 //in seconds +#define THERMAL_RUNAWAY_PROTECTION_HYSTERESIS 4 // in degree Celsius // If you want to enable this feature for your bed heater, // uncomment the 2 defines below: From a235dca79cb8ac8798a0a3c99185f4f67891273c Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Tue, 28 Apr 2015 19:10:07 -0700 Subject: [PATCH 68/88] Stow z on M402 without extra raise --- Marlin/Marlin_main.cpp | 76 ++++++++++++++++++++++++------------------ 1 file changed, 43 insertions(+), 33 deletions(-) diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp index 996bd60b91..1a4152bc52 100644 --- a/Marlin/Marlin_main.cpp +++ b/Marlin/Marlin_main.cpp @@ -1266,13 +1266,14 @@ inline void set_destination_to_current() { memcpy(destination, current_position, // Engage Z Servo endstop if enabled if (servo_endstops[Z_AXIS] >= 0) { + Servo *srv = &servo[servo_endstops[Z_AXIS]]; #if SERVO_LEVELING - servo[servo_endstops[Z_AXIS]].attach(0); + srv->attach(0); #endif - servo[servo_endstops[Z_AXIS]].write(servo_endstop_angles[Z_AXIS * 2]); + srv->write(servo_endstop_angles[Z_AXIS * 2]); #if SERVO_LEVELING delay(PROBE_SERVO_DEACTIVATION_DELAY); - servo[servo_endstops[Z_AXIS]].detach(); + srv->detach(); #endif } @@ -1318,7 +1319,7 @@ inline void set_destination_to_current() { memcpy(destination, current_position, } - static void stow_z_probe() { + static void stow_z_probe(bool doRaise=true) { #ifdef SERVO_ENDSTOPS @@ -1326,19 +1327,21 @@ inline void set_destination_to_current() { memcpy(destination, current_position, if (servo_endstops[Z_AXIS] >= 0) { #if Z_RAISE_AFTER_PROBING > 0 - do_blocking_move_to(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS] + Z_RAISE_AFTER_PROBING); // this also updates current_position - st_synchronize(); + if (doRaise) { + do_blocking_move_to(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS] + Z_RAISE_AFTER_PROBING); // this also updates current_position + st_synchronize(); + } #endif + // Change the Z servo angle + Servo *srv = &servo[servo_endstops[Z_AXIS]]; #if SERVO_LEVELING - servo[servo_endstops[Z_AXIS]].attach(0); + srv->attach(0); #endif - - servo[servo_endstops[Z_AXIS]].write(servo_endstop_angles[Z_AXIS * 2 + 1]); - + srv->write(servo_endstop_angles[Z_AXIS * 2 + 1]); #if SERVO_LEVELING delay(PROBE_SERVO_DEACTIVATION_DELAY); - servo[servo_endstops[Z_AXIS]].detach(); + srv->detach(); #endif } @@ -1522,19 +1525,20 @@ static void homeaxis(AxisEnum axis) { current_position[axis] = 0; sync_plan_position(); - // Engage Servo endstop if enabled - #if defined(SERVO_ENDSTOPS) && !defined(Z_PROBE_SLED) + #if SERVO_LEVELING && !defined(Z_PROBE_SLED) - #if SERVO_LEVELING - if (axis == Z_AXIS) deploy_z_probe(); else - #endif - { - if (servo_endstops[axis] > -1) - servo[servo_endstops[axis]].write(servo_endstop_angles[axis * 2]); - } + // Deploy a probe if there is one, and homing towards the bed + if (axis == Z_AXIS && axis_home_dir < 0) deploy_z_probe(); + + #elif defined(SERVO_ENDSTOPS) - #endif // SERVO_ENDSTOPS && !Z_PROBE_SLED + // Engage Servo endstop if enabled + if (servo_endstops[axis] > -1) + servo[servo_endstops[axis]].write(servo_endstop_angles[axis * 2]); + + #endif + // Set a flag for Z motor locking #ifdef Z_DUAL_ENDSTOPS if (axis == Z_AXIS) In_Homing_Process(true); #endif @@ -1612,14 +1616,17 @@ static void homeaxis(AxisEnum axis) { endstops_hit_on_purpose(); // clear endstop hit flags axis_known_position[axis] = true; - // Retract Servo endstop if enabled - #ifdef SERVO_ENDSTOPS + #if SERVO_LEVELING && !defined(Z_PROBE_SLED) + + // Stow the Z probe if it had been deployed + if (axis == Z_AXIS && axis_home_dir < 0) stow_z_probe(); + + #elif defined(SERVO_ENDSTOPS) + + // Retract Servo endstop if enabled if (servo_endstops[axis] > -1) servo[servo_endstops[axis]].write(servo_endstop_angles[axis * 2 + 1]); - #endif - #if SERVO_LEVELING && !defined(Z_PROBE_SLED) - if (axis == Z_AXIS) stow_z_probe(); #endif } @@ -2996,7 +3003,7 @@ inline void gcode_M42() { current_position[E_AXIS] = E_current = st_get_position_mm(E_AXIS); // - // OK, do the inital probe to get us close to the bed. + // OK, do the initial probe to get us close to the bed. // Then retrace the right amount and use that in subsequent probes // @@ -3105,12 +3112,14 @@ inline void gcode_M42() { plan_buffer_line(X_probe_location, Y_probe_location, Z_start_location, current_position[E_AXIS], homing_feedrate[Z_AXIS]/60, active_extruder); st_synchronize(); + // Stow between if (deploy_probe_for_each_reading) { stow_z_probe(); delay(1000); } } + // Stow after if (!deploy_probe_for_each_reading) { stow_z_probe(); delay(1000); @@ -4062,13 +4071,14 @@ inline void gcode_M226() { if (code_seen('S')) { servo_position = code_value(); if ((servo_index >= 0) && (servo_index < NUM_SERVOS)) { + Servo *srv = &servo[servo_index]; #if SERVO_LEVELING - servo[servo_index].attach(0); + srv->attach(0); #endif - servo[servo_index].write(servo_position); + srv->write(servo_position); #if SERVO_LEVELING delay(PROBE_SERVO_DEACTIVATION_DELAY); - servo[servo_index].detach(); + srv->detach(); #endif } else { @@ -4372,12 +4382,12 @@ inline void gcode_M303() { */ inline void gcode_M400() { st_synchronize(); } -#if defined(ENABLE_AUTO_BED_LEVELING) && (defined(SERVO_ENDSTOPS) || defined(Z_PROBE_ALLEN_KEY)) && not defined(Z_PROBE_SLED) +#if defined(ENABLE_AUTO_BED_LEVELING) && !defined(Z_PROBE_SLED) && (defined(SERVO_ENDSTOPS) || defined(Z_PROBE_ALLEN_KEY)) #ifdef SERVO_ENDSTOPS void raise_z_for_servo() { float zpos = current_position[Z_AXIS], z_dest = Z_RAISE_BEFORE_HOMING; - if (!axis_known_position[Z_AXIS]) z_dest += zpos; + z_dest += axis_known_position[Z_AXIS] ? -zprobe_zoffset : zpos; if (zpos < z_dest) do_blocking_move_to(current_position[X_AXIS], current_position[Y_AXIS], z_dest); // also updates current_position } @@ -4400,7 +4410,7 @@ inline void gcode_M400() { st_synchronize(); } #ifdef SERVO_ENDSTOPS raise_z_for_servo(); #endif - stow_z_probe(); + stow_z_probe(false); } #endif From ce3caf447bd64035ac612d6c7d6358d0e7844691 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Tue, 28 Apr 2015 19:17:48 -0700 Subject: [PATCH 69/88] Tweak how homeaxis deploys and stows --- Marlin/Marlin_main.cpp | 36 +++++++++++++++++++++++------------- 1 file changed, 23 insertions(+), 13 deletions(-) diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp index 1a4152bc52..8637b1684e 100644 --- a/Marlin/Marlin_main.cpp +++ b/Marlin/Marlin_main.cpp @@ -1528,14 +1528,19 @@ static void homeaxis(AxisEnum axis) { #if SERVO_LEVELING && !defined(Z_PROBE_SLED) // Deploy a probe if there is one, and homing towards the bed - if (axis == Z_AXIS && axis_home_dir < 0) deploy_z_probe(); - - #elif defined(SERVO_ENDSTOPS) + if (axis == Z_AXIS) { + if (axis_home_dir < 0) deploy_z_probe(); + } + else - // Engage Servo endstop if enabled - if (servo_endstops[axis] > -1) - servo[servo_endstops[axis]].write(servo_endstop_angles[axis * 2]); + #endif + #ifdef SERVO_ENDSTOPS + { + // Engage Servo endstop if enabled + if (servo_endstops[axis] > -1) + servo[servo_endstops[axis]].write(servo_endstop_angles[axis * 2]); + } #endif // Set a flag for Z motor locking @@ -1618,15 +1623,20 @@ static void homeaxis(AxisEnum axis) { #if SERVO_LEVELING && !defined(Z_PROBE_SLED) - // Stow the Z probe if it had been deployed - if (axis == Z_AXIS && axis_home_dir < 0) stow_z_probe(); - - #elif defined(SERVO_ENDSTOPS) + // Deploy a probe if there is one, and homing towards the bed + if (axis == Z_AXIS) { + if (axis_home_dir < 0) stow_z_probe(); + } + else - // Retract Servo endstop if enabled - if (servo_endstops[axis] > -1) - servo[servo_endstops[axis]].write(servo_endstop_angles[axis * 2 + 1]); + #endif + #ifdef SERVO_ENDSTOPS + { + // Retract Servo endstop if enabled + if (servo_endstops[axis] > -1) + servo[servo_endstops[axis]].write(servo_endstop_angles[axis * 2 + 1]); + } #endif } From 514d8ac4607b2f05f9db5967e5ac00f9d2d5fd4f Mon Sep 17 00:00:00 2001 From: AnHardt Date: Wed, 29 Apr 2015 08:47:01 +0200 Subject: [PATCH 70/88] Enable TRP for the bed in all Configurations. --- Marlin/Configuration.h | 4 ++-- Marlin/configurator/config/Configuration.h | 5 ++--- Marlin/example_configurations/Felix/Configuration.h | 5 ++--- Marlin/example_configurations/Felix/Configuration_DUAL.h | 5 ++--- Marlin/example_configurations/Hephestos/Configuration.h | 5 ++--- Marlin/example_configurations/K8200/Configuration.h | 5 ++--- Marlin/example_configurations/SCARA/Configuration.h | 5 ++--- Marlin/example_configurations/WITBOX/Configuration.h | 5 ++--- Marlin/example_configurations/delta/generic/Configuration.h | 5 ++--- .../example_configurations/delta/kossel_mini/Configuration.h | 5 ++--- Marlin/example_configurations/makibox/Configuration.h | 5 ++--- Marlin/example_configurations/tvrrug/Round2/Configuration.h | 5 ++--- 12 files changed, 24 insertions(+), 35 deletions(-) diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index e3d0c339a2..77dc404c8f 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -306,8 +306,8 @@ your extruder heater takes 2 minutes to hit the target on heating. // uncomment the 2 defines below: // Parameters for the bed heater -//#define THERMAL_RUNAWAY_PROTECTION_BED_PERIOD 20 //in seconds -//#define THERMAL_RUNAWAY_PROTECTION_BED_HYSTERESIS 2 // in degree Celsius +#define THERMAL_RUNAWAY_PROTECTION_BED_PERIOD 20 //in seconds +#define THERMAL_RUNAWAY_PROTECTION_BED_HYSTERESIS 2 // in degree Celsius //=========================================================================== diff --git a/Marlin/configurator/config/Configuration.h b/Marlin/configurator/config/Configuration.h index 59d13ab64e..3c7d737ea6 100644 --- a/Marlin/configurator/config/Configuration.h +++ b/Marlin/configurator/config/Configuration.h @@ -306,9 +306,8 @@ your extruder heater takes 2 minutes to hit the target on heating. // uncomment the 2 defines below: // Parameters for the bed heater -//#define THERMAL_RUNAWAY_PROTECTION_BED_PERIOD 20 //in seconds -//#define THERMAL_RUNAWAY_PROTECTION_BED_HYSTERESIS 2 // in degree Celsius - +#define THERMAL_RUNAWAY_PROTECTION_BED_PERIOD 20 //in seconds +#define THERMAL_RUNAWAY_PROTECTION_BED_HYSTERESIS 2 // in degree Celsius //=========================================================================== //============================= Mechanical Settings ========================= diff --git a/Marlin/example_configurations/Felix/Configuration.h b/Marlin/example_configurations/Felix/Configuration.h index 558ee3bb03..d0a2f24d3c 100644 --- a/Marlin/example_configurations/Felix/Configuration.h +++ b/Marlin/example_configurations/Felix/Configuration.h @@ -272,9 +272,8 @@ your extruder heater takes 2 minutes to hit the target on heating. // uncomment the 2 defines below: // Parameters for the bed heater -//#define THERMAL_RUNAWAY_PROTECTION_BED_PERIOD 20 //in seconds -//#define THERMAL_RUNAWAY_PROTECTION_BED_HYSTERESIS 2 // in degree Celsius - +#define THERMAL_RUNAWAY_PROTECTION_BED_PERIOD 20 //in seconds +#define THERMAL_RUNAWAY_PROTECTION_BED_HYSTERESIS 2 // in degree Celsius //=========================================================================== //============================= Mechanical Settings ========================= diff --git a/Marlin/example_configurations/Felix/Configuration_DUAL.h b/Marlin/example_configurations/Felix/Configuration_DUAL.h index 2e5633b8c1..d40d69d959 100644 --- a/Marlin/example_configurations/Felix/Configuration_DUAL.h +++ b/Marlin/example_configurations/Felix/Configuration_DUAL.h @@ -272,9 +272,8 @@ your extruder heater takes 2 minutes to hit the target on heating. // uncomment the 2 defines below: // Parameters for the bed heater -//#define THERMAL_RUNAWAY_PROTECTION_BED_PERIOD 20 //in seconds -//#define THERMAL_RUNAWAY_PROTECTION_BED_HYSTERESIS 2 // in degree Celsius - +#define THERMAL_RUNAWAY_PROTECTION_BED_PERIOD 20 //in seconds +#define THERMAL_RUNAWAY_PROTECTION_BED_HYSTERESIS 2 // in degree Celsius //=========================================================================== //============================= Mechanical Settings ========================= diff --git a/Marlin/example_configurations/Hephestos/Configuration.h b/Marlin/example_configurations/Hephestos/Configuration.h index 69841816fd..39347ed3f6 100644 --- a/Marlin/example_configurations/Hephestos/Configuration.h +++ b/Marlin/example_configurations/Hephestos/Configuration.h @@ -293,9 +293,8 @@ your extruder heater takes 2 minutes to hit the target on heating. // uncomment the 2 defines below: // Parameters for the bed heater -//#define THERMAL_RUNAWAY_PROTECTION_BED_PERIOD 20 //in seconds -//#define THERMAL_RUNAWAY_PROTECTION_BED_HYSTERESIS 2 // in degree Celsius - +#define THERMAL_RUNAWAY_PROTECTION_BED_PERIOD 20 //in seconds +#define THERMAL_RUNAWAY_PROTECTION_BED_HYSTERESIS 2 // in degree Celsius //=========================================================================== //============================= Mechanical Settings ========================= diff --git a/Marlin/example_configurations/K8200/Configuration.h b/Marlin/example_configurations/K8200/Configuration.h index 2987552f6d..3764de4a99 100644 --- a/Marlin/example_configurations/K8200/Configuration.h +++ b/Marlin/example_configurations/K8200/Configuration.h @@ -317,9 +317,8 @@ your extruder heater takes 2 minutes to hit the target on heating. // uncomment the 2 defines below: // Parameters for the bed heater -//#define THERMAL_RUNAWAY_PROTECTION_BED_PERIOD 20 //in seconds -//#define THERMAL_RUNAWAY_PROTECTION_BED_HYSTERESIS 2 // in degree Celsius - +#define THERMAL_RUNAWAY_PROTECTION_BED_PERIOD 20 //in seconds +#define THERMAL_RUNAWAY_PROTECTION_BED_HYSTERESIS 2 // in degree Celsius //=========================================================================== //============================= Mechanical Settings ========================= diff --git a/Marlin/example_configurations/SCARA/Configuration.h b/Marlin/example_configurations/SCARA/Configuration.h index 6d70fa244f..2f63437e2e 100644 --- a/Marlin/example_configurations/SCARA/Configuration.h +++ b/Marlin/example_configurations/SCARA/Configuration.h @@ -324,9 +324,8 @@ your extruder heater takes 2 minutes to hit the target on heating. // uncomment the 2 defines below: // Parameters for the bed heater -//#define THERMAL_RUNAWAY_PROTECTION_BED_PERIOD 20 //in seconds -//#define THERMAL_RUNAWAY_PROTECTION_BED_HYSTERESIS 2 // in degree Celsius - +#define THERMAL_RUNAWAY_PROTECTION_BED_PERIOD 20 //in seconds +#define THERMAL_RUNAWAY_PROTECTION_BED_HYSTERESIS 2 // in degree Celsius //=========================================================================== //============================= Mechanical Settings ========================= diff --git a/Marlin/example_configurations/WITBOX/Configuration.h b/Marlin/example_configurations/WITBOX/Configuration.h index 7022f78887..b42ee3cd52 100644 --- a/Marlin/example_configurations/WITBOX/Configuration.h +++ b/Marlin/example_configurations/WITBOX/Configuration.h @@ -292,9 +292,8 @@ your extruder heater takes 2 minutes to hit the target on heating. // uncomment the 2 defines below: // Parameters for the bed heater -//#define THERMAL_RUNAWAY_PROTECTION_BED_PERIOD 20 //in seconds -//#define THERMAL_RUNAWAY_PROTECTION_BED_HYSTERESIS 2 // in degree Celsius - +#define THERMAL_RUNAWAY_PROTECTION_BED_PERIOD 20 //in seconds +#define THERMAL_RUNAWAY_PROTECTION_BED_HYSTERESIS 2 // in degree Celsius //=========================================================================== //============================= Mechanical Settings ========================= diff --git a/Marlin/example_configurations/delta/generic/Configuration.h b/Marlin/example_configurations/delta/generic/Configuration.h index ae094ccac5..25f1c961ca 100644 --- a/Marlin/example_configurations/delta/generic/Configuration.h +++ b/Marlin/example_configurations/delta/generic/Configuration.h @@ -322,9 +322,8 @@ your extruder heater takes 2 minutes to hit the target on heating. // uncomment the 2 defines below: // Parameters for the bed heater -//#define THERMAL_RUNAWAY_PROTECTION_BED_PERIOD 20 //in seconds -//#define THERMAL_RUNAWAY_PROTECTION_BED_HYSTERESIS 2 // in degree Celsius - +#define THERMAL_RUNAWAY_PROTECTION_BED_PERIOD 20 //in seconds +#define THERMAL_RUNAWAY_PROTECTION_BED_HYSTERESIS 2 // in degree Celsius //=========================================================================== //============================= Mechanical Settings ========================= diff --git a/Marlin/example_configurations/delta/kossel_mini/Configuration.h b/Marlin/example_configurations/delta/kossel_mini/Configuration.h index f6b6a1e036..dfd6a86a48 100644 --- a/Marlin/example_configurations/delta/kossel_mini/Configuration.h +++ b/Marlin/example_configurations/delta/kossel_mini/Configuration.h @@ -322,9 +322,8 @@ your extruder heater takes 2 minutes to hit the target on heating. // uncomment the 2 defines below: // Parameters for the bed heater -//#define THERMAL_RUNAWAY_PROTECTION_BED_PERIOD 20 //in seconds -//#define THERMAL_RUNAWAY_PROTECTION_BED_HYSTERESIS 2 // in degree Celsius - +#define THERMAL_RUNAWAY_PROTECTION_BED_PERIOD 20 //in seconds +#define THERMAL_RUNAWAY_PROTECTION_BED_HYSTERESIS 2 // in degree Celsius //=========================================================================== //============================= Mechanical Settings ========================= diff --git a/Marlin/example_configurations/makibox/Configuration.h b/Marlin/example_configurations/makibox/Configuration.h index 500f47fe86..9fc6c5ffc7 100644 --- a/Marlin/example_configurations/makibox/Configuration.h +++ b/Marlin/example_configurations/makibox/Configuration.h @@ -292,9 +292,8 @@ your extruder heater takes 2 minutes to hit the target on heating. // uncomment the 2 defines below: // Parameters for the bed heater -//#define THERMAL_RUNAWAY_PROTECTION_BED_PERIOD 20 //in seconds -//#define THERMAL_RUNAWAY_PROTECTION_BED_HYSTERESIS 2 // in degree Celsius - +#define THERMAL_RUNAWAY_PROTECTION_BED_PERIOD 20 //in seconds +#define THERMAL_RUNAWAY_PROTECTION_BED_HYSTERESIS 2 // in degree Celsius //=========================================================================== //============================= Mechanical Settings ========================= diff --git a/Marlin/example_configurations/tvrrug/Round2/Configuration.h b/Marlin/example_configurations/tvrrug/Round2/Configuration.h index 314faf2d6a..2d36012199 100644 --- a/Marlin/example_configurations/tvrrug/Round2/Configuration.h +++ b/Marlin/example_configurations/tvrrug/Round2/Configuration.h @@ -294,9 +294,8 @@ your extruder heater takes 2 minutes to hit the target on heating. // uncomment the 2 defines below: // Parameters for the bed heater -//#define THERMAL_RUNAWAY_PROTECTION_BED_PERIOD 20 //in seconds -//#define THERMAL_RUNAWAY_PROTECTION_BED_HYSTERESIS 2 // in degree Celsius - +#define THERMAL_RUNAWAY_PROTECTION_BED_PERIOD 20 //in seconds +#define THERMAL_RUNAWAY_PROTECTION_BED_HYSTERESIS 2 // in degree Celsius //=========================================================================== //============================= Mechanical Settings ========================= From 4dcc0fd55a34b8079979df299c149fa7ebb5c83f Mon Sep 17 00:00:00 2001 From: paclema Date: Wed, 29 Apr 2015 21:32:27 +0200 Subject: [PATCH 71/88] Fixed sintaxis error of filament runout --- Marlin/Marlin_main.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp index 996bd60b91..f5dcedbe48 100644 --- a/Marlin/Marlin_main.cpp +++ b/Marlin/Marlin_main.cpp @@ -500,7 +500,7 @@ void setup_filrunoutpin() { #if HAS_FILRUNOUT pinMode(FILRUNOUT_PIN, INPUT); #ifdef ENDSTOPPULLUP_FIL_RUNOUT - WRITE(FILLRUNOUT_PIN, HIGH); + WRITE(FILRUNOUT_PIN, HIGH); #endif #endif } @@ -5975,7 +5975,7 @@ void disable_all_steppers() { void manage_inactivity(bool ignore_stepper_queue/*=false*/) { #if HAS_FILRUNOUT - if (card.sdprinting && !(READ(FILRUNOUT_PIN) ^ FIL_RUNOUT_INVERTING)) + if (IS_SD_PRINTING && !(READ(FILRUNOUT_PIN) ^ FIL_RUNOUT_INVERTING)) filrunout(); #endif From 013a09dbe632fad0b6342a43fdc1dec59e53b2c2 Mon Sep 17 00:00:00 2001 From: paclema Date: Wed, 29 Apr 2015 21:38:40 +0200 Subject: [PATCH 72/88] Added configurable script for filrunout form configuration.h --- Marlin/Configuration.h | 7 +++++-- Marlin/Marlin_main.cpp | 4 ++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index 455e46a195..ce5933319b 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -417,8 +417,11 @@ const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic // In RAMPS uses servo pin 2. Can be changed in pins file. For other boards pin definition should be made. // It is assumed that when logic high = filament available // when logic low = filament ran out -//const bool FIL_RUNOUT_INVERTING = true; // Should be uncommented and true or false should assigned -//#define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined. +#ifdef FILAMENT_RUNOUT_SENSOR + const bool FIL_RUNOUT_INVERTING = true; // Should be uncommented and true or false should assigned + #define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined. + #define FILAMENT_RUNOUT_SCRIPT "M600" +#endif //=========================================================================== //============================ Mesh Bed Leveling ============================ diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp index 996bd60b91..4f12d6498c 100644 --- a/Marlin/Marlin_main.cpp +++ b/Marlin/Marlin_main.cpp @@ -6140,10 +6140,10 @@ void kill() void filrunout() { if (!filrunoutEnqueued) { filrunoutEnqueued = true; - enqueuecommand("M600"); + enqueuecommands_P(PSTR(FILAMENT_RUNOUT_SCRIPT)); + st_synchronize(); } } - #endif void Stop() { From d065d378222480a248cfe7c14ed22c316276a8d2 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Wed, 29 Apr 2015 18:26:16 -0700 Subject: [PATCH 73/88] Add M428 to set home_offset logically --- Marlin/Marlin_main.cpp | 30 ++++++++++++++++++++++++++++++ Marlin/configuration_store.cpp | 2 +- Marlin/language.h | 1 + Marlin/ultralcd.cpp | 15 +++++---------- 4 files changed, 37 insertions(+), 11 deletions(-) diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp index 996bd60b91..6e41e13350 100644 --- a/Marlin/Marlin_main.cpp +++ b/Marlin/Marlin_main.cpp @@ -189,6 +189,7 @@ * M410 - Quickstop. Abort all the planned moves * M420 - Enable/Disable Mesh Leveling (with current values) S1=enable S0=disable * M421 - Set a single Z coordinate in the Mesh Leveling grid. X Y Z + * M428 - Set the home_offset logically based on the current_position * M500 - Store parameters in EEPROM * M501 - Read parameters from EEPROM (if you need reset them after you changed them temporarily). * M502 - Revert to the default "factory settings". You still need to store them in EEPROM afterwards if you want to. @@ -4504,6 +4505,31 @@ inline void gcode_M410() { quickStop(); } #endif +/** + * M428: Set home_offset based on the distance between the + * current_position and the nearest "reference position." + * If an axis is past center the endstop position + * is the reference-point. Otherwise it uses 0. This allows + * the Z offset to be set near the bed when using a max endstop. + * + * Use M206 to set these values directly. + */ +inline void gcode_M428() { + for (int8_t i = X_AXIS; i <= Z_AXIS; i++) { + float base = (current_position[i] > (min_pos[i] + max_pos[i]) / 2) ? base_home_pos(i) : 0, + diff = current_position[i] - base; + if (diff > -20 && diff < 20) { + home_offset[i] -= diff; + current_position[i] = base; + } + else { + SERIAL_ERROR_START; + SERIAL_ERRORLNPGM(MSG_ERR_M428_TOO_FAR); + } + } + sync_plan_position(); +} + /** * M500: Store settings in EEPROM */ @@ -5353,6 +5379,10 @@ void process_commands() { break; #endif + case 428: // M428 Apply current_position to home_offset + gcode_M428(); + break; + case 500: // M500 Store settings in EEPROM gcode_M500(); break; diff --git a/Marlin/configuration_store.cpp b/Marlin/configuration_store.cpp index 782b5d320a..362749a10f 100644 --- a/Marlin/configuration_store.cpp +++ b/Marlin/configuration_store.cpp @@ -676,7 +676,7 @@ void Config_PrintSettings(bool forReplay) { SERIAL_ECHOLNPGM("Mesh bed leveling:"); CONFIG_ECHO_START; } - SERIAL_ECHOPAIR(" M420 S", (int32_t)mbl.active); + SERIAL_ECHOPAIR(" M420 S", (unsigned long)mbl.active); SERIAL_ECHOPAIR(" X", MESH_NUM_X_POINTS); SERIAL_ECHOPAIR(" Y", MESH_NUM_Y_POINTS); SERIAL_EOL; diff --git a/Marlin/language.h b/Marlin/language.h index 252ee595ab..31239658eb 100644 --- a/Marlin/language.h +++ b/Marlin/language.h @@ -162,6 +162,7 @@ #define MSG_ERR_MATERIAL_INDEX "M145 S out of range (0-1)" #define MSG_ERR_M421_REQUIRES_XYZ "M421 requires XYZ parameters" #define MSG_ERR_MESH_INDEX_OOB "Mesh XY index is out of bounds" +#define MSG_ERR_M428_TOO_FAR "Too far from home or origin position" #define MSG_M119_REPORT "Reporting endstop status" #define MSG_ENDSTOP_HIT "TRIGGERED" #define MSG_ENDSTOP_OPEN "open" diff --git a/Marlin/ultralcd.cpp b/Marlin/ultralcd.cpp index 4dd32eb0de..57e5113617 100644 --- a/Marlin/ultralcd.cpp +++ b/Marlin/ultralcd.cpp @@ -438,17 +438,12 @@ static void lcd_main_menu() { } #endif +/** + * Set the home offset based on the current_position + */ void lcd_set_home_offsets() { - for (int8_t i=0; i < NUM_AXIS; i++) { - if (i != E_AXIS) { - home_offset[i] -= current_position[i]; - current_position[i] = 0.0; - } - } - plan_set_position(0.0, 0.0, 0.0, current_position[E_AXIS]); - - // Audio feedback - enqueuecommands_P(PSTR("M300 S659 P200\nM300 S698 P200")); + // Command with Audio feedback + enqueuecommands_P(PSTR("M428\nM300 S659 P200\nM300 S698 P200")); lcd_return_to_status(); } From d4c74b8f8cb67190f62e29bc256b8b85e940efee Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Wed, 29 Apr 2015 19:05:48 -0700 Subject: [PATCH 74/88] Don't apply M428 if an error occurs - Also move audio feedback into the command - Added shorthand for `lcd_buzz` availability --- Marlin/Marlin_main.cpp | 56 +++++++++++++++++++-------- Marlin/configurator/config/language.h | 1 + Marlin/language.h | 2 +- Marlin/ultralcd.cpp | 12 +++--- Marlin/ultralcd.h | 2 +- 5 files changed, 49 insertions(+), 24 deletions(-) diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp index 6e41e13350..637ebc5a71 100644 --- a/Marlin/Marlin_main.cpp +++ b/Marlin/Marlin_main.cpp @@ -36,6 +36,7 @@ #endif #endif // ENABLE_AUTO_BED_LEVELING +#define HAS_LCD_BUZZ (defined(ULTRALCD) || (defined(BEEPER) && BEEPER >= 0) || defined(LCD_USE_I2C_BUZZER)) #define SERVO_LEVELING (defined(ENABLE_AUTO_BED_LEVELING) && PROBE_SERVO_DEACTIVATION_DELAY > 0) #ifdef MESH_BED_LEVELING @@ -4091,7 +4092,7 @@ inline void gcode_M226() { #endif // NUM_SERVOS > 0 -#if BEEPER > 0 || defined(ULTRALCD) || defined(LCD_USE_I2C_BUZZER) +#if HAS_LCD_BUZZ /** * M300: Play beep sound S P @@ -4103,7 +4104,7 @@ inline void gcode_M226() { lcd_buzz(beepP, beepS); } -#endif // BEEPER>0 || ULTRALCD || LCD_USE_I2C_BUZZER +#endif // HAS_LCD_BUZZ #ifdef PIDTEMP @@ -4507,27 +4508,50 @@ inline void gcode_M410() { quickStop(); } /** * M428: Set home_offset based on the distance between the - * current_position and the nearest "reference position." - * If an axis is past center the endstop position + * current_position and the nearest "reference point." + * If an axis is past center its endstop position * is the reference-point. Otherwise it uses 0. This allows * the Z offset to be set near the bed when using a max endstop. * + * M428 can't be used more than 2cm away from 0 or an endstop. + * * Use M206 to set these values directly. */ inline void gcode_M428() { + bool err = false; + float new_offs[3], new_pos[3]; + memcpy(new_pos, current_position, sizeof(new_pos)); + memcpy(new_offs, home_offset, sizeof(new_offs)); for (int8_t i = X_AXIS; i <= Z_AXIS; i++) { - float base = (current_position[i] > (min_pos[i] + max_pos[i]) / 2) ? base_home_pos(i) : 0, - diff = current_position[i] - base; - if (diff > -20 && diff < 20) { - home_offset[i] -= diff; - current_position[i] = base; - } - else { - SERIAL_ERROR_START; - SERIAL_ERRORLNPGM(MSG_ERR_M428_TOO_FAR); + if (axis_known_position[i]) { + float base = (new_pos[i] > (min_pos[i] + max_pos[i]) / 2) ? base_home_pos(i) : 0, + diff = new_pos[i] - base; + if (diff > -20 && diff < 20) { + new_offs[i] -= diff; + new_pos[i] = base; + } + else { + SERIAL_ERROR_START; + SERIAL_ERRORLNPGM(MSG_ERR_M428_TOO_FAR); + LCD_ALERTMESSAGEPGM("Err: Too far!"); + #if HAS_LCD_BUZZ + enqueuecommands_P(PSTR("M300 S40 P200")); + #endif + err = true; + break; + } } } - sync_plan_position(); + + if (!err) { + memcpy(current_position, new_pos, sizeof(new_pos)); + memcpy(home_offset, new_offs, sizeof(new_offs)); + sync_plan_position(); + LCD_ALERTMESSAGEPGM("Offset applied."); + #if HAS_LCD_BUZZ + enqueuecommands_P(PSTR("M300 S659 P200\nM300 S698 P200")); + #endif + } } /** @@ -5277,11 +5301,11 @@ void process_commands() { break; #endif // NUM_SERVOS > 0 - #if BEEPER > 0 || defined(ULTRALCD) || defined(LCD_USE_I2C_BUZZER) + #if HAS_LCD_BUZZ case 300: // M300 - Play beep tone gcode_M300(); break; - #endif // BEEPER > 0 || ULTRALCD || LCD_USE_I2C_BUZZER + #endif // HAS_LCD_BUZZ #ifdef PIDTEMP case 301: // M301 diff --git a/Marlin/configurator/config/language.h b/Marlin/configurator/config/language.h index d8ceafb1a5..a56ee522f8 100644 --- a/Marlin/configurator/config/language.h +++ b/Marlin/configurator/config/language.h @@ -161,6 +161,7 @@ #define MSG_ERR_MATERIAL_INDEX "M145 S out of range (0-1)" #define MSG_ERR_M421_REQUIRES_XYZ "M421 requires XYZ parameters" #define MSG_ERR_MESH_INDEX_OOB "Mesh XY index is out of bounds" +#define MSG_ERR_M428_TOO_FAR "Too far from reference point" #define MSG_M119_REPORT "Reporting endstop status" #define MSG_ENDSTOP_HIT "TRIGGERED" #define MSG_ENDSTOP_OPEN "open" diff --git a/Marlin/language.h b/Marlin/language.h index 31239658eb..02cd675c8b 100644 --- a/Marlin/language.h +++ b/Marlin/language.h @@ -162,7 +162,7 @@ #define MSG_ERR_MATERIAL_INDEX "M145 S out of range (0-1)" #define MSG_ERR_M421_REQUIRES_XYZ "M421 requires XYZ parameters" #define MSG_ERR_MESH_INDEX_OOB "Mesh XY index is out of bounds" -#define MSG_ERR_M428_TOO_FAR "Too far from home or origin position" +#define MSG_ERR_M428_TOO_FAR "Too far from reference point" #define MSG_M119_REPORT "Reporting endstop status" #define MSG_ENDSTOP_HIT "TRIGGERED" #define MSG_ENDSTOP_OPEN "open" diff --git a/Marlin/ultralcd.cpp b/Marlin/ultralcd.cpp index 57e5113617..5ca0943376 100644 --- a/Marlin/ultralcd.cpp +++ b/Marlin/ultralcd.cpp @@ -442,8 +442,8 @@ static void lcd_main_menu() { * Set the home offset based on the current_position */ void lcd_set_home_offsets() { - // Command with Audio feedback - enqueuecommands_P(PSTR("M428\nM300 S659 P200\nM300 S698 P200")); + // M428 Command + enqueuecommands_P(PSTR("M428")); lcd_return_to_status(); } @@ -1285,7 +1285,7 @@ void lcd_quick_feedback() { #define LCD_FEEDBACK_FREQUENCY_DURATION_MS (1000/6) #endif lcd_buzz(LCD_FEEDBACK_FREQUENCY_DURATION_MS, LCD_FEEDBACK_FREQUENCY_HZ); - #elif defined(BEEPER) && BEEPER > -1 + #elif defined(BEEPER) && BEEPER >= 0 #ifndef LCD_FEEDBACK_FREQUENCY_HZ #define LCD_FEEDBACK_FREQUENCY_HZ 5000 #endif @@ -1718,12 +1718,12 @@ void lcd_reset_alert_level() { lcd_status_message_level = 0; } void lcd_buzz(long duration, uint16_t freq) { if (freq > 0) { - #if BEEPER > 0 + #ifdef LCD_USE_I2C_BUZZER + lcd.buzz(duration, freq); + #elif defined(BEEPER) && BEEPER >= 0 SET_OUTPUT(BEEPER); tone(BEEPER, freq, duration); delay(duration); - #elif defined(LCD_USE_I2C_BUZZER) - lcd.buzz(duration, freq); #else delay(duration); #endif diff --git a/Marlin/ultralcd.h b/Marlin/ultralcd.h index 8f96f008ba..956b728286 100644 --- a/Marlin/ultralcd.h +++ b/Marlin/ultralcd.h @@ -106,7 +106,7 @@ FORCE_INLINE void lcd_setstatuspgm(const char* message, const uint8_t level=0) {} FORCE_INLINE void lcd_buttons_update() {} FORCE_INLINE void lcd_reset_alert_level() {} - FORCE_INLINE void lcd_buzz(long duration,uint16_t freq) {} + FORCE_INLINE void lcd_buzz(long duration, uint16_t freq) {} FORCE_INLINE bool lcd_detected(void) { return true; } #define LCD_MESSAGEPGM(x) do{}while(0) From 2db384a21d680a9c8708f1675594732bcf46655d Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Fri, 1 May 2015 21:15:26 -0700 Subject: [PATCH 75/88] Fix compile error in configuration_store.cpp --- Marlin/configuration_store.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Marlin/configuration_store.cpp b/Marlin/configuration_store.cpp index 362749a10f..b950b88cd2 100644 --- a/Marlin/configuration_store.cpp +++ b/Marlin/configuration_store.cpp @@ -677,8 +677,8 @@ void Config_PrintSettings(bool forReplay) { CONFIG_ECHO_START; } SERIAL_ECHOPAIR(" M420 S", (unsigned long)mbl.active); - SERIAL_ECHOPAIR(" X", MESH_NUM_X_POINTS); - SERIAL_ECHOPAIR(" Y", MESH_NUM_Y_POINTS); + SERIAL_ECHOPAIR(" X", (unsigned long)MESH_NUM_X_POINTS); + SERIAL_ECHOPAIR(" Y", (unsigned long)MESH_NUM_Y_POINTS); SERIAL_EOL; for (int y=0; y Date: Fri, 1 May 2015 21:38:32 -0700 Subject: [PATCH 76/88] Cleanup of language.h --- Marlin/configurator/config/language.h | 17 +++++++++-------- Marlin/language.h | 16 ++++++++-------- 2 files changed, 17 insertions(+), 16 deletions(-) diff --git a/Marlin/configurator/config/language.h b/Marlin/configurator/config/language.h index a56ee522f8..02235aac70 100644 --- a/Marlin/configurator/config/language.h +++ b/Marlin/configurator/config/language.h @@ -30,6 +30,7 @@ // eu Basque-Euskera // kana Japanese // kana_utf Japanese +// cn Chinese #ifndef LANGUAGE_INCLUDE // pick your language from the list above @@ -130,13 +131,15 @@ #define MSG_FILE_PRINTED "Done printing file" #define MSG_BEGIN_FILE_LIST "Begin file list" #define MSG_END_FILE_LIST "End file list" -#define MSG_M104_INVALID_EXTRUDER "M104 Invalid extruder " -#define MSG_M105_INVALID_EXTRUDER "M105 Invalid extruder " -#define MSG_M200_INVALID_EXTRUDER "M200 Invalid extruder " -#define MSG_M218_INVALID_EXTRUDER "M218 Invalid extruder " -#define MSG_M221_INVALID_EXTRUDER "M221 Invalid extruder " +#define MSG_INVALID_EXTRUDER "Invalid extruder" +#define MSG_INVALID_SOLENOID "Invalid solenoid" +#define MSG_M104_INVALID_EXTRUDER "M104 " MSG_INVALID_EXTRUDER " " +#define MSG_M105_INVALID_EXTRUDER "M105 " MSG_INVALID_EXTRUDER " " +#define MSG_M109_INVALID_EXTRUDER "M109 " MSG_INVALID_EXTRUDER " " +#define MSG_M200_INVALID_EXTRUDER "M200 " MSG_INVALID_EXTRUDER " " +#define MSG_M218_INVALID_EXTRUDER "M218 " MSG_INVALID_EXTRUDER " " +#define MSG_M221_INVALID_EXTRUDER "M221 " MSG_INVALID_EXTRUDER " " #define MSG_ERR_NO_THERMISTORS "No thermistors - no temperature" -#define MSG_M109_INVALID_EXTRUDER "M109 Invalid extruder " #define MSG_HEATING "Heating..." #define MSG_HEATING_COMPLETE "Heating done." #define MSG_BED_HEATING "Bed Heating." @@ -148,8 +151,6 @@ #define MSG_RESEND "Resend: " #define MSG_UNKNOWN_COMMAND "Unknown command: \"" #define MSG_ACTIVE_EXTRUDER "Active Extruder: " -#define MSG_INVALID_EXTRUDER "Invalid extruder" -#define MSG_INVALID_SOLENOID "Invalid solenoid" #define MSG_X_MIN "x_min: " #define MSG_X_MAX "x_max: " #define MSG_Y_MIN "y_min: " diff --git a/Marlin/language.h b/Marlin/language.h index 02cd675c8b..02235aac70 100644 --- a/Marlin/language.h +++ b/Marlin/language.h @@ -131,13 +131,15 @@ #define MSG_FILE_PRINTED "Done printing file" #define MSG_BEGIN_FILE_LIST "Begin file list" #define MSG_END_FILE_LIST "End file list" -#define MSG_M104_INVALID_EXTRUDER "M104 Invalid extruder " -#define MSG_M105_INVALID_EXTRUDER "M105 Invalid extruder " -#define MSG_M200_INVALID_EXTRUDER "M200 Invalid extruder " -#define MSG_M218_INVALID_EXTRUDER "M218 Invalid extruder " -#define MSG_M221_INVALID_EXTRUDER "M221 Invalid extruder " +#define MSG_INVALID_EXTRUDER "Invalid extruder" +#define MSG_INVALID_SOLENOID "Invalid solenoid" +#define MSG_M104_INVALID_EXTRUDER "M104 " MSG_INVALID_EXTRUDER " " +#define MSG_M105_INVALID_EXTRUDER "M105 " MSG_INVALID_EXTRUDER " " +#define MSG_M109_INVALID_EXTRUDER "M109 " MSG_INVALID_EXTRUDER " " +#define MSG_M200_INVALID_EXTRUDER "M200 " MSG_INVALID_EXTRUDER " " +#define MSG_M218_INVALID_EXTRUDER "M218 " MSG_INVALID_EXTRUDER " " +#define MSG_M221_INVALID_EXTRUDER "M221 " MSG_INVALID_EXTRUDER " " #define MSG_ERR_NO_THERMISTORS "No thermistors - no temperature" -#define MSG_M109_INVALID_EXTRUDER "M109 Invalid extruder " #define MSG_HEATING "Heating..." #define MSG_HEATING_COMPLETE "Heating done." #define MSG_BED_HEATING "Bed Heating." @@ -149,8 +151,6 @@ #define MSG_RESEND "Resend: " #define MSG_UNKNOWN_COMMAND "Unknown command: \"" #define MSG_ACTIVE_EXTRUDER "Active Extruder: " -#define MSG_INVALID_EXTRUDER "Invalid extruder" -#define MSG_INVALID_SOLENOID "Invalid solenoid" #define MSG_X_MIN "x_min: " #define MSG_X_MAX "x_max: " #define MSG_Y_MIN "y_min: " From aedd58091162ced31f6b1336268b4e4f4b01f531 Mon Sep 17 00:00:00 2001 From: paclema Date: Sun, 3 May 2015 02:28:43 +0200 Subject: [PATCH 77/88] Updated all configuration.h examples --- Marlin/Configuration.h | 2 +- Marlin/example_configurations/Felix/Configuration.h | 9 ++++++--- Marlin/example_configurations/Felix/Configuration_DUAL.h | 9 ++++++--- Marlin/example_configurations/Hephestos/Configuration.h | 9 ++++++--- Marlin/example_configurations/K8200/Configuration.h | 7 +++++-- Marlin/example_configurations/SCARA/Configuration.h | 9 ++++++--- Marlin/example_configurations/WITBOX/Configuration.h | 9 ++++++--- .../example_configurations/delta/generic/Configuration.h | 9 ++++++--- .../delta/kossel_mini/Configuration.h | 9 ++++++--- Marlin/example_configurations/makibox/Configuration.h | 8 +++++--- .../example_configurations/tvrrug/Round2/Configuration.h | 7 +++++-- 11 files changed, 58 insertions(+), 29 deletions(-) diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index ce5933319b..535d1319d0 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -1,4 +1,4 @@ -#ifndef CONFIGURATION_H +f#ifndef CONFIGURATION_H #define CONFIGURATION_H #include "boards.h" diff --git a/Marlin/example_configurations/Felix/Configuration.h b/Marlin/example_configurations/Felix/Configuration.h index 63b3660d54..7ef5228fe4 100644 --- a/Marlin/example_configurations/Felix/Configuration.h +++ b/Marlin/example_configurations/Felix/Configuration.h @@ -356,9 +356,12 @@ const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic // In RAMPS uses servo pin 2. Can be changed in pins file. For other boards pin definition should be made. // It is assumed that when logic high = filament available // when logic low = filament ran out -//const bool FIL_RUNOUT_INVERTING = true; // Should be uncommented and true or false should assigned -//#define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined. - +#ifdef FILAMENT_RUNOUT_SENSOR + const bool FIL_RUNOUT_INVERTING = true; // Should be uncommented and true or false should assigned + #define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined. + #define FILAMENT_RUNOUT_SCRIPT "M600" +#endif + //=========================================================================== //============================ Manual Bed Leveling ========================== //=========================================================================== diff --git a/Marlin/example_configurations/Felix/Configuration_DUAL.h b/Marlin/example_configurations/Felix/Configuration_DUAL.h index 085d95b271..425608da58 100644 --- a/Marlin/example_configurations/Felix/Configuration_DUAL.h +++ b/Marlin/example_configurations/Felix/Configuration_DUAL.h @@ -356,9 +356,12 @@ const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic // In RAMPS uses servo pin 2. Can be changed in pins file. For other boards pin definition should be made. // It is assumed that when logic high = filament available // when logic low = filament ran out -//const bool FIL_RUNOUT_INVERTING = true; // Should be uncommented and true or false should assigned -//#define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined. - +#ifdef FILAMENT_RUNOUT_SENSOR + const bool FIL_RUNOUT_INVERTING = true; // Should be uncommented and true or false should assigned + #define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined. + #define FILAMENT_RUNOUT_SCRIPT "M600" +#endif + //=========================================================================== //============================ Manual Bed Leveling ========================== //=========================================================================== diff --git a/Marlin/example_configurations/Hephestos/Configuration.h b/Marlin/example_configurations/Hephestos/Configuration.h index c9c079ebe6..a25e8f3f2a 100644 --- a/Marlin/example_configurations/Hephestos/Configuration.h +++ b/Marlin/example_configurations/Hephestos/Configuration.h @@ -377,9 +377,12 @@ const bool Z_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the logic // In RAMPS uses servo pin 2. Can be changed in pins file. For other boards pin definition should be made. // It is assumed that when logic high = filament available // when logic low = filament ran out -//const bool FIL_RUNOUT_INVERTING = true; // Should be uncommented and true or false should assigned -//#define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined. - +#ifdef FILAMENT_RUNOUT_SENSOR + const bool FIL_RUNOUT_INVERTING = true; // Should be uncommented and true or false should assigned + #define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined. + #define FILAMENT_RUNOUT_SCRIPT "M600" +#endif + //=========================================================================== //============================ Manual Bed Leveling ========================== //=========================================================================== diff --git a/Marlin/example_configurations/K8200/Configuration.h b/Marlin/example_configurations/K8200/Configuration.h index d0abbcbe71..2cd07ec73d 100644 --- a/Marlin/example_configurations/K8200/Configuration.h +++ b/Marlin/example_configurations/K8200/Configuration.h @@ -433,8 +433,11 @@ const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic // In RAMPS uses servo pin 2. Can be changed in pins file. For other boards pin definition should be made. // It is assumed that when logic high = filament available // when logic low = filament ran out -//const bool FIL_RUNOUT_INVERTING = true; // Should be uncommented and true or false should assigned -//#define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined. +#ifdef FILAMENT_RUNOUT_SENSOR + const bool FIL_RUNOUT_INVERTING = true; // Should be uncommented and true or false should assigned + #define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined. + #define FILAMENT_RUNOUT_SCRIPT "M600" +#endif //=========================================================================== //============================ Mesh Bed Leveling ============================ diff --git a/Marlin/example_configurations/SCARA/Configuration.h b/Marlin/example_configurations/SCARA/Configuration.h index cdc036cb2e..d88aea6c96 100644 --- a/Marlin/example_configurations/SCARA/Configuration.h +++ b/Marlin/example_configurations/SCARA/Configuration.h @@ -408,9 +408,12 @@ const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic // In RAMPS uses servo pin 2. Can be changed in pins file. For other boards pin definition should be made. // It is assumed that when logic high = filament available // when logic low = filament ran out -//const bool FIL_RUNOUT_INVERTING = true; // Should be uncommented and true or false should assigned -//#define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined. - +#ifdef FILAMENT_RUNOUT_SENSOR + const bool FIL_RUNOUT_INVERTING = true; // Should be uncommented and true or false should assigned + #define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined. + #define FILAMENT_RUNOUT_SCRIPT "M600" +#endif + //=========================================================================== //============================ Manual Bed Leveling ========================== //=========================================================================== diff --git a/Marlin/example_configurations/WITBOX/Configuration.h b/Marlin/example_configurations/WITBOX/Configuration.h index 343c3093ac..1925522bc0 100644 --- a/Marlin/example_configurations/WITBOX/Configuration.h +++ b/Marlin/example_configurations/WITBOX/Configuration.h @@ -376,9 +376,12 @@ const bool Z_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the logic // In RAMPS uses servo pin 2. Can be changed in pins file. For other boards pin definition should be made. // It is assumed that when logic high = filament available // when logic low = filament ran out -//const bool FIL_RUNOUT_INVERTING = true; // Should be uncommented and true or false should assigned -//#define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined. - +#ifdef FILAMENT_RUNOUT_SENSOR + const bool FIL_RUNOUT_INVERTING = true; // Should be uncommented and true or false should assigned + #define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined. + #define FILAMENT_RUNOUT_SCRIPT "M600" +#endif + //=========================================================================== //============================ Manual Bed Leveling ========================== //=========================================================================== diff --git a/Marlin/example_configurations/delta/generic/Configuration.h b/Marlin/example_configurations/delta/generic/Configuration.h index 9a1fe48756..4324bb4bf7 100644 --- a/Marlin/example_configurations/delta/generic/Configuration.h +++ b/Marlin/example_configurations/delta/generic/Configuration.h @@ -406,9 +406,12 @@ const bool Z_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the logic // In RAMPS uses servo pin 2. Can be changed in pins file. For other boards pin definition should be made. // It is assumed that when logic high = filament available // when logic low = filament ran out -//const bool FIL_RUNOUT_INVERTING = true; // Should be uncommented and true or false should assigned -//#define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined. - +#ifdef FILAMENT_RUNOUT_SENSOR + const bool FIL_RUNOUT_INVERTING = true; // Should be uncommented and true or false should assigned + #define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined. + #define FILAMENT_RUNOUT_SCRIPT "M600" +#endif + //=========================================================================== //============================ Manual Bed Leveling ========================== //=========================================================================== diff --git a/Marlin/example_configurations/delta/kossel_mini/Configuration.h b/Marlin/example_configurations/delta/kossel_mini/Configuration.h index 33391863eb..fb2f3aca22 100644 --- a/Marlin/example_configurations/delta/kossel_mini/Configuration.h +++ b/Marlin/example_configurations/delta/kossel_mini/Configuration.h @@ -406,9 +406,12 @@ const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic // In RAMPS uses servo pin 2. Can be changed in pins file. For other boards pin definition should be made. // It is assumed that when logic high = filament available // when logic low = filament ran out -//const bool FIL_RUNOUT_INVERTING = true; // Should be uncommented and true or false should assigned -//#define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined. - +#ifdef FILAMENT_RUNOUT_SENSOR + const bool FIL_RUNOUT_INVERTING = true; // Should be uncommented and true or false should assigned + #define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined. + #define FILAMENT_RUNOUT_SCRIPT "M600" +#endif + //=========================================================================== //============================ Manual Bed Leveling ========================== //=========================================================================== diff --git a/Marlin/example_configurations/makibox/Configuration.h b/Marlin/example_configurations/makibox/Configuration.h index 918d5fa8bd..6e8286f3af 100644 --- a/Marlin/example_configurations/makibox/Configuration.h +++ b/Marlin/example_configurations/makibox/Configuration.h @@ -376,9 +376,11 @@ const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic // In RAMPS uses servo pin 2. Can be changed in pins file. For other boards pin definition should be made. // It is assumed that when logic high = filament available // when logic low = filament ran out -//const bool FIL_RUNOUT_INVERTING = true; // Should be uncommented and true or false should assigned -//#define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined. - +#ifdef FILAMENT_RUNOUT_SENSOR + const bool FIL_RUNOUT_INVERTING = true; // Should be uncommented and true or false should assigned + #define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined. + #define FILAMENT_RUNOUT_SCRIPT "M600" +#endif //=========================================================================== //============================ Manual Bed Leveling ========================== //=========================================================================== diff --git a/Marlin/example_configurations/tvrrug/Round2/Configuration.h b/Marlin/example_configurations/tvrrug/Round2/Configuration.h index 2fff0f21e3..43be3262c6 100644 --- a/Marlin/example_configurations/tvrrug/Round2/Configuration.h +++ b/Marlin/example_configurations/tvrrug/Round2/Configuration.h @@ -378,8 +378,11 @@ const bool Z_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the logic // In RAMPS uses servo pin 2. Can be changed in pins file. For other boards pin definition should be made. // It is assumed that when logic high = filament available // when logic low = filament ran out -//const bool FIL_RUNOUT_INVERTING = true; // Should be uncommented and true or false should assigned -//#define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined. +#ifdef FILAMENT_RUNOUT_SENSOR + const bool FIL_RUNOUT_INVERTING = true; // Should be uncommented and true or false should assigned + #define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined. + #define FILAMENT_RUNOUT_SCRIPT "M600" +#endif //=========================================================================== //============================ Manual Bed Leveling ========================== From 26015b02d8b153b4d583f3838ffdd65cd1258831 Mon Sep 17 00:00:00 2001 From: paclema Date: Sun, 3 May 2015 02:39:34 +0200 Subject: [PATCH 78/88] Fixed typo and updated Configuration.h of configurator --- Marlin/Configuration.h | 2 +- Marlin/configurator/config/Configuration.h | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index 535d1319d0..ce5933319b 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -1,4 +1,4 @@ -f#ifndef CONFIGURATION_H +#ifndef CONFIGURATION_H #define CONFIGURATION_H #include "boards.h" diff --git a/Marlin/configurator/config/Configuration.h b/Marlin/configurator/config/Configuration.h index 1d85de9266..24c6021038 100644 --- a/Marlin/configurator/config/Configuration.h +++ b/Marlin/configurator/config/Configuration.h @@ -417,8 +417,11 @@ const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic // In RAMPS uses servo pin 2. Can be changed in pins file. For other boards pin definition should be made. // It is assumed that when logic high = filament available // when logic low = filament ran out -//const bool FIL_RUNOUT_INVERTING = true; // Should be uncommented and true or false should assigned -//#define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined. +#ifdef FILAMENT_RUNOUT_SENSOR + const bool FIL_RUNOUT_INVERTING = true; // Should be uncommented and true or false should assigned + #define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined. + #define FILAMENT_RUNOUT_SCRIPT "M600" +#endif //=========================================================================== //============================ Manual Bed Leveling ========================== From 35493e1af9d722893a6061bfe01b9b34ded83a65 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sun, 3 May 2015 16:03:05 -0700 Subject: [PATCH 79/88] Tweak to planner.cpp position.debug --- Marlin/planner.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Marlin/planner.cpp b/Marlin/planner.cpp index a8558d6c49..0b9efb8d78 100644 --- a/Marlin/planner.cpp +++ b/Marlin/planner.cpp @@ -959,7 +959,7 @@ float junction_deviation = 0.1; vector_3 position = vector_3(st_get_position_mm(X_AXIS), st_get_position_mm(Y_AXIS), st_get_position_mm(Z_AXIS)); //position.debug("in plan_get position"); - //plan_bed_level_matrix.debug("in plan_get bed_level"); + //plan_bed_level_matrix.debug("in plan_get_position"); matrix_3x3 inverse = matrix_3x3::transpose(plan_bed_level_matrix); //inverse.debug("in plan_get inverse"); position.apply_rotation(inverse); @@ -981,10 +981,10 @@ float junction_deviation = 0.1; apply_rotation_xyz(plan_bed_level_matrix, x, y, z); #endif - float nx = position[X_AXIS] = lround(x * axis_steps_per_unit[X_AXIS]); - float ny = position[Y_AXIS] = lround(y * axis_steps_per_unit[Y_AXIS]); - float nz = position[Z_AXIS] = lround(z * axis_steps_per_unit[Z_AXIS]); - float ne = position[E_AXIS] = lround(e * axis_steps_per_unit[E_AXIS]); + float nx = position[X_AXIS] = lround(x * axis_steps_per_unit[X_AXIS]), + ny = position[Y_AXIS] = lround(y * axis_steps_per_unit[Y_AXIS]), + nz = position[Z_AXIS] = lround(z * axis_steps_per_unit[Z_AXIS]), + ne = position[E_AXIS] = lround(e * axis_steps_per_unit[E_AXIS]); st_set_position(nx, ny, nz, ne); previous_nominal_speed = 0.0; // Resets planner junction speeds. Assumes start from rest. From 1285784a49da80e7f37a8568a6d44bbbf03e918f Mon Sep 17 00:00:00 2001 From: Brian Gilbert Date: Mon, 4 May 2015 09:10:42 +1000 Subject: [PATCH 80/88] Add Boots Industries V2.5 example configuration --- .../delta/biv2.5/Configuration.h | 822 ++++++++++++++++++ .../delta/biv2.5/Configuration_adv.h | 552 ++++++++++++ 2 files changed, 1374 insertions(+) create mode 100644 Marlin/example_configurations/delta/biv2.5/Configuration.h create mode 100644 Marlin/example_configurations/delta/biv2.5/Configuration_adv.h diff --git a/Marlin/example_configurations/delta/biv2.5/Configuration.h b/Marlin/example_configurations/delta/biv2.5/Configuration.h new file mode 100644 index 0000000000..65983b3604 --- /dev/null +++ b/Marlin/example_configurations/delta/biv2.5/Configuration.h @@ -0,0 +1,822 @@ +#ifndef CONFIGURATION_H +#define CONFIGURATION_H + +#include "boards.h" + +//=========================================================================== +//============================= Getting Started ============================= +//=========================================================================== +/* +Here are some standard links for getting your machine calibrated: + * http://reprap.org/wiki/Calibration + * http://youtu.be/wAL9d7FgInk + * http://calculator.josefprusa.cz + * http://reprap.org/wiki/Triffid_Hunter%27s_Calibration_Guide + * http://www.thingiverse.com/thing:5573 + * https://sites.google.com/site/repraplogphase/calibration-of-your-reprap + * http://www.thingiverse.com/thing:298812 +*/ + +// This configuration file contains the basic settings. +// Advanced settings can be found in Configuration_adv.h +// BASIC SETTINGS: select your board type, temperature sensor type, axis scaling, and endstop configuration + +//=========================================================================== +//============================= DELTA Printer =============================== +//=========================================================================== +// For a Delta printer replace the configuration files with the files in the +// example_configurations/delta directory. +// + +//=========================================================================== +//============================= SCARA Printer =============================== +//=========================================================================== +// For a Delta printer replace the configuration files with the files in the +// example_configurations/SCARA directory. +// + +// User-specified version info of this build to display in [Pronterface, etc] terminal window during +// startup. Implementation of an idea by Prof Braino to inform user that any changes made to this +// build by the user have been successfully uploaded into firmware. +#define STRING_VERSION "1.0.3 dev" +#define STRING_VERSION_CONFIG_H __DATE__ " " __TIME__ // build date and time +#define STRING_CONFIG_H_AUTHOR "(none, default config)" // Who made the changes. +#define STRING_SPLASH_LINE1 "v" STRING_VERSION // will be shown during bootup in line 1 +//#define STRING_SPLASH_LINE2 STRING_VERSION_CONFIG_H // will be shown during bootup in line2 + +// SERIAL_PORT selects which serial port should be used for communication with the host. +// This allows the connection of wireless adapters (for instance) to non-default port pins. +// Serial port 0 is still used by the Arduino bootloader regardless of this setting. +#define SERIAL_PORT 0 + +// This determines the communication speed of the printer +#define BAUDRATE 250000 + +// This enables the serial port associated to the Bluetooth interface +//#define BTENABLED // Enable BT interface on AT90USB devices + +// The following define selects which electronics board you have. +// Please choose the name from boards.h that matches your setup +#ifndef MOTHERBOARD + #define MOTHERBOARD BOARD_RUMBA +#endif + +// Optional custom name for your RepStrap or other custom machine +// Displayed in the LCD "Ready" message +#define CUSTOM_MACHINE_NAME "BI V2.5" + +// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines) +// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4) +// #define MACHINE_UUID "00000000-0000-0000-0000-000000000000" + +// This defines the number of extruders +#define EXTRUDERS 2 + +//// The following define selects which power supply you have. Please choose the one that matches your setup +// 1 = ATX +// 2 = X-Box 360 203Watts (the blue wire connected to PS_ON and the red wire to VCC) + +#define POWER_SUPPLY 1 + +// Define this to have the electronics keep the power supply off on startup. If you don't know what this is leave it. +// #define PS_DEFAULT_OFF + + +//=========================================================================== +//============================== Delta Settings ============================= +//=========================================================================== +// Enable DELTA kinematics and most of the default configuration for Deltas +#define DELTA + +// Make delta curves from many straight lines (linear interpolation). +// This is a trade-off between visible corners (not enough segments) +// and processor overload (too many expensive sqrt calls). +#define DELTA_SEGMENTS_PER_SECOND 100 + +// NOTE NB all values for DELTA_* values MUST be floating point, so always have a decimal point in them + +// Center-to-center distance of the holes in the diagonal push rods. +#define DELTA_DIAGONAL_ROD 440.0 // mm + +// Horizontal offset from middle of printer to smooth rod center. +#define DELTA_SMOOTH_ROD_OFFSET 330.0 // mm + +// Horizontal offset of the universal joints on the end effector. +#define DELTA_EFFECTOR_OFFSET 50.0 // mm + +// Horizontal offset of the universal joints on the carriages. +#define DELTA_CARRIAGE_OFFSET 20.0 // mm + +// Horizontal distance bridged by diagonal push rods when effector is centered. +#define DELTA_RADIUS (DELTA_SMOOTH_ROD_OFFSET-DELTA_EFFECTOR_OFFSET-DELTA_CARRIAGE_OFFSET) + +// Print surface diameter/2 minus unreachable space (avoid collisions with vertical towers). +#define DELTA_PRINTABLE_RADIUS 160 + + +//=========================================================================== +//============================= Thermal Settings ============================ +//=========================================================================== +// +//--NORMAL IS 4.7kohm PULLUP!-- 1kohm pullup can be used on hotend sensor, using correct resistor and table +// +//// Temperature sensor settings: +// -2 is thermocouple with MAX6675 (only for sensor 0) +// -1 is thermocouple with AD595 +// 0 is not used +// 1 is 100k thermistor - best choice for EPCOS 100k (4.7k pullup) +// 2 is 200k thermistor - ATC Semitec 204GT-2 (4.7k pullup) +// 3 is Mendel-parts thermistor (4.7k pullup) +// 4 is 10k thermistor !! do not use it for a hotend. It gives bad resolution at high temp. !! +// 5 is 100K thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (4.7k pullup) +// 6 is 100k EPCOS - Not as accurate as table 1 (created using a fluke thermocouple) (4.7k pullup) +// 7 is 100k Honeywell thermistor 135-104LAG-J01 (4.7k pullup) +// 71 is 100k Honeywell thermistor 135-104LAF-J01 (4.7k pullup) +// 8 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) +// 9 is 100k GE Sensing AL03006-58.2K-97-G1 (4.7k pullup) +// 10 is 100k RS thermistor 198-961 (4.7k pullup) +// 11 is 100k beta 3950 1% thermistor (4.7k pullup) +// 12 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup) (calibrated for Makibox hot bed) +// 13 is 100k Hisens 3950 1% up to 300°C for hotend "Simple ONE " & "Hotend "All In ONE" +// 20 is the PT100 circuit found in the Ultimainboard V2.x +// 60 is 100k Maker's Tool Works Kapton Bed Thermistor beta=3950 +// +// 1k ohm pullup tables - This is not normal, you would have to have changed out your 4.7k for 1k +// (but gives greater accuracy and more stable PID) +// 51 is 100k thermistor - EPCOS (1k pullup) +// 52 is 200k thermistor - ATC Semitec 204GT-2 (1k pullup) +// 55 is 100k thermistor - ATC Semitec 104GT-2 (Used in ParCan & J-Head) (1k pullup) +// +// 1047 is Pt1000 with 4k7 pullup +// 1010 is Pt1000 with 1k pullup (non standard) +// 147 is Pt100 with 4k7 pullup +// 110 is Pt100 with 1k pullup (non standard) +// 998 and 999 are Dummy Tables. They will ALWAYS read 25°C or the temperature defined below. +// Use it for Testing or Development purposes. NEVER for production machine. +// #define DUMMY_THERMISTOR_998_VALUE 25 +// #define DUMMY_THERMISTOR_999_VALUE 100 +// :{ '0': "Not used", '4': "10k !! do not use for a hotend. Bad resolution at high temp. !!", '1': "100k / 4.7k - EPCOS", '51': "100k / 1k - EPCOS", '6': "100k / 4.7k EPCOS - Not as accurate as Table 1", '5': "100K / 4.7k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)", '7': "100k / 4.7k Honeywell 135-104LAG-J01", '71': "100k / 4.7k Honeywell 135-104LAF-J01", '8': "100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT", '9': "100k / 4.7k GE Sensing AL03006-58.2K-97-G1", '10': "100k / 4.7k RS 198-961", '11': "100k / 4.7k beta 3950 1%", '12': "100k / 4.7k 0603 SMD Vishay NTCS0603E3104FXT (calibrated for Makibox hot bed)", '13': "100k Hisens 3950 1% up to 300°C for hotend 'Simple ONE ' & hotend 'All In ONE'", '60': "100k Maker's Tool Works Kapton Bed Thermistor beta=3950", '55': "100k / 1k - ATC Semitec 104GT-2 (Used in ParCan & J-Head)", '2': "200k / 4.7k - ATC Semitec 204GT-2", '52': "200k / 1k - ATC Semitec 204GT-2", '-2': "Thermocouple + MAX6675 (only for sensor 0)", '-1': "Thermocouple + AD595", '3': "Mendel-parts / 4.7k", '1047': "Pt1000 / 4.7k", '1010': "Pt1000 / 1k (non standard)", '20': "PT100 (Ultimainboard V2.x)", '147': "Pt100 / 4.7k", '110': "Pt100 / 1k (non-standard)", '998': "Dummy 1", '999': "Dummy 2" } +#define TEMP_SENSOR_0 5 +#define TEMP_SENSOR_1 5 +#define TEMP_SENSOR_2 0 +#define TEMP_SENSOR_3 0 +#define TEMP_SENSOR_BED 1 + +// This makes temp sensor 1 a redundant sensor for sensor 0. If the temperatures difference between these sensors is to high the print will be aborted. +//#define TEMP_SENSOR_1_AS_REDUNDANT +#define MAX_REDUNDANT_TEMP_SENSOR_DIFF 10 + +// Actual temperature must be close to target for this long before M109 returns success +#define TEMP_RESIDENCY_TIME 10 // (seconds) +#define TEMP_HYSTERESIS 3 // (degC) range of +/- temperatures considered "close" to the target one +#define TEMP_WINDOW 1 // (degC) Window around target to start the residency timer x degC early. + +// The minimal temperature defines the temperature below which the heater will not be enabled It is used +// to check that the wiring to the thermistor is not broken. +// Otherwise this would lead to the heater being powered on all the time. +#define HEATER_0_MINTEMP 5 +#define HEATER_1_MINTEMP 5 +#define HEATER_2_MINTEMP 5 +#define HEATER_3_MINTEMP 5 +#define BED_MINTEMP 5 + +// When temperature exceeds max temp, your heater will be switched off. +// This feature exists to protect your hotend from overheating accidentally, but *NOT* from thermistor short/failure! +// You should 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 BED_MAXTEMP 150 + +// If your bed has low resistance e.g. .6 ohm and throws the fuse you can duty cycle it to reduce the +// average current. The value should be an integer and the heat bed will be turned on for 1 interval of +// HEATER_BED_DUTY_CYCLE_DIVIDER intervals. +//#define HEATER_BED_DUTY_CYCLE_DIVIDER 4 + +// If you want the M105 heater power reported in watts, define the BED_WATTS, and (shared for all extruders) EXTRUDER_WATTS +//#define EXTRUDER_WATTS (12.0*12.0/6.7) // P=I^2/R +//#define BED_WATTS (12.0*12.0/1.1) // P=I^2/R + +//=========================================================================== +//============================= PID Settings ================================ +//=========================================================================== +// PID Tuning Guide here: http://reprap.org/wiki/PID_Tuning + +// 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 +#ifdef PIDTEMP + //#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_EXTRUDER // 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 then PID_FUNCTIONAL_RANGE then the PID will be shut off and the heater will be set to min/max. + #define PID_INTEGRAL_DRIVE_MAX PID_MAX //limit for the integral term + #define K1 0.95 //smoothing factor within the PID + +// If you are using a pre-configured hotend then you can use one of the value sets by uncommenting it +// Ultimaker + #define DEFAULT_Kp 22.2 + #define DEFAULT_Ki 1.08 + #define DEFAULT_Kd 114 + +// 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 =============== +//=========================================================================== +// Select PID or bang-bang with PIDTEMPBED. If bang-bang, BED_LIMIT_SWITCHING will enable hysteresis +// +// Uncomment this to enable PID on the bed. It uses the same frequency PWM as the extruder. +// If your PID_dT is the default, and correct for your hardware/configuration, that means 7.689Hz, +// which is fine for driving a square wave into a resistive load and does not significantly impact you FET heating. +// This also works fine on a Fotek SSR-10DA Solid State Relay into a 250W heater. +// If your configuration is significantly different than this and you don't understand the issues involved, you probably +// shouldn't use bed PID until someone else verifies your hardware works. +// If this is enabled, find your own PID constants below. +//#define PIDTEMPBED +// +//#define BED_LIMIT_SWITCHING + +// This sets the max power delivered to the bed, and replaces the HEATER_BED_DUTY_CYCLE_DIVIDER option. +// all forms of bed control obey this (PID, bang-bang, bang-bang with hysteresis) +// setting this to anything other than 255 enables a form of PWM to the bed just like HEATER_BED_DUTY_CYCLE_DIVIDER did, +// so you shouldn't use it unless you are OK with PWM on your bed. (see the comment on enabling PIDTEMPBED) +#define MAX_BED_POWER 255 // limits duty cycle to bed; 255=full current + +//#define PID_BED_DEBUG // Sends debug data to the serial port. + +#ifdef PIDTEMPBED +//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 + + +//this prevents dangerous Extruder moves, i.e. if the temperature is under the limit +//can be software-disabled for whatever purposes by +#define PREVENT_DANGEROUS_EXTRUDE +//if PREVENT_DANGEROUS_EXTRUDE is on, you can still disable (uncomment) very long bits of extrusion separately. +#define PREVENT_LENGTHY_EXTRUDE + +#define EXTRUDE_MINTEMP 170 +#define EXTRUDE_MAXLENGTH (X_MAX_LENGTH+Y_MAX_LENGTH) //prevent extrusion of very large distances. + +//=========================================================================== +//============================= Thermal Runaway Protection ================== +//=========================================================================== +/* +This is a feature to protect your printer from burn up in flames if it has +a thermistor coming off place (this happened to a friend of mine recently and +motivated me writing this feature). + +The issue: If a thermistor come off, it will read a lower temperature than actual. +The system will turn the heater on forever, burning up the filament and anything +else around. + +After the temperature reaches the target for the first time, this feature will +start measuring for how long the current temperature stays below the target +minus _HYSTERESIS (set_temperature - THERMAL_RUNAWAY_PROTECTION_HYSTERESIS). + +If it stays longer than _PERIOD, it means the thermistor temperature +cannot catch up with the target, so something *may be* wrong. Then, to be on the +safe side, the system will he halt. + +Bear in mind the count down will just start AFTER the first time the +thermistor temperature is over the target, so you will have no problem if +your extruder heater takes 2 minutes to hit the target on heating. + +*/ +// If you want to enable this feature for all your extruder heaters, +// uncomment the 2 defines below: + +// Parameters for all extruder heaters +#define THERMAL_RUNAWAY_PROTECTION_PERIOD 40 //in seconds +#define THERMAL_RUNAWAY_PROTECTION_HYSTERESIS 4 // in degree Celsius + +// If you want to enable this feature for your bed heater, +// uncomment the 2 defines below: + +// Parameters for the bed heater +#define THERMAL_RUNAWAY_PROTECTION_BED_PERIOD 120 //in seconds +#define THERMAL_RUNAWAY_PROTECTION_BED_HYSTERESIS 4 // in degree Celsius + +//=========================================================================== +//============================= Mechanical Settings ========================= +//=========================================================================== + +// Uncomment this option to enable CoreXY kinematics +// #define COREXY + +// Enable this option for Toshiba steppers +// #define CONFIG_STEPPERS_TOSHIBA + +// coarse Endstop Settings +#define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors + +#ifndef ENDSTOPPULLUPS + // fine endstop settings: Individual pullups. will be ignored if ENDSTOPPULLUPS is defined + // #define ENDSTOPPULLUP_XMAX + // #define ENDSTOPPULLUP_YMAX + // #define ENDSTOPPULLUP_ZMAX + // #define ENDSTOPPULLUP_XMIN + // #define ENDSTOPPULLUP_YMIN + // #define ENDSTOPPULLUP_ZMIN +#endif + +// Mechanical endstop with COM to ground and NC to Signal uses "false" here (most common setup). +const bool X_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. +const bool Y_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. +const bool Z_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. +const bool X_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. +const bool Y_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. +const bool Z_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. +const bool Z_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop. +//#define DISABLE_MAX_ENDSTOPS +#define DISABLE_MIN_ENDSTOPS // Deltas only use min endstops for probing + +// For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1 +#define X_ENABLE_ON 0 +#define Y_ENABLE_ON 0 +#define Z_ENABLE_ON 0 +#define E_ENABLE_ON 0 // For all extruders + +// Disables axis when it's not being used. +// WARNING: When motors turn off there is a chance of losing position accuracy! +#define DISABLE_X false +#define DISABLE_Y false +#define DISABLE_Z false +#define DISABLE_E false // For all extruders +#define DISABLE_INACTIVE_EXTRUDER true //disable only inactive extruders and keep active extruder enabled + +// Invert the stepper direction. Change (or reverse the motor connector) if an axis goes the wrong way. +#define INVERT_X_DIR false // DELTA does not invert +#define INVERT_Y_DIR false +#define INVERT_Z_DIR false +#define INVERT_E0_DIR false +#define INVERT_E1_DIR false +#define INVERT_E2_DIR false +#define INVERT_E3_DIR false + +// ENDSTOP SETTINGS: +// Sets direction of endstops when homing; 1=MAX, -1=MIN +#define X_HOME_DIR 1 // deltas always home to max +#define Y_HOME_DIR 1 +#define Z_HOME_DIR 1 + +#define min_software_endstops true // If true, axis won't move to coordinates less than HOME_POS. +#define max_software_endstops true // If true, axis won't move to coordinates greater than the defined lengths below. + +// Travel limits after homing (units are in mm) +#define X_MIN_POS -DELTA_PRINTABLE_RADIUS +#define Y_MIN_POS -DELTA_PRINTABLE_RADIUS +#define Z_MIN_POS 0 +#define X_MAX_POS DELTA_PRINTABLE_RADIUS +#define Y_MAX_POS DELTA_PRINTABLE_RADIUS +#define Z_MAX_POS MANUAL_Z_HOME_POS + +//=========================================================================== +//============================= Filament Runout Sensor ====================== +//=========================================================================== +//#define FILAMENT_RUNOUT_SENSOR // Uncomment for defining a filament runout sensor such as a mechanical or opto endstop to check the existence of filament + // In RAMPS uses servo pin 2. Can be changed in pins file. For other boards pin definition should be made. + // It is assumed that when logic high = filament available + // when logic low = filament ran out +//const bool FIL_RUNOUT_INVERTING = true; // Should be uncommented and true or false should assigned +//#define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined. + +//=========================================================================== +//============================ Manual Bed Leveling ========================== +//=========================================================================== + +// #define MANUAL_BED_LEVELING // Add display menu option for bed leveling +// #define MESH_BED_LEVELING // Enable mesh bed leveling + +#ifdef MANUAL_BED_LEVELING + #define MBL_Z_STEP 0.025 +#endif // MANUAL_BED_LEVELING + +#ifdef MESH_BED_LEVELING + #define MESH_MIN_X 10 + #define MESH_MAX_X (X_MAX_POS - MESH_MIN_X) + #define MESH_MIN_Y 10 + #define MESH_MAX_Y (Y_MAX_POS - MESH_MIN_Y) + #define MESH_NUM_X_POINTS 3 // Don't use more than 7 points per axis, implementation limited + #define MESH_NUM_Y_POINTS 3 + #define MESH_HOME_SEARCH_Z 4 // Z after Home, bed somewhere below but above 0.0 +#endif // MESH_BED_LEVELING + +//=========================================================================== +//============================= Bed Auto Leveling =========================== +//=========================================================================== + +//#define ENABLE_AUTO_BED_LEVELING // Delete the comment to enable (remove // at the start of the line) +//#define Z_PROBE_REPEATABILITY_TEST // Z-Probe Repeatability test is not supported in Deltas yet. + +#ifdef ENABLE_AUTO_BED_LEVELING + + // There are 2 different ways to specify probing locations + // + // - "grid" mode + // Probe several points in a rectangular grid. + // You specify the rectangle and the density of sample points. + // This mode is preferred because there are more measurements. + // + // - "3-point" mode + // Probe 3 arbitrary points on the bed (that aren't colinear) + // You specify the XY coordinates of all 3 points. + + // Enable this to sample the bed in a grid (least squares solution) + // Note: this feature generates 10KB extra code size + #define AUTO_BED_LEVELING_GRID // Deltas only support grid mode + + #ifdef AUTO_BED_LEVELING_GRID + + #define DELTA_PROBABLE_RADIUS (DELTA_PRINTABLE_RADIUS - 10) + + #define LEFT_PROBE_BED_POSITION -DELTA_PROBABLE_RADIUS + #define RIGHT_PROBE_BED_POSITION DELTA_PROBABLE_RADIUS + #define FRONT_PROBE_BED_POSITION -DELTA_PROBABLE_RADIUS + #define BACK_PROBE_BED_POSITION DELTA_PROBABLE_RADIUS + + #define MIN_PROBE_EDGE 10 // The probe square sides can be no smaller than this + + // Non-linear bed leveling will be used. + // Compensate by interpolating between the nearest four Z probe values for each point. + // Useful for deltas where the print surface may appear like a bowl or dome shape. + // Works best with ACCURATE_BED_LEVELING_POINTS 5 or higher. + #define AUTO_BED_LEVELING_GRID_POINTS 9 + + #else // !AUTO_BED_LEVELING_GRID + + // Arbitrary points to probe. A simple cross-product + // is used to estimate the plane of the bed. + #define ABL_PROBE_PT_1_X 15 + #define ABL_PROBE_PT_1_Y 180 + #define ABL_PROBE_PT_2_X 15 + #define ABL_PROBE_PT_2_Y 20 + #define ABL_PROBE_PT_3_X 170 + #define ABL_PROBE_PT_3_Y 20 + + #endif // AUTO_BED_LEVELING_GRID + + // Offsets to the probe relative to the extruder tip (Hotend - Probe) + // X and Y offsets must be integers + #define X_PROBE_OFFSET_FROM_EXTRUDER 0 // Probe on: -left +right + #define Y_PROBE_OFFSET_FROM_EXTRUDER -10 // Probe on: -front +behind + #define Z_PROBE_OFFSET_FROM_EXTRUDER -3.5 // -below (always!) + + #define Z_RAISE_BEFORE_HOMING 4 // (in mm) Raise Z before homing (G28) for Probe Clearance. + // Be sure you have this distance over your Z_MAX_POS in case + + #define XY_TRAVEL_SPEED 4000 // X and Y axis travel speed between probes, in mm/min + + #define Z_RAISE_BEFORE_PROBING 15 //How much the extruder will be raised before traveling to the first probing point. + #define Z_RAISE_BETWEEN_PROBINGS 5 //How much the extruder will be raised when traveling from between next probing points + #define Z_RAISE_AFTER_PROBING 50 //How much the extruder will be raised after the last probing point. + +// #define Z_PROBE_END_SCRIPT "G1 Z10 F12000\nG1 X15 Y330\nG1 Z0.5\nG1 Z10" //These commands will be executed in the end of G29 routine. + //Useful to retract a deployable probe. + + //#define Z_PROBE_SLED // turn on if you have a z-probe mounted on a sled like those designed by Charles Bell + //#define SLED_DOCKING_OFFSET 5 // the extra distance the X axis must travel to pickup the sled. 0 should be fine but you can push it further if you'd like. + + // Allen key retractable z-probe as seen on many Kossel delta printers - http://reprap.org/wiki/Kossel#Automatic_bed_leveling_probe + // Deploys by touching z-axis belt. Retracts by pushing the probe down. Uses Z_MIN_PIN. + //#define Z_PROBE_ALLEN_KEY + #ifdef Z_PROBE_ALLEN_KEY + #define Z_PROBE_ALLEN_KEY_DEPLOY_X 30 + #define Z_PROBE_ALLEN_KEY_DEPLOY_Y DELTA_PRINTABLE_RADIUS + #define Z_PROBE_ALLEN_KEY_DEPLOY_Z 100 + + #define Z_PROBE_ALLEN_KEY_STOW_X -64 + #define Z_PROBE_ALLEN_KEY_STOW_Y 56 + #define Z_PROBE_ALLEN_KEY_STOW_Z 23 + #define Z_PROBE_ALLEN_KEY_STOW_DEPTH 20 + #endif + + //If defined, the Probe servo will be turned on only during movement and then turned off to avoid jerk + //The value is the delay to turn the servo off after powered on - depends on the servo speed; 300ms is good value, but you can try lower it. + // You MUST HAVE the SERVO_ENDSTOPS defined to use here a value higher than zero otherwise your code will not compile. + +// #define PROBE_SERVO_DEACTIVATION_DELAY 300 + + +//If you have enabled the Bed Auto Leveling and are using the same Z Probe for Z Homing, +//it is highly recommended you let this Z_SAFE_HOMING enabled!!! + + #define Z_SAFE_HOMING // This feature is meant to avoid Z homing with probe outside the bed area. + // When defined, it will: + // - Allow Z homing only after X and Y homing AND stepper drivers still enabled + // - If stepper drivers timeout, it will need X and Y homing again before Z homing + // - Position the probe in a defined XY point before Z Homing when homing all axis (G28) + // - Block Z homing only when the probe is outside bed area. + + #ifdef Z_SAFE_HOMING + + #define Z_SAFE_HOMING_X_POINT (X_MAX_LENGTH/2) // X point for Z homing when homing all axis (G28) + #define Z_SAFE_HOMING_Y_POINT (Y_MAX_LENGTH/2) // Y point for Z homing when homing all axis (G28) + + #endif + + // Support for a dedicated Z PROBE endstop separate from the Z MIN endstop. + // If you would like to use both a Z PROBE and a Z MIN endstop together or just a Z PROBE with a custom pin, uncomment #define Z_PROBE_ENDSTOP and read the instructions below. + // If you want to still use the Z min endstop for homing, disable Z_SAFE_HOMING above. Eg; to park the head outside the bed area when homing with G28. + // WARNING: The Z MIN endstop will need to set properly as it would without a Z PROBE to prevent head crashes and premature stopping during a print. + // To use a separate Z PROBE endstop, you must have a Z_PROBE_PIN defined in the pins.h file for your control board. + // If you are using a servo based Z PROBE, you will need to enable NUM_SERVOS, SERVO_ENDSTOPS and SERVO_ENDSTOPS_ANGLES in the R/C Servo below. + // RAMPS 1.3/1.4 boards may be able to use the 5V, Ground and the D32 pin in the Aux 4 section of the RAMPS board. Use 5V for powered sensors, otherwise connect to ground and D32 + // for normally closed configuration and 5V and D32 for normally open configurations. Normally closed configuration is advised and assumed. + // The D32 pin in Aux 4 on RAMPS maps to the Arduino D32 pin. Z_PROBE_PIN is setting the pin to use on the Arduino. Since the D32 pin on the RAMPS maps to D32 on Arduino, this works. + // D32 is currently selected in the RAMPS 1.3/1.4 pin file. All other boards will need changes to the respective pins_XXXXX.h file. + // WARNING: Setting the wrong pin may have unexpected and potentially disastrous outcomes. Use with caution and do your homework. + + //#define Z_PROBE_ENDSTOP + +#endif // ENABLE_AUTO_BED_LEVELING + + +// The position of the homing switches +#define MANUAL_HOME_POSITIONS // If defined, MANUAL_*_HOME_POS below will be used +//#define BED_CENTER_AT_0_0 // If defined, the center of the bed is at (X=0, Y=0) + +// Manual homing switch locations: +// For deltabots this means top and center of the Cartesian print volume. +#ifdef MANUAL_HOME_POSITIONS + #define MANUAL_X_HOME_POS 0 + #define MANUAL_Y_HOME_POS 0 + #define MANUAL_Z_HOME_POS 405 // For delta: Distance between nozzle and print surface after homing. +#endif + +/** + * MOVEMENT SETTINGS + */ + + +// delta homing speeds must be the same on xyz +#define HOMING_FEEDRATE {200*30, 200*30, 200*30, 0} // set the homing speeds (mm/min) + +// default settings +// delta speeds must be the same on xyz +#define DEFAULT_AXIS_STEPS_PER_UNIT {72.9, 72.9, 72.9, 291} // default steps per unit for BI v2.5 (cable drive) +#define DEFAULT_MAX_FEEDRATE {500, 500, 500, 150} // (mm/sec) +#define DEFAULT_MAX_ACCELERATION {9000,9000,9000,10000} // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for skeinforge 40+, for older versions raise them a lot. + +#define DEFAULT_ACCELERATION 3000 // X, Y, Z and E acceleration in mm/s^2 for printing moves +#define DEFAULT_RETRACT_ACCELERATION 3000 // E acceleration in mm/s^2 for retracts +#define DEFAULT_TRAVEL_ACCELERATION 3000 // X, Y, Z acceleration in mm/s^2 for travel (non printing) moves + +// Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing). +// The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder). +// For the other hotends it is their distance from the extruder 0 hotend. +// #define EXTRUDER_OFFSET_X {0.0, 20.00} // (in mm) for each extruder, offset of the hotend on the X axis +// #define EXTRUDER_OFFSET_Y {0.0, 5.00} // (in mm) for each extruder, offset of the hotend on the Y axis + +// The speed change that does not require acceleration (i.e. the software might assume it can be done instantaneously) +#define DEFAULT_XYJERK 15.0 // (mm/sec) +#define DEFAULT_ZJERK 15.0 // (mm/sec) Must be same as XY for delta +#define DEFAULT_EJERK 5.0 // (mm/sec) + + +//============================================================================= +//============================= Additional Features =========================== +//============================================================================= + +// Custom M code points +#define CUSTOM_M_CODES +#ifdef CUSTOM_M_CODES + #ifdef ENABLE_AUTO_BED_LEVELING + #define CUSTOM_M_CODE_SET_Z_PROBE_OFFSET 851 + #define Z_PROBE_OFFSET_RANGE_MIN -20 + #define Z_PROBE_OFFSET_RANGE_MAX 20 + #endif +#endif + + +// EEPROM +// The microcontroller can store settings in the EEPROM, e.g. max velocity... +// M500 - stores parameters in EEPROM +// M501 - reads parameters from EEPROM (if you need reset them after you changed them temporarily). +// M502 - reverts to the default "factory settings". You still need to store them in EEPROM afterwards if you want to. +//define this to enable EEPROM support +//#define EEPROM_SETTINGS + +#ifdef EEPROM_SETTINGS + // To disable EEPROM Serial responses and decrease program space by ~1700 byte: comment this out: + #define EEPROM_CHITCHAT // please keep turned on if you can. +#endif + +// Preheat Constants +#define PLA_PREHEAT_HOTEND_TEMP 180 +#define PLA_PREHEAT_HPB_TEMP 70 +#define PLA_PREHEAT_FAN_SPEED 255 // Insert Value between 0 and 255 + +#define ABS_PREHEAT_HOTEND_TEMP 240 +#define ABS_PREHEAT_HPB_TEMP 100 +#define ABS_PREHEAT_FAN_SPEED 255 // Insert Value between 0 and 255 + +//==============================LCD and SD support============================= + +// Define your display language below. Replace (en) with your language code and uncomment. +// en, pl, fr, de, es, ru, it, pt, pt-br, fi, an, nl, ca, eu, kana, kana_utf8, cn, test +// See also language.h +#define LANGUAGE_INCLUDE GENERATE_LANGUAGE_INCLUDE(en) + +// Choose ONE of these 3 charsets. This has to match your hardware. Ignored for full graphic display. +// To find out what type you have - compile with (test) - upload - click to get the menu. You'll see two typical lines from the upper half of the charset. +// See also documentation/LCDLanguageFont.md + #define DISPLAY_CHARSET_HD44780_JAPAN // this is the most common hardware + //#define DISPLAY_CHARSET_HD44780_WESTERN + //#define DISPLAY_CHARSET_HD44780_CYRILLIC + +//#define ULTRA_LCD //general LCD support, also 16x2 +//#define DOGLCD // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family) +//#define SDSUPPORT // Enable SD Card Support in Hardware Console +//#define SDSLOW // Use slower SD transfer mode (not normally needed - uncomment if you're getting volume init error) +//#define SD_CHECK_AND_RETRY // Use CRC checks and retries on the SD communication +//#define ENCODER_PULSES_PER_STEP 1 // Increase if you have a high resolution encoder +//#define ENCODER_STEPS_PER_MENU_ITEM 5 // Set according to ENCODER_PULSES_PER_STEP or your liking +//#define ULTIMAKERCONTROLLER //as available from the Ultimaker online store. +//#define ULTIPANEL //the UltiPanel as on Thingiverse +//#define LCD_FEEDBACK_FREQUENCY_DURATION_MS 100 // the duration the buzzer plays the UI feedback sound. ie Screen Click +//#define LCD_FEEDBACK_FREQUENCY_HZ 1000 // this is the tone frequency the buzzer plays when on UI feedback. ie Screen Click + // 0 to disable buzzer feedback. Test with M300 S P + +// PanelOne from T3P3 (via RAMPS 1.4 AUX2/AUX3) +// http://reprap.org/wiki/PanelOne +//#define PANEL_ONE + +// The MaKr3d Makr-Panel with graphic controller and SD support +// http://reprap.org/wiki/MaKr3d_MaKrPanel +//#define MAKRPANEL + +// The Panucatt Devices Viki 2.0 and mini Viki with Graphic LCD +// http://panucatt.com +// ==> REMEMBER TO INSTALL U8glib to your ARDUINO library folder: http://code.google.com/p/u8glib/wiki/u8glib +//#define VIKI2 +//#define miniVIKI + +// The RepRapDiscount Smart Controller (white PCB) +// http://reprap.org/wiki/RepRapDiscount_Smart_Controller +//#define REPRAP_DISCOUNT_SMART_CONTROLLER + +// The GADGETS3D G3D LCD/SD Controller (blue PCB) +// http://reprap.org/wiki/RAMPS_1.3/1.4_GADGETS3D_Shield_with_Panel +//#define G3D_PANEL + +// The RepRapDiscount FULL GRAPHIC Smart Controller (quadratic white PCB) +// http://reprap.org/wiki/RepRapDiscount_Full_Graphic_Smart_Controller +// +// ==> REMEMBER TO INSTALL U8glib to your ARDUINO library folder: http://code.google.com/p/u8glib/wiki/u8glib +#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER + +// The RepRapWorld REPRAPWORLD_KEYPAD v1.1 +// http://reprapworld.com/?products_details&products_id=202&cPath=1591_1626 +//#define REPRAPWORLD_KEYPAD +//#define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0 // how much should be moved when a key is pressed, eg 10.0 means 10mm per click + +// The Elefu RA Board Control Panel +// http://www.elefu.com/index.php?route=product/product&product_id=53 +// REMEMBER TO INSTALL LiquidCrystal_I2C.h in your ARDUINO library folder: https://github.com/kiyoshigawa/LiquidCrystal_I2C +//#define RA_CONTROL_PANEL + +// Delta calibration menu +// uncomment to add three points calibration menu option. +// See http://minow.blogspot.com/index.html#4918805519571907051 +// If needed, adjust the X, Y, Z calibration coordinates +// in ultralcd.cpp@lcd_delta_calibrate_menu() +// #define DELTA_CALIBRATION_MENU + +/** + * I2C Panels + */ + +//#define LCD_I2C_SAINSMART_YWROBOT + +// PANELOLU2 LCD with status LEDs, separate encoder and click inputs +//#define LCD_I2C_PANELOLU2 + +// Panucatt VIKI LCD with status LEDs, integrated click & L/R/U/P buttons, separate encoder inputs +//#define LCD_I2C_VIKI + +// Shift register panels +// --------------------- +// 2 wire Non-latching LCD SR from: +// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/schematics#!shiftregister-connection + +//#define SAV_3DLCD + +// Increase the FAN pwm frequency. Removes the PWM noise but increases heating in the FET/Arduino +//#define FAST_PWM_FAN + +// Use software PWM to drive the fan, as for the heaters. This uses a very low frequency +// which is not as annoying as with the hardware PWM. On the other hand, if this frequency +// is too low, you should also increment SOFT_PWM_SCALE. +//#define FAN_SOFT_PWM + +// Incrementing this by 1 will double the software PWM frequency, +// affecting heaters, and the fan if FAN_SOFT_PWM is enabled. +// However, control resolution will be halved for each increment; +// at zero value, there are 128 effective control positions. +#define SOFT_PWM_SCALE 0 + +// Temperature status LEDs that display the hotend and bet temperature. +// If all hotends and bed temperature and temperature setpoint are < 54C then the BLUE led is on. +// Otherwise the RED led is on. There is 1C hysteresis. +//#define TEMP_STAT_LEDS + +// M240 Triggers a camera by emulating a Canon RC-1 Remote +// Data from: http://www.doc-diy.net/photo/rc-1_hacked/ +// #define PHOTOGRAPH_PIN 23 + +// SF send wrong arc g-codes when using Arc Point as fillet procedure +//#define SF_ARC_FIX + +// Support for the BariCUDA Paste Extruder. +//#define BARICUDA + +//define BlinkM/CyzRgb Support +//#define BLINKM + +/*********************************************************************\ +* R/C SERVO support +* Sponsored by TrinityLabs, Reworked by codexmas +**********************************************************************/ + +// Number of servos +// +// If you select a configuration below, this will receive a default value and does not need to be set manually +// set it manually if you have more servos than extruders and wish to manually control some +// leaving it undefined or defining as 0 will disable the servo subsystem +// If unsure, leave commented / disabled +// +//#define NUM_SERVOS 3 // Servo index starts with 0 for M280 command + +// Servo Endstops +// +// This allows for servo actuated endstops, primary usage is for the Z Axis to eliminate calibration or bed height changes. +// Use M851 to set the z-probe vertical offset from the nozzle. Store that setting with M500. +// +//#define SERVO_ENDSTOPS {-1, -1, 0} // Servo index for X, Y, Z. Disable with -1 +//#define SERVO_ENDSTOP_ANGLES {0,0, 0,0, 70,0} // X,Y,Z Axis Extend and Retract angles + +/**********************************************************************\ + * Support for a filament diameter sensor + * Also allows adjustment of diameter at print time (vs at slicing) + * Single extruder only at this point (extruder 0) + * + * Motherboards + * 34 - RAMPS1.4 - uses Analog input 5 on the AUX2 connector + * 81 - Printrboard - Uses Analog input 2 on the Exp1 connector (version B,C,D,E) + * 301 - Rambo - uses Analog input 3 + * Note may require analog pins to be defined for different motherboards + **********************************************************************/ +// Uncomment below to enable +//#define FILAMENT_SENSOR + +#define FILAMENT_SENSOR_EXTRUDER_NUM 0 //The number of the extruder that has the filament sensor (0,1,2) +#define MEASUREMENT_DELAY_CM 14 //measurement delay in cm. This is the distance from filament sensor to middle of barrel + +#define DEFAULT_NOMINAL_FILAMENT_DIA 1.75 //Enter the diameter (in mm) of the filament generally used (3.0 mm or 1.75 mm) - this is then used in the slicer software. Used for sensor reading validation +#define MEASURED_UPPER_LIMIT 3.30 //upper limit factor used for sensor reading validation in mm +#define MEASURED_LOWER_LIMIT 1.90 //lower limit factor for sensor reading validation in mm +#define MAX_MEASUREMENT_DELAY 20 //delay buffer size in bytes (1 byte = 1cm)- limits maximum measurement delay allowable (must be larger than MEASUREMENT_DELAY_CM and lower number saves RAM) + +//defines used in the code +#define DEFAULT_MEASURED_FILAMENT_DIA DEFAULT_NOMINAL_FILAMENT_DIA //set measured to nominal initially + +//When using an LCD, uncomment the line below to display the Filament sensor data on the last line instead of status. Status will appear for 5 sec. +//#define FILAMENT_LCD_DISPLAY + + + + + + +#include "Configuration_adv.h" +#include "thermistortables.h" + +#endif //CONFIGURATION_H diff --git a/Marlin/example_configurations/delta/biv2.5/Configuration_adv.h b/Marlin/example_configurations/delta/biv2.5/Configuration_adv.h new file mode 100644 index 0000000000..d035073b8d --- /dev/null +++ b/Marlin/example_configurations/delta/biv2.5/Configuration_adv.h @@ -0,0 +1,552 @@ +#ifndef CONFIGURATION_ADV_H +#define CONFIGURATION_ADV_H + +#include "Conditionals.h" + +// @section temperature + +//=========================================================================== +//=============================Thermal Settings ============================ +//=========================================================================== + +#ifdef BED_LIMIT_SWITCHING + #define BED_HYSTERESIS 2 //only disable heating if T>target+BED_HYSTERESIS and enable heating if T>target-BED_HYSTERESIS +#endif +#define BED_CHECK_INTERVAL 5000 //ms between checks in bang-bang control + +//// Heating sanity check: +// This waits for the watch period in milliseconds whenever an M104 or M109 increases the target temperature +// If the temperature has not increased at the end of that period, the target temperature is set to zero. +// It can be reset with another M104/M109. This check is also only triggered if the target temperature and the current temperature +// differ by at least 2x WATCH_TEMP_INCREASE +#define WATCH_TEMP_PERIOD 40000 //40 seconds +#define WATCH_TEMP_INCREASE 10 //Heat up at least 10 degree in 20 seconds + +#ifdef PIDTEMP + // this adds an experimental additional term to the heating power, proportional to the extrusion speed. + // if Kc is chosen well, the additional required power due to increased melting should be compensated. + #define PID_ADD_EXTRUSION_RATE + #ifdef PID_ADD_EXTRUSION_RATE + #define DEFAULT_Kc (1) //heating power=Kc*(e_speed) + #endif +#endif + + +//automatic temperature: The hot end target temperature is calculated by all the buffered lines of gcode. +//The maximum buffered steps/sec of the extruder motor are called "se". +//You enter the autotemp mode by a M109 S B F +// the target temperature is set to mintemp+factor*se[steps/sec] and limited by mintemp and maxtemp +// you exit the value by any M109 without F* +// Also, if the temperature is set to a value Z2 (yes, it is.. think about it) and the Z adjust would be positive. + // Play a little bit with small adjustments (0.5mm) and check the behaviour. + // The M119 (endstops report) will start reporting the Z2 Endstop as well. + + #define Z_DUAL_ENDSTOPS + + #ifdef Z_DUAL_ENDSTOPS + #define Z2_STEP_PIN E2_STEP_PIN // Stepper to be used to Z2 axis. + #define Z2_DIR_PIN E2_DIR_PIN + #define Z2_ENABLE_PIN E2_ENABLE_PIN + #define Z2_MAX_PIN 36 //Endstop used for Z2 axis. In this case I'm using XMAX in a Rumba Board (pin 36) + const bool Z2_MAX_ENDSTOP_INVERTING = false; + #define DISABLE_XMAX_ENDSTOP //Better to disable the XMAX to avoid conflict. Just rename "XMAX_ENDSTOP" by the endstop you are using for Z2 axis. + #endif + +#endif // Z_DUAL_STEPPER_DRIVERS + +// Same again but for Y Axis. +//#define Y_DUAL_STEPPER_DRIVERS + +// Define if the two Y drives need to rotate in opposite directions +#define INVERT_Y2_VS_Y_DIR true + +// Enable this for dual x-carriage printers. +// A dual x-carriage design has the advantage that the inactive extruder can be parked which +// prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage +// allowing faster printing speeds. +//#define DUAL_X_CARRIAGE +#ifdef DUAL_X_CARRIAGE + // Configuration for second X-carriage + // Note: the first x-carriage is defined as the x-carriage which homes to the minimum endstop; + // the second x-carriage always homes to the maximum endstop. + #define X2_MIN_POS 80 // set minimum to ensure second x-carriage doesn't hit the parked first X-carriage + #define X2_MAX_POS 353 // set maximum to the distance between toolheads when both heads are homed + #define X2_HOME_DIR 1 // the second X-carriage always homes to the maximum endstop position + #define X2_HOME_POS X2_MAX_POS // default home position is the maximum carriage position + // However: In this mode the EXTRUDER_OFFSET_X value for the second extruder provides a software + // override for X2_HOME_POS. This also allow recalibration of the distance between the two endstops + // without modifying the firmware (through the "M218 T1 X???" command). + // Remember: you should set the second extruder x-offset to 0 in your slicer. + + // Pins for second x-carriage stepper driver (defined here to avoid further complicating pins.h) + #define X2_ENABLE_PIN 29 + #define X2_STEP_PIN 25 + #define X2_DIR_PIN 23 + + // There are a few selectable movement modes for dual x-carriages using M605 S + // Mode 0: Full control. The slicer has full control over both x-carriages and can achieve optimal travel results + // as long as it supports dual x-carriages. (M605 S0) + // Mode 1: Auto-park mode. The firmware will automatically park and unpark the x-carriages on tool changes so + // that additional slicer support is not required. (M605 S1) + // Mode 2: Duplication mode. The firmware will transparently make the second x-carriage and extruder copy all + // actions of the first x-carriage. This allows the printer to print 2 arbitrary items at + // once. (2nd extruder x offset and temp offset are set using: M605 S2 [Xnnn] [Rmmm]) + + // This is the default power-up mode which can be later using M605. + #define DEFAULT_DUAL_X_CARRIAGE_MODE 0 + + // Default settings in "Auto-park Mode" + #define TOOLCHANGE_PARK_ZLIFT 0.2 // the distance to raise Z axis when parking an extruder + #define TOOLCHANGE_UNPARK_ZLIFT 1 // the distance to raise Z axis when unparking an extruder + + // Default x offset in duplication mode (typically set to half print bed width) + #define DEFAULT_DUPLICATION_X_OFFSET 100 + +#endif //DUAL_X_CARRIAGE + +// @section homing + +//homing hits the endstop, then retracts by this distance, before it tries to slowly bump again: +#define X_HOME_BUMP_MM 5 +#define Y_HOME_BUMP_MM 5 +#define Z_HOME_BUMP_MM 5 // deltas need the same for all three axis +#define HOMING_BUMP_DIVISOR {10, 10, 20} // Re-Bump Speed Divisor (Divides the Homing Feedrate) +//#define QUICK_HOME //if this is defined, if both x and y are to be homed, a diagonal move will be performed initially. + +// When G28 is called, this option will make Y home before X +// #define HOME_Y_BEFORE_X + +// @section machine + +#define AXIS_RELATIVE_MODES {false, false, false, false} + +// @section machine + +//By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step. +#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. +#define DEFAULT_STEPPER_DEACTIVE_TIME 0 + +#define DEFAULT_MINIMUMFEEDRATE 0.0 // minimum feedrate +#define DEFAULT_MINTRAVELFEEDRATE 0.0 + +// @section lcd + +#ifdef ULTIPANEL + #define MANUAL_FEEDRATE {50*60, 50*60, 4*60, 60} // Feedrates for manual moves along X, Y, Z, E from panel + #define ULTIPANEL_FEEDMULTIPLY // Comment to disable setting feedrate multiplier via encoder +#endif + +// @section extras + +// minimum time in microseconds that a movement needs to take if the buffer is emptied. +#define DEFAULT_MINSEGMENTTIME 20000 + +// If defined the movements slow down when the look ahead buffer is only half full +// (don't use SLOWDOWN with DELTA because DELTA generates hundreds of segments per second) +//#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/sec) + +// Microstep setting (Only functional when stepper driver microstep pins are connected to MCU. +#define MICROSTEP_MODES {16,16,16,16,16} // [1,2,4,8,16] + +// Motor Current setting (Only functional when motor driver current ref pins are connected to a digital trimpot on supported boards) +#define DIGIPOT_MOTOR_CURRENT {135,135,135,135,135} // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A) + +// uncomment to enable an I2C based DIGIPOT like on the Azteeg X3 Pro +//#define DIGIPOT_I2C +// Number of channels available for I2C digipot, For Azteeg X3 Pro we have 8 +#define DIGIPOT_I2C_NUM_CHANNELS 8 +// actual motor currents in Amps, need as many here as DIGIPOT_I2C_NUM_CHANNELS +#define DIGIPOT_I2C_MOTOR_CURRENTS {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0} + +//=========================================================================== +//=============================Additional Features=========================== +//=========================================================================== + +#define ENCODER_RATE_MULTIPLIER // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly +#define ENCODER_10X_STEPS_PER_SEC 75 // If the encoder steps per sec exceeds this value, multiply steps moved x10 to quickly advance the value +#define ENCODER_100X_STEPS_PER_SEC 160 // If the encoder steps per sec exceeds this value, multiply steps moved x100 to really quickly advance the value + +//#define CHDK 4 //Pin for triggering CHDK to take a picture see how to use it here http://captain-slow.dk/2014/03/09/3d-printing-timelapses/ +#define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again + +// @section lcd + +#ifdef SDSUPPORT + + // If you are using a RAMPS board or cheap E-bay purchased boards that do not detect when an SD card is inserted + // You can get round this by connecting a push button or single throw switch to the pin defined as SDCARDCARDDETECT + // in the pins.h file. When using a push button pulling the pin to ground this will need inverted. This setting should + // be commented out otherwise + #define SDCARDDETECTINVERTED + + #define SD_FINISHED_STEPPERRELEASE true //if sd support and the file is finished: disable steppers? + #define SD_FINISHED_RELEASECOMMAND "M84 X Y Z E" // You might want to keep the z enabled so your bed stays in place. + + #define SDCARD_RATHERRECENTFIRST //reverse file order of sd card menu display. Its sorted practically after the file system block order. + // if a file is deleted, it frees a block. hence, the order is not purely chronological. To still have auto0.g accessible, there is again the option to do that. + // using: + //#define MENU_ADDAUTOSTART + + // Show a progress bar on HD44780 LCDs for SD printing + //#define LCD_PROGRESS_BAR + + #ifdef LCD_PROGRESS_BAR + // Amount of time (ms) to show the bar + #define PROGRESS_BAR_BAR_TIME 2000 + // Amount of time (ms) to show the status message + #define PROGRESS_BAR_MSG_TIME 3000 + // Amount of time (ms) to retain the status message (0=forever) + #define PROGRESS_MSG_EXPIRE 0 + // Enable this to show messages for MSG_TIME then hide them + //#define PROGRESS_MSG_ONCE + #endif + +#endif // SDSUPPORT + +// @section more + +// The hardware watchdog should reset the microcontroller disabling all outputs, in case the firmware gets stuck and doesn't do temperature regulation. +//#define USE_WATCHDOG + +#ifdef USE_WATCHDOG +// If you have a watchdog reboot in an ArduinoMega2560 then the device will hang forever, as a watchdog reset will leave the watchdog on. +// The "WATCHDOG_RESET_MANUAL" goes around this by not using the hardware reset. +// However, THIS FEATURE IS UNSAFE!, as it will only work if interrupts are disabled. And the code could hang in an interrupt routine with interrupts disabled. +//#define WATCHDOG_RESET_MANUAL +#endif + +// Enable the option to stop SD printing when hitting and endstops, needs to be enabled from the LCD menu when this option is enabled. +//#define ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED + +// @section lcd + +// Babystepping enables the user to control the axis in tiny amounts, independently from the normal printing process +// it can e.g. be used to change z-positions in the print startup phase in real-time +// does not respect endstops! +//#define BABYSTEPPING +#ifdef BABYSTEPPING + #define BABYSTEP_XY //not only z, but also XY in the menu. more clutter, more functions + #define BABYSTEP_INVERT_Z false //true for inverse movements in Z + #define BABYSTEP_Z_MULTIPLICATOR 2 //faster z movements +#endif + +// @section extruder + +// extruder advance constant (s2/mm3) +// +// advance (steps) = STEPS_PER_CUBIC_MM_E * EXTRUDER_ADVANCE_K * cubic mm per second ^ 2 +// +// Hooke's law says: force = k * distance +// Bernoulli's principle says: v ^ 2 / 2 + g . h + pressure / density = constant +// so: v ^ 2 is proportional to number of steps we advance the extruder +//#define ADVANCE + +#ifdef ADVANCE + #define EXTRUDER_ADVANCE_K .0 + #define D_FILAMENT 2.85 + #define STEPS_MM_E 836 +#endif + +// @section extras + +// Arc interpretation settings: +#define MM_PER_ARC_SEGMENT 1 +#define N_ARC_CORRECTION 25 + +const unsigned int dropsegments=5; //everything with less than this number of steps will be ignored as move and joined with the next movement + +// @section temperature + +// Control heater 0 and heater 1 in parallel. +//#define HEATERS_PARALLEL + +//=========================================================================== +//================================= Buffers ================================= +//=========================================================================== + +// @section hidden + +// The number of linear motions that can be in the plan at any give time. +// THE BLOCK_BUFFER_SIZE NEEDS TO BE A POWER OF 2, i.g. 8,16,32 because shifts and ors are used to do the ring-buffering. +#ifdef 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 more + +//The ASCII buffer for receiving from the serial: +#define MAX_CMD_SIZE 96 +#define BUFSIZE 4 + +// @section fwretract + +// Firmware based and LCD controlled retract +// M207 and M208 can be used to define parameters for the retraction. +// The retraction can be called by the slicer using G10 and G11 +// until then, intended retractions can be detected by moves that only extrude and the direction. +// the moves are than replaced by the firmware controlled ones. + +#define FWRETRACT //ONLY PARTIALLY TESTED +#ifdef FWRETRACT + #define MIN_RETRACT 0.1 //minimum extruded mm to accept a automatic gcode retraction attempt + #define RETRACT_LENGTH 5 //default retract length (positive mm) + #define RETRACT_LENGTH_SWAP 13 //default swap retract length (positive mm), for extruder change + #define RETRACT_FEEDRATE 100 //default feedrate for retracting (mm/s) + #define RETRACT_ZLIFT 0 //default retract Z-lift + #define RETRACT_RECOVER_LENGTH 0 //default additional recover length (mm, added to retract length when recovering) + #define RETRACT_RECOVER_LENGTH_SWAP 0 //default additional swap recover length (mm, added to retract length when recovering from extruder change) + #define RETRACT_RECOVER_FEEDRATE 100 //default feedrate for recovering from retraction (mm/s) +#endif + +// Add support for experimental filament exchange support M600; requires display +#ifdef ULTIPANEL + //#define FILAMENTCHANGEENABLE + #ifdef FILAMENTCHANGEENABLE + #define FILAMENTCHANGE_XPOS 3 + #define FILAMENTCHANGE_YPOS 3 + #define FILAMENTCHANGE_ZADD 10 + #define FILAMENTCHANGE_FIRSTRETRACT -2 + #define FILAMENTCHANGE_FINALRETRACT -100 + #endif +#endif + +/******************************************************************************\ + * enable this section if you have TMC26X motor drivers. + * you need to import the TMC26XStepper library into the arduino IDE for this + ******************************************************************************/ + +// @section tmc + +//#define HAVE_TMCDRIVER +#ifdef HAVE_TMCDRIVER + +// #define X_IS_TMC + #define X_MAX_CURRENT 1000 //in mA + #define X_SENSE_RESISTOR 91 //in mOhms + #define X_MICROSTEPS 16 //number of microsteps + +// #define X2_IS_TMC + #define X2_MAX_CURRENT 1000 //in mA + #define X2_SENSE_RESISTOR 91 //in mOhms + #define X2_MICROSTEPS 16 //number of microsteps + +// #define Y_IS_TMC + #define Y_MAX_CURRENT 1000 //in mA + #define Y_SENSE_RESISTOR 91 //in mOhms + #define Y_MICROSTEPS 16 //number of microsteps + +// #define Y2_IS_TMC + #define Y2_MAX_CURRENT 1000 //in mA + #define Y2_SENSE_RESISTOR 91 //in mOhms + #define Y2_MICROSTEPS 16 //number of microsteps + +// #define Z_IS_TMC + #define Z_MAX_CURRENT 1000 //in mA + #define Z_SENSE_RESISTOR 91 //in mOhms + #define Z_MICROSTEPS 16 //number of microsteps + +// #define Z2_IS_TMC + #define Z2_MAX_CURRENT 1000 //in mA + #define Z2_SENSE_RESISTOR 91 //in mOhms + #define Z2_MICROSTEPS 16 //number of microsteps + +// #define E0_IS_TMC + #define E0_MAX_CURRENT 1000 //in mA + #define E0_SENSE_RESISTOR 91 //in mOhms + #define E0_MICROSTEPS 16 //number of microsteps + +// #define E1_IS_TMC + #define E1_MAX_CURRENT 1000 //in mA + #define E1_SENSE_RESISTOR 91 //in mOhms + #define E1_MICROSTEPS 16 //number of microsteps + +// #define E2_IS_TMC + #define E2_MAX_CURRENT 1000 //in mA + #define E2_SENSE_RESISTOR 91 //in mOhms + #define E2_MICROSTEPS 16 //number of microsteps + +// #define E3_IS_TMC + #define E3_MAX_CURRENT 1000 //in mA + #define E3_SENSE_RESISTOR 91 //in mOhms + #define E3_MICROSTEPS 16 //number of microsteps + +#endif + +/******************************************************************************\ + * enable this section if you have L6470 motor drivers. + * you need to import the L6470 library into the arduino IDE for this + ******************************************************************************/ + +// @section l6470 + +//#define HAVE_L6470DRIVER +#ifdef HAVE_L6470DRIVER + +// #define X_IS_L6470 + #define X_MICROSTEPS 16 //number of microsteps + #define X_K_VAL 50 // 0 - 255, Higher values, are higher power. Be carefull not to go too high + #define X_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off + #define X_STALLCURRENT 1500 //current in mA where the driver will detect a stall + +// #define X2_IS_L6470 + #define X2_MICROSTEPS 16 //number of microsteps + #define X2_K_VAL 50 // 0 - 255, Higher values, are higher power. Be carefull not to go too high + #define X2_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off + #define X2_STALLCURRENT 1500 //current in mA where the driver will detect a stall + +// #define Y_IS_L6470 + #define Y_MICROSTEPS 16 //number of microsteps + #define Y_K_VAL 50 // 0 - 255, Higher values, are higher power. Be carefull not to go too high + #define Y_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off + #define Y_STALLCURRENT 1500 //current in mA where the driver will detect a stall + +// #define Y2_IS_L6470 + #define Y2_MICROSTEPS 16 //number of microsteps + #define Y2_K_VAL 50 // 0 - 255, Higher values, are higher power. Be carefull not to go too high + #define Y2_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off + #define Y2_STALLCURRENT 1500 //current in mA where the driver will detect a stall + +// #define Z_IS_L6470 + #define Z_MICROSTEPS 16 //number of microsteps + #define Z_K_VAL 50 // 0 - 255, Higher values, are higher power. Be carefull not to go too high + #define Z_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off + #define Z_STALLCURRENT 1500 //current in mA where the driver will detect a stall + +// #define Z2_IS_L6470 + #define Z2_MICROSTEPS 16 //number of microsteps + #define Z2_K_VAL 50 // 0 - 255, Higher values, are higher power. Be carefull not to go too high + #define Z2_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off + #define Z2_STALLCURRENT 1500 //current in mA where the driver will detect a stall + +// #define E0_IS_L6470 + #define E0_MICROSTEPS 16 //number of microsteps + #define E0_K_VAL 50 // 0 - 255, Higher values, are higher power. Be carefull not to go too high + #define E0_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off + #define E0_STALLCURRENT 1500 //current in mA where the driver will detect a stall + +// #define E1_IS_L6470 + #define E1_MICROSTEPS 16 //number of microsteps + #define E1_MICROSTEPS 16 //number of microsteps + #define E1_K_VAL 50 // 0 - 255, Higher values, are higher power. Be carefull not to go too high + #define E1_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off + #define E1_STALLCURRENT 1500 //current in mA where the driver will detect a stall + +// #define E2_IS_L6470 + #define E2_MICROSTEPS 16 //number of microsteps + #define E2_MICROSTEPS 16 //number of microsteps + #define E2_K_VAL 50 // 0 - 255, Higher values, are higher power. Be carefull not to go too high + #define E2_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off + #define E2_STALLCURRENT 1500 //current in mA where the driver will detect a stall + +// #define E3_IS_L6470 + #define E3_MICROSTEPS 16 //number of microsteps + #define E3_MICROSTEPS 16 //number of microsteps + #define E3_K_VAL 50 // 0 - 255, Higher values, are higher power. Be carefull not to go too high + #define E3_OVERCURRENT 2000 //maxc current in mA. If the current goes over this value, the driver will switch off + #define E3_STALLCURRENT 1500 //current in mA where the driver will detect a stall + +#endif + +#include "Conditionals.h" +#include "SanityCheck.h" + +#endif //CONFIGURATION_ADV_H From 59529b755d6d77671f82c4b3921dd67dab153d06 Mon Sep 17 00:00:00 2001 From: Ivan Galvez Junquera Date: Mon, 4 May 2015 09:44:34 +0200 Subject: [PATCH 81/88] Fixed lowercase change missing on commit a22a228b. Servo.cpp and Servo.h were changed to lowercase in Makefile but not their actual filenames. --- Marlin/Marlin_main.cpp | 2 +- Marlin/{Servo.cpp => servo.cpp} | 2 +- Marlin/{Servo.h => servo.h} | 0 3 files changed, 2 insertions(+), 2 deletions(-) rename Marlin/{Servo.cpp => servo.cpp} (99%) rename Marlin/{Servo.h => servo.h} (100%) diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp index 9541fc8a7a..3130870e9b 100644 --- a/Marlin/Marlin_main.cpp +++ b/Marlin/Marlin_main.cpp @@ -61,7 +61,7 @@ #endif #if NUM_SERVOS > 0 - #include "Servo.h" + #include "servo.h" #endif #if HAS_DIGIPOTSS diff --git a/Marlin/Servo.cpp b/Marlin/servo.cpp similarity index 99% rename from Marlin/Servo.cpp rename to Marlin/servo.cpp index 576b394fb7..81d73ae870 100644 --- a/Marlin/Servo.cpp +++ b/Marlin/servo.cpp @@ -48,7 +48,7 @@ #include #include -#include "Servo.h" +#include "servo.h" #define usToTicks(_us) (( clockCyclesPerMicrosecond()* _us) / 8) // converts microseconds to tick (assumes prescale of 8) // 12 Aug 2009 #define ticksToUs(_ticks) (( (unsigned)_ticks * 8)/ clockCyclesPerMicrosecond() ) // converts from ticks back to microseconds diff --git a/Marlin/Servo.h b/Marlin/servo.h similarity index 100% rename from Marlin/Servo.h rename to Marlin/servo.h From ab246ab032d1ea1706d03fb044429a8938271575 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gina=20H=C3=A4u=C3=9Fge?= Date: Mon, 4 May 2015 15:03:00 +0200 Subject: [PATCH 82/88] Reverting changes to error messages on serial console This reverts the changes done to the error message for line number mismatches done in commit d43cc2dd5f52c9b71b486e7778d7fb44ea67fad6 --- Marlin/Marlin_main.cpp | 7 +++---- Marlin/configurator/config/language.h | 3 +-- Marlin/language.h | 3 +-- 3 files changed, 5 insertions(+), 8 deletions(-) diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp index 9541fc8a7a..759a0fea98 100644 --- a/Marlin/Marlin_main.cpp +++ b/Marlin/Marlin_main.cpp @@ -757,10 +757,9 @@ void get_command() { gcode_N = (strtol(strchr_pointer + 1, NULL, 10)); if (gcode_N != gcode_LastN + 1 && strstr_P(command, PSTR("M110")) == NULL) { SERIAL_ERROR_START; - SERIAL_ERRORPGM(MSG_ERR_LINE_NO1); - SERIAL_ERROR(gcode_LastN + 1); - SERIAL_ERRORPGM(MSG_ERR_LINE_NO2); - SERIAL_ERRORLN(gcode_N); + SERIAL_ERRORPGM(MSG_ERR_LINE_NO); + SERIAL_ERRORLN(gcode_LastN); + //Serial.println(gcode_N); FlushSerialRequestResend(); serial_count = 0; return; diff --git a/Marlin/configurator/config/language.h b/Marlin/configurator/config/language.h index 02235aac70..40d8dbe663 100644 --- a/Marlin/configurator/config/language.h +++ b/Marlin/configurator/config/language.h @@ -123,8 +123,7 @@ #define MSG_PLANNER_BUFFER_BYTES " PlannerBufferBytes: " #define MSG_OK "ok" #define MSG_FILE_SAVED "Done saving file." -#define MSG_ERR_LINE_NO1 "Line Number out of sequence. Expected: " -#define MSG_ERR_LINE_NO2 " Got: " +#define MSG_ERR_LINE_NO "Line Number is not Last Line Number+1, Last Line: " #define MSG_ERR_CHECKSUM_MISMATCH "checksum mismatch, Last Line: " #define MSG_ERR_NO_CHECKSUM "No Checksum with line number, Last Line: " #define MSG_ERR_NO_LINENUMBER_WITH_CHECKSUM "No Line Number with checksum, Last Line: " diff --git a/Marlin/language.h b/Marlin/language.h index 02235aac70..40d8dbe663 100644 --- a/Marlin/language.h +++ b/Marlin/language.h @@ -123,8 +123,7 @@ #define MSG_PLANNER_BUFFER_BYTES " PlannerBufferBytes: " #define MSG_OK "ok" #define MSG_FILE_SAVED "Done saving file." -#define MSG_ERR_LINE_NO1 "Line Number out of sequence. Expected: " -#define MSG_ERR_LINE_NO2 " Got: " +#define MSG_ERR_LINE_NO "Line Number is not Last Line Number+1, Last Line: " #define MSG_ERR_CHECKSUM_MISMATCH "checksum mismatch, Last Line: " #define MSG_ERR_NO_CHECKSUM "No Checksum with line number, Last Line: " #define MSG_ERR_NO_LINENUMBER_WITH_CHECKSUM "No Line Number with checksum, Last Line: " From 150a35eff8e8b171101c76d76d0e493f9b811c3e Mon Sep 17 00:00:00 2001 From: fmalpartida Date: Mon, 4 May 2015 19:48:49 +0200 Subject: [PATCH 83/88] Bug corrected: Persistent homing message. Message was declared as an alert, therefore it was persistent. Updated to message. --- Marlin/Marlin_main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp index 759a0fea98..63958bf836 100644 --- a/Marlin/Marlin_main.cpp +++ b/Marlin/Marlin_main.cpp @@ -6095,7 +6095,7 @@ void manage_inactivity(bool ignore_stepper_queue/*=false*/) { if (!READ(HOME_PIN)) { if (!homeDebounceCount) { enqueuecommands_P(PSTR("G28")); - LCD_ALERTMESSAGEPGM(MSG_AUTO_HOME); + LCD_MESSAGEPGM(MSG_AUTO_HOME); } if (homeDebounceCount < HOME_DEBOUNCE_DELAY) homeDebounceCount++; From 79633a74aba2ddef3c7a8fa76d4aa285ca6d1037 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Wed, 6 May 2015 14:25:13 -0700 Subject: [PATCH 84/88] Fix MBL compile error --- Marlin/Marlin_main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp index 9305e67d03..a8bedb8411 100644 --- a/Marlin/Marlin_main.cpp +++ b/Marlin/Marlin_main.cpp @@ -4520,7 +4520,7 @@ inline void gcode_M410() { quickStop(); } err = true; } - if (!err) mbl.set_z(select_x_index(x), select_y_index(y), z); + if (!err) mbl.set_z(mbl.select_x_index(x), mbl.select_y_index(y), z); } #endif From 26c53634e16fe1e2ad0d3ad2cc74e35da72c465d Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Wed, 6 May 2015 18:24:10 -0700 Subject: [PATCH 85/88] Add a TOC --- Documentation/GCodes.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/Documentation/GCodes.md b/Documentation/GCodes.md index c05be6198b..d9e51d6111 100644 --- a/Documentation/GCodes.md +++ b/Documentation/GCodes.md @@ -1,5 +1,22 @@ ## Implemented G Codes +- [Movement F and M Codes](#movement-g-and-m-codes) +- [SD Card M Codes](#sd-card-m-codes) +- [Hardware Control](#hardware-control) +- [Temperature M Codes](#temperature-m-codes) +- [Message M Codes](#message-m-codes) +- [Endstops M Codes](#endstops-m-codes) +- [Special Features M Codes](#special-features-m-codes) +- [Units and Measures G and M Codes](#units-and-measures-g-and-m-codes) +- [Firmware Retraction G and M Codes](#firmware-retraction-g-and-m-codes) +- [Z Probe G and M Codes](#z-probe-g-and-m-codes) +- [Filament Diameter M Codes](#filament-diameter-m-codes) +- [EEPROM Settings M Codes](#eeprom-settings-m-codes) +- [Delta M Codes](#delta-m-codes) +- [Stepper Driver M Codes](#stepper-driver-m-codes) +- [SCARA M Codes](#scara-m-codes) +- [GCode Comments](#comments) + ### Movement G and M Codes ``` G0 -> G1 From b492391fa79fc4b8d437bfbef427690a2546d9b0 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Wed, 6 May 2015 18:30:10 -0700 Subject: [PATCH 86/88] Initial Hardware.md to fix 404 error - Addressing issue #1935 --- Documentation/Hardware.md | 154 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 154 insertions(+) create mode 100644 Documentation/Hardware.md diff --git a/Documentation/Hardware.md b/Documentation/Hardware.md new file mode 100644 index 0000000000..78f9109139 --- /dev/null +++ b/Documentation/Hardware.md @@ -0,0 +1,154 @@ +## Marlin Supported Hardware + +### 10 BOARD_GEN7_CUSTOM +Gen7 custom (Alfons3 Version) "https://github.com/Alfons3/Generation_7_Electronics" + +### 11 BOARD_GEN7_12 +Gen7 v1.1, v1.2 + +### 12 BOARD_GEN7_13 +Gen7 v1.3 + +### 13 BOARD_GEN7_14 +Gen7 v1.4 + +### 2 BOARD_CHEAPTRONIC +Cheaptronic v1.0 + +### 20 BOARD_SETHI +Sethi 3D_1 + +### 3 BOARD_RAMPS_OLD +MEGA/RAMPS up to 1.2 + +### 33 BOARD_RAMPS_13_EFB +RAMPS 1.3 / 1.4 (Power outputs: Extruder, Fan, Bed) + +### 34 BOARD_RAMPS_13_EEB +RAMPS 1.3 / 1.4 (Power outputs: Extruder0, Extruder1, Bed) + +### 35 BOARD_RAMPS_13_EFF +RAMPS 1.3 / 1.4 (Power outputs: Extruder, Fan, Fan) + +### 36 BOARD_RAMPS_13_EEF +RAMPS 1.3 / 1.4 (Power outputs: Extruder0, Extruder1, Fan) + +### 37 BOARD_FELIX2 +Felix 2.0+ Electronics Board (RAMPS like) + +### 4 BOARD_DUEMILANOVE_328P +Duemilanove w/ ATMega328P pin assignments + +### 5 BOARD_GEN6 +Gen6 + +### 51 BOARD_GEN6_DELUXE +Gen6 deluxe + +### 6 BOARD_SANGUINOLOLU_11 +Sanguinololu < 1.2 + +### 62 BOARD_SANGUINOLOLU_12 +Sanguinololu 1.2 and above + +### 63 BOARD_MELZI +Melzi + +### 64 BOARD_STB_11 +STB V1.1 + +### 65 BOARD_AZTEEG_X1 +Azteeg X1 + +### 66 BOARD_MELZI_1284 +Melzi with ATmega1284 (MaKr3d version) + +### 67 BOARD_AZTEEG_X3 +Azteeg X3 + +### 68 BOARD_AZTEEG_X3_PRO +Azteeg X3 Pro + +### 7 BOARD_ULTIMAKER +Ultimaker + +### 71 BOARD_ULTIMAKER_OLD +Ultimaker (Older electronics. Pre 1.5.4. This is rare) + +### 72 BOARD_ULTIMAIN_2 +Ultimainboard 2.x (Uses TEMP_SENSOR 20) + +### 77 BOARD_3DRAG +3Drag Controller + +### 78 BOARD_K8200 +Vellemann K8200 Controller (derived from 3Drag Controller) + +### 8 BOARD_TEENSYLU +Teensylu + +### 80 BOARD_RUMBA +Rumba + +### 81 BOARD_PRINTRBOARD +Printrboard (AT90USB1286) + +### 82 BOARD_BRAINWAVE +Brainwave (AT90USB646) + +### 83 BOARD_SAV_MKI +SAV Mk-I (AT90USB1286) + +### 84 BOARD_TEENSY2 +Teensy++2.0 (AT90USB1286) - CLI compile: DEFINES=AT90USBxx_TEENSYPP_ASSIGNMENTS HARDWARE_MOTHERBOARD=84 make + +### 85 BOARD_BRAINWAVE_PRO +Brainwave Pro (AT90USB1286) + +### 9 BOARD_GEN3_PLUS +Gen3+ + +### 22 BOARD_GEN3_MONOLITHIC +Gen3 Monolithic Electronics + +### 70 BOARD_MEGATRONICS +Megatronics + +### 701 BOARD_MEGATRONICS_2 +Megatronics v2.0 + +### 702 BOARD_MEGATRONICS_1 +Minitronics v1.0 + +### 703 BOARD_MEGATRONICS_3 +Megatronics v3.0 + +### 90 BOARD_OMCA_A +Alpha OMCA board + +### 91 BOARD_OMCA +Final OMCA board + +### 301 BOARD_RAMBO +Rambo + +### 21 BOARD_ELEFU_3 +Elefu Ra Board (v3) + +### 88 BOARD_5DPRINT +5DPrint D8 Driver Board + +### 999 BOARD_LEAPFROG +Leapfrog + +### 41 BOARD_WITBOX +bq WITBOX + +### 42 BOARD_HEPHESTOS +bq Prusa i3 Hephestos + +### 401 BOARD_BAM_DICE +2PrintBeta BAM&DICE with STK drivers + +### 402 BOARD_BAM_DICE_DUE +2PrintBeta BAM&DICE Due with STK drivers From 69655205f509d535d4ff13df20533d52c9f30b12 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Wed, 6 May 2015 19:04:54 -0700 Subject: [PATCH 87/88] Demote headers, add TOC --- Documentation/Hardware.md | 154 +++++++++++++++++++++++++------------- 1 file changed, 103 insertions(+), 51 deletions(-) diff --git a/Documentation/Hardware.md b/Documentation/Hardware.md index 78f9109139..21620efde8 100644 --- a/Documentation/Hardware.md +++ b/Documentation/Hardware.md @@ -1,154 +1,206 @@ ## Marlin Supported Hardware -### 10 BOARD_GEN7_CUSTOM +- [Gen 7 Custom](#10-board_gen7_custom) +- [Gen 7 <=1.2](#11-board_gen7_12) +- [Gen 7 v1.3](#12-board_gen7_13) +- [Gen 7 v1.4](#13-board_gen7_14) +- [Cheaptronic v1.0](#2-board_cheaptronic) +- [Sethi 3D_1](#20-board_sethi) +- [RAMPS <=1.2](#3-board_ramps_old) +- [RAMPS 1.3 Extruder-Fan-Bed](#33-board_ramps_13_efb) +- [RAMPS 1.3 Extruder-Extruder-Bed](#34-board_ramps_13_eeb) +- [RAMPS 1.3 Extruder-Fan-Fan](#35-board_ramps_13_eff) +- [RAMPS 1.3 Extruder-Extruder-Fan](#36-board_ramps_13_eef) +- [Felix 2](#37-board_felix2) +- [Duemilanove 328P](#4-board_duemilanove_328p) +- [Gen 6](#5-board_gen6) +- [Gen 6 Deluxe](#51-board_gen6_deluxe) +- [Sanguinololu <=1.1](#6-board_sanguinololu_11) +- [Sanguinololu 1.2](#62-board_sanguinololu_12) +- [Melzi](#63-board_melzi) +- [STB v1.1](#64-board_stb_11) +- [Azteeg X1](#65-board_azteeg_x1) +- [Melzi 1284](#66-board_melzi_1284) +- [Azteeg X3](#67-board_azteeg_x3) +- [Azteeg X3 Pro](#68-board_azteeg_x3_pro) +- [Ultimaker](#7-board_ultimaker) +- [Legacy Ultimaker](#71-board_ultimaker_old) +- [Ultimainboard 2.x](#72-board_ultimain_2) +- [3DRAG](#77-board_3drag) +- [Vellemann K8200](#78-board_k8200) +- [Teensylu](#8-board_teensylu) +- [Rumba](#80-board_rumba) +- [Printrboard](#81-board_printrboard) +- [Brainwave](#82-board_brainwave) +- [SAV Mk-I](#83-board_sav_mki) +- [Teensy++2.0](#84-board_teensy2) +- [Brainwave Pro](#85-board_brainwave_pro) +- [Gen3+](#9-board_gen3_plus) +- [Gen3 Monolithic](#22-board_gen3_monolithic) +- [Megatronics](#70-board_megatronics) +- [Megatronics 2.0](#701-board_megatronics_2) +- [Minitronics 1.0](#702-board_megatronics_1) +- [Megatronics 3.0](#703-board_megatronics_3) +- [OMCA Alpha](#90-board_omca_a) +- [OMCA Final](#91-board_omca) +- [RAMBo](#301-board_rambo) +- [Elefu Ra](#21-board_elefu_3) +- [5DPrint D8](#88-board_5dprint) +- [Leapfrog](#999-board_leapfrog) +- [bq Witbox](#41-board_witbox) +- [bq Prusa i3 Hephestos](#42-board_hephestos) +- [2PrintBeta BAM&DICE](#401-board_bam_dice) +- [2PrintBeta BAM&DICE DUE](#402-board_bam_dice_due) + +#### 10 BOARD_GEN7_CUSTOM Gen7 custom (Alfons3 Version) "https://github.com/Alfons3/Generation_7_Electronics" -### 11 BOARD_GEN7_12 +#### 11 BOARD_GEN7_12 Gen7 v1.1, v1.2 -### 12 BOARD_GEN7_13 +#### 12 BOARD_GEN7_13 Gen7 v1.3 -### 13 BOARD_GEN7_14 +#### 13 BOARD_GEN7_14 Gen7 v1.4 -### 2 BOARD_CHEAPTRONIC +#### 2 BOARD_CHEAPTRONIC Cheaptronic v1.0 -### 20 BOARD_SETHI +#### 20 BOARD_SETHI Sethi 3D_1 -### 3 BOARD_RAMPS_OLD +#### 3 BOARD_RAMPS_OLD MEGA/RAMPS up to 1.2 -### 33 BOARD_RAMPS_13_EFB +#### 33 BOARD_RAMPS_13_EFB RAMPS 1.3 / 1.4 (Power outputs: Extruder, Fan, Bed) -### 34 BOARD_RAMPS_13_EEB +#### 34 BOARD_RAMPS_13_EEB RAMPS 1.3 / 1.4 (Power outputs: Extruder0, Extruder1, Bed) -### 35 BOARD_RAMPS_13_EFF +#### 35 BOARD_RAMPS_13_EFF RAMPS 1.3 / 1.4 (Power outputs: Extruder, Fan, Fan) -### 36 BOARD_RAMPS_13_EEF +#### 36 BOARD_RAMPS_13_EEF RAMPS 1.3 / 1.4 (Power outputs: Extruder0, Extruder1, Fan) -### 37 BOARD_FELIX2 +#### 37 BOARD_FELIX2 Felix 2.0+ Electronics Board (RAMPS like) -### 4 BOARD_DUEMILANOVE_328P +#### 4 BOARD_DUEMILANOVE_328P Duemilanove w/ ATMega328P pin assignments -### 5 BOARD_GEN6 +#### 5 BOARD_GEN6 Gen6 -### 51 BOARD_GEN6_DELUXE +#### 51 BOARD_GEN6_DELUXE Gen6 deluxe -### 6 BOARD_SANGUINOLOLU_11 +#### 6 BOARD_SANGUINOLOLU_11 Sanguinololu < 1.2 -### 62 BOARD_SANGUINOLOLU_12 +#### 62 BOARD_SANGUINOLOLU_12 Sanguinololu 1.2 and above -### 63 BOARD_MELZI +#### 63 BOARD_MELZI Melzi -### 64 BOARD_STB_11 +#### 64 BOARD_STB_11 STB V1.1 -### 65 BOARD_AZTEEG_X1 +#### 65 BOARD_AZTEEG_X1 Azteeg X1 -### 66 BOARD_MELZI_1284 +#### 66 BOARD_MELZI_1284 Melzi with ATmega1284 (MaKr3d version) -### 67 BOARD_AZTEEG_X3 +#### 67 BOARD_AZTEEG_X3 Azteeg X3 -### 68 BOARD_AZTEEG_X3_PRO +#### 68 BOARD_AZTEEG_X3_PRO Azteeg X3 Pro -### 7 BOARD_ULTIMAKER +#### 7 BOARD_ULTIMAKER Ultimaker -### 71 BOARD_ULTIMAKER_OLD +#### 71 BOARD_ULTIMAKER_OLD Ultimaker (Older electronics. Pre 1.5.4. This is rare) -### 72 BOARD_ULTIMAIN_2 +#### 72 BOARD_ULTIMAIN_2 Ultimainboard 2.x (Uses TEMP_SENSOR 20) -### 77 BOARD_3DRAG +#### 77 BOARD_3DRAG 3Drag Controller -### 78 BOARD_K8200 +#### 78 BOARD_K8200 Vellemann K8200 Controller (derived from 3Drag Controller) -### 8 BOARD_TEENSYLU +#### 8 BOARD_TEENSYLU Teensylu -### 80 BOARD_RUMBA +#### 80 BOARD_RUMBA Rumba -### 81 BOARD_PRINTRBOARD +#### 81 BOARD_PRINTRBOARD Printrboard (AT90USB1286) -### 82 BOARD_BRAINWAVE +#### 82 BOARD_BRAINWAVE Brainwave (AT90USB646) -### 83 BOARD_SAV_MKI +#### 83 BOARD_SAV_MKI SAV Mk-I (AT90USB1286) -### 84 BOARD_TEENSY2 +#### 84 BOARD_TEENSY2 Teensy++2.0 (AT90USB1286) - CLI compile: DEFINES=AT90USBxx_TEENSYPP_ASSIGNMENTS HARDWARE_MOTHERBOARD=84 make -### 85 BOARD_BRAINWAVE_PRO +#### 85 BOARD_BRAINWAVE_PRO Brainwave Pro (AT90USB1286) -### 9 BOARD_GEN3_PLUS +#### 9 BOARD_GEN3_PLUS Gen3+ -### 22 BOARD_GEN3_MONOLITHIC +#### 22 BOARD_GEN3_MONOLITHIC Gen3 Monolithic Electronics -### 70 BOARD_MEGATRONICS +#### 70 BOARD_MEGATRONICS Megatronics -### 701 BOARD_MEGATRONICS_2 +#### 701 BOARD_MEGATRONICS_2 Megatronics v2.0 -### 702 BOARD_MEGATRONICS_1 +#### 702 BOARD_MEGATRONICS_1 Minitronics v1.0 -### 703 BOARD_MEGATRONICS_3 +#### 703 BOARD_MEGATRONICS_3 Megatronics v3.0 -### 90 BOARD_OMCA_A +#### 90 BOARD_OMCA_A Alpha OMCA board -### 91 BOARD_OMCA +#### 91 BOARD_OMCA Final OMCA board -### 301 BOARD_RAMBO +#### 301 BOARD_RAMBO Rambo -### 21 BOARD_ELEFU_3 +#### 21 BOARD_ELEFU_3 Elefu Ra Board (v3) -### 88 BOARD_5DPRINT +#### 88 BOARD_5DPRINT 5DPrint D8 Driver Board -### 999 BOARD_LEAPFROG +#### 999 BOARD_LEAPFROG Leapfrog -### 41 BOARD_WITBOX +#### 41 BOARD_WITBOX bq WITBOX -### 42 BOARD_HEPHESTOS +#### 42 BOARD_HEPHESTOS bq Prusa i3 Hephestos -### 401 BOARD_BAM_DICE +#### 401 BOARD_BAM_DICE 2PrintBeta BAM&DICE with STK drivers -### 402 BOARD_BAM_DICE_DUE +#### 402 BOARD_BAM_DICE_DUE 2PrintBeta BAM&DICE Due with STK drivers From 181ccc884c79c48c818e23514499968d7fbf7701 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Thu, 7 May 2015 20:46:03 -0700 Subject: [PATCH 88/88] Edit thermal runaway description --- Marlin/Configuration.h | 56 +++++++++---------- Marlin/configurator/config/Configuration.h | 56 +++++++++---------- .../Felix/Configuration.h | 56 +++++++++---------- .../Felix/Configuration_DUAL.h | 56 +++++++++---------- .../Hephestos/Configuration.h | 56 +++++++++---------- .../K8200/Configuration.h | 56 +++++++++---------- .../SCARA/Configuration.h | 56 +++++++++---------- .../WITBOX/Configuration.h | 56 +++++++++---------- .../delta/biv2.5/Configuration.h | 56 +++++++++---------- .../delta/generic/Configuration.h | 56 +++++++++---------- .../delta/kossel_mini/Configuration.h | 56 +++++++++---------- .../makibox/Configuration.h | 56 +++++++++---------- .../tvrrug/Round2/Configuration.h | 56 +++++++++---------- 13 files changed, 325 insertions(+), 403 deletions(-) diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index abcfea50f8..69bf148bb3 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -270,42 +270,36 @@ Here are some standard links for getting your machine calibrated: #define EXTRUDE_MAXLENGTH (X_MAX_LENGTH+Y_MAX_LENGTH) //prevent extrusion of very large distances. //=========================================================================== -//============================= Thermal Runaway Protection ================== +//======================== Thermal Runaway Protection ======================= //=========================================================================== -/* -This is a feature to protect your printer from burn up in flames if it has -a thermistor coming off place (this happened to a friend of mine recently and -motivated me writing this feature). - -The issue: If a thermistor come off, it will read a lower temperature than actual. -The system will turn the heater on forever, burning up the filament and anything -else around. - -After the temperature reaches the target for the first time, this feature will -start measuring for how long the current temperature stays below the target -minus _HYSTERESIS (set_temperature - THERMAL_RUNAWAY_PROTECTION_HYSTERESIS). -If it stays longer than _PERIOD, it means the thermistor temperature -cannot catch up with the target, so something *may be* wrong. Then, to be on the -safe side, the system will he halt. - -Bear in mind the count down will just start AFTER the first time the -thermistor temperature is over the target, so you will have no problem if -your extruder heater takes 2 minutes to hit the target on heating. - -*/ -// If you want to enable this feature for all your extruder heaters, -// uncomment the 2 defines below: +/** + * Thermal Runaway Protection protects your printer from damage and fire if a + * thermistor falls out or temperature sensors fail in any way. + * + * The issue: If a thermistor falls out or a temperature sensor fails, + * Marlin can no longer sense the actual temperature. Since a disconnected + * thermistor reads as a low temperature, the firmware will keep the heater on. + * + * The solution: Once the temperature reaches the target, start observing. + * If the temperature stays too far below the target (hysteresis) for too long, + * the firmware will halt as a safety precaution. + * + * Note that because the countdown starts only AFTER the temperature reaches + * the target, this will not catch a thermistor that is already disconnected + * when the print starts! + * + * To enable for all extruder heaters, uncomment the two defines below: + */ // Parameters for all extruder heaters -#define THERMAL_RUNAWAY_PROTECTION_PERIOD 40 //in seconds +#define THERMAL_RUNAWAY_PROTECTION_PERIOD 40 // in seconds #define THERMAL_RUNAWAY_PROTECTION_HYSTERESIS 4 // in degree Celsius -// If you want to enable this feature for your bed heater, -// uncomment the 2 defines below: +// To enable for the bed heater, uncomment the two defines below: // Parameters for the bed heater -#define THERMAL_RUNAWAY_PROTECTION_BED_PERIOD 20 //in seconds +#define THERMAL_RUNAWAY_PROTECTION_BED_PERIOD 20 // in seconds #define THERMAL_RUNAWAY_PROTECTION_BED_HYSTERESIS 2 // in degree Celsius @@ -411,7 +405,7 @@ const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic #define Z_MAX_POS 200 //=========================================================================== -//============================= Filament Runout Sensor ====================== +//========================= Filament Runout Sensor ========================== //=========================================================================== //#define FILAMENT_RUNOUT_SENSOR // Uncomment for defining a filament runout sensor such as a mechanical or opto endstop to check the existence of filament // In RAMPS uses servo pin 2. Can be changed in pins file. For other boards pin definition should be made. @@ -421,7 +415,7 @@ const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic //#define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined. //=========================================================================== -//============================ Mesh Bed Leveling ============================ +//=========================== Manual Bed Leveling =========================== //=========================================================================== // #define MANUAL_BED_LEVELING // Add display menu option for bed leveling @@ -442,7 +436,7 @@ const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic #endif // MESH_BED_LEVELING //=========================================================================== -//============================= Bed Auto Leveling =========================== +//============================ Bed Auto Leveling ============================ //=========================================================================== // @section bedlevel diff --git a/Marlin/configurator/config/Configuration.h b/Marlin/configurator/config/Configuration.h index 927a89046f..d888911b65 100644 --- a/Marlin/configurator/config/Configuration.h +++ b/Marlin/configurator/config/Configuration.h @@ -270,42 +270,36 @@ Here are some standard links for getting your machine calibrated: #define EXTRUDE_MAXLENGTH (X_MAX_LENGTH+Y_MAX_LENGTH) //prevent extrusion of very large distances. //=========================================================================== -//============================= Thermal Runaway Protection ================== +//======================== Thermal Runaway Protection ======================= //=========================================================================== -/* -This is a feature to protect your printer from burn up in flames if it has -a thermistor coming off place (this happened to a friend of mine recently and -motivated me writing this feature). - -The issue: If a thermistor come off, it will read a lower temperature than actual. -The system will turn the heater on forever, burning up the filament and anything -else around. - -After the temperature reaches the target for the first time, this feature will -start measuring for how long the current temperature stays below the target -minus _HYSTERESIS (set_temperature - THERMAL_RUNAWAY_PROTECTION_HYSTERESIS). -If it stays longer than _PERIOD, it means the thermistor temperature -cannot catch up with the target, so something *may be* wrong. Then, to be on the -safe side, the system will he halt. - -Bear in mind the count down will just start AFTER the first time the -thermistor temperature is over the target, so you will have no problem if -your extruder heater takes 2 minutes to hit the target on heating. - -*/ -// If you want to enable this feature for all your extruder heaters, -// uncomment the 2 defines below: +/** + * Thermal Runaway Protection protects your printer from damage and fire if a + * thermistor falls out or temperature sensors fail in any way. + * + * The issue: If a thermistor falls out or a temperature sensor fails, + * Marlin can no longer sense the actual temperature. Since a disconnected + * thermistor reads as a low temperature, the firmware will keep the heater on. + * + * The solution: Once the temperature reaches the target, start observing. + * If the temperature stays too far below the target (hysteresis) for too long, + * the firmware will halt as a safety precaution. + * + * Note that because the countdown starts only AFTER the temperature reaches + * the target, this will not catch a thermistor that is already disconnected + * when the print starts! + * + * To enable for all extruder heaters, uncomment the two defines below: + */ // Parameters for all extruder heaters -#define THERMAL_RUNAWAY_PROTECTION_PERIOD 40 //in seconds +#define THERMAL_RUNAWAY_PROTECTION_PERIOD 40 // in seconds #define THERMAL_RUNAWAY_PROTECTION_HYSTERESIS 4 // in degree Celsius -// If you want to enable this feature for your bed heater, -// uncomment the 2 defines below: +// To enable for the bed heater, uncomment the two defines below: // Parameters for the bed heater -#define THERMAL_RUNAWAY_PROTECTION_BED_PERIOD 20 //in seconds +#define THERMAL_RUNAWAY_PROTECTION_BED_PERIOD 20 // in seconds #define THERMAL_RUNAWAY_PROTECTION_BED_HYSTERESIS 2 // in degree Celsius //=========================================================================== @@ -410,7 +404,7 @@ const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic #define Z_MAX_POS 200 //=========================================================================== -//============================= Filament Runout Sensor ====================== +//========================= Filament Runout Sensor ========================== //=========================================================================== //#define FILAMENT_RUNOUT_SENSOR // Uncomment for defining a filament runout sensor such as a mechanical or opto endstop to check the existence of filament // In RAMPS uses servo pin 2. Can be changed in pins file. For other boards pin definition should be made. @@ -420,7 +414,7 @@ const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic //#define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined. //=========================================================================== -//============================ Manual Bed Leveling ========================== +//=========================== Manual Bed Leveling =========================== //=========================================================================== // #define MANUAL_BED_LEVELING // Add display menu option for bed leveling @@ -441,7 +435,7 @@ const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic #endif // MESH_BED_LEVELING //=========================================================================== -//============================= Bed Auto Leveling =========================== +//============================ Bed Auto Leveling ============================ //=========================================================================== // @section bedlevel diff --git a/Marlin/example_configurations/Felix/Configuration.h b/Marlin/example_configurations/Felix/Configuration.h index 0bdc42f977..af0cfba32b 100644 --- a/Marlin/example_configurations/Felix/Configuration.h +++ b/Marlin/example_configurations/Felix/Configuration.h @@ -236,42 +236,36 @@ Here are some standard links for getting your machine calibrated: #define EXTRUDE_MAXLENGTH (X_MAX_LENGTH+Y_MAX_LENGTH) //prevent extrusion of very large distances. //=========================================================================== -//============================= Thermal Runaway Protection ================== +//======================== Thermal Runaway Protection ======================= //=========================================================================== -/* -This is a feature to protect your printer from burn up in flames if it has -a thermistor coming off place (this happened to a friend of mine recently and -motivated me writing this feature). - -The issue: If a thermistor come off, it will read a lower temperature than actual. -The system will turn the heater on forever, burning up the filament and anything -else around. - -After the temperature reaches the target for the first time, this feature will -start measuring for how long the current temperature stays below the target -minus _HYSTERESIS (set_temperature - THERMAL_RUNAWAY_PROTECTION_HYSTERESIS). -If it stays longer than _PERIOD, it means the thermistor temperature -cannot catch up with the target, so something *may be* wrong. Then, to be on the -safe side, the system will he halt. - -Bear in mind the count down will just start AFTER the first time the -thermistor temperature is over the target, so you will have no problem if -your extruder heater takes 2 minutes to hit the target on heating. - -*/ -// If you want to enable this feature for all your extruder heaters, -// uncomment the 2 defines below: +/** + * Thermal Runaway Protection protects your printer from damage and fire if a + * thermistor falls out or temperature sensors fail in any way. + * + * The issue: If a thermistor falls out or a temperature sensor fails, + * Marlin can no longer sense the actual temperature. Since a disconnected + * thermistor reads as a low temperature, the firmware will keep the heater on. + * + * The solution: Once the temperature reaches the target, start observing. + * If the temperature stays too far below the target (hysteresis) for too long, + * the firmware will halt as a safety precaution. + * + * Note that because the countdown starts only AFTER the temperature reaches + * the target, this will not catch a thermistor that is already disconnected + * when the print starts! + * + * To enable for all extruder heaters, uncomment the two defines below: + */ // Parameters for all extruder heaters -#define THERMAL_RUNAWAY_PROTECTION_PERIOD 40 //in seconds +#define THERMAL_RUNAWAY_PROTECTION_PERIOD 40 // in seconds #define THERMAL_RUNAWAY_PROTECTION_HYSTERESIS 4 // in degree Celsius -// If you want to enable this feature for your bed heater, -// uncomment the 2 defines below: +// To enable for the bed heater, uncomment the two defines below: // Parameters for the bed heater -#define THERMAL_RUNAWAY_PROTECTION_BED_PERIOD 20 //in seconds +#define THERMAL_RUNAWAY_PROTECTION_BED_PERIOD 20 // in seconds #define THERMAL_RUNAWAY_PROTECTION_BED_HYSTERESIS 2 // in degree Celsius //=========================================================================== @@ -349,7 +343,7 @@ const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic #define Z_MAX_POS 235 //=========================================================================== -//============================= Filament Runout Sensor ====================== +//========================= Filament Runout Sensor ========================== //=========================================================================== //#define FILAMENT_RUNOUT_SENSOR // Uncomment for defining a filament runout sensor such as a mechanical or opto endstop to check the existence of filament // In RAMPS uses servo pin 2. Can be changed in pins file. For other boards pin definition should be made. @@ -359,7 +353,7 @@ const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic //#define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined. //=========================================================================== -//============================ Manual Bed Leveling ========================== +//=========================== Manual Bed Leveling =========================== //=========================================================================== // #define MANUAL_BED_LEVELING // Add display menu option for bed leveling @@ -380,7 +374,7 @@ const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic #endif // MESH_BED_LEVELING //=========================================================================== -//============================= Bed Auto Leveling =========================== +//============================ Bed Auto Leveling ============================ //=========================================================================== //#define ENABLE_AUTO_BED_LEVELING // Delete the comment to enable (remove // at the start of the line) diff --git a/Marlin/example_configurations/Felix/Configuration_DUAL.h b/Marlin/example_configurations/Felix/Configuration_DUAL.h index 4786858184..cc335fb710 100644 --- a/Marlin/example_configurations/Felix/Configuration_DUAL.h +++ b/Marlin/example_configurations/Felix/Configuration_DUAL.h @@ -236,42 +236,36 @@ Here are some standard links for getting your machine calibrated: #define EXTRUDE_MAXLENGTH (X_MAX_LENGTH+Y_MAX_LENGTH) //prevent extrusion of very large distances. //=========================================================================== -//============================= Thermal Runaway Protection ================== +//======================== Thermal Runaway Protection ======================= //=========================================================================== -/* -This is a feature to protect your printer from burn up in flames if it has -a thermistor coming off place (this happened to a friend of mine recently and -motivated me writing this feature). - -The issue: If a thermistor come off, it will read a lower temperature than actual. -The system will turn the heater on forever, burning up the filament and anything -else around. - -After the temperature reaches the target for the first time, this feature will -start measuring for how long the current temperature stays below the target -minus _HYSTERESIS (set_temperature - THERMAL_RUNAWAY_PROTECTION_HYSTERESIS). -If it stays longer than _PERIOD, it means the thermistor temperature -cannot catch up with the target, so something *may be* wrong. Then, to be on the -safe side, the system will he halt. - -Bear in mind the count down will just start AFTER the first time the -thermistor temperature is over the target, so you will have no problem if -your extruder heater takes 2 minutes to hit the target on heating. - -*/ -// If you want to enable this feature for all your extruder heaters, -// uncomment the 2 defines below: +/** + * Thermal Runaway Protection protects your printer from damage and fire if a + * thermistor falls out or temperature sensors fail in any way. + * + * The issue: If a thermistor falls out or a temperature sensor fails, + * Marlin can no longer sense the actual temperature. Since a disconnected + * thermistor reads as a low temperature, the firmware will keep the heater on. + * + * The solution: Once the temperature reaches the target, start observing. + * If the temperature stays too far below the target (hysteresis) for too long, + * the firmware will halt as a safety precaution. + * + * Note that because the countdown starts only AFTER the temperature reaches + * the target, this will not catch a thermistor that is already disconnected + * when the print starts! + * + * To enable for all extruder heaters, uncomment the two defines below: + */ // Parameters for all extruder heaters -#define THERMAL_RUNAWAY_PROTECTION_PERIOD 40 //in seconds +#define THERMAL_RUNAWAY_PROTECTION_PERIOD 40 // in seconds #define THERMAL_RUNAWAY_PROTECTION_HYSTERESIS 4 // in degree Celsius -// If you want to enable this feature for your bed heater, -// uncomment the 2 defines below: +// To enable for the bed heater, uncomment the two defines below: // Parameters for the bed heater -#define THERMAL_RUNAWAY_PROTECTION_BED_PERIOD 20 //in seconds +#define THERMAL_RUNAWAY_PROTECTION_BED_PERIOD 20 // in seconds #define THERMAL_RUNAWAY_PROTECTION_BED_HYSTERESIS 2 // in degree Celsius //=========================================================================== @@ -349,7 +343,7 @@ const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic #define Z_MAX_POS 235 //=========================================================================== -//============================= Filament Runout Sensor ====================== +//========================= Filament Runout Sensor ========================== //=========================================================================== //#define FILAMENT_RUNOUT_SENSOR // Uncomment for defining a filament runout sensor such as a mechanical or opto endstop to check the existence of filament // In RAMPS uses servo pin 2. Can be changed in pins file. For other boards pin definition should be made. @@ -359,7 +353,7 @@ const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic //#define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined. //=========================================================================== -//============================ Manual Bed Leveling ========================== +//=========================== Manual Bed Leveling =========================== //=========================================================================== // #define MANUAL_BED_LEVELING // Add display menu option for bed leveling @@ -376,7 +370,7 @@ const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic #endif // MESH_BED_LEVELING //=========================================================================== -//============================= Bed Auto Leveling =========================== +//============================ Bed Auto Leveling ============================ //=========================================================================== //#define ENABLE_AUTO_BED_LEVELING // Delete the comment to enable (remove // at the start of the line) diff --git a/Marlin/example_configurations/Hephestos/Configuration.h b/Marlin/example_configurations/Hephestos/Configuration.h index cf2337407b..0fab231ecf 100644 --- a/Marlin/example_configurations/Hephestos/Configuration.h +++ b/Marlin/example_configurations/Hephestos/Configuration.h @@ -257,42 +257,36 @@ Here are some standard links for getting your machine calibrated: #define EXTRUDE_MAXLENGTH (X_MAX_LENGTH+Y_MAX_LENGTH) //prevent extrusion of very large distances. //=========================================================================== -//============================= Thermal Runaway Protection ================== +//======================== Thermal Runaway Protection ======================= //=========================================================================== -/* -This is a feature to protect your printer from burn up in flames if it has -a thermistor coming off place (this happened to a friend of mine recently and -motivated me writing this feature). - -The issue: If a thermistor come off, it will read a lower temperature than actual. -The system will turn the heater on forever, burning up the filament and anything -else around. - -After the temperature reaches the target for the first time, this feature will -start measuring for how long the current temperature stays below the target -minus _HYSTERESIS (set_temperature - THERMAL_RUNAWAY_PROTECTION_HYSTERESIS). -If it stays longer than _PERIOD, it means the thermistor temperature -cannot catch up with the target, so something *may be* wrong. Then, to be on the -safe side, the system will he halt. - -Bear in mind the count down will just start AFTER the first time the -thermistor temperature is over the target, so you will have no problem if -your extruder heater takes 2 minutes to hit the target on heating. - -*/ -// If you want to enable this feature for all your extruder heaters, -// uncomment the 2 defines below: +/** + * Thermal Runaway Protection protects your printer from damage and fire if a + * thermistor falls out or temperature sensors fail in any way. + * + * The issue: If a thermistor falls out or a temperature sensor fails, + * Marlin can no longer sense the actual temperature. Since a disconnected + * thermistor reads as a low temperature, the firmware will keep the heater on. + * + * The solution: Once the temperature reaches the target, start observing. + * If the temperature stays too far below the target (hysteresis) for too long, + * the firmware will halt as a safety precaution. + * + * Note that because the countdown starts only AFTER the temperature reaches + * the target, this will not catch a thermistor that is already disconnected + * when the print starts! + * + * To enable for all extruder heaters, uncomment the two defines below: + */ // Parameters for all extruder heaters -#define THERMAL_RUNAWAY_PROTECTION_PERIOD 40 //in seconds +#define THERMAL_RUNAWAY_PROTECTION_PERIOD 40 // in seconds #define THERMAL_RUNAWAY_PROTECTION_HYSTERESIS 4 // in degree Celsius -// If you want to enable this feature for your bed heater, -// uncomment the 2 defines below: +// To enable for the bed heater, uncomment the two defines below: // Parameters for the bed heater -#define THERMAL_RUNAWAY_PROTECTION_BED_PERIOD 20 //in seconds +#define THERMAL_RUNAWAY_PROTECTION_BED_PERIOD 20 // in seconds #define THERMAL_RUNAWAY_PROTECTION_BED_HYSTERESIS 2 // in degree Celsius //=========================================================================== @@ -370,7 +364,7 @@ const bool Z_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the logic #define Z_MAX_POS 180 //=========================================================================== -//============================= Filament Runout Sensor ====================== +//========================= Filament Runout Sensor ========================== //=========================================================================== //#define FILAMENT_RUNOUT_SENSOR // Uncomment for defining a filament runout sensor such as a mechanical or opto endstop to check the existence of filament // In RAMPS uses servo pin 2. Can be changed in pins file. For other boards pin definition should be made. @@ -380,7 +374,7 @@ const bool Z_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the logic //#define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined. //=========================================================================== -//============================ Manual Bed Leveling ========================== +//=========================== Manual Bed Leveling =========================== //=========================================================================== // #define MANUAL_BED_LEVELING // Add display menu option for bed leveling @@ -401,7 +395,7 @@ const bool Z_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the logic #endif // MESH_BED_LEVELING //=========================================================================== -//============================= Bed Auto Leveling =========================== +//============================ Bed Auto Leveling ============================ //=========================================================================== //#define ENABLE_AUTO_BED_LEVELING // Delete the comment to enable (remove // at the start of the line) diff --git a/Marlin/example_configurations/K8200/Configuration.h b/Marlin/example_configurations/K8200/Configuration.h index 75ccf4f740..e604024501 100644 --- a/Marlin/example_configurations/K8200/Configuration.h +++ b/Marlin/example_configurations/K8200/Configuration.h @@ -286,42 +286,36 @@ Here are some standard links for getting your machine calibrated: #define EXTRUDE_MAXLENGTH (X_MAX_LENGTH+Y_MAX_LENGTH) //prevent extrusion of very large distances. //=========================================================================== -//============================= Thermal Runaway Protection ================== +//======================== Thermal Runaway Protection ======================= //=========================================================================== -/* -This is a feature to protect your printer from burn up in flames if it has -a thermistor coming off place (this happened to a friend of mine recently and -motivated me writing this feature). - -The issue: If a thermistor come off, it will read a lower temperature than actual. -The system will turn the heater on forever, burning up the filament and anything -else around. - -After the temperature reaches the target for the first time, this feature will -start measuring for how long the current temperature stays below the target -minus _HYSTERESIS (set_temperature - THERMAL_RUNAWAY_PROTECTION_HYSTERESIS). -If it stays longer than _PERIOD, it means the thermistor temperature -cannot catch up with the target, so something *may be* wrong. Then, to be on the -safe side, the system will he halt. - -Bear in mind the count down will just start AFTER the first time the -thermistor temperature is over the target, so you will have no problem if -your extruder heater takes 2 minutes to hit the target on heating. - -*/ -// If you want to enable this feature for all your extruder heaters, -// uncomment the 2 defines below: +/** + * Thermal Runaway Protection protects your printer from damage and fire if a + * thermistor falls out or temperature sensors fail in any way. + * + * The issue: If a thermistor falls out or a temperature sensor fails, + * Marlin can no longer sense the actual temperature. Since a disconnected + * thermistor reads as a low temperature, the firmware will keep the heater on. + * + * The solution: Once the temperature reaches the target, start observing. + * If the temperature stays too far below the target (hysteresis) for too long, + * the firmware will halt as a safety precaution. + * + * Note that because the countdown starts only AFTER the temperature reaches + * the target, this will not catch a thermistor that is already disconnected + * when the print starts! + * + * To enable for all extruder heaters, uncomment the two defines below: + */ // Parameters for all extruder heaters -#define THERMAL_RUNAWAY_PROTECTION_PERIOD 40 //in seconds +#define THERMAL_RUNAWAY_PROTECTION_PERIOD 40 // in seconds #define THERMAL_RUNAWAY_PROTECTION_HYSTERESIS 4 // in degree Celsius -// If you want to enable this feature for your bed heater, -// uncomment the 2 defines below: +// To enable for the bed heater, uncomment the two defines below: // Parameters for the bed heater -#define THERMAL_RUNAWAY_PROTECTION_BED_PERIOD 20 //in seconds +#define THERMAL_RUNAWAY_PROTECTION_BED_PERIOD 20 // in seconds #define THERMAL_RUNAWAY_PROTECTION_BED_HYSTERESIS 2 // in degree Celsius //=========================================================================== @@ -426,7 +420,7 @@ const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic #define Z_MAX_POS 200 //=========================================================================== -//============================= Filament Runout Sensor ====================== +//========================= Filament Runout Sensor ========================== //=========================================================================== //#define FILAMENT_RUNOUT_SENSOR // Uncomment for defining a filament runout sensor such as a mechanical or opto endstop to check the existence of filament // In RAMPS uses servo pin 2. Can be changed in pins file. For other boards pin definition should be made. @@ -436,7 +430,7 @@ const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic //#define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined. //=========================================================================== -//============================ Mesh Bed Leveling ============================ +//=========================== Manual Bed Leveling =========================== //=========================================================================== // #define MANUAL_BED_LEVELING // Add display menu option for bed leveling @@ -457,7 +451,7 @@ const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic #endif // MESH_BED_LEVELING //=========================================================================== -//============================= Bed Auto Leveling =========================== +//============================ Bed Auto Leveling ============================ //=========================================================================== // @section bedlevel diff --git a/Marlin/example_configurations/SCARA/Configuration.h b/Marlin/example_configurations/SCARA/Configuration.h index 44b8af94de..ed074a0e2c 100644 --- a/Marlin/example_configurations/SCARA/Configuration.h +++ b/Marlin/example_configurations/SCARA/Configuration.h @@ -288,42 +288,36 @@ Here are some standard links for getting your machine calibrated: #define EXTRUDE_MAXLENGTH (X_MAX_LENGTH+Y_MAX_LENGTH) //prevent extrusion of very large distances. //=========================================================================== -//============================= Thermal Runaway Protection ================== +//======================== Thermal Runaway Protection ======================= //=========================================================================== -/* -This is a feature to protect your printer from burn up in flames if it has -a thermistor coming off place (this happened to a friend of mine recently and -motivated me writing this feature). - -The issue: If a thermistor come off, it will read a lower temperature than actual. -The system will turn the heater on forever, burning up the filament and anything -else around. - -After the temperature reaches the target for the first time, this feature will -start measuring for how long the current temperature stays below the target -minus _HYSTERESIS (set_temperature - THERMAL_RUNAWAY_PROTECTION_HYSTERESIS). -If it stays longer than _PERIOD, it means the thermistor temperature -cannot catch up with the target, so something *may be* wrong. Then, to be on the -safe side, the system will he halt. - -Bear in mind the count down will just start AFTER the first time the -thermistor temperature is over the target, so you will have no problem if -your extruder heater takes 2 minutes to hit the target on heating. - -*/ -// If you want to enable this feature for all your extruder heaters, -// uncomment the 2 defines below: +/** + * Thermal Runaway Protection protects your printer from damage and fire if a + * thermistor falls out or temperature sensors fail in any way. + * + * The issue: If a thermistor falls out or a temperature sensor fails, + * Marlin can no longer sense the actual temperature. Since a disconnected + * thermistor reads as a low temperature, the firmware will keep the heater on. + * + * The solution: Once the temperature reaches the target, start observing. + * If the temperature stays too far below the target (hysteresis) for too long, + * the firmware will halt as a safety precaution. + * + * Note that because the countdown starts only AFTER the temperature reaches + * the target, this will not catch a thermistor that is already disconnected + * when the print starts! + * + * To enable for all extruder heaters, uncomment the two defines below: + */ // Parameters for all extruder heaters -#define THERMAL_RUNAWAY_PROTECTION_PERIOD 40 //in seconds +#define THERMAL_RUNAWAY_PROTECTION_PERIOD 40 // in seconds #define THERMAL_RUNAWAY_PROTECTION_HYSTERESIS 4 // in degree Celsius -// If you want to enable this feature for your bed heater, -// uncomment the 2 defines below: +// To enable for the bed heater, uncomment the two defines below: // Parameters for the bed heater -#define THERMAL_RUNAWAY_PROTECTION_BED_PERIOD 20 //in seconds +#define THERMAL_RUNAWAY_PROTECTION_BED_PERIOD 20 // in seconds #define THERMAL_RUNAWAY_PROTECTION_BED_HYSTERESIS 2 // in degree Celsius //=========================================================================== @@ -401,7 +395,7 @@ const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic #define Z_MAX_POS 225 //=========================================================================== -//============================= Filament Runout Sensor ====================== +//========================= Filament Runout Sensor ========================== //=========================================================================== //#define FILAMENT_RUNOUT_SENSOR // Uncomment for defining a filament runout sensor such as a mechanical or opto endstop to check the existence of filament // In RAMPS uses servo pin 2. Can be changed in pins file. For other boards pin definition should be made. @@ -411,7 +405,7 @@ const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic //#define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined. //=========================================================================== -//============================ Manual Bed Leveling ========================== +//=========================== Manual Bed Leveling =========================== //=========================================================================== // #define MANUAL_BED_LEVELING // Add display menu option for bed leveling @@ -432,7 +426,7 @@ const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic #endif // MESH_BED_LEVELING //=========================================================================== -//============================= Bed Auto Leveling =========================== +//============================ Bed Auto Leveling ============================ //=========================================================================== //#define ENABLE_AUTO_BED_LEVELING // Delete the comment to enable (remove // at the start of the line) diff --git a/Marlin/example_configurations/WITBOX/Configuration.h b/Marlin/example_configurations/WITBOX/Configuration.h index dc356f81da..d585533b94 100644 --- a/Marlin/example_configurations/WITBOX/Configuration.h +++ b/Marlin/example_configurations/WITBOX/Configuration.h @@ -256,42 +256,36 @@ Here are some standard links for getting your machine calibrated: #define EXTRUDE_MAXLENGTH (X_MAX_LENGTH+Y_MAX_LENGTH) //prevent extrusion of very large distances. //=========================================================================== -//============================= Thermal Runaway Protection ================== +//======================== Thermal Runaway Protection ======================= //=========================================================================== -/* -This is a feature to protect your printer from burn up in flames if it has -a thermistor coming off place (this happened to a friend of mine recently and -motivated me writing this feature). - -The issue: If a thermistor come off, it will read a lower temperature than actual. -The system will turn the heater on forever, burning up the filament and anything -else around. - -After the temperature reaches the target for the first time, this feature will -start measuring for how long the current temperature stays below the target -minus _HYSTERESIS (set_temperature - THERMAL_RUNAWAY_PROTECTION_HYSTERESIS). -If it stays longer than _PERIOD, it means the thermistor temperature -cannot catch up with the target, so something *may be* wrong. Then, to be on the -safe side, the system will he halt. - -Bear in mind the count down will just start AFTER the first time the -thermistor temperature is over the target, so you will have no problem if -your extruder heater takes 2 minutes to hit the target on heating. - -*/ -// If you want to enable this feature for all your extruder heaters, -// uncomment the 2 defines below: +/** + * Thermal Runaway Protection protects your printer from damage and fire if a + * thermistor falls out or temperature sensors fail in any way. + * + * The issue: If a thermistor falls out or a temperature sensor fails, + * Marlin can no longer sense the actual temperature. Since a disconnected + * thermistor reads as a low temperature, the firmware will keep the heater on. + * + * The solution: Once the temperature reaches the target, start observing. + * If the temperature stays too far below the target (hysteresis) for too long, + * the firmware will halt as a safety precaution. + * + * Note that because the countdown starts only AFTER the temperature reaches + * the target, this will not catch a thermistor that is already disconnected + * when the print starts! + * + * To enable for all extruder heaters, uncomment the two defines below: + */ // Parameters for all extruder heaters -#define THERMAL_RUNAWAY_PROTECTION_PERIOD 40 //in seconds +#define THERMAL_RUNAWAY_PROTECTION_PERIOD 40 // in seconds #define THERMAL_RUNAWAY_PROTECTION_HYSTERESIS 4 // in degree Celsius -// If you want to enable this feature for your bed heater, -// uncomment the 2 defines below: +// To enable for the bed heater, uncomment the two defines below: // Parameters for the bed heater -#define THERMAL_RUNAWAY_PROTECTION_BED_PERIOD 20 //in seconds +#define THERMAL_RUNAWAY_PROTECTION_BED_PERIOD 20 // in seconds #define THERMAL_RUNAWAY_PROTECTION_BED_HYSTERESIS 2 // in degree Celsius //=========================================================================== @@ -369,7 +363,7 @@ const bool Z_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the logic #define Z_MAX_POS 200 //=========================================================================== -//============================= Filament Runout Sensor ====================== +//========================= Filament Runout Sensor ========================== //=========================================================================== //#define FILAMENT_RUNOUT_SENSOR // Uncomment for defining a filament runout sensor such as a mechanical or opto endstop to check the existence of filament // In RAMPS uses servo pin 2. Can be changed in pins file. For other boards pin definition should be made. @@ -379,7 +373,7 @@ const bool Z_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the logic //#define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined. //=========================================================================== -//============================ Manual Bed Leveling ========================== +//=========================== Manual Bed Leveling =========================== //=========================================================================== // #define MANUAL_BED_LEVELING // Add display menu option for bed leveling @@ -400,7 +394,7 @@ const bool Z_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the logic #endif // MESH_BED_LEVELING //=========================================================================== -//============================= Bed Auto Leveling =========================== +//============================ Bed Auto Leveling ============================ //=========================================================================== //#define ENABLE_AUTO_BED_LEVELING // Delete the comment to enable (remove // at the start of the line) diff --git a/Marlin/example_configurations/delta/biv2.5/Configuration.h b/Marlin/example_configurations/delta/biv2.5/Configuration.h index 65983b3604..d9874ce94e 100644 --- a/Marlin/example_configurations/delta/biv2.5/Configuration.h +++ b/Marlin/example_configurations/delta/biv2.5/Configuration.h @@ -286,42 +286,36 @@ Here are some standard links for getting your machine calibrated: #define EXTRUDE_MAXLENGTH (X_MAX_LENGTH+Y_MAX_LENGTH) //prevent extrusion of very large distances. //=========================================================================== -//============================= Thermal Runaway Protection ================== +//======================== Thermal Runaway Protection ======================= //=========================================================================== -/* -This is a feature to protect your printer from burn up in flames if it has -a thermistor coming off place (this happened to a friend of mine recently and -motivated me writing this feature). - -The issue: If a thermistor come off, it will read a lower temperature than actual. -The system will turn the heater on forever, burning up the filament and anything -else around. - -After the temperature reaches the target for the first time, this feature will -start measuring for how long the current temperature stays below the target -minus _HYSTERESIS (set_temperature - THERMAL_RUNAWAY_PROTECTION_HYSTERESIS). -If it stays longer than _PERIOD, it means the thermistor temperature -cannot catch up with the target, so something *may be* wrong. Then, to be on the -safe side, the system will he halt. - -Bear in mind the count down will just start AFTER the first time the -thermistor temperature is over the target, so you will have no problem if -your extruder heater takes 2 minutes to hit the target on heating. - -*/ -// If you want to enable this feature for all your extruder heaters, -// uncomment the 2 defines below: +/** + * Thermal Runaway Protection protects your printer from damage and fire if a + * thermistor falls out or temperature sensors fail in any way. + * + * The issue: If a thermistor falls out or a temperature sensor fails, + * Marlin can no longer sense the actual temperature. Since a disconnected + * thermistor reads as a low temperature, the firmware will keep the heater on. + * + * The solution: Once the temperature reaches the target, start observing. + * If the temperature stays too far below the target (hysteresis) for too long, + * the firmware will halt as a safety precaution. + * + * Note that because the countdown starts only AFTER the temperature reaches + * the target, this will not catch a thermistor that is already disconnected + * when the print starts! + * + * To enable for all extruder heaters, uncomment the two defines below: + */ // Parameters for all extruder heaters -#define THERMAL_RUNAWAY_PROTECTION_PERIOD 40 //in seconds +#define THERMAL_RUNAWAY_PROTECTION_PERIOD 40 // in seconds #define THERMAL_RUNAWAY_PROTECTION_HYSTERESIS 4 // in degree Celsius -// If you want to enable this feature for your bed heater, -// uncomment the 2 defines below: +// To enable for the bed heater, uncomment the two defines below: // Parameters for the bed heater -#define THERMAL_RUNAWAY_PROTECTION_BED_PERIOD 120 //in seconds +#define THERMAL_RUNAWAY_PROTECTION_BED_PERIOD 120 // in seconds #define THERMAL_RUNAWAY_PROTECTION_BED_HYSTERESIS 4 // in degree Celsius //=========================================================================== @@ -399,7 +393,7 @@ const bool Z_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the logic #define Z_MAX_POS MANUAL_Z_HOME_POS //=========================================================================== -//============================= Filament Runout Sensor ====================== +//========================= Filament Runout Sensor ========================== //=========================================================================== //#define FILAMENT_RUNOUT_SENSOR // Uncomment for defining a filament runout sensor such as a mechanical or opto endstop to check the existence of filament // In RAMPS uses servo pin 2. Can be changed in pins file. For other boards pin definition should be made. @@ -409,7 +403,7 @@ const bool Z_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the logic //#define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined. //=========================================================================== -//============================ Manual Bed Leveling ========================== +//=========================== Manual Bed Leveling =========================== //=========================================================================== // #define MANUAL_BED_LEVELING // Add display menu option for bed leveling @@ -430,7 +424,7 @@ const bool Z_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the logic #endif // MESH_BED_LEVELING //=========================================================================== -//============================= Bed Auto Leveling =========================== +//============================ Bed Auto Leveling ============================ //=========================================================================== //#define ENABLE_AUTO_BED_LEVELING // Delete the comment to enable (remove // at the start of the line) diff --git a/Marlin/example_configurations/delta/generic/Configuration.h b/Marlin/example_configurations/delta/generic/Configuration.h index d4028c0675..ef8037ca76 100644 --- a/Marlin/example_configurations/delta/generic/Configuration.h +++ b/Marlin/example_configurations/delta/generic/Configuration.h @@ -286,42 +286,36 @@ Here are some standard links for getting your machine calibrated: #define EXTRUDE_MAXLENGTH (X_MAX_LENGTH+Y_MAX_LENGTH) //prevent extrusion of very large distances. //=========================================================================== -//============================= Thermal Runaway Protection ================== +//======================== Thermal Runaway Protection ======================= //=========================================================================== -/* -This is a feature to protect your printer from burn up in flames if it has -a thermistor coming off place (this happened to a friend of mine recently and -motivated me writing this feature). - -The issue: If a thermistor come off, it will read a lower temperature than actual. -The system will turn the heater on forever, burning up the filament and anything -else around. - -After the temperature reaches the target for the first time, this feature will -start measuring for how long the current temperature stays below the target -minus _HYSTERESIS (set_temperature - THERMAL_RUNAWAY_PROTECTION_HYSTERESIS). -If it stays longer than _PERIOD, it means the thermistor temperature -cannot catch up with the target, so something *may be* wrong. Then, to be on the -safe side, the system will he halt. - -Bear in mind the count down will just start AFTER the first time the -thermistor temperature is over the target, so you will have no problem if -your extruder heater takes 2 minutes to hit the target on heating. - -*/ -// If you want to enable this feature for all your extruder heaters, -// uncomment the 2 defines below: +/** + * Thermal Runaway Protection protects your printer from damage and fire if a + * thermistor falls out or temperature sensors fail in any way. + * + * The issue: If a thermistor falls out or a temperature sensor fails, + * Marlin can no longer sense the actual temperature. Since a disconnected + * thermistor reads as a low temperature, the firmware will keep the heater on. + * + * The solution: Once the temperature reaches the target, start observing. + * If the temperature stays too far below the target (hysteresis) for too long, + * the firmware will halt as a safety precaution. + * + * Note that because the countdown starts only AFTER the temperature reaches + * the target, this will not catch a thermistor that is already disconnected + * when the print starts! + * + * To enable for all extruder heaters, uncomment the two defines below: + */ // Parameters for all extruder heaters -#define THERMAL_RUNAWAY_PROTECTION_PERIOD 40 //in seconds +#define THERMAL_RUNAWAY_PROTECTION_PERIOD 40 // in seconds #define THERMAL_RUNAWAY_PROTECTION_HYSTERESIS 4 // in degree Celsius -// If you want to enable this feature for your bed heater, -// uncomment the 2 defines below: +// To enable for the bed heater, uncomment the two defines below: // Parameters for the bed heater -#define THERMAL_RUNAWAY_PROTECTION_BED_PERIOD 20 //in seconds +#define THERMAL_RUNAWAY_PROTECTION_BED_PERIOD 20 // in seconds #define THERMAL_RUNAWAY_PROTECTION_BED_HYSTERESIS 2 // in degree Celsius //=========================================================================== @@ -399,7 +393,7 @@ const bool Z_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the logic #define Z_MAX_POS MANUAL_Z_HOME_POS //=========================================================================== -//============================= Filament Runout Sensor ====================== +//========================= Filament Runout Sensor ========================== //=========================================================================== //#define FILAMENT_RUNOUT_SENSOR // Uncomment for defining a filament runout sensor such as a mechanical or opto endstop to check the existence of filament // In RAMPS uses servo pin 2. Can be changed in pins file. For other boards pin definition should be made. @@ -409,7 +403,7 @@ const bool Z_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the logic //#define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined. //=========================================================================== -//============================ Manual Bed Leveling ========================== +//=========================== Manual Bed Leveling =========================== //=========================================================================== // #define MANUAL_BED_LEVELING // Add display menu option for bed leveling @@ -430,7 +424,7 @@ const bool Z_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the logic #endif // MESH_BED_LEVELING //=========================================================================== -//============================= Bed Auto Leveling =========================== +//============================ Bed Auto Leveling ============================ //=========================================================================== //#define ENABLE_AUTO_BED_LEVELING // Delete the comment to enable (remove // at the start of the line) diff --git a/Marlin/example_configurations/delta/kossel_mini/Configuration.h b/Marlin/example_configurations/delta/kossel_mini/Configuration.h index cd0a34ec92..863087c1b4 100644 --- a/Marlin/example_configurations/delta/kossel_mini/Configuration.h +++ b/Marlin/example_configurations/delta/kossel_mini/Configuration.h @@ -286,42 +286,36 @@ Here are some standard links for getting your machine calibrated: #define EXTRUDE_MAXLENGTH (X_MAX_LENGTH+Y_MAX_LENGTH) //prevent extrusion of very large distances. //=========================================================================== -//============================= Thermal Runaway Protection ================== +//======================== Thermal Runaway Protection ======================= //=========================================================================== -/* -This is a feature to protect your printer from burn up in flames if it has -a thermistor coming off place (this happened to a friend of mine recently and -motivated me writing this feature). - -The issue: If a thermistor come off, it will read a lower temperature than actual. -The system will turn the heater on forever, burning up the filament and anything -else around. - -After the temperature reaches the target for the first time, this feature will -start measuring for how long the current temperature stays below the target -minus _HYSTERESIS (set_temperature - THERMAL_RUNAWAY_PROTECTION_HYSTERESIS). -If it stays longer than _PERIOD, it means the thermistor temperature -cannot catch up with the target, so something *may be* wrong. Then, to be on the -safe side, the system will he halt. - -Bear in mind the count down will just start AFTER the first time the -thermistor temperature is over the target, so you will have no problem if -your extruder heater takes 2 minutes to hit the target on heating. - -*/ -// If you want to enable this feature for all your extruder heaters, -// uncomment the 2 defines below: +/** + * Thermal Runaway Protection protects your printer from damage and fire if a + * thermistor falls out or temperature sensors fail in any way. + * + * The issue: If a thermistor falls out or a temperature sensor fails, + * Marlin can no longer sense the actual temperature. Since a disconnected + * thermistor reads as a low temperature, the firmware will keep the heater on. + * + * The solution: Once the temperature reaches the target, start observing. + * If the temperature stays too far below the target (hysteresis) for too long, + * the firmware will halt as a safety precaution. + * + * Note that because the countdown starts only AFTER the temperature reaches + * the target, this will not catch a thermistor that is already disconnected + * when the print starts! + * + * To enable for all extruder heaters, uncomment the two defines below: + */ // Parameters for all extruder heaters -#define THERMAL_RUNAWAY_PROTECTION_PERIOD 40 //in seconds +#define THERMAL_RUNAWAY_PROTECTION_PERIOD 40 // in seconds #define THERMAL_RUNAWAY_PROTECTION_HYSTERESIS 4 // in degree Celsius -// If you want to enable this feature for your bed heater, -// uncomment the 2 defines below: +// To enable for the bed heater, uncomment the two defines below: // Parameters for the bed heater -#define THERMAL_RUNAWAY_PROTECTION_BED_PERIOD 20 //in seconds +#define THERMAL_RUNAWAY_PROTECTION_BED_PERIOD 20 // in seconds #define THERMAL_RUNAWAY_PROTECTION_BED_HYSTERESIS 2 // in degree Celsius //=========================================================================== @@ -399,7 +393,7 @@ const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic #define Z_MAX_POS MANUAL_Z_HOME_POS //=========================================================================== -//============================= Filament Runout Sensor ====================== +//========================= Filament Runout Sensor ========================== //=========================================================================== //#define FILAMENT_RUNOUT_SENSOR // Uncomment for defining a filament runout sensor such as a mechanical or opto endstop to check the existence of filament // In RAMPS uses servo pin 2. Can be changed in pins file. For other boards pin definition should be made. @@ -409,7 +403,7 @@ const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic //#define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined. //=========================================================================== -//============================ Manual Bed Leveling ========================== +//=========================== Manual Bed Leveling =========================== //=========================================================================== // #define MANUAL_BED_LEVELING // Add display menu option for bed leveling @@ -430,7 +424,7 @@ const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic #endif // MESH_BED_LEVELING //=========================================================================== -//============================= Bed Auto Leveling =========================== +//============================ Bed Auto Leveling ============================ //=========================================================================== #define ENABLE_AUTO_BED_LEVELING // Delete the comment to enable (remove // at the start of the line) diff --git a/Marlin/example_configurations/makibox/Configuration.h b/Marlin/example_configurations/makibox/Configuration.h index 237ea7d38a..a39f4786fe 100644 --- a/Marlin/example_configurations/makibox/Configuration.h +++ b/Marlin/example_configurations/makibox/Configuration.h @@ -256,42 +256,36 @@ Here are some standard links for getting your machine calibrated: #define EXTRUDE_MAXLENGTH (X_MAX_LENGTH+Y_MAX_LENGTH) //prevent extrusion of very large distances. //=========================================================================== -//============================= Thermal Runaway Protection ================== +//======================== Thermal Runaway Protection ======================= //=========================================================================== -/* -This is a feature to protect your printer from burn up in flames if it has -a thermistor coming off place (this happened to a friend of mine recently and -motivated me writing this feature). - -The issue: If a thermistor come off, it will read a lower temperature than actual. -The system will turn the heater on forever, burning up the filament and anything -else around. - -After the temperature reaches the target for the first time, this feature will -start measuring for how long the current temperature stays below the target -minus _HYSTERESIS (set_temperature - THERMAL_RUNAWAY_PROTECTION_HYSTERESIS). -If it stays longer than _PERIOD, it means the thermistor temperature -cannot catch up with the target, so something *may be* wrong. Then, to be on the -safe side, the system will he halt. - -Bear in mind the count down will just start AFTER the first time the -thermistor temperature is over the target, so you will have no problem if -your extruder heater takes 2 minutes to hit the target on heating. - -*/ -// If you want to enable this feature for all your extruder heaters, -// uncomment the 2 defines below: +/** + * Thermal Runaway Protection protects your printer from damage and fire if a + * thermistor falls out or temperature sensors fail in any way. + * + * The issue: If a thermistor falls out or a temperature sensor fails, + * Marlin can no longer sense the actual temperature. Since a disconnected + * thermistor reads as a low temperature, the firmware will keep the heater on. + * + * The solution: Once the temperature reaches the target, start observing. + * If the temperature stays too far below the target (hysteresis) for too long, + * the firmware will halt as a safety precaution. + * + * Note that because the countdown starts only AFTER the temperature reaches + * the target, this will not catch a thermistor that is already disconnected + * when the print starts! + * + * To enable for all extruder heaters, uncomment the two defines below: + */ // Parameters for all extruder heaters -#define THERMAL_RUNAWAY_PROTECTION_PERIOD 40 //in seconds +#define THERMAL_RUNAWAY_PROTECTION_PERIOD 40 // in seconds #define THERMAL_RUNAWAY_PROTECTION_HYSTERESIS 4 // in degree Celsius -// If you want to enable this feature for your bed heater, -// uncomment the 2 defines below: +// To enable for the bed heater, uncomment the two defines below: // Parameters for the bed heater -#define THERMAL_RUNAWAY_PROTECTION_BED_PERIOD 20 //in seconds +#define THERMAL_RUNAWAY_PROTECTION_BED_PERIOD 20 // in seconds #define THERMAL_RUNAWAY_PROTECTION_BED_HYSTERESIS 2 // in degree Celsius //=========================================================================== @@ -369,7 +363,7 @@ const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic #define Z_MAX_POS 86 //=========================================================================== -//============================= Filament Runout Sensor ====================== +//========================= Filament Runout Sensor ========================== //=========================================================================== //#define FILAMENT_RUNOUT_SENSOR // Uncomment for defining a filament runout sensor such as a mechanical or opto endstop to check the existence of filament // In RAMPS uses servo pin 2. Can be changed in pins file. For other boards pin definition should be made. @@ -379,7 +373,7 @@ const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic //#define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined. //=========================================================================== -//============================ Manual Bed Leveling ========================== +//=========================== Manual Bed Leveling =========================== //=========================================================================== // #define MANUAL_BED_LEVELING // Add display menu option for bed leveling @@ -400,7 +394,7 @@ const bool Z_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic #endif // MESH_BED_LEVELING //=========================================================================== -//============================= Bed Auto Leveling =========================== +//============================ Bed Auto Leveling ============================ //=========================================================================== //#define ENABLE_AUTO_BED_LEVELING // Delete the comment to enable (remove // at the start of the line) diff --git a/Marlin/example_configurations/tvrrug/Round2/Configuration.h b/Marlin/example_configurations/tvrrug/Round2/Configuration.h index 5e07e4790a..506bade82b 100644 --- a/Marlin/example_configurations/tvrrug/Round2/Configuration.h +++ b/Marlin/example_configurations/tvrrug/Round2/Configuration.h @@ -258,42 +258,36 @@ Here are some standard links for getting your machine calibrated: #define EXTRUDE_MAXLENGTH (X_MAX_LENGTH+Y_MAX_LENGTH) //prevent extrusion of very large distances. //=========================================================================== -//============================= Thermal Runaway Protection ================== +//======================== Thermal Runaway Protection ======================= //=========================================================================== -/* -This is a feature to protect your printer from burn up in flames if it has -a thermistor coming off place (this happened to a friend of mine recently and -motivated me writing this feature). - -The issue: If a thermistor come off, it will read a lower temperature than actual. -The system will turn the heater on forever, burning up the filament and anything -else around. - -After the temperature reaches the target for the first time, this feature will -start measuring for how long the current temperature stays below the target -minus _HYSTERESIS (set_temperature - THERMAL_RUNAWAY_PROTECTION_HYSTERESIS). -If it stays longer than _PERIOD, it means the thermistor temperature -cannot catch up with the target, so something *may be* wrong. Then, to be on the -safe side, the system will he halt. - -Bear in mind the count down will just start AFTER the first time the -thermistor temperature is over the target, so you will have no problem if -your extruder heater takes 2 minutes to hit the target on heating. - -*/ -// If you want to enable this feature for all your extruder heaters, -// uncomment the 2 defines below: +/** + * Thermal Runaway Protection protects your printer from damage and fire if a + * thermistor falls out or temperature sensors fail in any way. + * + * The issue: If a thermistor falls out or a temperature sensor fails, + * Marlin can no longer sense the actual temperature. Since a disconnected + * thermistor reads as a low temperature, the firmware will keep the heater on. + * + * The solution: Once the temperature reaches the target, start observing. + * If the temperature stays too far below the target (hysteresis) for too long, + * the firmware will halt as a safety precaution. + * + * Note that because the countdown starts only AFTER the temperature reaches + * the target, this will not catch a thermistor that is already disconnected + * when the print starts! + * + * To enable for all extruder heaters, uncomment the two defines below: + */ // Parameters for all extruder heaters -#define THERMAL_RUNAWAY_PROTECTION_PERIOD 40 //in seconds +#define THERMAL_RUNAWAY_PROTECTION_PERIOD 40 // in seconds #define THERMAL_RUNAWAY_PROTECTION_HYSTERESIS 4 // in degree Celsius -// If you want to enable this feature for your bed heater, -// uncomment the 2 defines below: +// To enable for the bed heater, uncomment the two defines below: // Parameters for the bed heater -#define THERMAL_RUNAWAY_PROTECTION_BED_PERIOD 20 //in seconds +#define THERMAL_RUNAWAY_PROTECTION_BED_PERIOD 20 // in seconds #define THERMAL_RUNAWAY_PROTECTION_BED_HYSTERESIS 2 // in degree Celsius //=========================================================================== @@ -371,7 +365,7 @@ const bool Z_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the logic #define Z_MAX_POS 120 //=========================================================================== -//============================= Filament Runout Sensor ====================== +//========================= Filament Runout Sensor ========================== //=========================================================================== //#define FILAMENT_RUNOUT_SENSOR // Uncomment for defining a filament runout sensor such as a mechanical or opto endstop to check the existence of filament // In RAMPS uses servo pin 2. Can be changed in pins file. For other boards pin definition should be made. @@ -381,7 +375,7 @@ const bool Z_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the logic //#define ENDSTOPPULLUP_FIL_RUNOUT // Uncomment to use internal pullup for filament runout pins if the sensor is defined. //=========================================================================== -//============================ Manual Bed Leveling ========================== +//=========================== Manual Bed Leveling =========================== //=========================================================================== // #define MANUAL_BED_LEVELING // Add display menu option for bed leveling @@ -402,7 +396,7 @@ const bool Z_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the logic #endif // MESH_BED_LEVELING //=========================================================================== -//============================= Bed Auto Leveling =========================== +//============================ Bed Auto Leveling ============================ //=========================================================================== //#define ENABLE_AUTO_BED_LEVELING // Delete the comment to enable (remove // at the start of the line)