diff --git a/g2core/g2core_info.h b/g2core/g2core_info.h
index 7a2e9306..1f3245ba 100644
--- a/g2core/g2core_info.h
+++ b/g2core/g2core_info.h
@@ -21,7 +21,7 @@
#ifndef G2CORE_INFO_H_ONCE
#define G2CORE_INFO_H_ONCE
-#define G2CORE_FIRMWARE_BUILD 100.23 // Merged dev-227-marlin-compat - see #227 and #244
+#define G2CORE_FIRMWARE_BUILD 100.26 // Merged fixes for #267 and PR #258
#define G2CORE_FIRMWARE_VERSION 0.99
#ifdef GIT_VERSION
diff --git a/g2core/gcode_parser.cpp b/g2core/gcode_parser.cpp
index 47e11c6a..60f4e7e4 100644
--- a/g2core/gcode_parser.cpp
+++ b/g2core/gcode_parser.cpp
@@ -1002,14 +1002,14 @@ stat_t _execute_gcode_block(char *active_comment)
//--> set retract mode goes here
switch (gv.next_action) {
- case NEXT_ACTION_SET_G28_POSITION: { status = cm_set_g28_position(); break;} // G28.1
- case NEXT_ACTION_GOTO_G28_POSITION: { status = cm_goto_g28_position(gv.target, gf.target); break;} // G28
- case NEXT_ACTION_SET_G30_POSITION: { status = cm_set_g30_position(); break;} // G30.1
- case NEXT_ACTION_GOTO_G30_POSITION: { status = cm_goto_g30_position(gv.target, gf.target); break;} // G30
+ case NEXT_ACTION_SET_G28_POSITION: { status = cm_set_g28_position(); break;} // G28.1
+ case NEXT_ACTION_GOTO_G28_POSITION: { status = cm_goto_g28_position(gv.target, gf.target); break;} // G28
+ case NEXT_ACTION_SET_G30_POSITION: { status = cm_set_g30_position(); break;} // G30.1
+ case NEXT_ACTION_GOTO_G30_POSITION: { status = cm_goto_g30_position(gv.target, gf.target); break;} // G30
- case NEXT_ACTION_SEARCH_HOME: { status = cm_homing_cycle_start(gv.target, gf.target); break;} // G28.2
- case NEXT_ACTION_SET_ABSOLUTE_ORIGIN: { status = cm_set_absolute_origin(gv.target, gf.target); break;} // G28.3
- case NEXT_ACTION_HOMING_NO_SET: { status = cm_homing_cycle_start_no_set(gv.target, gf.target); break;} // G28.4
+ case NEXT_ACTION_SEARCH_HOME: { status = cm_homing_cycle_start(gv.target, gf.target); break;} // G28.2
+ case NEXT_ACTION_SET_ABSOLUTE_ORIGIN: { status = cm_set_absolute_origin(gv.target, gf.target); break;} // G28.3
+ case NEXT_ACTION_HOMING_NO_SET: { status = cm_homing_cycle_start_no_set(gv.target, gf.target); break;}// G28.4
case NEXT_ACTION_STRAIGHT_PROBE_ERR: { status = cm_straight_probe(gv.target, gf.target, true, true); break;} // G38.2
case NEXT_ACTION_STRAIGHT_PROBE: { status = cm_straight_probe(gv.target, gf.target, true, false); break;} // G38.3
diff --git a/g2core/settings/settings_Printrbot_Play.h b/g2core/settings/settings_Printrbot_Play.h
index 3983a151..f24fdfb3 100644
--- a/g2core/settings/settings_Printrbot_Play.h
+++ b/g2core/settings/settings_Printrbot_Play.h
@@ -2,8 +2,8 @@
* settings_Printrbot_play.h
* This file is part of the the g2core project
*
- * Copyright (c) 2010 - 2016 Alden S. Hart, Jr.
- * Copyright (c) 2010 - 2016 Robert Giseburt
+ * Copyright (c) 2010 - 2017 Alden S. Hart, Jr.
+ * Copyright (c) 2010 - 2017 Robert Giseburt
*
* This file ("the software") is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License, version 2 as published by the
@@ -33,155 +33,160 @@
// ***> NOTE: The init message must be a single line with no CRs or LFs
#define INIT_MESSAGE "Initializing configs to Printrbot Play profile"
-#ifndef PI
-#define PI 3.14159628
-#endif
-
//**** GLOBAL / GENERAL SETTINGS ******************************************************
-#define JUNCTION_INTEGRATION_TIME 1.1 // cornering - between 0.10 and 2.00 (higher is faster)
-#define CHORDAL_TOLERANCE 0.01 // chordal accuracy for arc drawing (in mm)
+#define JUNCTION_INTEGRATION_TIME 1.1 // cornering - between 0.10 and 2.00 (higher is faster)
+#define CHORDAL_TOLERANCE 0.01 // chordal accuracy for arc drawing (in mm)
-#define SOFT_LIMIT_ENABLE 0 // 0=off, 1=on
-#define HARD_LIMIT_ENABLE 1 // 0=off, 1=on
-#define SAFETY_INTERLOCK_ENABLE 1 // 0=off, 1=on
+#define SOFT_LIMIT_ENABLE 0 // 0=off, 1=on
+#define HARD_LIMIT_ENABLE 1 // 0=off, 1=on
+#define SAFETY_INTERLOCK_ENABLE 1 // 0=off, 1=on
-#define SPINDLE_ENABLE_POLARITY 1 // 0=active low, 1=active high
-#define SPINDLE_DIR_POLARITY 0 // 0=clockwise is low, 1=clockwise is high
-#define SPINDLE_PAUSE_ON_HOLD true
-#define SPINDLE_DWELL_TIME 1.0
+#define SPINDLE_ENABLE_POLARITY 1 // 0=active low, 1=active high
+#define SPINDLE_DIR_POLARITY 0 // 0=clockwise is low, 1=clockwise is high
+#define SPINDLE_PAUSE_ON_HOLD true
+#define SPINDLE_DWELL_TIME 1.0
-#define COOLANT_MIST_POLARITY 1 // 0=active low, 1=active high
-#define COOLANT_FLOOD_POLARITY 1 // 0=active low, 1=active high
-#define COOLANT_PAUSE_ON_HOLD false
+#define COOLANT_MIST_POLARITY 1 // 0=active low, 1=active high
+#define COOLANT_FLOOD_POLARITY 1 // 0=active low, 1=active high
+#define COOLANT_PAUSE_ON_HOLD false
+
+#define TRAVERSE_AT_HIGH_JERK true // EXPERIMENTAL, primarily used here for retraction of extruder
// Communications and reporting settings
-#define MARLIN_COMPAT_ENABLED true // enable marlin compatibility mode
-#define COMM_MODE JSON_MODE // one of: TEXT_MODE, JSON_MODE
-#define XIO_ENABLE_FLOW_CONTROL FLOW_CONTROL_RTS // FLOW_CONTROL_OFF, FLOW_CONTROL_RTS
-#define XIO_UART_MUTES_WHEN_USB_CONNECTED 1 // Mute the UART when USB connects
+#define MARLIN_COMPAT_ENABLED true // enable marlin compatibility mode
+#define COMM_MODE JSON_MODE // one of: TEXT_MODE, JSON_MODE
+#define XIO_ENABLE_FLOW_CONTROL FLOW_CONTROL_RTS // FLOW_CONTROL_OFF, FLOW_CONTROL_RTS
+#define XIO_UART_MUTES_WHEN_USB_CONNECTED 1 // Mute the UART when USB connects
-#define TEXT_VERBOSITY TV_VERBOSE // one of: TV_SILENT, TV_VERBOSE
-#define JSON_VERBOSITY JV_LINENUM // one of: JV_SILENT, JV_FOOTER, JV_CONFIGS, JV_MESSAGES, JV_LINENUM, JV_VERBOSE
-#define QUEUE_REPORT_VERBOSITY QR_OFF // one of: QR_OFF, QR_SINGLE, QR_TRIPLE
+#define TEXT_VERBOSITY TV_VERBOSE // one of: TV_SILENT, TV_VERBOSE
+#define JSON_VERBOSITY JV_LINENUM // one of: JV_SILENT, JV_FOOTER, JV_CONFIGS, JV_MESSAGES, JV_LINENUM, JV_VERBOSE
+#define QUEUE_REPORT_VERBOSITY QR_OFF // one of: QR_OFF, QR_SINGLE, QR_TRIPLE
-#define STATUS_REPORT_VERBOSITY SR_FILTERED // one of: SR_OFF, SR_FILTERED, SR_VERBOSE
-#define STATUS_REPORT_MIN_MS 100 // milliseconds - enforces a viable minimum
-#define STATUS_REPORT_INTERVAL_MS 250 // milliseconds - set $SV=0 to disable
+#define STATUS_REPORT_VERBOSITY SR_FILTERED // one of: SR_OFF, SR_FILTERED, SR_VERBOSE
+#define STATUS_REPORT_MIN_MS 100 // milliseconds - enforces a viable minimum
+#define STATUS_REPORT_INTERVAL_MS 250 // milliseconds - set $SV=0 to disable
// Defaults for 3DP
-//#define STATUS_REPORT_DEFAULTS
-//"line","posx","posy","posz","posa","vel","he1t","he1st","he1at","feed","vel","unit","path","stat"
-// There are no heater two or three, but these would show those: ,"he2t","he2st","he2at","he3t","he3st","he3at"
-
-// Defaults for motion debugging
-//#define STATUS_REPORT_DEFAULTS
-//"line","posx","posy","posz","posa","vel","he1t","he1st","he1at","he2t","he2st","he2at","he3t","he3st","he3at","_fe5","_fe4","feed","vel","unit","path","stat"
-
-// Defaults for PID tuning
-#define STATUS_REPORT_DEFAULTS \
- "line", "posx", "posy", "posz", "posa", "vel", "he1t", "he1st", "he1at", "he1op", "pid1p", "pid1i", "pid1d", \
- "feed", "vel", "unit", "path", "stat"
+#define STATUS_REPORT_DEFAULTS \
+ "line","posx","posy","posz","posa","vel","he1t","he1st","he1at","he1op","feed","vel","unit","path","stat", \
+ "he2t","he2st","he2at","he2op","he3t","he3st","he3at","he3op"
// Gcode startup defaults
-#define GCODE_DEFAULT_UNITS MILLIMETERS // MILLIMETERS or INCHES
-#define GCODE_DEFAULT_PLANE CANON_PLANE_XY // CANON_PLANE_XY, CANON_PLANE_XZ, or CANON_PLANE_YZ
-#define GCODE_DEFAULT_COORD_SYSTEM G54 // G54, G55, G56, G57, G58 or G59
-#define GCODE_DEFAULT_PATH_CONTROL PATH_CONTINUOUS
-#define GCODE_DEFAULT_DISTANCE_MODE ABSOLUTE_DISTANCE_MODE
+#define GCODE_DEFAULT_UNITS MILLIMETERS // MILLIMETERS or INCHES
+#define GCODE_DEFAULT_PLANE CANON_PLANE_XY // CANON_PLANE_XY, CANON_PLANE_XZ, or CANON_PLANE_YZ
+#define GCODE_DEFAULT_COORD_SYSTEM G54 // G54, G55, G56, G57, G58 or G59
+#define GCODE_DEFAULT_PATH_CONTROL PATH_CONTINUOUS
+#define GCODE_DEFAULT_DISTANCE_MODE ABSOLUTE_DISTANCE_MODE
+
+#define MARLIN_G29_SCRIPT \
+ "M100 ({\"_leds\":3})\n" \
+ "G1 X0 Y95 Z6 F20000\n" \
+ "G38.2 Z-10 F200\n" \
+ "G1 Z5 F20000\n" \
+ "M100 ({\"_leds\":5})\n" \
+ "G1 X70 Y45 F20000\n" \
+ "G38.2 Z-10 F200\n" \
+ "G1 Z5 F20000\n" \
+ "M100 ({\"_leds\":6})\n" \
+ "G1 X0 Y5 F20000\n" \
+ "G38.2 Z-10 F200\n" \
+ "G1 Z5 F20000\n" \
+ "M100 ({\"_leds\":3})\n" \
+ "M100 ({\"tram\":1})\n"
// *** motor settings ************************************************************************************
-#define MOTOR_POWER_MODE MOTOR_POWERED_IN_CYCLE // default motor power mode (see cmMotorPowerMode in stepper.h)
+#define MOTOR_POWER_MODE MOTOR_POWERED_IN_CYCLE // default motor power mode (see cmMotorPowerMode in stepper.h)
// 80 steps/mm at 1/16 microstepping = 40 mm/rev
-#define M1_MOTOR_MAP AXIS_X // 1ma
-#define M1_STEP_ANGLE 1.8 // 1sa
-#define M1_TRAVEL_PER_REV 40.64 // 1tr
-#define M1_MICROSTEPS 32 // 1mi 1,2,4,8,16,32
-#define M1_POLARITY 1 // 1po 0=normal, 1=reversed
-#define M1_POWER_MODE MOTOR_POWER_MODE // 1pm standard
-#define M1_POWER_LEVEL 0.4 // 1mp
+#define M1_MOTOR_MAP AXIS_X // 1ma
+#define M1_STEP_ANGLE 1.8 // 1sa
+#define M1_TRAVEL_PER_REV 40.64 // 1tr
+#define M1_MICROSTEPS 32 // 1mi 1,2,4,8,16,32
+#define M1_POLARITY 1 // 1po 0=normal, 1=reversed
+#define M1_POWER_MODE MOTOR_POWER_MODE // 1pm standard
+#define M1_POWER_LEVEL 0.4 // 1pl: 0.0=no power, 1.0=max power
// 80 steps/mm at 1/16 microstepping = 40 mm/rev
-#define M5_MOTOR_MAP AXIS_Y
-#define M5_STEP_ANGLE 1.8
-#define M5_TRAVEL_PER_REV 40.64
-#define M5_MICROSTEPS 32
-#define M5_POLARITY 0
-#define M5_POWER_MODE MOTOR_POWER_MODE
-#define M5_POWER_LEVEL 0.4
+#define M3_MOTOR_MAP AXIS_Y
+#define M3_STEP_ANGLE 1.8
+#define M3_TRAVEL_PER_REV 40.64
+#define M3_MICROSTEPS 32
+#define M3_POLARITY 1
+#define M3_POWER_MODE MOTOR_POWER_MODE
+#define M3_POWER_LEVEL 0.4
-#define M2_MOTOR_MAP AXIS_Z
-#define M2_STEP_ANGLE 1.8
-#define M2_TRAVEL_PER_REV 1.5875
-#define M2_MICROSTEPS 32
-#define M2_POLARITY 1
-#define M2_POWER_MODE MOTOR_POWER_MODE
-#define M2_POWER_LEVEL 0.4
+#define M2_MOTOR_MAP AXIS_Z
+#define M2_STEP_ANGLE 1.8
+#define M2_TRAVEL_PER_REV 1.5875
+#define M2_MICROSTEPS 32
+#define M2_POLARITY 1
+#define M2_POWER_MODE MOTOR_POWER_MODE
+#define M2_POWER_LEVEL 0.4
// 96 steps/mm at 1/16 microstepping = 33.3333 mm/rev
-#define M4_MOTOR_MAP AXIS_A
-#define M4_STEP_ANGLE 1.8
-#define M4_TRAVEL_PER_REV 360 // degrees moved per motor rev
-#define M4_MICROSTEPS 32
-#define M4_POLARITY 0
-#define M4_POWER_MODE MOTOR_POWER_MODE
-#define M4_POWER_LEVEL 0.4
+#define M4_MOTOR_MAP AXIS_A
+#define M4_STEP_ANGLE 1.8
+#define M4_TRAVEL_PER_REV 360 // degrees moved per motor rev
+#define M4_MICROSTEPS 32
+#define M4_POLARITY 1
+#define M4_POWER_MODE MOTOR_POWER_MODE
+#define M4_POWER_LEVEL 0.4
// 96 steps/mm at 1/16 microstepping = 33.3333 mm/rev
-#define M3_MOTOR_MAP AXIS_B
-#define M3_STEP_ANGLE 1.8
-#define M3_TRAVEL_PER_REV 360 // degrees moved per motor rev
-#define M3_MICROSTEPS 32
-#define M3_POLARITY 0
-#define M3_POWER_MODE MOTOR_POWER_MODE
-#define M3_POWER_LEVEL 0.35
+#define M5_MOTOR_MAP AXIS_B
+#define M5_STEP_ANGLE 1.8
+#define M5_TRAVEL_PER_REV 360 // degrees moved per motor rev
+#define M5_MICROSTEPS 32
+#define M5_POLARITY 0
+#define M5_POWER_MODE MOTOR_POWER_MODE
+#define M5_POWER_LEVEL 0.35
// *** axis settings **********************************************************************************
-#define X_AXIS_MODE AXIS_STANDARD // xam see canonical_machine.h cmAxisMode for valid values
-#define X_VELOCITY_MAX 30000 // xvm G0 max velocity in mm/min
-#define X_FEEDRATE_MAX X_VELOCITY_MAX // xfr G1 max feed rate in mm/min
-#define X_TRAVEL_MIN 0 // xtn minimum travel - used by soft limits and homing
-#define X_TRAVEL_MAX 100 // xtm travel between switches or crashes
-#define X_JERK_MAX 15000 // xjm yes, that's "100 billion" mm/(min^3)
-#define X_JERK_HIGH_SPEED 20000 // xjh
-#define X_HOMING_INPUT 1 // xhi input used for homing or 0 to disable
-#define X_HOMING_DIRECTION 0 // xhd 0=search moves negative, 1= search moves positive
-#define X_SEARCH_VELOCITY 3000 // xsv move in negative direction
-#define X_LATCH_VELOCITY 200 // xlv mm/min
-#define X_LATCH_BACKOFF 5 // xlb mm
-#define X_ZERO_BACKOFF 0.5 // xzb mm
+#define X_AXIS_MODE AXIS_STANDARD // xam see canonical_machine.h cmAxisMode for valid values
+#define X_VELOCITY_MAX 30000 // xvm G0 max velocity in mm/min
+#define X_FEEDRATE_MAX X_VELOCITY_MAX // xfr G1 max feed rate in mm/min
+#define X_TRAVEL_MIN 0 // xtn minimum travel - used by soft limits and homing
+#define X_TRAVEL_MAX 100 // xtm travel between switches or crashes
+#define X_JERK_MAX 6000 // xjm yes, that's "100 billion" mm/(min^3)
+#define X_JERK_HIGH_SPEED 6000 // xjh
+#define X_HOMING_INPUT 4 // xhi input used for homing or 0 to disable
+#define X_HOMING_DIRECTION 0 // xhd 0=search moves negative, 1= search moves positive
+#define X_SEARCH_VELOCITY 3000 // xsv move in negative direction
+#define X_LATCH_VELOCITY 200 // xlv mm/min
+#define X_LATCH_BACKOFF 5 // xlb mm
+#define X_ZERO_BACKOFF 0.5 // xzb mm
-#define Y_AXIS_MODE AXIS_STANDARD
-#define Y_VELOCITY_MAX 30000
-#define Y_FEEDRATE_MAX Y_VELOCITY_MAX
-#define Y_TRAVEL_MIN 0
-#define Y_TRAVEL_MAX 100
-#define Y_JERK_MAX 15000
-#define Y_JERK_HIGH_SPEED 20000
-#define Y_HOMING_INPUT 4
-#define Y_HOMING_DIRECTION 1
-#define Y_SEARCH_VELOCITY 1500
-#define Y_LATCH_VELOCITY 200
-#define Y_LATCH_BACKOFF 5
-#define Y_ZERO_BACKOFF 0.5
+#define Y_AXIS_MODE AXIS_STANDARD
+#define Y_VELOCITY_MAX 30000
+#define Y_FEEDRATE_MAX Y_VELOCITY_MAX
+#define Y_TRAVEL_MIN 0
+#define Y_TRAVEL_MAX 100
+#define Y_JERK_MAX 6000
+#define Y_JERK_HIGH_SPEED 6000
+#define Y_HOMING_INPUT 1
+#define Y_HOMING_DIRECTION 1
+#define Y_SEARCH_VELOCITY 1500
+#define Y_LATCH_VELOCITY 200
+#define Y_LATCH_BACKOFF 5
+#define Y_ZERO_BACKOFF 0.5
-#define Z_AXIS_MODE AXIS_STANDARD
-#define Z_VELOCITY_MAX 300
-#define Z_FEEDRATE_MAX Z_VELOCITY_MAX
-#define Z_TRAVEL_MIN 0
-#define Z_TRAVEL_MAX 125
-#define Z_JERK_MAX 800
-#define Z_JERK_HIGH_SPEED 1600
-#define Z_HOMING_INPUT 5
-#define Z_HOMING_DIRECTION 0
-#define Z_SEARCH_VELOCITY 200
-#define Z_LATCH_VELOCITY 100
-#define Z_LATCH_BACKOFF 5
-#define Z_ZERO_BACKOFF 0
+#define Z_AXIS_MODE AXIS_STANDARD
+#define Z_VELOCITY_MAX 300
+#define Z_FEEDRATE_MAX Z_VELOCITY_MAX
+#define Z_TRAVEL_MIN 0
+#define Z_TRAVEL_MAX 125
+#define Z_JERK_MAX 800
+#define Z_JERK_HIGH_SPEED 1600
+#define Z_HOMING_INPUT 5
+#define Z_HOMING_DIRECTION 0
+#define Z_SEARCH_VELOCITY 200
+#define Z_LATCH_VELOCITY 100
+#define Z_LATCH_BACKOFF 5
+#define Z_ZERO_BACKOFF 0
// Rotary values are chosen to make the motor react the same as X for testing
/***************************************************************************************
@@ -201,40 +206,36 @@
*
***************************************************************************************/
-#define A_AXIS_MODE AXIS_RADIUS
-#define A_RADIUS 5.30516476972984
-//#define A_VELOCITY_MAX 25920.0 // ~40 mm/s, 2,400 mm/min
-//#define A_FEEDRATE_MAX 25920.0/2.0 // ~20 mm/s, 1,200 mm/min
-#define A_VELOCITY_MAX 77760.0 // G0 rate ~120 mm/s, 2,400 mm/min
-#define A_FEEDRATE_MAX 9720.0 // 9720.0 = G1 rate ~15 mm/s, 900 mm/min
-#define A_TRAVEL_MIN 0
-#define A_TRAVEL_MAX 10
-#define A_JERK_MAX 648000 // 1,000 million mm/min^3 = 648000
- // * a million IF it's over a million
- // c=2*pi*r, r=5.30516476972984, d=c/360, s=((1000*60)/d)
-#define A_HOMING_INPUT 0
-#define A_HOMING_DIRECTION 0
-#define A_SEARCH_VELOCITY 2000
-#define A_LATCH_VELOCITY 2000
-#define A_LATCH_BACKOFF 5
-#define A_ZERO_BACKOFF 2
-#define A_JERK_HIGH_SPEED A_JERK_MAX
+#define A_AXIS_MODE AXIS_RADIUS
+#define A_RADIUS 5.30516476972984
+#define A_VELOCITY_MAX 77760.0 // G0 rate ~120 mm/s, 2,400 mm/min
+#define A_FEEDRATE_MAX 9720.0 // 9720.0 = G1 rate ~15 mm/s, 900 mm/min
+#define A_TRAVEL_MIN 0
+#define A_TRAVEL_MAX 10
+#define A_JERK_MAX 648000 // 1,000 million mm/min^3 = 648000
+#define A_HOMING_INPUT 0
+#define A_HOMING_DIRECTION 0
+#define A_SEARCH_VELOCITY 2000
+#define A_LATCH_VELOCITY 2000
+#define A_LATCH_BACKOFF 5
+#define A_ZERO_BACKOFF 2
+#define A_JERK_HIGH_SPEED A_JERK_MAX
-#define B_AXIS_MODE AXIS_DISABLED
-#define B_RADIUS 1
-#define B_VELOCITY_MAX 3600
-#define B_FEEDRATE_MAX B_VELOCITY_MAX
-#define B_TRAVEL_MIN 0
-#define B_TRAVEL_MAX -1
+#define B_AXIS_MODE AXIS_DISABLED
+#define B_RADIUS 1
+#define B_VELOCITY_MAX 3600
+#define B_FEEDRATE_MAX B_VELOCITY_MAX
+#define B_TRAVEL_MIN 0
+#define B_TRAVEL_MAX 1
//#define B_JERK_MAX 20000000
-#define B_JERK_MAX 20
-#define B_HOMING_INPUT 0
-#define B_HOMING_DIRECTION 0
-#define B_SEARCH_VELOCITY 600
-#define B_LATCH_VELOCITY 100
-#define B_LATCH_BACKOFF 10
-#define B_ZERO_BACKOFF 2
-#define B_JERK_HIGH_SPEED A_JERK_MAX
+#define B_JERK_MAX 20
+#define B_HOMING_INPUT 0
+#define B_HOMING_DIRECTION 0
+#define B_SEARCH_VELOCITY 600
+#define B_LATCH_VELOCITY 100
+#define B_LATCH_BACKOFF 10
+#define B_ZERO_BACKOFF 2
+#define B_JERK_HIGH_SPEED A_JERK_MAX
//*** Input / output settings ***
@@ -257,97 +258,101 @@
*/
// Inputs are defined for the g2ref(a) board
// Xmn (board label)
-#define DI1_MODE IO_ACTIVE_HIGH
-#define DI1_ACTION INPUT_ACTION_NONE
-#define DI1_FUNCTION INPUT_FUNCTION_NONE
+#define DI1_MODE IO_ACTIVE_HIGH
+#define DI1_ACTION INPUT_ACTION_NONE
+#define DI1_FUNCTION INPUT_FUNCTION_NONE
// Xmax
-#define DI2_MODE IO_MODE_DISABLED
-#define DI2_ACTION INPUT_ACTION_NONE
-#define DI2_FUNCTION INPUT_FUNCTION_NONE
+#define DI2_MODE IO_MODE_DISABLED
+#define DI2_ACTION INPUT_ACTION_NONE
+#define DI2_FUNCTION INPUT_FUNCTION_NONE
// Ymin
-#define DI3_MODE IO_MODE_DISABLED
-#define DI3_ACTION INPUT_ACTION_NONE
-#define DI3_FUNCTION INPUT_FUNCTION_NONE
+#define DI3_MODE IO_MODE_DISABLED
+#define DI3_ACTION INPUT_ACTION_NONE
+#define DI3_FUNCTION INPUT_FUNCTION_NONE
// Ymax
-#define DI4_MODE IO_ACTIVE_HIGH
-#define DI4_ACTION INPUT_ACTION_NONE
-#define DI4_FUNCTION INPUT_FUNCTION_NONE
+#define DI4_MODE IO_ACTIVE_HIGH
+#define DI4_ACTION INPUT_ACTION_NONE
+#define DI4_FUNCTION INPUT_FUNCTION_NONE
// Zmin
-#define DI5_MODE IO_ACTIVE_LOW // Z probe
-#define DI5_ACTION INPUT_ACTION_NONE
-#define DI5_FUNCTION INPUT_FUNCTION_NONE
+#define DI5_MODE IO_ACTIVE_LOW // Z probe
+#define DI5_ACTION INPUT_ACTION_NONE
+#define DI5_FUNCTION INPUT_FUNCTION_PROBE
// Zmax
-#define DI6_MODE IO_MODE_DISABLED
-#define DI6_ACTION INPUT_ACTION_NONE
-#define DI6_FUNCTION INPUT_FUNCTION_NONE
+#define DI6_MODE IO_MODE_DISABLED
+#define DI6_ACTION INPUT_ACTION_NONE
+#define DI6_FUNCTION INPUT_FUNCTION_NONE
// Shutdown (Amin on v9 board)
-#define DI7_MODE IO_MODE_DISABLED
-#define DI7_ACTION INPUT_ACTION_NONE
-#define DI7_FUNCTION INPUT_FUNCTION_NONE
+#define DI7_MODE IO_MODE_DISABLED
+#define DI7_ACTION INPUT_ACTION_NONE
+#define DI7_FUNCTION INPUT_FUNCTION_NONE
// High Voltage Z Probe In (Amax on v9 board)
-#define DI8_MODE IO_ACTIVE_LOW
-#define DI8_ACTION INPUT_ACTION_NONE
-#define DI8_FUNCTION INPUT_FUNCTION_NONE
+#define DI8_MODE IO_ACTIVE_LOW
+#define DI8_ACTION INPUT_ACTION_NONE
+#define DI8_FUNCTION INPUT_FUNCTION_NONE
// Hardware interlock input
-#define DI9_MODE IO_MODE_DISABLED
-#define DI9_ACTION INPUT_ACTION_NONE
-#define DI9_FUNCTION INPUT_FUNCTION_NONE
+#define DI9_MODE IO_MODE_DISABLED
+#define DI9_ACTION INPUT_ACTION_NONE
+#define DI9_FUNCTION INPUT_FUNCTION_NONE
// Extruder1_PWM
-#define DO1_MODE IO_ACTIVE_HIGH
+#define DO1_MODE IO_ACTIVE_HIGH
// Extruder2_PWM
-#define DO2_MODE IO_ACTIVE_HIGH
+#define DO2_MODE IO_ACTIVE_HIGH
// Fan1A_PWM
-#define DO3_MODE IO_ACTIVE_HIGH
+#define DO3_MODE IO_ACTIVE_HIGH
// Fan1B_PWM
-#define DO4_MODE IO_ACTIVE_HIGH
+#define DO4_MODE IO_ACTIVE_HIGH
-#define DO5_MODE IO_ACTIVE_HIGH
-#define DO6_MODE IO_ACTIVE_HIGH
-#define DO7_MODE IO_ACTIVE_HIGH
-#define DO8_MODE IO_ACTIVE_HIGH
+#define DO5_MODE IO_ACTIVE_HIGH
+#define DO6_MODE IO_ACTIVE_HIGH
+#define DO7_MODE IO_ACTIVE_HIGH
+#define DO8_MODE IO_ACTIVE_HIGH
// SAFEin (Output) signal
-#define DO9_MODE IO_ACTIVE_HIGH
+#define DO9_MODE IO_ACTIVE_HIGH
-#define DO10_MODE IO_ACTIVE_HIGH
+#define DO10_MODE IO_ACTIVE_HIGH
// Header Bed FET
-#define DO11_MODE IO_ACTIVE_HIGH
+#define DO11_MODE IO_ACTIVE_HIGH
// Indicator_LED
-#define DO12_MODE IO_ACTIVE_HIGH
+#define DO12_MODE IO_ACTIVE_HIGH
-#define DO13_MODE IO_ACTIVE_HIGH
+#define DO13_MODE IO_ACTIVE_HIGH
/*** Extruders / Heaters ***/
-#define MIN_FAN_TEMP 50.0
-#define MAX_FAN_TEMP 100.0
+#define TEMP_MIN_BED_RISE_DEGREES_OVER_TIME 0.5
-#define H1_DEFAULT_ENABLE true
-#define H1_DEFAULT_P 7.0
-#define H1_DEFAULT_I 0.05
-#define H1_DEFAULT_D 150.0
+#define MIN_FAN_VALUE 0.4 // (he1fm) at MIN_FAN_TEMP the fan comes on at this spped (0.0-1.0)
+#define MAX_FAN_VALUE 0.75 // (he1fp) at MAX_FAN_TEMP the fan is at this spped (0.0-1.0)
+#define MIN_FAN_TEMP 50.0 // (he1fl) at this temp the fan starts to ramp up linearly
+#define MAX_FAN_TEMP 100.0 // (he1fh) at this temperature the fan is at "full speed" (MAX_FAN_VALUE)
-#define H2_DEFAULT_ENABLE false
-#define H2_DEFAULT_P 7.0
-#define H2_DEFAULT_I 0.05
-#define H2_DEFAULT_D 150.0
+#define H1_DEFAULT_ENABLE true
+#define H1_DEFAULT_P 7.0
+#define H1_DEFAULT_I 0.05
+#define H1_DEFAULT_D 150.0
-#define H3_DEFAULT_ENABLE false
-#define H3_DEFAULT_P 9.0
-#define H3_DEFAULT_I 0.12
-#define H3_DEFAULT_D 400.0
+#define H2_DEFAULT_ENABLE false
+#define H2_DEFAULT_P 7.0
+#define H2_DEFAULT_I 0.05
+#define H2_DEFAULT_D 150.0
+
+#define H3_DEFAULT_ENABLE false
+#define H3_DEFAULT_P 9.0
+#define H3_DEFAULT_I 0.12
+#define H3_DEFAULT_D 400.0
diff --git a/g2core/settings/settings_Printrbot_Plus.h b/g2core/settings/settings_Printrbot_Plus.h
index 8ecb3c49..a0f890ad 100644
--- a/g2core/settings/settings_Printrbot_Plus.h
+++ b/g2core/settings/settings_Printrbot_Plus.h
@@ -2,8 +2,8 @@
* settings_Printrbot_plus.h
* This file is part of the the g2core project
*
- * Copyright (c) 2010 - 2016 Alden S. Hart, Jr.
- * Copyright (c) 2010 - 2016 Robert Giseburt
+ * Copyright (c) 2010 - 2017 Alden S. Hart, Jr.
+ * Copyright (c) 2010 - 2017 Robert Giseburt
*
* This file ("the software") is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License, version 2 as published by the
@@ -31,177 +31,162 @@
/***********************************************************************/
// ***> NOTE: The init message must be a single line with no CRs or LFs
-#define INIT_MESSAGE "Initializing configs to Printrbot Plus profile"
-
-#ifndef PI
-#define PI 3.14159628
-#endif
+#define INIT_MESSAGE "Initializing configs to Printrbot Plus profile"
//**** GLOBAL / GENERAL SETTINGS ******************************************************
-#define JUNCTION_INTEGRATION_TIME 1.2 // cornering - between 0.10 and 2.00 (higher is faster)
-#define CHORDAL_TOLERANCE 0.01 // chordal accuracy for arc drawing (in mm)
+#define JUNCTION_INTEGRATION_TIME 1.1 // cornering - between 0.10 and 2.00 (higher is faster)
+#define CHORDAL_TOLERANCE 0.01 // chordal accuracy for arc drawing (in mm)
-#define SOFT_LIMIT_ENABLE 0 // 0=off, 1=on
-#define HARD_LIMIT_ENABLE 1 // 0=off, 1=on
-#define SAFETY_INTERLOCK_ENABLE 1 // 0=off, 1=on
+#define SOFT_LIMIT_ENABLE 0 // 0=off, 1=on
+#define HARD_LIMIT_ENABLE 1 // 0=off, 1=on
+#define SAFETY_INTERLOCK_ENABLE 1 // 0=off, 1=on
-#define SPINDLE_ENABLE_POLARITY 1 // 0=active low, 1=active high
-#define SPINDLE_DIR_POLARITY 0 // 0=clockwise is low, 1=clockwise is high
-#define SPINDLE_PAUSE_ON_HOLD true
-#define SPINDLE_DWELL_TIME 1.0
+#define SPINDLE_ENABLE_POLARITY 1 // 0=active low, 1=active high
+#define SPINDLE_DIR_POLARITY 0 // 0=clockwise is low, 1=clockwise is high
+#define SPINDLE_PAUSE_ON_HOLD true
+#define SPINDLE_DWELL_TIME 1.0
-#define COOLANT_MIST_POLARITY 1 // 0=active low, 1=active high
-#define COOLANT_FLOOD_POLARITY 1 // 0=active low, 1=active high
-#define COOLANT_PAUSE_ON_HOLD false
+#define COOLANT_MIST_POLARITY 1 // 0=active low, 1=active high
+#define COOLANT_FLOOD_POLARITY 1 // 0=active low, 1=active high
+#define COOLANT_PAUSE_ON_HOLD false
+
+#define TRAVERSE_AT_HIGH_JERK true // EXPERIMENTAL, primarily used here for retraction of extruder
// Communications and reporting settings
-#define MARLIN_COMPAT_ENABLED true // enable marlin compatibility mode
-#define COMM_MODE JSON_MODE // one of: TEXT_MODE, JSON_MODE
-#define XIO_ENABLE_FLOW_CONTROL FLOW_CONTROL_RTS // FLOW_CONTROL_OFF, FLOW_CONTROL_RTS
-#define XIO_UART_MUTES_WHEN_USB_CONNECTED 1 // Mute the UART when USB connects
+#define MARLIN_COMPAT_ENABLED true // enable marlin compatibility mode
+#define COMM_MODE JSON_MODE // one of: TEXT_MODE, JSON_MODE
+#define XIO_ENABLE_FLOW_CONTROL FLOW_CONTROL_RTS // FLOW_CONTROL_OFF, FLOW_CONTROL_RTS
+#define XIO_UART_MUTES_WHEN_USB_CONNECTED 1 // Mute the UART when USB connects
-#define TEXT_VERBOSITY TV_VERBOSE // one of: TV_SILENT, TV_VERBOSE
-#define JSON_VERBOSITY JV_MESSAGES // one of: JV_SILENT, JV_FOOTER, JV_CONFIGS, JV_MESSAGES, JV_LINENUM, JV_VERBOSE
-#define QUEUE_REPORT_VERBOSITY QR_OFF // one of: QR_OFF, QR_SINGLE, QR_TRIPLE
+#define TEXT_VERBOSITY TV_VERBOSE // one of: TV_SILENT, TV_VERBOSE
+#define JSON_VERBOSITY JV_LINENUM // one of: JV_SILENT, JV_FOOTER, JV_CONFIGS, JV_MESSAGES, JV_LINENUM, JV_VERBOSE
+#define QUEUE_REPORT_VERBOSITY QR_OFF // one of: QR_OFF, QR_SINGLE, QR_TRIPLE
-#define STATUS_REPORT_VERBOSITY SR_FILTERED // one of: SR_OFF, SR_FILTERED, SR_VERBOSE
-#define STATUS_REPORT_MIN_MS 100 // milliseconds - enforces a viable minimum
-#define STATUS_REPORT_INTERVAL_MS 250 // milliseconds - set $SV=0 to disable
+#define STATUS_REPORT_VERBOSITY SR_FILTERED // one of: SR_OFF, SR_FILTERED, SR_VERBOSE
+#define STATUS_REPORT_MIN_MS 100 // milliseconds - enforces a viable minimum
+#define STATUS_REPORT_INTERVAL_MS 250 // milliseconds - set $SV=0 to disable
// Defaults for 3DP
-//#define STATUS_REPORT_DEFAULTS
-//"line","posx","posy","posz","posa","vel","he1t","he1st","he1at","feed","vel","unit","path","stat"
-// There are no heater two or three, but these would show those: ,"he2t","he2st","he2at","he3t","he3st","he3at"
-
-// Defaults for motion debugging
-//#define STATUS_REPORT_DEFAULTS
-//"line","posx","posy","posz","posa","vel","he1t","he1st","he1at","he2t","he2st","he2at","he3t","he3st","he3at","_fe5","_fe4","feed","vel","unit","path","stat"
-
-// Defaults for PID tuning
-#define STATUS_REPORT_DEFAULTS \
- "line", "posx", "posy", "posz", "posa", "vel", "he1t", "he1st", "he1at", "he1op", "pid1p", "pid1i", "pid1d", \
- "feed", "vel", "unit", "path", "stat"
+#define STATUS_REPORT_DEFAULTS \
+ "line","posx","posy","posz","posa","vel","he1t","he1st","he1at","he1op","feed","vel","unit","path","stat", \
+ "he2t","he2st","he2at","he2op","he3t","he3st","he3at","he3op"
// Gcode startup defaults
-#define GCODE_DEFAULT_UNITS MILLIMETERS // MILLIMETERS or INCHES
-#define GCODE_DEFAULT_PLANE CANON_PLANE_XY // CANON_PLANE_XY, CANON_PLANE_XZ, or CANON_PLANE_YZ
-#define GCODE_DEFAULT_COORD_SYSTEM G54 // G54, G55, G56, G57, G58 or G59
-#define GCODE_DEFAULT_PATH_CONTROL PATH_CONTINUOUS
-#define GCODE_DEFAULT_DISTANCE_MODE ABSOLUTE_DISTANCE_MODE
+#define GCODE_DEFAULT_UNITS MILLIMETERS // MILLIMETERS or INCHES
+#define GCODE_DEFAULT_PLANE CANON_PLANE_XY // CANON_PLANE_XY, CANON_PLANE_XZ, or CANON_PLANE_YZ
+#define GCODE_DEFAULT_COORD_SYSTEM G54 // G54, G55, G56, G57, G58 or G59
+#define GCODE_DEFAULT_PATH_CONTROL PATH_CONTINUOUS
+#define GCODE_DEFAULT_DISTANCE_MODE ABSOLUTE_DISTANCE_MODE
+
+#define MARLIN_G29_SCRIPT \
+ "M100 ({\"_leds\":3})\n" \
+ "G1 X0 Y245 Z6 F20000\n" \
+ "G38.2 Z-10 F200\n" \
+ "G1 Z5 F20000\n" \
+ "M100 ({\"_leds\":5})\n" \
+ "G1 X225 Y125 F20000\n" \
+ "G38.2 Z-10 F200\n" \
+ "G1 Z5 F20000\n" \
+ "M100 ({\"_leds\":6})\n" \
+ "G1 X0 Y5 F20000\n" \
+ "G38.2 Z-10 F200\n" \
+ "G1 Z5 F20000\n" \
+ "M100 ({\"_leds\":3})\n" \
+ "M100 ({\"tram\":1})\n"
// *** motor settings ************************************************************************************
-// steps/mm -> mm/rev calculations
-// s: steps/mm
-// a: degress/FULL step (1.8)
-// M: microstep level (4, 8, 16, etc)
-// R: mm/revolution (output)
-// Example entry to wolframalpha.com:
-// s=80, a=1.8, M=16, R=(M*(360/a))/s
-
-#define MOTOR_POWER_MODE MOTOR_POWERED_IN_CYCLE // default motor power mode (see cmMotorPowerMode in stepper.h)
+#define MOTOR_POWER_MODE MOTOR_POWERED_IN_CYCLE // default motor power mode (see cmMotorPowerMode in stepper.h)
+// 80 steps/mm at 1/16 microstepping = 40 mm/rev
+#define M1_MOTOR_MAP AXIS_X // 1ma
+#define M1_STEP_ANGLE 1.8 // 1sa
+#define M1_TRAVEL_PER_REV 40.64 // 1tr
+#define M1_MICROSTEPS 32 // 1mi 1,2,4,8,16,32
+#define M1_POLARITY 1 // 1po 0=normal, 1=reversed
+#define M1_POWER_MODE MOTOR_POWER_MODE // 1pm standard
+#define M1_POWER_LEVEL 0.4 // 1pl: 0.0=no power, 1.0=max power
// 80 steps/mm at 1/16 microstepping = 40 mm/rev
-#define M5_MOTOR_MAP AXIS_X // 1ma
-#define M5_STEP_ANGLE 1.8 // 1sa
-#define M5_TRAVEL_PER_REV 40.64 // 1tr
-#define M5_MICROSTEPS 32 // 1mi 1,2,4,8,16,32
-#define M5_POLARITY 1 // 1po 0=normal, 1=reversed
-#define M5_POWER_MODE MOTOR_POWER_MODE // 1pm standard
-#define M5_POWER_LEVEL 0.3 // 1mp
+#define M3_MOTOR_MAP AXIS_Y
+#define M3_STEP_ANGLE 1.8
+#define M3_TRAVEL_PER_REV 40.64
+#define M3_MICROSTEPS 32
+#define M3_POLARITY 1
+#define M3_POWER_MODE MOTOR_POWER_MODE
+#define M3_POWER_LEVEL 0.4
-// 80 steps/mm at 1/16 microstepping = 40 mm/rev
-#define M4_MOTOR_MAP AXIS_Y
-#define M4_STEP_ANGLE 1.8
-#define M4_TRAVEL_PER_REV 40.64
-#define M4_MICROSTEPS 32
-#define M4_POLARITY 1
-#define M4_POWER_MODE MOTOR_POWER_MODE
-#define M4_POWER_LEVEL 0.3
-
-// 2020 steps/mm at 1/16 microstepping = 1.58416 mm/rev
-#define M3_MOTOR_MAP AXIS_Z
-#define M3_STEP_ANGLE 1.8
-#define M3_TRAVEL_PER_REV 1.5875
-#define M3_MICROSTEPS 32
-#define M3_POLARITY 1
-#define M3_POWER_MODE MOTOR_POWER_MODE
-#define M3_POWER_LEVEL 0.3
+#define M2_MOTOR_MAP AXIS_Z
+#define M2_STEP_ANGLE 1.8
+#define M2_TRAVEL_PER_REV 1.5875
+#define M2_MICROSTEPS 32
+#define M2_POLARITY 1
+#define M2_POWER_MODE MOTOR_POWER_MODE
+#define M2_POWER_LEVEL 0.4
// 96 steps/mm at 1/16 microstepping = 33.3333 mm/rev
-#define M2_MOTOR_MAP AXIS_A
-#define M2_STEP_ANGLE 1.8
-#define M2_TRAVEL_PER_REV 360 // degrees moved per motor rev
-#define M2_MICROSTEPS 32
-#define M2_POLARITY 0
-#define M2_POWER_MODE MOTOR_POWER_MODE
-#define M2_POWER_LEVEL 0.3
+#define M4_MOTOR_MAP AXIS_A
+#define M4_STEP_ANGLE 1.8
+#define M4_TRAVEL_PER_REV 360 // degrees moved per motor rev
+#define M4_MICROSTEPS 32
+#define M4_POLARITY 1
+#define M4_POWER_MODE MOTOR_POWER_MODE
+#define M4_POWER_LEVEL 0.4
// 96 steps/mm at 1/16 microstepping = 33.3333 mm/rev
-#define M1_MOTOR_MAP AXIS_B
-#define M1_STEP_ANGLE 1.8
-#define M1_TRAVEL_PER_REV 360 // degrees moved per motor rev
-#define M1_MICROSTEPS 32
-#define M1_POLARITY 0
-#define M1_POWER_MODE MOTOR_POWER_MODE
-#define M1_POWER_LEVEL 0.3
-
-#define M6_MOTOR_MAP AXIS_C
-#define M6_STEP_ANGLE 1.8
-#define M6_TRAVEL_PER_REV 360 // degrees moved per motor rev
-#define M6_MICROSTEPS 32
-#define M6_POLARITY 0
-#define M6_POWER_MODE MOTOR_POWER_MODE
-#define M6_POWER_LEVEL 0.3
+#define M5_MOTOR_MAP AXIS_B
+#define M5_STEP_ANGLE 1.8
+#define M5_TRAVEL_PER_REV 360 // degrees moved per motor rev
+#define M5_MICROSTEPS 32
+#define M5_POLARITY 0
+#define M5_POWER_MODE MOTOR_POWER_MODE
+#define M5_POWER_LEVEL 0.35
// *** axis settings **********************************************************************************
-#define X_AXIS_MODE AXIS_STANDARD // xam see canonical_machine.h cmAxisMode for valid values
-// The machine can handle 20000 in open air, but dropping back to 10000 for times when it hits obstacles (small bits of
-// filament, etc).
-#define X_VELOCITY_MAX 20000 // xvm G0 max velocity in mm/min
-#define X_FEEDRATE_MAX X_VELOCITY_MAX // xfr G1 max feed rate in mm/min
-#define X_TRAVEL_MIN 0 // xtn minimum travel - used by soft limits and homing
-#define X_TRAVEL_MAX 250 // xtm travel between switches or crashes
-#define X_JERK_MAX 6000 // xjm yes, that's "100 billion" mm/(min^3)
-#define X_JERK_HIGH_SPEED 12000 // xjh
-#define X_HOMING_INPUT 1 // xhi input used for homing or 0 to disable
-#define X_HOMING_DIRECTION 0 // xhd 0=search moves negative, 1= search moves positive
-#define X_SEARCH_VELOCITY 3000 // xsv move in negative direction
-#define X_LATCH_VELOCITY 200 // xlv mm/min
-#define X_LATCH_BACKOFF 5 // xlb mm
-#define X_ZERO_BACKOFF 0.5 // xzb mm
+#define X_AXIS_MODE AXIS_STANDARD // xam see canonical_machine.h cmAxisMode for valid values
+#define X_VELOCITY_MAX 30000 // xvm G0 max velocity in mm/min
+#define X_FEEDRATE_MAX X_VELOCITY_MAX // xfr G1 max feed rate in mm/min
+#define X_TRAVEL_MIN 0 // xtn minimum travel - used by soft limits and homing
+#define X_TRAVEL_MAX 250 // xtm travel between switches or crashes
+#define X_JERK_MAX 6000 // xjm yes, that's "100 billion" mm/(min^3)
+#define X_JERK_HIGH_SPEED 6000 // xjh
+#define X_HOMING_INPUT 4 // xhi input used for homing or 0 to disable
+#define X_HOMING_DIRECTION 0 // xhd 0=search moves negative, 1= search moves positive
+#define X_SEARCH_VELOCITY 3000 // xsv move in negative direction
+#define X_LATCH_VELOCITY 200 // xlv mm/min
+#define X_LATCH_BACKOFF 5 // xlb mm
+#define X_ZERO_BACKOFF 0.5 // xzb mm
-#define Y_AXIS_MODE AXIS_STANDARD
-#define Y_VELOCITY_MAX 15000
-#define Y_FEEDRATE_MAX Y_VELOCITY_MAX
-#define Y_TRAVEL_MIN 0
-#define Y_TRAVEL_MAX 250
-#define Y_JERK_MAX 6000
-#define Y_JERK_HIGH_SPEED Y_JERK_MAX
-#define Y_HOMING_INPUT 4
-#define Y_HOMING_DIRECTION 1
-#define Y_SEARCH_VELOCITY 1500
-#define Y_LATCH_VELOCITY 200
-#define Y_LATCH_BACKOFF 5
-#define Y_ZERO_BACKOFF 0.5
+#define Y_AXIS_MODE AXIS_STANDARD
+#define Y_VELOCITY_MAX 30000
+#define Y_FEEDRATE_MAX Y_VELOCITY_MAX
+#define Y_TRAVEL_MIN 0
+#define Y_TRAVEL_MAX 250
+#define Y_JERK_MAX 6000
+#define Y_JERK_HIGH_SPEED 6000
+#define Y_HOMING_INPUT 1
+#define Y_HOMING_DIRECTION 1
+#define Y_SEARCH_VELOCITY 1500
+#define Y_LATCH_VELOCITY 200
+#define Y_LATCH_BACKOFF 5
+#define Y_ZERO_BACKOFF 0.5
-#define Z_AXIS_MODE AXIS_STANDARD
-#define Z_VELOCITY_MAX 400
-#define Z_FEEDRATE_MAX Z_VELOCITY_MAX
-#define Z_TRAVEL_MIN 0
-#define Z_TRAVEL_MAX 196
-#define Z_JERK_MAX 800
-#define Z_JERK_HIGH_SPEED 1600
-#define Z_HOMING_INPUT 5
-#define Z_HOMING_DIRECTION 0
-#define Z_SEARCH_VELOCITY (Z_VELOCITY_MAX * 0.3333)
-#define Z_LATCH_VELOCITY 100
-#define Z_LATCH_BACKOFF 5
-#define Z_ZERO_BACKOFF 0
+#define Z_AXIS_MODE AXIS_STANDARD
+#define Z_VELOCITY_MAX 300
+#define Z_FEEDRATE_MAX Z_VELOCITY_MAX
+#define Z_TRAVEL_MIN 0
+#define Z_TRAVEL_MAX 196
+#define Z_JERK_MAX 800
+#define Z_JERK_HIGH_SPEED 1600
+#define Z_HOMING_INPUT 5
+#define Z_HOMING_DIRECTION 0
+#define Z_SEARCH_VELOCITY 200
+#define Z_LATCH_VELOCITY 100
+#define Z_LATCH_BACKOFF 5
+#define Z_ZERO_BACKOFF 0
// Rotary values are chosen to make the motor react the same as X for testing
/***************************************************************************************
@@ -221,142 +206,153 @@
*
***************************************************************************************/
+#define A_AXIS_MODE AXIS_RADIUS
+#define A_RADIUS 5.30516476972984
+#define A_VELOCITY_MAX 77760.0 // G0 rate ~120 mm/s, 2,400 mm/min
+#define A_FEEDRATE_MAX 9720.0 // 9720.0 = G1 rate ~15 mm/s, 900 mm/min
+#define A_TRAVEL_MIN 0
+#define A_TRAVEL_MAX 10
+#define A_JERK_MAX 648000 // 1,000 million mm/min^3 = 648000
+#define A_HOMING_INPUT 0
+#define A_HOMING_DIRECTION 0
+#define A_SEARCH_VELOCITY 2000
+#define A_LATCH_VELOCITY 2000
+#define A_LATCH_BACKOFF 5
+#define A_ZERO_BACKOFF 2
+#define A_JERK_HIGH_SPEED A_JERK_MAX
-// To compute radius from mm/rev (m) (that other axes give): r = m/(2*pi)
+#define B_AXIS_MODE AXIS_DISABLED
+#define B_RADIUS 1
+#define B_VELOCITY_MAX 3600
+#define B_FEEDRATE_MAX B_VELOCITY_MAX
+#define B_TRAVEL_MIN 0
+#define B_TRAVEL_MAX -1
+//#define B_JERK_MAX 20000000
+#define B_JERK_MAX 20
+#define B_HOMING_INPUT 0
+#define B_HOMING_DIRECTION 0
+#define B_SEARCH_VELOCITY 600
+#define B_LATCH_VELOCITY 100
+#define B_LATCH_BACKOFF 10
+#define B_ZERO_BACKOFF 2
+#define B_JERK_HIGH_SPEED A_JERK_MAX
-#define A_AXIS_MODE AXIS_RADIUS
-#define A_RADIUS 5.30516476972984
-#define A_VELOCITY_MAX 77760.0 // G0 rate ~120 mm/s, 2,400 mm/min
-#define A_FEEDRATE_MAX 9720.0 // 9720.0 = G1 rate ~15 mm/s, 900 mm/min
-#define A_TRAVEL_MIN 0
-#define A_TRAVEL_MAX 10
-//#define A_JERK_MAX 16200 // 25 million mm/min^3 = 16200
-//#define A_JERK_MAX 81000 // 125 million mm/min^3 = 81000
-//#define A_JERK_MAX 162000 // 250 million mm/min^3 = 162000
-//#define A_JERK_MAX 324000 // 500 million mm/min^3 = 324000
-#define A_JERK_MAX 648000 // 1,000 million mm/min^3 = 648000
-//#define A_JERK_MAX 1296000 // 2,000 million mm/min^3 = 1296000
-//#define A_JERK_MAX 2592000 // 4,000 million mm/min^3 = 2592000
-// c=2*pi*r, r=5.30516476972984, d=c/360, s=((1000*60)/d)
-#define A_HOMING_INPUT 0
-#define A_HOMING_DIRECTION 0
-#define A_SEARCH_VELOCITY 2000
-#define A_LATCH_VELOCITY 2000
-#define A_LATCH_BACKOFF 5
-#define A_ZERO_BACKOFF 2
-#define A_JERK_HIGH_SPEED A_JERK_MAX
//*** Input / output settings ***
/*
- IO_MODE_DISABLED
- IO_ACTIVE_LOW aka NORMALLY_OPEN
- IO_ACTIVE_HIGH aka NORMALLY_CLOSED
+ IO_MODE_DISABLED
+ IO_ACTIVE_LOW aka NORMALLY_OPEN
+ IO_ACTIVE_HIGH aka NORMALLY_CLOSED
- INPUT_ACTION_NONE
- INPUT_ACTION_STOP
- INPUT_ACTION_FAST_STOP
- INPUT_ACTION_HALT
- INPUT_ACTION_RESET
+ INPUT_ACTION_NONE
+ INPUT_ACTION_STOP
+ INPUT_ACTION_FAST_STOP
+ INPUT_ACTION_HALT
+ INPUT_ACTION_RESET
- INPUT_FUNCTION_NONE
- INPUT_FUNCTION_LIMIT
- INPUT_FUNCTION_INTERLOCK
- INPUT_FUNCTION_SHUTDOWN
- INPUT_FUNCTION_PANIC
-*/
+ INPUT_FUNCTION_NONE
+ INPUT_FUNCTION_LIMIT
+ INPUT_FUNCTION_INTERLOCK
+ INPUT_FUNCTION_SHUTDOWN
+ INPUT_FUNCTION_PANIC
+ */
// Inputs are defined for the g2ref(a) board
// Xmn (board label)
-#define DI1_MODE IO_ACTIVE_HIGH
-#define DI1_ACTION INPUT_ACTION_NONE
-#define DI1_FUNCTION INPUT_FUNCTION_NONE
+#define DI1_MODE IO_ACTIVE_HIGH
+#define DI1_ACTION INPUT_ACTION_NONE
+#define DI1_FUNCTION INPUT_FUNCTION_NONE
// Xmax
-#define DI2_MODE IO_MODE_DISABLED
-#define DI2_ACTION INPUT_ACTION_NONE
-#define DI2_FUNCTION INPUT_FUNCTION_NONE
+#define DI2_MODE IO_MODE_DISABLED
+#define DI2_ACTION INPUT_ACTION_NONE
+#define DI2_FUNCTION INPUT_FUNCTION_NONE
// Ymin
-#define DI3_MODE IO_MODE_DISABLED
-#define DI3_ACTION INPUT_ACTION_NONE
-#define DI3_FUNCTION INPUT_FUNCTION_NONE
+#define DI3_MODE IO_MODE_DISABLED
+#define DI3_ACTION INPUT_ACTION_NONE
+#define DI3_FUNCTION INPUT_FUNCTION_NONE
// Ymax
-#define DI4_MODE IO_ACTIVE_HIGH
-#define DI4_ACTION INPUT_ACTION_NONE
-#define DI4_FUNCTION INPUT_FUNCTION_NONE
+#define DI4_MODE IO_ACTIVE_HIGH
+#define DI4_ACTION INPUT_ACTION_NONE
+#define DI4_FUNCTION INPUT_FUNCTION_NONE
// Zmin
-#define DI5_MODE IO_ACTIVE_LOW // Z probe
-#define DI5_ACTION INPUT_ACTION_NONE
-#define DI5_FUNCTION INPUT_FUNCTION_NONE
+#define DI5_MODE IO_ACTIVE_LOW // Z probe
+#define DI5_ACTION INPUT_ACTION_NONE
+#define DI5_FUNCTION INPUT_FUNCTION_PROBE
// Zmax
-#define DI6_MODE IO_MODE_DISABLED
-#define DI6_ACTION INPUT_ACTION_NONE
-#define DI6_FUNCTION INPUT_FUNCTION_NONE
+#define DI6_MODE IO_MODE_DISABLED
+#define DI6_ACTION INPUT_ACTION_NONE
+#define DI6_FUNCTION INPUT_FUNCTION_NONE
// Shutdown (Amin on v9 board)
-#define DI7_MODE IO_MODE_DISABLED
-#define DI7_ACTION INPUT_ACTION_NONE
-#define DI7_FUNCTION INPUT_FUNCTION_NONE
+#define DI7_MODE IO_MODE_DISABLED
+#define DI7_ACTION INPUT_ACTION_NONE
+#define DI7_FUNCTION INPUT_FUNCTION_NONE
// High Voltage Z Probe In (Amax on v9 board)
-#define DI8_MODE IO_ACTIVE_LOW
-#define DI8_ACTION INPUT_ACTION_NONE
-#define DI8_FUNCTION INPUT_FUNCTION_NONE
+#define DI8_MODE IO_ACTIVE_LOW
+#define DI8_ACTION INPUT_ACTION_NONE
+#define DI8_FUNCTION INPUT_FUNCTION_NONE
// Hardware interlock input
-#define DI9_MODE IO_MODE_DISABLED
-#define DI9_ACTION INPUT_ACTION_NONE
-#define DI9_FUNCTION INPUT_FUNCTION_NONE
-
+#define DI9_MODE IO_MODE_DISABLED
+#define DI9_ACTION INPUT_ACTION_NONE
+#define DI9_FUNCTION INPUT_FUNCTION_NONE
// Extruder1_PWM
-#define DO1_MODE IO_ACTIVE_HIGH
+#define DO1_MODE IO_ACTIVE_HIGH
// Extruder2_PWM
-#define DO2_MODE IO_ACTIVE_HIGH
+#define DO2_MODE IO_ACTIVE_HIGH
// Fan1A_PWM
-#define DO3_MODE IO_ACTIVE_HIGH
+#define DO3_MODE IO_ACTIVE_HIGH
// Fan1B_PWM
-#define DO4_MODE IO_ACTIVE_HIGH
+#define DO4_MODE IO_ACTIVE_HIGH
-// Fan2A_PWM
-#define DO5_MODE IO_ACTIVE_HIGH
-
-#define DO6_MODE IO_ACTIVE_HIGH
-#define DO7_MODE IO_ACTIVE_HIGH
-#define DO8_MODE IO_ACTIVE_HIGH
+#define DO5_MODE IO_ACTIVE_HIGH
+#define DO6_MODE IO_ACTIVE_HIGH
+#define DO7_MODE IO_ACTIVE_HIGH
+#define DO8_MODE IO_ACTIVE_HIGH
// SAFEin (Output) signal
-#define DO9_MODE IO_ACTIVE_HIGH
-#define DO10_MODE IO_ACTIVE_HIGH
+#define DO9_MODE IO_ACTIVE_HIGH
+
+#define DO10_MODE IO_ACTIVE_HIGH
// Header Bed FET
-#define DO11_MODE IO_ACTIVE_HIGH
+#define DO11_MODE IO_ACTIVE_HIGH
// Indicator_LED
-#define DO12_MODE IO_ACTIVE_HIGH
-#define DO13_MODE IO_ACTIVE_HIGH
+#define DO12_MODE IO_ACTIVE_HIGH
+
+#define DO13_MODE IO_ACTIVE_HIGH
+
/*** Extruders / Heaters ***/
-#define MIN_FAN_TEMP 50.0
-#define MAX_FAN_TEMP 100.0
+#define TEMP_MIN_BED_RISE_DEGREES_OVER_TIME 0.5
-#define H1_DEFAULT_ENABLE true
-#define H1_DEFAULT_P 7.0
-#define H1_DEFAULT_I 0.05
-#define H1_DEFAULT_D 150.0
+#define MIN_FAN_VALUE 0.4 // (he1fm) at MIN_FAN_TEMP the fan comes on at this spped (0.0-1.0)
+#define MAX_FAN_VALUE 0.75 // (he1fp) at MAX_FAN_TEMP the fan is at this spped (0.0-1.0)
+#define MIN_FAN_TEMP 50.0 // (he1fl) at this temp the fan starts to ramp up linearly
+#define MAX_FAN_TEMP 100.0 // (he1fh) at this temperature the fan is at "full speed" (MAX_FAN_VALUE)
-#define H2_DEFAULT_ENABLE false
-#define H2_DEFAULT_P 7.0
-#define H2_DEFAULT_I 0.05
-#define H2_DEFAULT_D 150.0
+#define H1_DEFAULT_ENABLE true
+#define H1_DEFAULT_P 7.0
+#define H1_DEFAULT_I 0.05
+#define H1_DEFAULT_D 150.0
-#define H3_DEFAULT_ENABLE false
-#define H3_DEFAULT_P 9.0
-#define H3_DEFAULT_I 0.12
-#define H3_DEFAULT_D 400.0
+#define H2_DEFAULT_ENABLE false
+#define H2_DEFAULT_P 7.0
+#define H2_DEFAULT_I 0.05
+#define H2_DEFAULT_D 150.0
+
+#define H3_DEFAULT_ENABLE false
+#define H3_DEFAULT_P 9.0
+#define H3_DEFAULT_I 0.12
+#define H3_DEFAULT_D 400.0
diff --git a/g2core/settings/settings_Printrbot_Simple_1403.h b/g2core/settings/settings_Printrbot_Simple_1403.h
index a79115d1..26114747 100644
--- a/g2core/settings/settings_Printrbot_Simple_1403.h
+++ b/g2core/settings/settings_Printrbot_Simple_1403.h
@@ -2,8 +2,8 @@
* settings_printrbot_simple_1403.h - 2013 Simple model
* This file is part of the the g2core project
*
- * Copyright (c) 2010 - 2016 Alden S. Hart, Jr.
- * Copyright (c) 2010 - 2016 Robert Giseburt
+ * Copyright (c) 2010 - 2017 Alden S. Hart, Jr.
+ * Copyright (c) 2010 - 2017 Robert Giseburt
*
* This file ("the software") is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License, version 2 as published by the
@@ -27,158 +27,166 @@
*/
/***********************************************************************/
-/**** Printrbot Simple profile *******************************************/
+/**** Printrbot Simple 1403 profile *******************************************/
/***********************************************************************/
// ***> NOTE: The init message must be a single line with no CRs or LFs
-#define INIT_MESSAGE "Initializing configs to Printrbot Simple 1403 profile"
-
-#ifndef PI
-#define PI 3.14159628
-#endif
+#define INIT_MESSAGE "Initializing configs to Printrbot Simple 1403 profile"
//**** GLOBAL / GENERAL SETTINGS ******************************************************
-#define JUNCTION_INTEGRATION_TIME 1.05 // cornering - between 0.10 and 2.00 (higher is faster)
-#define CHORDAL_TOLERANCE 0.01 // chordal accuracy for arc drawing (in mm)
+#define JUNCTION_INTEGRATION_TIME 1.1 // cornering - between 0.10 and 2.00 (higher is faster)
+#define CHORDAL_TOLERANCE 0.01 // chordal accuracy for arc drawing (in mm)
-#define SOFT_LIMIT_ENABLE 0 // 0=off, 1=on
-#define HARD_LIMIT_ENABLE 1 // 0=off, 1=on
-#define SAFETY_INTERLOCK_ENABLE 1 // 0=off, 1=on
+#define SOFT_LIMIT_ENABLE 0 // 0=off, 1=on
+#define HARD_LIMIT_ENABLE 1 // 0=off, 1=on
+#define SAFETY_INTERLOCK_ENABLE 1 // 0=off, 1=on
-#define SPINDLE_ENABLE_POLARITY 1 // 0=active low, 1=active high
-#define SPINDLE_DIR_POLARITY 0 // 0=clockwise is low, 1=clockwise is high
-#define SPINDLE_PAUSE_ON_HOLD true
-#define SPINDLE_DWELL_TIME 1.0
+#define SPINDLE_ENABLE_POLARITY 1 // 0=active low, 1=active high
+#define SPINDLE_DIR_POLARITY 0 // 0=clockwise is low, 1=clockwise is high
+#define SPINDLE_PAUSE_ON_HOLD true
+#define SPINDLE_DWELL_TIME 1.0
-#define COOLANT_MIST_POLARITY 1 // 0=active low, 1=active high
-#define COOLANT_FLOOD_POLARITY 1 // 0=active low, 1=active high
-#define COOLANT_PAUSE_ON_HOLD false
+#define COOLANT_MIST_POLARITY 1 // 0=active low, 1=active high
+#define COOLANT_FLOOD_POLARITY 1 // 0=active low, 1=active high
+#define COOLANT_PAUSE_ON_HOLD false
+
+#define TRAVERSE_AT_HIGH_JERK true // EXPERIMENTAL, primarily used here for retraction of extruder
// Communications and reporting settings
-#define MARLIN_COMPAT_ENABLED true // enable marlin compatibility mode
-#define COMM_MODE JSON_MODE // one of: TEXT_MODE, JSON_MODE
-#define XIO_ENABLE_FLOW_CONTROL FLOW_CONTROL_RTS // FLOW_CONTROL_OFF, FLOW_CONTROL_RTS
-#define XIO_UART_MUTES_WHEN_USB_CONNECTED 1 // Mute the UART when USB connects
+#define MARLIN_COMPAT_ENABLED true // enable marlin compatibility mode
+#define COMM_MODE JSON_MODE // one of: TEXT_MODE, JSON_MODE
+#define XIO_ENABLE_FLOW_CONTROL FLOW_CONTROL_RTS // FLOW_CONTROL_OFF, FLOW_CONTROL_RTS
+#define XIO_UART_MUTES_WHEN_USB_CONNECTED 1 // Mute the UART when USB connects
-#define TEXT_VERBOSITY TV_VERBOSE // one of: TV_SILENT, TV_VERBOSE
-#define JSON_VERBOSITY JV_MESSAGES // one of: JV_SILENT, JV_FOOTER, JV_CONFIGS, JV_MESSAGES, JV_LINENUM, JV_VERBOSE
-#define QUEUE_REPORT_VERBOSITY QR_OFF // one of: QR_OFF, QR_SINGLE, QR_TRIPLE
+#define TEXT_VERBOSITY TV_VERBOSE // one of: TV_SILENT, TV_VERBOSE
+#define JSON_VERBOSITY JV_LINENUM // one of: JV_SILENT, JV_FOOTER, JV_CONFIGS, JV_MESSAGES, JV_LINENUM, JV_VERBOSE
+#define QUEUE_REPORT_VERBOSITY QR_OFF // one of: QR_OFF, QR_SINGLE, QR_TRIPLE
-#define STATUS_REPORT_VERBOSITY SR_FILTERED // one of: SR_OFF, SR_FILTERED, SR_VERBOSE
-#define STATUS_REPORT_MIN_MS 100 // milliseconds - enforces a viable minimum
-#define STATUS_REPORT_INTERVAL_MS 250 // milliseconds - set $SV=0 to disable
+#define STATUS_REPORT_VERBOSITY SR_FILTERED // one of: SR_OFF, SR_FILTERED, SR_VERBOSE
+#define STATUS_REPORT_MIN_MS 100 // milliseconds - enforces a viable minimum
+#define STATUS_REPORT_INTERVAL_MS 250 // milliseconds - set $SV=0 to disable
// Defaults for 3DP
-//#define STATUS_REPORT_DEFAULTS "line","posx","posy","posz","posa","vel","he1t","he1st","he1at","feed","vel","unit","path","stat"
-// There are no heater two or three, but these would show those: ,"he2t","he2st","he2at","he3t","he3st","he3at"
-
-// Defaults for motion debugging
-//#define STATUS_REPORT_DEFAULTS "line","posx","posy","posz","posa","vel","he1t","he1st","he1at","he2t","he2st","he2at","he3t","he3st","he3at","_fe5","_fe4","feed","vel","unit","path","stat"
-
-// Defaults for PID tuning
-#define STATUS_REPORT_DEFAULTS "line","posx","posy","posz","posa","vel","he1t","he1st","he1at","he1op","pid1p","pid1i","pid1d","feed","vel","unit","path","stat"
+#define STATUS_REPORT_DEFAULTS \
+ "line","posx","posy","posz","posa","vel","he1t","he1st","he1at","he1op","feed","vel","unit","path","stat", \
+ "he2t","he2st","he2at","he2op","he3t","he3st","he3at","he3op"
// Gcode startup defaults
-#define GCODE_DEFAULT_UNITS MILLIMETERS // MILLIMETERS or INCHES
-#define GCODE_DEFAULT_PLANE CANON_PLANE_XY // CANON_PLANE_XY, CANON_PLANE_XZ, or CANON_PLANE_YZ
-#define GCODE_DEFAULT_COORD_SYSTEM G54 // G54, G55, G56, G57, G58 or G59
-#define GCODE_DEFAULT_PATH_CONTROL PATH_CONTINUOUS
-#define GCODE_DEFAULT_DISTANCE_MODE ABSOLUTE_DISTANCE_MODE
+#define GCODE_DEFAULT_UNITS MILLIMETERS // MILLIMETERS or INCHES
+#define GCODE_DEFAULT_PLANE CANON_PLANE_XY // CANON_PLANE_XY, CANON_PLANE_XZ, or CANON_PLANE_YZ
+#define GCODE_DEFAULT_COORD_SYSTEM G54 // G54, G55, G56, G57, G58 or G59
+#define GCODE_DEFAULT_PATH_CONTROL PATH_CONTINUOUS
+#define GCODE_DEFAULT_DISTANCE_MODE ABSOLUTE_DISTANCE_MODE
+
+#define MARLIN_G29_SCRIPT \
+ "M100 ({\"_leds\":3})\n" \
+ "G1 X0 Y145 Z6 F20000\n" \
+ "G38.2 Z-10 F200\n" \
+ "G1 Z5 F20000\n" \
+ "M100 ({\"_leds\":5})\n" \
+ "G1 X140 Y65 F20000\n" \
+ "G38.2 Z-10 F200\n" \
+ "G1 Z5 F20000\n" \
+ "M100 ({\"_leds\":6})\n" \
+ "G1 X0 Y10 F20000\n" \
+ "G38.2 Z-10 F200\n" \
+ "G1 Z5 F20000\n" \
+ "M100 ({\"_leds\":3})\n" \
+ "M100 ({\"tram\":1})\n"
// *** motor settings ************************************************************************************
-#define MOTOR_POWER_MODE MOTOR_POWERED_IN_CYCLE // default motor power mode (see cmMotorPowerMode in stepper.h)
+#define MOTOR_POWER_MODE MOTOR_POWERED_IN_CYCLE // default motor power mode (see cmMotorPowerMode in stepper.h)
// 80 steps/mm at 1/16 microstepping = 40 mm/rev
-#define M1_MOTOR_MAP AXIS_X // 1ma
-#define M1_STEP_ANGLE 1.8 // 1sa
-#define M1_TRAVEL_PER_REV 40.64 // 1tr
-#define M1_MICROSTEPS 32 // 1mi 1,2,4,8,16,32
-#define M1_POLARITY 1 // 1po 0=normal, 1=reversed
-#define M1_POWER_MODE MOTOR_POWER_MODE // 1pm standard
-#define M1_POWER_LEVEL 0.4 // 1mp
+#define M1_MOTOR_MAP AXIS_X // 1ma
+#define M1_STEP_ANGLE 1.8 // 1sa
+#define M1_TRAVEL_PER_REV 40.64 // 1tr
+#define M1_MICROSTEPS 32 // 1mi 1,2,4,8,16,32
+#define M1_POLARITY 1 // 1po 0=normal, 1=reversed
+#define M1_POWER_MODE MOTOR_POWER_MODE // 1pm standard
+#define M1_POWER_LEVEL 0.4 // 1pl: 0.0=no power, 1.0=max power
// 80 steps/mm at 1/16 microstepping = 40 mm/rev
-#define M3_MOTOR_MAP AXIS_Y
-#define M3_STEP_ANGLE 1.8
-#define M3_TRAVEL_PER_REV 40.64
-#define M3_MICROSTEPS 32
-#define M3_POLARITY 0
-#define M3_POWER_MODE MOTOR_POWER_MODE
-#define M3_POWER_LEVEL 0.4
+#define M3_MOTOR_MAP AXIS_Y
+#define M3_STEP_ANGLE 1.8
+#define M3_TRAVEL_PER_REV 40.64
+#define M3_MICROSTEPS 32
+#define M3_POLARITY 0
+#define M3_POWER_MODE MOTOR_POWER_MODE
+#define M3_POWER_LEVEL 0.4
-// 2020 steps/mm at 1/16 microstepping = 1.58416 mm/rev
-#define M2_MOTOR_MAP AXIS_Z
-#define M2_STEP_ANGLE 1.8
-#define M2_TRAVEL_PER_REV 8
-#define M2_MICROSTEPS 32
-#define M2_POLARITY 1
-#define M2_POWER_MODE MOTOR_POWER_MODE
-#define M2_POWER_LEVEL 0.4
+#define M2_MOTOR_MAP AXIS_Z
+#define M2_STEP_ANGLE 1.8
+#define M2_TRAVEL_PER_REV 1.5875
+#define M2_MICROSTEPS 32
+#define M2_POLARITY 1
+#define M2_POWER_MODE MOTOR_POWER_MODE
+#define M2_POWER_LEVEL 0.4
// 96 steps/mm at 1/16 microstepping = 33.3333 mm/rev
-#define M4_MOTOR_MAP AXIS_A
-#define M4_STEP_ANGLE 1.8
-#define M4_TRAVEL_PER_REV 360 // degrees moved per motor rev
-#define M4_MICROSTEPS 32
-#define M4_POLARITY 0
-#define M4_POWER_MODE MOTOR_POWER_MODE
-#define M4_POWER_LEVEL 0.4
+#define M4_MOTOR_MAP AXIS_A
+#define M4_STEP_ANGLE 1.8
+#define M4_TRAVEL_PER_REV 360 // degrees moved per motor rev
+#define M4_MICROSTEPS 32
+#define M4_POLARITY 1
+#define M4_POWER_MODE MOTOR_POWER_MODE
+#define M4_POWER_LEVEL 0.4
// 96 steps/mm at 1/16 microstepping = 33.3333 mm/rev
-#define M5_MOTOR_MAP AXIS_B
-#define M5_STEP_ANGLE 1.8
-#define M5_TRAVEL_PER_REV 360 // degrees moved per motor rev
-#define M5_MICROSTEPS 32
-#define M5_POLARITY 0
-#define M5_POWER_MODE MOTOR_POWER_MODE
-#define M5_POWER_LEVEL 0.3
+#define M5_MOTOR_MAP AXIS_B
+#define M5_STEP_ANGLE 1.8
+#define M5_TRAVEL_PER_REV 360 // degrees moved per motor rev
+#define M5_MICROSTEPS 32
+#define M5_POLARITY 0
+#define M5_POWER_MODE MOTOR_POWER_MODE
+#define M5_POWER_LEVEL 0.35
// *** axis settings **********************************************************************************
-#define X_AXIS_MODE AXIS_STANDARD // xam see canonical_machine.h cmAxisMode for valid values
-#define X_VELOCITY_MAX 20000 // xvm G0 max velocity in mm/min
-#define X_FEEDRATE_MAX X_VELOCITY_MAX // xfr G1 max feed rate in mm/min
-#define X_TRAVEL_MIN 0 // xtn minimum travel - used by soft limits and homing
-#define X_TRAVEL_MAX 200 // xtm travel between switches or crashes
-#define X_JERK_MAX 18000 // xjm yes, that's "100 billion" mm/(min^3)
-#define X_JERK_HIGH_SPEED 8000 // xjh
-#define X_HOMING_INPUT 4 // xhi input used for homing or 0 to disable
-#define X_HOMING_DIRECTION 0 // xhd 0=search moves negative, 1= search moves positive
-#define X_SEARCH_VELOCITY 2500 // xsv move in negative direction
-#define X_LATCH_VELOCITY 200 // xlv mm/min
-#define X_LATCH_BACKOFF 5 // xlb mm
-#define X_ZERO_BACKOFF 0.5 // xzb mm
+#define X_AXIS_MODE AXIS_STANDARD // xam see canonical_machine.h cmAxisMode for valid values
+#define X_VELOCITY_MAX 30000 // xvm G0 max velocity in mm/min
+#define X_FEEDRATE_MAX X_VELOCITY_MAX // xfr G1 max feed rate in mm/min
+#define X_TRAVEL_MIN 0 // xtn minimum travel - used by soft limits and homing
+#define X_TRAVEL_MAX 152 // xtm travel between switches or crashes
+#define X_JERK_MAX 6000 // xjm yes, that's "100 billion" mm/(min^3)
+#define X_JERK_HIGH_SPEED 6000 // xjh
+#define X_HOMING_INPUT 4 // xhi input used for homing or 0 to disable
+#define X_HOMING_DIRECTION 0 // xhd 0=search moves negative, 1= search moves positive
+#define X_SEARCH_VELOCITY 3000 // xsv move in negative direction
+#define X_LATCH_VELOCITY 200 // xlv mm/min
+#define X_LATCH_BACKOFF 5 // xlb mm
+#define X_ZERO_BACKOFF 0.5 // xzb mm
-#define Y_AXIS_MODE AXIS_STANDARD
-#define Y_VELOCITY_MAX 20000
-#define Y_FEEDRATE_MAX Y_VELOCITY_MAX
-#define Y_TRAVEL_MIN 0
-#define Y_TRAVEL_MAX 150
-#define Y_JERK_MAX 8000 // {yjm:15000} {xjm:15000} {yjm:10000} {xjm:10000}
-#define Y_JERK_HIGH_SPEED 30000
-#define Y_HOMING_INPUT 1
-#define Y_HOMING_DIRECTION 1
-#define Y_SEARCH_VELOCITY 3000
-#define Y_LATCH_VELOCITY 200
-#define Y_LATCH_BACKOFF 5
-#define Y_ZERO_BACKOFF 0.5
+#define Y_AXIS_MODE AXIS_STANDARD
+#define Y_VELOCITY_MAX 30000
+#define Y_FEEDRATE_MAX Y_VELOCITY_MAX
+#define Y_TRAVEL_MIN 0
+#define Y_TRAVEL_MAX 152
+#define Y_JERK_MAX 6000
+#define Y_JERK_HIGH_SPEED 6000
+#define Y_HOMING_INPUT 1
+#define Y_HOMING_DIRECTION 1
+#define Y_SEARCH_VELOCITY 1500
+#define Y_LATCH_VELOCITY 200
+#define Y_LATCH_BACKOFF 5
+#define Y_ZERO_BACKOFF 0.5
-#define Z_AXIS_MODE AXIS_STANDARD
-#define Z_VELOCITY_MAX 4000
-#define Z_FEEDRATE_MAX Z_VELOCITY_MAX
-#define Z_TRAVEL_MIN 0
-#define Z_TRAVEL_MAX 200
-#define Z_JERK_MAX 3000
-#define Z_JERK_HIGH_SPEED 3000
-#define Z_HOMING_INPUT 5
-#define Z_HOMING_DIRECTION 0
-#define Z_SEARCH_VELOCITY 300
-#define Z_LATCH_VELOCITY 100
-#define Z_LATCH_BACKOFF 2
-#define Z_ZERO_BACKOFF 0
+#define Z_AXIS_MODE AXIS_STANDARD
+#define Z_VELOCITY_MAX 300
+#define Z_FEEDRATE_MAX Z_VELOCITY_MAX
+#define Z_TRAVEL_MIN 0
+#define Z_TRAVEL_MAX 152
+#define Z_JERK_MAX 800
+#define Z_JERK_HIGH_SPEED 1600
+#define Z_HOMING_INPUT 5
+#define Z_HOMING_DIRECTION 0
+#define Z_SEARCH_VELOCITY 200
+#define Z_LATCH_VELOCITY 100
+#define Z_LATCH_BACKOFF 5
+#define Z_ZERO_BACKOFF 0
// Rotary values are chosen to make the motor react the same as X for testing
/***************************************************************************************
@@ -198,153 +206,151 @@
*
***************************************************************************************/
-#define A_AXIS_MODE AXIS_RADIUS
-#define A_RADIUS 5.30516476972984
-//#define A_VELOCITY_MAX 25920.0 // ~40 mm/s, 2,400 mm/min
-//#define A_FEEDRATE_MAX 25920.0/2.0 // ~20 mm/s, 1,200 mm/min
-#define A_VELOCITY_MAX 77760.0 // G0 rate ~120 mm/s, 2,400 mm/min
-#define A_FEEDRATE_MAX 9720.0 // 9720.0 = G1 rate ~15 mm/s, 900 mm/min
-#define A_TRAVEL_MIN 0
-#define A_TRAVEL_MAX 10
-#define A_JERK_MAX 648000 // 1,000 million mm/min^3 = 648000
- // * a million IF it's over a million
- // c=2*pi*r, r=5.30516476972984, d=c/360, s=((1000*60)/d)
-#define A_HOMING_INPUT 0
-#define A_HOMING_DIRECTION 0
-#define A_SEARCH_VELOCITY 2000
-#define A_LATCH_VELOCITY 2000
-#define A_LATCH_BACKOFF 5
-#define A_ZERO_BACKOFF 2
-#define A_JERK_HIGH_SPEED A_JERK_MAX
+#define A_AXIS_MODE AXIS_RADIUS
+#define A_RADIUS 5.30516476972984
+#define A_VELOCITY_MAX 77760.0 // G0 rate ~120 mm/s, 2,400 mm/min
+#define A_FEEDRATE_MAX 9720.0 // 9720.0 = G1 rate ~15 mm/s, 900 mm/min
+#define A_TRAVEL_MIN 0
+#define A_TRAVEL_MAX 10
+#define A_JERK_MAX 648000 // 1,000 million mm/min^3 = 648000
+#define A_HOMING_INPUT 0
+#define A_HOMING_DIRECTION 0
+#define A_SEARCH_VELOCITY 2000
+#define A_LATCH_VELOCITY 2000
+#define A_LATCH_BACKOFF 5
+#define A_ZERO_BACKOFF 2
+#define A_JERK_HIGH_SPEED A_JERK_MAX
-#define B_AXIS_MODE AXIS_DISABLED
-#define B_RADIUS 1
-#define B_VELOCITY_MAX 3600
-#define B_FEEDRATE_MAX B_VELOCITY_MAX
-#define B_TRAVEL_MIN 0
-#define B_TRAVEL_MAX -1
-//#define B_JERK_MAX 20000000
-#define B_JERK_MAX 20
-#define B_HOMING_INPUT 0
-#define B_HOMING_DIRECTION 0
-#define B_SEARCH_VELOCITY 600
-#define B_LATCH_VELOCITY 100
-#define B_LATCH_BACKOFF 10
-#define B_ZERO_BACKOFF 2
-#define B_JERK_HIGH_SPEED A_JERK_MAX
+#define B_AXIS_MODE AXIS_DISABLED
+#define B_RADIUS 1
+#define B_VELOCITY_MAX 3600
+#define B_FEEDRATE_MAX B_VELOCITY_MAX
+#define B_TRAVEL_MIN 0
+#define B_TRAVEL_MAX -1
+#define B_JERK_MAX 20
+#define B_HOMING_INPUT 0
+#define B_HOMING_DIRECTION 0
+#define B_SEARCH_VELOCITY 600
+#define B_LATCH_VELOCITY 100
+#define B_LATCH_BACKOFF 10
+#define B_ZERO_BACKOFF 2
+#define B_JERK_HIGH_SPEED A_JERK_MAX
//*** Input / output settings ***
/*
- IO_MODE_DISABLED
- IO_ACTIVE_LOW aka NORMALLY_OPEN
- IO_ACTIVE_HIGH aka NORMALLY_CLOSED
+ IO_MODE_DISABLED
+ IO_ACTIVE_LOW aka NORMALLY_OPEN
+ IO_ACTIVE_HIGH aka NORMALLY_CLOSED
- INPUT_ACTION_NONE
- INPUT_ACTION_STOP
- INPUT_ACTION_FAST_STOP
- INPUT_ACTION_HALT
- INPUT_ACTION_RESET
+ INPUT_ACTION_NONE
+ INPUT_ACTION_STOP
+ INPUT_ACTION_FAST_STOP
+ INPUT_ACTION_HALT
+ INPUT_ACTION_RESET
- INPUT_FUNCTION_NONE
- INPUT_FUNCTION_LIMIT
- INPUT_FUNCTION_INTERLOCK
- INPUT_FUNCTION_SHUTDOWN
- INPUT_FUNCTION_PANIC
-*/
+ INPUT_FUNCTION_NONE
+ INPUT_FUNCTION_LIMIT
+ INPUT_FUNCTION_INTERLOCK
+ INPUT_FUNCTION_SHUTDOWN
+ INPUT_FUNCTION_PANIC
+ */
// Inputs are defined for the g2ref(a) board
// Xmn (board label)
-#define DI1_MODE IO_ACTIVE_HIGH
-#define DI1_ACTION INPUT_ACTION_NONE
-#define DI1_FUNCTION INPUT_FUNCTION_NONE
+#define DI1_MODE IO_ACTIVE_HIGH
+#define DI1_ACTION INPUT_ACTION_NONE
+#define DI1_FUNCTION INPUT_FUNCTION_NONE
// Xmax
-#define DI2_MODE IO_MODE_DISABLED
-#define DI2_ACTION INPUT_ACTION_NONE
-#define DI2_FUNCTION INPUT_FUNCTION_NONE
+#define DI2_MODE IO_MODE_DISABLED
+#define DI2_ACTION INPUT_ACTION_NONE
+#define DI2_FUNCTION INPUT_FUNCTION_NONE
// Ymin
-#define DI3_MODE IO_MODE_DISABLED
-#define DI3_ACTION INPUT_ACTION_NONE
-#define DI3_FUNCTION INPUT_FUNCTION_NONE
+#define DI3_MODE IO_MODE_DISABLED
+#define DI3_ACTION INPUT_ACTION_NONE
+#define DI3_FUNCTION INPUT_FUNCTION_NONE
// Ymax
-#define DI4_MODE IO_ACTIVE_HIGH
-#define DI4_ACTION INPUT_ACTION_NONE
-#define DI4_FUNCTION INPUT_FUNCTION_NONE
+#define DI4_MODE IO_ACTIVE_HIGH
+#define DI4_ACTION INPUT_ACTION_NONE
+#define DI4_FUNCTION INPUT_FUNCTION_NONE
// Zmin
-#define DI5_MODE IO_ACTIVE_LOW // Z probe
-#define DI5_ACTION INPUT_ACTION_NONE
-#define DI5_FUNCTION INPUT_FUNCTION_NONE
+#define DI5_MODE IO_ACTIVE_LOW // Z probe
+#define DI5_ACTION INPUT_ACTION_NONE
+#define DI5_FUNCTION INPUT_FUNCTION_PROBE
// Zmax
-#define DI6_MODE IO_MODE_DISABLED
-#define DI6_ACTION INPUT_ACTION_NONE
-#define DI6_FUNCTION INPUT_FUNCTION_NONE
+#define DI6_MODE IO_MODE_DISABLED
+#define DI6_ACTION INPUT_ACTION_NONE
+#define DI6_FUNCTION INPUT_FUNCTION_NONE
// Shutdown (Amin on v9 board)
-#define DI7_MODE IO_MODE_DISABLED
-#define DI7_ACTION INPUT_ACTION_NONE
-#define DI7_FUNCTION INPUT_FUNCTION_NONE
+#define DI7_MODE IO_MODE_DISABLED
+#define DI7_ACTION INPUT_ACTION_NONE
+#define DI7_FUNCTION INPUT_FUNCTION_NONE
// High Voltage Z Probe In (Amax on v9 board)
-#define DI8_MODE IO_ACTIVE_LOW
-#define DI8_ACTION INPUT_ACTION_NONE
-#define DI8_FUNCTION INPUT_FUNCTION_NONE
+#define DI8_MODE IO_ACTIVE_LOW
+#define DI8_ACTION INPUT_ACTION_NONE
+#define DI8_FUNCTION INPUT_FUNCTION_NONE
// Hardware interlock input
-#define DI9_MODE IO_MODE_DISABLED
-#define DI9_ACTION INPUT_ACTION_NONE
-#define DI9_FUNCTION INPUT_FUNCTION_NONE
+#define DI9_MODE IO_MODE_DISABLED
+#define DI9_ACTION INPUT_ACTION_NONE
+#define DI9_FUNCTION INPUT_FUNCTION_NONE
-//Extruder1_PWM
-#define DO1_MODE IO_ACTIVE_HIGH
+// Extruder1_PWM
+#define DO1_MODE IO_ACTIVE_HIGH
-//Extruder2_PWM
-#define DO2_MODE IO_ACTIVE_HIGH
+// Extruder2_PWM
+#define DO2_MODE IO_ACTIVE_HIGH
-//Fan1A_PWM
-#define DO3_MODE IO_ACTIVE_HIGH
+// Fan1A_PWM
+#define DO3_MODE IO_ACTIVE_HIGH
-//Fan1B_PWM
-#define DO4_MODE IO_ACTIVE_HIGH
+// Fan1B_PWM
+#define DO4_MODE IO_ACTIVE_HIGH
-#define DO5_MODE IO_ACTIVE_HIGH
-#define DO6_MODE IO_ACTIVE_HIGH
-#define DO7_MODE IO_ACTIVE_HIGH
-#define DO8_MODE IO_ACTIVE_HIGH
+#define DO5_MODE IO_ACTIVE_HIGH
+#define DO6_MODE IO_ACTIVE_HIGH
+#define DO7_MODE IO_ACTIVE_HIGH
+#define DO8_MODE IO_ACTIVE_HIGH
-//SAFEin (Output) signal
-#define DO9_MODE IO_ACTIVE_HIGH
+// SAFEin (Output) signal
+#define DO9_MODE IO_ACTIVE_HIGH
-#define DO10_MODE IO_ACTIVE_HIGH
+#define DO10_MODE IO_ACTIVE_HIGH
-//Header Bed FET
-#define DO11_MODE IO_ACTIVE_HIGH
+// Header Bed FET
+#define DO11_MODE IO_ACTIVE_HIGH
-//Indicator_LED
-#define DO12_MODE IO_ACTIVE_HIGH
+// Indicator_LED
+#define DO12_MODE IO_ACTIVE_HIGH
-#define DO13_MODE IO_ACTIVE_HIGH
+#define DO13_MODE IO_ACTIVE_HIGH
/*** Extruders / Heaters ***/
+#define TEMP_MIN_BED_RISE_DEGREES_OVER_TIME 0.5
-#define MIN_FAN_TEMP 50.0
-#define MAX_FAN_TEMP 100.0
+#define MIN_FAN_VALUE 0.4 // (he1fm) at MIN_FAN_TEMP the fan comes on at this spped (0.0-1.0)
+#define MAX_FAN_VALUE 0.75 // (he1fp) at MAX_FAN_TEMP the fan is at this spped (0.0-1.0)
+#define MIN_FAN_TEMP 50.0 // (he1fl) at this temp the fan starts to ramp up linearly
+#define MAX_FAN_TEMP 100.0 // (he1fh) at this temperature the fan is at "full speed" (MAX_FAN_VALUE)
-#define H1_DEFAULT_ENABLE true
-#define H1_DEFAULT_P 7.0
-#define H1_DEFAULT_I 0.05
-#define H1_DEFAULT_D 150.0
+#define H1_DEFAULT_ENABLE true
+#define H1_DEFAULT_P 7.0
+#define H1_DEFAULT_I 0.05
+#define H1_DEFAULT_D 150.0
-#define H2_DEFAULT_ENABLE false
-#define H2_DEFAULT_P 7.0
-#define H2_DEFAULT_I 0.05
-#define H2_DEFAULT_D 150.0
+#define H2_DEFAULT_ENABLE false
+#define H2_DEFAULT_P 7.0
+#define H2_DEFAULT_I 0.05
+#define H2_DEFAULT_D 150.0
-#define H3_DEFAULT_ENABLE false
-#define H3_DEFAULT_P 9.0
-#define H3_DEFAULT_I 0.12
-#define H3_DEFAULT_D 400.0
+#define H3_DEFAULT_ENABLE false
+#define H3_DEFAULT_P 9.0
+#define H3_DEFAULT_I 0.12
+#define H3_DEFAULT_D 400.0
diff --git a/g2core/settings/settings_Printrbot_Simple_1608.h b/g2core/settings/settings_Printrbot_Simple_1608.h
index 8fc30ccc..237340ba 100644
--- a/g2core/settings/settings_Printrbot_Simple_1608.h
+++ b/g2core/settings/settings_Printrbot_Simple_1608.h
@@ -2,8 +2,8 @@
* settings_printrbot_simple_1608.h - New Simple, 2016 version
* This file is part of the the g2core project
*
- * Copyright (c) 2010 - 2016 Alden S. Hart, Jr.
- * Copyright (c) 2010 - 2016 Robert Giseburt
+ * Copyright (c) 2010 - 2017 Alden S. Hart, Jr.
+ * Copyright (c) 2010 - 2017 Robert Giseburt
*
* This file ("the software") is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License, version 2 as published by the
@@ -31,48 +31,47 @@
/***********************************************************************/
// ***> NOTE: The init message must be a single line with no CRs or LFs
-#define INIT_MESSAGE "Initializing configs to Printrbot Simple 1608 profile"
-
-#ifndef PI
-#define PI 3.14159628
-#endif
+#define INIT_MESSAGE "Initializing configs to Printrbot Simple 1608 profile"
//**** GLOBAL / GENERAL SETTINGS ******************************************************
-#define JUNCTION_INTEGRATION_TIME 1.15 // cornering - between 0.10 and 2.00 (higher is faster)
-#define CHORDAL_TOLERANCE 0.01 // chordal accuracy for arc drawing (in mm)
+#define JUNCTION_INTEGRATION_TIME 1.15 // cornering - between 0.10 and 2.00 (higher is faster)
+#define CHORDAL_TOLERANCE 0.01 // chordal accuracy for arc drawing (in mm)
-#define SOFT_LIMIT_ENABLE 0 // 0=off, 1=on
-#define HARD_LIMIT_ENABLE 1 // 0=off, 1=on
-#define SAFETY_INTERLOCK_ENABLE 1 // 0=off, 1=on
+#define SOFT_LIMIT_ENABLE 0 // 0=off, 1=on
+#define HARD_LIMIT_ENABLE 1 // 0=off, 1=on
+#define SAFETY_INTERLOCK_ENABLE 1 // 0=off, 1=on
-#define SPINDLE_ENABLE_POLARITY 1 // 0=active low, 1=active high
-#define SPINDLE_DIR_POLARITY 0 // 0=clockwise is low, 1=clockwise is high
-#define SPINDLE_PAUSE_ON_HOLD true
-#define SPINDLE_DWELL_TIME 1.0
+#define SPINDLE_ENABLE_POLARITY 1 // 0=active low, 1=active high
+#define SPINDLE_DIR_POLARITY 0 // 0=clockwise is low, 1=clockwise is high
+#define SPINDLE_PAUSE_ON_HOLD true
+#define SPINDLE_DWELL_TIME 1.0
-#define COOLANT_MIST_POLARITY 1 // 0=active low, 1=active high
-#define COOLANT_FLOOD_POLARITY 1 // 0=active low, 1=active high
-#define COOLANT_PAUSE_ON_HOLD false
+#define COOLANT_MIST_POLARITY 1 // 0=active low, 1=active high
+#define COOLANT_FLOOD_POLARITY 1 // 0=active low, 1=active high
+#define COOLANT_PAUSE_ON_HOLD false
+
+#define TRAVERSE_AT_HIGH_JERK true // EXPERIMENTAL, primarily used here for retraction of extruder
// Communications and reporting settings
-#define MARLIN_COMPAT_ENABLED true // enable marlin compatibility mode
-#define COMM_MODE JSON_MODE // one of: TEXT_MODE, JSON_MODE
-#define XIO_ENABLE_FLOW_CONTROL FLOW_CONTROL_RTS // FLOW_CONTROL_OFF, FLOW_CONTROL_RTS
-#define XIO_UART_MUTES_WHEN_USB_CONNECTED 1 // Mute the UART when USB connects
+#define MARLIN_COMPAT_ENABLED true // enable marlin compatibility mode
+#define COMM_MODE JSON_MODE // one of: TEXT_MODE, JSON_MODE
+#define XIO_ENABLE_FLOW_CONTROL FLOW_CONTROL_RTS // FLOW_CONTROL_OFF, FLOW_CONTROL_RTS
+#define XIO_UART_MUTES_WHEN_USB_CONNECTED 1 // Mute the UART when USB connects
-#define TEXT_VERBOSITY TV_VERBOSE // one of: TV_SILENT, TV_VERBOSE
-#define JSON_VERBOSITY JV_LINENUM // one of: JV_SILENT, JV_FOOTER, JV_CONFIGS, JV_MESSAGES, JV_LINENUM, JV_VERBOSE
-#define QUEUE_REPORT_VERBOSITY QR_OFF // one of: QR_OFF, QR_SINGLE, QR_TRIPLE
+#define TEXT_VERBOSITY TV_VERBOSE // one of: TV_SILENT, TV_VERBOSE
+#define JSON_VERBOSITY JV_LINENUM // one of: JV_SILENT, JV_FOOTER, JV_CONFIGS, JV_MESSAGES, JV_LINENUM, JV_VERBOSE
+#define QUEUE_REPORT_VERBOSITY QR_OFF // one of: QR_OFF, QR_SINGLE, QR_TRIPLE
-#define STATUS_REPORT_VERBOSITY SR_FILTERED // one of: SR_OFF, SR_FILTERED, SR_VERBOSE
-#define STATUS_REPORT_MIN_MS 100 // milliseconds - enforces a viable minimum
-#define STATUS_REPORT_INTERVAL_MS 250 // milliseconds - set $SV=0 to disable
+#define STATUS_REPORT_VERBOSITY SR_FILTERED // one of: SR_OFF, SR_FILTERED, SR_VERBOSE
+#define STATUS_REPORT_MIN_MS 100 // milliseconds - enforces a viable minimum
+#define STATUS_REPORT_INTERVAL_MS 250 // milliseconds - set $SV=0 to disable
// Defaults for 3DP
-#define STATUS_REPORT_DEFAULTS "line","posx","posy","posz","posa","vel","he1t","he1st","he1at","feed","unit","path","stat"
-// There are no heater two or three, but these would show those: ,"he2t","he2st","he2at","he3t","he3st","he3at"
+#define STATUS_REPORT_DEFAULTS \
+ "line","posx","posy","posz","posa","vel","he1t","he1st","he1at","he1op","feed","vel","unit","path","stat", \
+ "he2t","he2st","he2at","he2op","he3t","he3st","he3at","he3op"
// Defaults for motion debugging
//#define STATUS_REPORT_DEFAULTS "line","posx","posy","posz","posa","he1t","he1st","he1at","he2t","he2st","he2at","he3t","he3st","he3at","_fe5","_fe4","feed","vel","unit","path","stat"
@@ -81,13 +80,13 @@
//#define STATUS_REPORT_DEFAULTS "line","posx","posy","posz","posa","he1t","he1st","he1at","he1op","pid1p","pid1i","pid1d","feed","vel","unit","path","stat"
// Gcode startup defaults
-#define GCODE_DEFAULT_UNITS MILLIMETERS // MILLIMETERS or INCHES
-#define GCODE_DEFAULT_PLANE CANON_PLANE_XY // CANON_PLANE_XY, CANON_PLANE_XZ, or CANON_PLANE_YZ
-#define GCODE_DEFAULT_COORD_SYSTEM G54 // G54, G55, G56, G57, G58 or G59
-#define GCODE_DEFAULT_PATH_CONTROL PATH_CONTINUOUS
-#define GCODE_DEFAULT_DISTANCE_MODE ABSOLUTE_DISTANCE_MODE
+#define GCODE_DEFAULT_UNITS MILLIMETERS // MILLIMETERS or INCHES
+#define GCODE_DEFAULT_PLANE CANON_PLANE_XY // CANON_PLANE_XY, CANON_PLANE_XZ, or CANON_PLANE_YZ
+#define GCODE_DEFAULT_COORD_SYSTEM G54 // G54, G55, G56, G57, G58 or G59
+#define GCODE_DEFAULT_PATH_CONTROL PATH_CONTINUOUS
+#define GCODE_DEFAULT_DISTANCE_MODE ABSOLUTE_DISTANCE_MODE
-#define MARLIN_G29_SCRIPT \
+#define MARLIN_G29_SCRIPT \
"(MSG Tramming started)\n" \
"M100 ({\"_leds\":3})\n" \
"G1 X0 Y145 Z6 F20000\n" \
@@ -102,102 +101,102 @@
"G38.2 Z-10 F200\n" \
"G1 Z5 F20000\n" \
"M100 ({\"_leds\":3})\n" \
- "M100 ({\"tram\":1})" \
+ "M100 ({\"tram\":1})\n" \
"(MSG Tramming completed)\n"
// *** motor settings ************************************************************************************
-#define MOTOR_POWER_TIMEOUT 30 // don't disable motors (without an explicit {md:0}) for 30 seconds
+#define MOTOR_POWER_TIMEOUT 30 // don't disable motors (without an explicit {md:0}) for 30 seconds
-#define MOTOR_POWER_MODE MOTOR_POWERED_IN_CYCLE // default motor power mode (see cmMotorPowerMode in stepper.h)
+#define MOTOR_POWER_MODE MOTOR_POWERED_IN_CYCLE // default motor power mode (see cmMotorPowerMode in stepper.h)
// 80 steps/mm at 1/16 microstepping = 40 mm/rev
-#define M1_MOTOR_MAP AXIS_X // 1ma
-#define M1_STEP_ANGLE 1.8 // 1sa
-#define M1_TRAVEL_PER_REV 40.011604 // 1tr
-#define M1_MICROSTEPS 32 // 1mi 1,2,4,8,16,32
-#define M1_POLARITY 0 // 1po 0=normal, 1=reversed
-#define M1_POWER_MODE MOTOR_POWER_MODE // 1pm standard
-#define M1_POWER_LEVEL 0.35 // 1mp
+#define M1_MOTOR_MAP AXIS_X // 1ma
+#define M1_STEP_ANGLE 1.8 // 1sa
+#define M1_TRAVEL_PER_REV 40.011604 // 1tr
+#define M1_MICROSTEPS 32 // 1mi 1,2,4,8,16,32
+#define M1_POLARITY 0 // 1po 0=normal, 1=reversed
+#define M1_POWER_MODE MOTOR_POWER_MODE // 1pm standard
+#define M1_POWER_LEVEL 0.35 // 1pl: 0.0=no power, 1.0=max power
// 80 steps/mm at 1/16 microstepping = 40 mm/rev
-#define M3_MOTOR_MAP AXIS_Y
-#define M3_STEP_ANGLE 1.8
-#define M3_TRAVEL_PER_REV 40.011604
-#define M3_MICROSTEPS 32
-#define M3_POLARITY 0
-#define M3_POWER_MODE MOTOR_POWER_MODE
-#define M3_POWER_LEVEL 0.35
+#define M3_MOTOR_MAP AXIS_Y
+#define M3_STEP_ANGLE 1.8
+#define M3_TRAVEL_PER_REV 40.011604
+#define M3_MICROSTEPS 32
+#define M3_POLARITY 0
+#define M3_POWER_MODE MOTOR_POWER_MODE
+#define M3_POWER_LEVEL 0.35
// 2020 steps/mm at 1/16 microstepping = 1.58416 mm/rev
-#define M2_MOTOR_MAP AXIS_Z
-#define M2_STEP_ANGLE 1.8
-#define M2_TRAVEL_PER_REV 8
-#define M2_MICROSTEPS 32
-#define M2_POLARITY 1
-#define M2_POWER_MODE MOTOR_POWER_MODE
-#define M2_POWER_LEVEL 0.3
+#define M2_MOTOR_MAP AXIS_Z
+#define M2_STEP_ANGLE 1.8
+#define M2_TRAVEL_PER_REV 8
+#define M2_MICROSTEPS 32
+#define M2_POLARITY 1
+#define M2_POWER_MODE MOTOR_POWER_MODE
+#define M2_POWER_LEVEL 0.3
// 96 steps/mm at 1/16 microstepping = 33.3333 mm/rev
-#define M4_MOTOR_MAP AXIS_A
-#define M4_STEP_ANGLE 1.8
-#define M4_TRAVEL_PER_REV 360 // degrees moved per motor rev
-#define M4_MICROSTEPS 32
-#define M4_POLARITY 1
-#define M4_POWER_MODE MOTOR_POWER_MODE
-#define M4_POWER_LEVEL 0.3
+#define M4_MOTOR_MAP AXIS_A
+#define M4_STEP_ANGLE 1.8
+#define M4_TRAVEL_PER_REV 360 // degrees moved per motor rev
+#define M4_MICROSTEPS 32
+#define M4_POLARITY 1
+#define M4_POWER_MODE MOTOR_POWER_MODE
+#define M4_POWER_LEVEL 0.3
// 96 steps/mm at 1/16 microstepping = 33.3333 mm/rev
-#define M5_MOTOR_MAP AXIS_B
-#define M5_STEP_ANGLE 1.8
-#define M5_TRAVEL_PER_REV 360 // degrees moved per motor rev
-#define M5_MICROSTEPS 32
-#define M5_POLARITY 0
-#define M5_POWER_MODE MOTOR_POWER_MODE
-#define M5_POWER_LEVEL 0.3
+#define M5_MOTOR_MAP AXIS_B
+#define M5_STEP_ANGLE 1.8
+#define M5_TRAVEL_PER_REV 360 // degrees moved per motor rev
+#define M5_MICROSTEPS 32
+#define M5_POLARITY 0
+#define M5_POWER_MODE MOTOR_POWER_MODE
+#define M5_POWER_LEVEL 0.3
// *** axis settings **********************************************************************************
-#define X_AXIS_MODE AXIS_STANDARD // xam see canonical_machine.h cmAxisMode for valid values
-#define X_VELOCITY_MAX 15000 // xvm G0 max velocity in mm/min
-#define X_FEEDRATE_MAX X_VELOCITY_MAX // xfr G1 max feed rate in mm/min
-#define X_TRAVEL_MIN 0 // xtn minimum travel - used by soft limits and homing
-#define X_TRAVEL_MAX 215 // xtm travel between switches or crashes
-#define X_JERK_MAX 6000 // xjm yes, that's "100 billion" mm/(min^3)
-#define X_JERK_HIGH_SPEED 6000 // xjh
-#define X_HOMING_INPUT 4 // xhi input used for homing or 0 to disable
-#define X_HOMING_DIRECTION 0 // xhd 0=search moves negative, 1= search moves positive
-#define X_SEARCH_VELOCITY 2500 // xsv move in negative direction
-#define X_LATCH_VELOCITY 200 // xlv mm/min
-#define X_LATCH_BACKOFF 5 // xlb mm
-#define X_ZERO_BACKOFF 0.5 // xzb mm
+#define X_AXIS_MODE AXIS_STANDARD // xam see canonical_machine.h cmAxisMode for valid values
+#define X_VELOCITY_MAX 15000 // xvm G0 max velocity in mm/min
+#define X_FEEDRATE_MAX X_VELOCITY_MAX // xfr G1 max feed rate in mm/min
+#define X_TRAVEL_MIN 0 // xtn minimum travel - used by soft limits and homing
+#define X_TRAVEL_MAX 215 // xtm travel between switches or crashes
+#define X_JERK_MAX 6000 // xjm yes, that's "100 billion" mm/(min^3)
+#define X_JERK_HIGH_SPEED 6000 // xjh
+#define X_HOMING_INPUT 4 // xhi input used for homing or 0 to disable
+#define X_HOMING_DIRECTION 0 // xhd 0=search moves negative, 1= search moves positive
+#define X_SEARCH_VELOCITY 2500 // xsv move in negative direction
+#define X_LATCH_VELOCITY 200 // xlv mm/min
+#define X_LATCH_BACKOFF 5 // xlb mm
+#define X_ZERO_BACKOFF 0.5 // xzb mm
-#define Y_AXIS_MODE AXIS_STANDARD
-#define Y_VELOCITY_MAX 15000
-#define Y_FEEDRATE_MAX Y_VELOCITY_MAX
-#define Y_TRAVEL_MIN 0
-#define Y_TRAVEL_MAX 152.4
-#define Y_JERK_MAX 6000
-#define Y_JERK_HIGH_SPEED 6000
-#define Y_HOMING_INPUT 1
-#define Y_HOMING_DIRECTION 1
-#define Y_SEARCH_VELOCITY 3000
-#define Y_LATCH_VELOCITY 200
-#define Y_LATCH_BACKOFF 5
-#define Y_ZERO_BACKOFF 0.5
+#define Y_AXIS_MODE AXIS_STANDARD
+#define Y_VELOCITY_MAX 15000
+#define Y_FEEDRATE_MAX Y_VELOCITY_MAX
+#define Y_TRAVEL_MIN 0
+#define Y_TRAVEL_MAX 152.4
+#define Y_JERK_MAX 6000
+#define Y_JERK_HIGH_SPEED 6000
+#define Y_HOMING_INPUT 1
+#define Y_HOMING_DIRECTION 1
+#define Y_SEARCH_VELOCITY 3000
+#define Y_LATCH_VELOCITY 200
+#define Y_LATCH_BACKOFF 5
+#define Y_ZERO_BACKOFF 0.5
-#define Z_AXIS_MODE AXIS_STANDARD
-#define Z_VELOCITY_MAX 2000
-#define Z_FEEDRATE_MAX Z_VELOCITY_MAX
-#define Z_TRAVEL_MIN 0
-#define Z_TRAVEL_MAX 215
-#define Z_JERK_MAX 1500
-#define Z_JERK_HIGH_SPEED 3000
-#define Z_HOMING_INPUT 5
-#define Z_HOMING_DIRECTION 0
-#define Z_SEARCH_VELOCITY 300
-#define Z_LATCH_VELOCITY 100
-#define Z_LATCH_BACKOFF 2
-#define Z_ZERO_BACKOFF 0
+#define Z_AXIS_MODE AXIS_STANDARD
+#define Z_VELOCITY_MAX 2000
+#define Z_FEEDRATE_MAX Z_VELOCITY_MAX
+#define Z_TRAVEL_MIN 0
+#define Z_TRAVEL_MAX 215
+#define Z_JERK_MAX 1500
+#define Z_JERK_HIGH_SPEED 3000
+#define Z_HOMING_INPUT 5
+#define Z_HOMING_DIRECTION 0
+#define Z_SEARCH_VELOCITY 300
+#define Z_LATCH_VELOCITY 100
+#define Z_LATCH_BACKOFF 2
+#define Z_ZERO_BACKOFF 0
// Rotary values are chosen to make the motor react the same as X for testing
/***************************************************************************************
@@ -217,45 +216,36 @@
*
***************************************************************************************/
-#define A_AXIS_MODE AXIS_RADIUS
-//#define A_RADIUS 4.30964
-#define A_RADIUS 4.28394
-//#define A_VELOCITY_MAX 25920.0 // ~40 mm/s, 2,400 mm/min
-//#define A_FEEDRATE_MAX 25920.0/2.0 // ~20 mm/s, 1,200 mm/min
-#define A_VELOCITY_MAX 77760.0 // G0 rate ~120 mm/s, 2,400 mm/min
-#define A_FEEDRATE_MAX 16050 // ~10 mm/s
-//#define A_FEEDRATE_MAX 9720.0 // 9720.0 = G1 rate ~15 mm/s, 900 mm/min
-#define A_TRAVEL_MIN 0
-#define A_TRAVEL_MAX 10
-//#define A_JERK_MAX 81000 // 250 million mm/min^3 = 324000
-#define A_JERK_MAX 162000 // 250 million mm/min^3 = 324000
-//#define A_JERK_MAX 324000 // 500 million mm/min^3 = 324000
-//#define A_JERK_MAX 648000 // 1,000 million mm/min^3 = 648000
-// * a million IF it's over a million
-// c=2*pi*r, r=5.30516476972984, d=c/360, s=((1000*60)/d)
-#define A_HOMING_INPUT 0
-#define A_HOMING_DIRECTION 0
-#define A_SEARCH_VELOCITY 2000
-#define A_LATCH_VELOCITY 2000
-#define A_LATCH_BACKOFF 5
-#define A_ZERO_BACKOFF 2
-#define A_JERK_HIGH_SPEED A_JERK_MAX
+#define A_AXIS_MODE AXIS_RADIUS
+#define A_RADIUS 4.28394
+#define A_VELOCITY_MAX 77760.0 // G0 rate ~120 mm/s, 2,400 mm/min
+#define A_FEEDRATE_MAX 16050 // ~10 mm/s
+#define A_TRAVEL_MIN 0
+#define A_TRAVEL_MAX 10
+#define A_JERK_MAX 162000 // 250 million mm/min^3 = 324000
+#define A_HOMING_INPUT 0
+#define A_HOMING_DIRECTION 0
+#define A_SEARCH_VELOCITY 2000
+#define A_LATCH_VELOCITY 2000
+#define A_LATCH_BACKOFF 5
+#define A_ZERO_BACKOFF 2
+#define A_JERK_HIGH_SPEED A_JERK_MAX
-#define B_AXIS_MODE AXIS_DISABLED
-#define B_RADIUS 1
-#define B_VELOCITY_MAX 3600
-#define B_FEEDRATE_MAX B_VELOCITY_MAX
-#define B_TRAVEL_MIN 0
-#define B_TRAVEL_MAX -1
+#define B_AXIS_MODE AXIS_DISABLED
+#define B_RADIUS 1
+#define B_VELOCITY_MAX 3600
+#define B_FEEDRATE_MAX B_VELOCITY_MAX
+#define B_TRAVEL_MIN 0
+#define B_TRAVEL_MAX -1
//#define B_JERK_MAX 20000000
-#define B_JERK_MAX 20
-#define B_HOMING_INPUT 0
-#define B_HOMING_DIRECTION 0
-#define B_SEARCH_VELOCITY 600
-#define B_LATCH_VELOCITY 100
-#define B_LATCH_BACKOFF 10
-#define B_ZERO_BACKOFF 2
-#define B_JERK_HIGH_SPEED A_JERK_MAX
+#define B_JERK_MAX 20
+#define B_HOMING_INPUT 0
+#define B_HOMING_DIRECTION 0
+#define B_SEARCH_VELOCITY 600
+#define B_LATCH_VELOCITY 100
+#define B_LATCH_BACKOFF 10
+#define B_ZERO_BACKOFF 2
+#define B_JERK_HIGH_SPEED A_JERK_MAX
//*** Input / output settings ***
@@ -278,99 +268,101 @@
*/
// Inputs are defined for the g2ref(a) board
// Xmn (board label)
-#define DI1_MODE IO_ACTIVE_HIGH
-#define DI1_ACTION INPUT_ACTION_NONE
-#define DI1_FUNCTION INPUT_FUNCTION_NONE
+#define DI1_MODE IO_ACTIVE_HIGH
+#define DI1_ACTION INPUT_ACTION_NONE
+#define DI1_FUNCTION INPUT_FUNCTION_NONE
// Xmax
-#define DI2_MODE IO_MODE_DISABLED
-#define DI2_ACTION INPUT_ACTION_NONE
-#define DI2_FUNCTION INPUT_FUNCTION_NONE
+#define DI2_MODE IO_MODE_DISABLED
+#define DI2_ACTION INPUT_ACTION_NONE
+#define DI2_FUNCTION INPUT_FUNCTION_NONE
// Ymin
-#define DI3_MODE IO_MODE_DISABLED
-#define DI3_ACTION INPUT_ACTION_NONE
-#define DI3_FUNCTION INPUT_FUNCTION_NONE
+#define DI3_MODE IO_MODE_DISABLED
+#define DI3_ACTION INPUT_ACTION_NONE
+#define DI3_FUNCTION INPUT_FUNCTION_NONE
// Ymax
-#define DI4_MODE IO_ACTIVE_HIGH
-#define DI4_ACTION INPUT_ACTION_NONE
-#define DI4_FUNCTION INPUT_FUNCTION_NONE
+#define DI4_MODE IO_ACTIVE_HIGH
+#define DI4_ACTION INPUT_ACTION_NONE
+#define DI4_FUNCTION INPUT_FUNCTION_NONE
// Zmin
-#define DI5_MODE IO_ACTIVE_LOW // Z probe
-#define DI5_ACTION INPUT_ACTION_NONE
-#define DI5_FUNCTION INPUT_FUNCTION_PROBE
+#define DI5_MODE IO_ACTIVE_LOW // Z probe
+#define DI5_ACTION INPUT_ACTION_NONE
+#define DI5_FUNCTION INPUT_FUNCTION_PROBE
// Zmax
-#define DI6_MODE IO_MODE_DISABLED
-#define DI6_ACTION INPUT_ACTION_NONE
-#define DI6_FUNCTION INPUT_FUNCTION_NONE
+#define DI6_MODE IO_MODE_DISABLED
+#define DI6_ACTION INPUT_ACTION_NONE
+#define DI6_FUNCTION INPUT_FUNCTION_NONE
// Shutdown (Amin on v9 board)
-#define DI7_MODE IO_MODE_DISABLED
-#define DI7_ACTION INPUT_ACTION_NONE
-#define DI7_FUNCTION INPUT_FUNCTION_NONE
+#define DI7_MODE IO_MODE_DISABLED
+#define DI7_ACTION INPUT_ACTION_NONE
+#define DI7_FUNCTION INPUT_FUNCTION_NONE
// High Voltage Z Probe In (Amax on v9 board)
-#define DI8_MODE IO_ACTIVE_LOW
-#define DI8_ACTION INPUT_ACTION_NONE
-#define DI8_FUNCTION INPUT_FUNCTION_NONE
+#define DI8_MODE IO_ACTIVE_LOW
+#define DI8_ACTION INPUT_ACTION_NONE
+#define DI8_FUNCTION INPUT_FUNCTION_NONE
// Hardware interlock input
-#define DI9_MODE IO_MODE_DISABLED
-#define DI9_ACTION INPUT_ACTION_NONE
-#define DI9_FUNCTION INPUT_FUNCTION_NONE
+#define DI9_MODE IO_MODE_DISABLED
+#define DI9_ACTION INPUT_ACTION_NONE
+#define DI9_FUNCTION INPUT_FUNCTION_NONE
//Extruder1_PWM
-#define DO1_MODE IO_ACTIVE_HIGH
+#define DO1_MODE IO_ACTIVE_HIGH
//Extruder2_PWM
-#define DO2_MODE IO_ACTIVE_HIGH
+#define DO2_MODE IO_ACTIVE_HIGH
//Fan1A_PWM
-#define DO3_MODE IO_ACTIVE_HIGH
+#define DO3_MODE IO_ACTIVE_HIGH
//Fan1B_PWM
-#define DO4_MODE IO_ACTIVE_HIGH
+#define DO4_MODE IO_ACTIVE_HIGH
-#define DO5_MODE IO_ACTIVE_HIGH
-#define DO6_MODE IO_ACTIVE_HIGH
-#define DO7_MODE IO_ACTIVE_HIGH
-#define DO8_MODE IO_ACTIVE_HIGH
+#define DO5_MODE IO_ACTIVE_HIGH
+#define DO6_MODE IO_ACTIVE_HIGH
+#define DO7_MODE IO_ACTIVE_HIGH
+#define DO8_MODE IO_ACTIVE_HIGH
//SAFEin (Output) signal
-#define DO9_MODE IO_ACTIVE_HIGH
+#define DO9_MODE IO_ACTIVE_HIGH
-#define DO10_MODE IO_ACTIVE_HIGH
+#define DO10_MODE IO_ACTIVE_HIGH
//Header Bed FET
-#define DO11_MODE IO_ACTIVE_HIGH
+#define DO11_MODE IO_ACTIVE_HIGH
//Indicator_LED
-#define DO12_MODE IO_ACTIVE_HIGH
+#define DO12_MODE IO_ACTIVE_HIGH
-#define DO13_MODE IO_ACTIVE_HIGH
+#define DO13_MODE IO_ACTIVE_HIGH
/*** Extruders / Heaters ***/
-#define MIX_FAN_VALUE 0.4 // (he1fm) at MIN_FAN_TEMP the fan comes on at this spped (0.0-1.0)
-#define MAX_FAN_VALUE 0.75 // (he1fp) at MAX_FAN_TEMP the fan is at this spped (0.0-1.0)
-#define MIN_FAN_TEMP 50.0 // (he1fl) at this temp the fan starts to ramp up linearly
-#define MAX_FAN_TEMP 100.0 // (he1fh) at this temperature the fan is at "full speed" (MAX_FAN_VALUE)
+#define TEMP_MIN_BED_RISE_DEGREES_OVER_TIME 0.5
-#define H1_DEFAULT_ENABLE true
-#define H1_DEFAULT_P 7.0
-#define H1_DEFAULT_I 0.05
-#define H1_DEFAULT_D 150.0
+#define MIN_FAN_VALUE 0.4 // (he1fm) at MIN_FAN_TEMP the fan comes on at this spped (0.0-1.0)
+#define MAX_FAN_VALUE 0.75 // (he1fp) at MAX_FAN_TEMP the fan is at this spped (0.0-1.0)
+#define MIN_FAN_TEMP 50.0 // (he1fl) at this temp the fan starts to ramp up linearly
+#define MAX_FAN_TEMP 100.0 // (he1fh) at this temperature the fan is at "full speed" (MAX_FAN_VALUE)
-#define H2_DEFAULT_ENABLE false
-#define H2_DEFAULT_P 7.0
-#define H2_DEFAULT_I 0.05
-#define H2_DEFAULT_D 150.0
+#define H1_DEFAULT_ENABLE true
+#define H1_DEFAULT_P 7.0
+#define H1_DEFAULT_I 0.05
+#define H1_DEFAULT_D 150.0
-#define H3_DEFAULT_ENABLE false
-#define H3_DEFAULT_P 9.0
-#define H3_DEFAULT_I 0.12
-#define H3_DEFAULT_D 400.0
+#define H2_DEFAULT_ENABLE false
+#define H2_DEFAULT_P 7.0
+#define H2_DEFAULT_I 0.05
+#define H2_DEFAULT_D 150.0
+
+#define H3_DEFAULT_ENABLE true
+#define H3_DEFAULT_P 9.0
+#define H3_DEFAULT_I 0.12
+#define H3_DEFAULT_D 400.0
diff --git a/g2core/settings/settings_Ultimaker.h b/g2core/settings/settings_Ultimaker.h
index bbc0d500..375d5edc 100644
--- a/g2core/settings/settings_Ultimaker.h
+++ b/g2core/settings/settings_Ultimaker.h
@@ -91,7 +91,7 @@
#define M1_MICROSTEPS 8 // 1mi 1,2,4,8,16,32
#define M1_POLARITY 1 // 1po 0=normal, 1=reversed
#define M1_POWER_MODE MOTOR_POWER_MODE // 1pm standard
-#define M1_POWER_LEVEL 0.375 // 1mp
+#define M1_POWER_LEVEL 0.375 // 1pl: 0.0=no power, 1.0=max power
#define M2_MOTOR_MAP AXIS_Y
#define M2_STEP_ANGLE 1.8
diff --git a/g2core/settings/settings_default.h b/g2core/settings/settings_default.h
index e6238717..de51c193 100644
--- a/g2core/settings/settings_default.h
+++ b/g2core/settings/settings_default.h
@@ -260,7 +260,7 @@
#define M2_MICROSTEPS 8
#endif
#ifndef M2_STEPS_PER_UNIT
-#define M2_STEPS_PER_UNIT 0
+#define M2_STEPS_PER_UNIT 0
#endif
#ifndef M2_POLARITY
#define M2_POLARITY 0
diff --git a/g2core/settings/settings_makeblock.h b/g2core/settings/settings_makeblock.h
index cb5ee38b..33bf381f 100644
--- a/g2core/settings/settings_makeblock.h
+++ b/g2core/settings/settings_makeblock.h
@@ -91,7 +91,7 @@
// 1=MOTOR_ALWAYS_POWERED,
// 2=MOTOR_POWERED_IN_CYCLE,
// 3=MOTOR_POWERED_ONLY_WHEN_MOVING
-#define M1_POWER_LEVEL 0.4 // 0.0 = off, 1.0 = max
+#define M1_POWER_LEVEL 0.4 // 1pl: 0.0=no power, 1.0=max power
#define MOTOR_POWER_TIMEOUT 10.00 // motor power timeout in seconds
#define M1_MOTOR_MAP AXIS_X // 1ma
diff --git a/g2core/settings/settings_shapeoko2.h b/g2core/settings/settings_shapeoko2.h
index 9d0bea3e..302ab860 100644
--- a/g2core/settings/settings_shapeoko2.h
+++ b/g2core/settings/settings_shapeoko2.h
@@ -54,6 +54,7 @@
// Communications and reporting settings
+#define USB_SERIAL_PORTS_EXPOSED 2 // 1=single endpoint usb, 2=dual endpoint usb
#define COMM_MODE JSON_MODE // one of: TEXT_MODE, JSON_MODE
#define XIO_ENABLE_FLOW_CONTROL FLOW_CONTROL_RTS // FLOW_CONTROL_OFF, FLOW_CONTROL_RTS
@@ -101,21 +102,13 @@
#define M2_POWER_MODE MOTOR_POWER_MODE
#define M2_POWER_LEVEL 0.500
-#define M3_MOTOR_MAP AXIS_Y
+#define M3_MOTOR_MAP AXIS_Z
#define M3_STEP_ANGLE 1.8
-#define M3_TRAVEL_PER_REV 40.00
+#define M3_TRAVEL_PER_REV 1.25
#define M3_MICROSTEPS 8
-#define M3_POLARITY 1
+#define M3_POLARITY 0
#define M3_POWER_MODE MOTOR_POWER_MODE
-#define M3_POWER_LEVEL 0.500
-
-#define M4_MOTOR_MAP AXIS_Z
-#define M4_STEP_ANGLE 1.8
-#define M4_TRAVEL_PER_REV 1.25
-#define M4_MICROSTEPS 8
-#define M4_POLARITY 0
-#define M4_POWER_MODE MOTOR_POWER_MODE
-#define M4_POWER_LEVEL 0.750
+#define M3_POWER_LEVEL 0.750
// *** axis settings **********************************************************************************
diff --git a/g2core/settings/settings_shapeoko2dualY.h b/g2core/settings/settings_shapeoko2dualY.h
new file mode 100644
index 00000000..3f518c4c
--- /dev/null
+++ b/g2core/settings/settings_shapeoko2dualY.h
@@ -0,0 +1,233 @@
+/*
+ * settings_shapeoko2dualY.h - Shapeoko2 500mm table
+ * This file is part of the g2core project
+ *
+ * Copyright (c) 2010 - 2016 Alden S. Hart, Jr.
+ *
+ * This file ("the software") is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License, version 2 as published by the
+ * Free Software Foundation. You should have received a copy of the GNU General Public
+ * License, version 2 along with the software. If not, see .
+ *
+ * As a special exception, you may use this file as part of a software library without
+ * restriction. Specifically, if other files instantiate templates or use macros or
+ * inline functions from this file, or you compile this file and link it with other
+ * files to produce an executable, this file does not by itself cause the resulting
+ * executable to be covered by the GNU General Public License. This exception does not
+ * however invalidate any other reasons why the executable file might be covered by the
+ * GNU General Public License.
+ *
+ * THE SOFTWARE IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT WITHOUT ANY
+ * WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+ * SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
+ * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+/***********************************************************************/
+/**** Shapeoko2 500mm profile ******************************************/
+/***********************************************************************/
+
+// ***> NOTE: The init message must be a single line with no CRs or LFs
+#define INIT_MESSAGE "Initializing configs to Shapeoko2 500mm profile"
+
+//**** GLOBAL / GENERAL SETTINGS ******************************************************
+
+// Machine configuration settings
+
+#define JUNCTION_INTEGRATION_TIME 0.75 // cornering - between 0.10 and 2.00 (higher is faster)
+#define CHORDAL_TOLERANCE 0.01 // chordal tolerance for arcs (in mm)
+
+#define SOFT_LIMIT_ENABLE 0 // 0=off, 1=on
+#define HARD_LIMIT_ENABLE 0 // 0=off, 1=on
+#define SAFETY_INTERLOCK_ENABLE 1 // 0=off, 1=on
+
+#define SPINDLE_ENABLE_POLARITY 1 // 0=active low, 1=active high
+#define SPINDLE_DIR_POLARITY 0 // 0=clockwise is low, 1=clockwise is high
+#define SPINDLE_PAUSE_ON_HOLD true
+#define SPINDLE_DWELL_TIME 1.0
+
+#define COOLANT_MIST_POLARITY 1 // 0=active low, 1=active high
+#define COOLANT_FLOOD_POLARITY 1 // 0=active low, 1=active high
+#define COOLANT_PAUSE_ON_HOLD false
+
+// Communications and reporting settings
+
+#define USB_SERIAL_PORTS_EXPOSED 2 // 1=single endpoint usb, 2=dual endpoint usb
+#define COMM_MODE JSON_MODE // one of: TEXT_MODE, JSON_MODE
+#define XIO_ENABLE_FLOW_CONTROL FLOW_CONTROL_RTS // FLOW_CONTROL_OFF, FLOW_CONTROL_RTS
+
+#define TEXT_VERBOSITY TV_VERBOSE // one of: TV_SILENT, TV_VERBOSE
+#define JSON_VERBOSITY JV_MESSAGES // one of: JV_SILENT, JV_FOOTER, JV_CONFIGS, JV_MESSAGES, JV_LINENUM, JV_VERBOSE
+#define QUEUE_REPORT_VERBOSITY QR_OFF // one of: QR_OFF, QR_SINGLE, QR_TRIPLE
+
+#define STATUS_REPORT_VERBOSITY SR_FILTERED // one of: SR_OFF, SR_FILTERED, SR_VERBOSE
+
+#define STATUS_REPORT_MIN_MS 100 // milliseconds - enforces a viable minimum
+#define STATUS_REPORT_INTERVAL_MS 250 // milliseconds - set $SV=0 to disable
+
+//#define STATUS_REPORT_DEFAULTS "line","posx","posy","posz","posa","feed","vel","unit","coor","dist","admo","frmo","momo","stat"
+#define STATUS_REPORT_DEFAULTS "line","posx","posy","posz","feed","vel","momo","stat"
+
+// Alternate SRs that report in drawable units
+//#define STATUS_REPORT_DEFAULTS "line","vel","mpox","mpoy","mpoz","mpoa","coor","ofsa","ofsx","ofsy","ofsz","dist","unit","stat","homz","homy","homx","momo"
+//#define STATUS_REPORT_DEFAULTS "_ts1","_cs1","_es1","_xs1","_fe1","line","posx","posy","posz","vel","stat"
+
+// Gcode startup defaults
+#define GCODE_DEFAULT_UNITS MILLIMETERS // MILLIMETERS or INCHES
+#define GCODE_DEFAULT_PLANE CANON_PLANE_XY // CANON_PLANE_XY, CANON_PLANE_XZ, or CANON_PLANE_YZ
+#define GCODE_DEFAULT_COORD_SYSTEM G54 // G54, G55, G56, G57, G58 or G59
+#define GCODE_DEFAULT_PATH_CONTROL PATH_CONTINUOUS
+#define GCODE_DEFAULT_DISTANCE_MODE ABSOLUTE_DISTANCE_MODE
+
+// *** motor settings ************************************************************************************
+
+#define MOTOR_POWER_MODE MOTOR_POWERED_IN_CYCLE // default motor power mode (see cmMotorPowerMode in stepper.h)
+#define MOTOR_POWER_TIMEOUT 2.00 // motor power timeout in seconds
+
+#define M1_MOTOR_MAP AXIS_X // 1ma
+#define M1_STEP_ANGLE 1.8 // 1sa
+#define M1_TRAVEL_PER_REV 40.00 // 1tr
+#define M1_MICROSTEPS 8 // 1mi 1,2,4,8,16,32
+#define M1_POLARITY 0 // 1po 0=normal, 1=reversed
+#define M1_POWER_MODE MOTOR_POWER_MODE // 1pm TRUE=low power idle enabled
+#define M1_POWER_LEVEL 0.500
+
+#define M2_MOTOR_MAP AXIS_Y
+#define M2_STEP_ANGLE 1.8
+#define M2_TRAVEL_PER_REV 40.00
+#define M2_MICROSTEPS 8
+#define M2_POLARITY 0
+#define M2_POWER_MODE MOTOR_POWER_MODE
+#define M2_POWER_LEVEL 0.500
+
+#define M3_MOTOR_MAP AXIS_Y
+#define M3_STEP_ANGLE 1.8
+#define M3_TRAVEL_PER_REV 40.00
+#define M3_MICROSTEPS 8
+#define M3_POLARITY 1
+#define M3_POWER_MODE MOTOR_POWER_MODE
+#define M3_POWER_LEVEL 0.500
+
+#define M4_MOTOR_MAP AXIS_Z
+#define M4_STEP_ANGLE 1.8
+#define M4_TRAVEL_PER_REV 1.25
+#define M4_MICROSTEPS 8
+#define M4_POLARITY 0
+#define M4_POWER_MODE MOTOR_POWER_MODE
+#define M4_POWER_LEVEL 0.750
+
+// *** axis settings **********************************************************************************
+
+#define JERK_MAX 5000
+
+#define X_AXIS_MODE AXIS_STANDARD // xam see canonical_machine.h cmAxisMode for valid values
+#define X_VELOCITY_MAX 50000 // xvm G0 max velocity in mm/min
+#define X_FEEDRATE_MAX X_VELOCITY_MAX // xfr G1 max feed rate in mm/min
+#define X_TRAVEL_MIN 0 // xtn minimum travel for soft limits
+#define X_TRAVEL_MAX 420 // xtm travel between switches or crashes
+#define X_JERK_MAX JERK_MAX // xjm jerk * 1,000,000
+#define X_JERK_HIGH_SPEED 20000 // xjh
+#define X_HOMING_INPUT 1 // xhi input used for homing or 0 to disable
+#define X_HOMING_DIRECTION 0 // xhd 0=search moves negative, 1= search moves positive
+#define X_SEARCH_VELOCITY 3000 // xsv minus means move to minimum switch
+#define X_LATCH_VELOCITY 100 // xlv mm/min
+#define X_LATCH_BACKOFF 4 // xlb mm
+#define X_ZERO_BACKOFF 2 // xzb mm
+
+#define Y_AXIS_MODE AXIS_STANDARD
+#define Y_VELOCITY_MAX 50000
+#define Y_FEEDRATE_MAX Y_VELOCITY_MAX
+#define Y_TRAVEL_MIN 0
+#define Y_TRAVEL_MAX 420
+#define Y_JERK_MAX JERK_MAX
+#define Y_JERK_HIGH_SPEED 20000
+#define Y_HOMING_INPUT 3
+#define Y_HOMING_DIRECTION 0
+#define Y_SEARCH_VELOCITY 3000
+#define Y_LATCH_VELOCITY 100
+#define Y_LATCH_BACKOFF 4
+#define Y_ZERO_BACKOFF 2
+
+#define Z_AXIS_MODE AXIS_STANDARD
+#define Z_VELOCITY_MAX 1200
+#define Z_FEEDRATE_MAX Z_VELOCITY_MAX
+#define Z_TRAVEL_MAX 0
+#define Z_TRAVEL_MIN -95
+#define Z_JERK_MAX 500
+#define Z_JERK_HIGH_SPEED 1000
+#define Z_HOMING_INPUT 6
+#define Z_HOMING_DIRECTION 1
+#define Z_SEARCH_VELOCITY (Z_VELOCITY_MAX * 0.66666)
+#define Z_LATCH_VELOCITY 25
+#define Z_LATCH_BACKOFF 4
+#define Z_ZERO_BACKOFF 2
+
+//*** Input / output settings ***
+/*
+ IO_MODE_DISABLED
+ IO_ACTIVE_LOW aka NORMALLY_OPEN
+ IO_ACTIVE_HIGH aka NORMALLY_CLOSED
+
+ INPUT_ACTION_NONE
+ INPUT_ACTION_STOP
+ INPUT_ACTION_FAST_STOP
+ INPUT_ACTION_HALT
+ INPUT_ACTION_RESET
+
+ INPUT_FUNCTION_NONE
+ INPUT_FUNCTION_LIMIT
+ INPUT_FUNCTION_INTERLOCK
+ INPUT_FUNCTION_SHUTDOWN
+ INPUT_FUNCTION_PANIC
+*/
+// Xmin on v9 board
+#define DI1_MODE NORMALLY_CLOSED
+//#define DI1_ACTION INPUT_ACTION_STOP
+#define DI1_ACTION INPUT_ACTION_NONE
+#define DI1_FUNCTION INPUT_FUNCTION_LIMIT
+
+// Xmax
+#define DI2_MODE NORMALLY_CLOSED
+//#define DI2_ACTION INPUT_ACTION_STOP
+#define DI2_ACTION INPUT_ACTION_NONE
+#define DI2_FUNCTION INPUT_FUNCTION_LIMIT
+
+// Ymin
+#define DI3_MODE NORMALLY_CLOSED
+//#define DI3_ACTION INPUT_ACTION_STOP
+#define DI3_ACTION INPUT_ACTION_NONE
+#define DI3_FUNCTION INPUT_FUNCTION_LIMIT
+
+// Ymax
+#define DI4_MODE NORMALLY_CLOSED
+//#define DI4_ACTION INPUT_ACTION_STOP
+#define DI4_ACTION INPUT_ACTION_NONE
+#define DI4_FUNCTION INPUT_FUNCTION_LIMIT
+
+// Zmin
+#define DI5_MODE IO_ACTIVE_HIGH // Z probe
+#define DI5_ACTION INPUT_ACTION_NONE
+#define DI5_FUNCTION INPUT_FUNCTION_NONE
+
+// Zmax
+#define DI6_MODE NORMALLY_CLOSED
+//#define DI6_ACTION INPUT_ACTION_STOP
+#define DI6_ACTION INPUT_ACTION_NONE
+#define DI6_FUNCTION INPUT_FUNCTION_LIMIT
+
+// Amin
+#define DI7_MODE IO_MODE_DISABLED
+#define DI7_ACTION INPUT_ACTION_NONE
+#define DI7_FUNCTION INPUT_FUNCTION_NONE
+
+// Amax
+#define DI8_MODE IO_MODE_DISABLED
+#define DI8_ACTION INPUT_ACTION_NONE
+#define DI8_FUNCTION INPUT_FUNCTION_NONE
+
+// Hardware interlock input
+#define DI9_MODE IO_MODE_DISABLED
+#define DI9_ACTION INPUT_ACTION_NONE
+#define DI9_FUNCTION INPUT_FUNCTION_NONE
diff --git a/g2core/settings/settings_watercolorbot_v2.h b/g2core/settings/settings_watercolorbot_v2.h
index 2eb170a9..a1f152c0 100755
--- a/g2core/settings/settings_watercolorbot_v2.h
+++ b/g2core/settings/settings_watercolorbot_v2.h
@@ -96,7 +96,7 @@
#define M1_MICROSTEPS 32 // 1mi 1,2,4,8
#define M1_POLARITY 1 // 1po 0=normal, 1=reversed
#define M1_POWER_MODE MOTOR_POWER_MODE // 1pm standard
-#define M1_POWER_LEVEL 0.4
+#define M1_POWER_LEVEL 0.4 // 1pl: 0.0=no power, 1.0=max power
#define M2_MOTOR_MAP AXIS_X
#define M2_STEP_ANGLE 1.8
@@ -116,7 +116,7 @@
#define M3_MICROSTEPS 32 // the max step resolution for a hobby servo is 1/32
#define M3_POLARITY 1
#define M3_POWER_MODE MOTOR_ALWAYS_POWERED
-#define M3_POWER_LEVEL 0.50 // this is ignored
+#define M3_POWER_LEVEL 0.50
#define M4_MOTOR_MAP AXIS_A
#define M4_STEP_ANGLE 1.8
diff --git a/g2core/settings/settings_zen7x12.h b/g2core/settings/settings_zen7x12.h
index e6d64088..f167a484 100755
--- a/g2core/settings/settings_zen7x12.h
+++ b/g2core/settings/settings_zen7x12.h
@@ -52,7 +52,7 @@
#define M1_MICROSTEPS 8 // 1mi 1,2,4,8
#define M1_POLARITY 1 // REVERSE// 1po 0=normal, 1=reverse
#define M1_POWER_MODE MOTOR_POWERED_IN_CYCLE // 1pm standard
-#define M1_POWER_LEVEL 0.5 // 1mp
+#define M1_POWER_LEVEL 0.5 // 1pl: 0.0=no power, 1.0=max power
#define M2_MOTOR_MAP AXIS_Y
#define M2_STEP_ANGLE 1.8
diff --git a/g2core/temperature.cpp b/g2core/temperature.cpp
index b77cbdf1..ec99b438 100644
--- a/g2core/temperature.cpp
+++ b/g2core/temperature.cpp
@@ -84,8 +84,11 @@
#ifndef TEMP_MIN_RISE_DEGREES_OVER_TIME
#define TEMP_MIN_RISE_DEGREES_OVER_TIME (float)10.0
#endif
+#ifndef TEMP_MIN_BED_RISE_DEGREES_OVER_TIME
+#define TEMP_MIN_BED_RISE_DEGREES_OVER_TIME (float)3.0
+#endif
#ifndef TEMP_MIN_RISE_TIME
-#define TEMP_MIN_RISE_TIME (float)(60.0 * 1000.0) // 20 seconds
+#define TEMP_MIN_RISE_TIME (float)(60.0 * 1000.0) // one minute
#endif
#ifndef TEMP_MIN_RISE_DEGREES_FROM_TARGET
#define TEMP_MIN_RISE_DEGREES_FROM_TARGET (float)10.0
@@ -230,8 +233,8 @@ void ADCPin::interrupt() {
// Heated bed
Thermistor thermistor3 {
- /*T1:*/ 20.0, /*T2:*/ 190.0, /*T3:*/ 255.0,
- /*R1:*/ 140000.0, /*R2:*/ 490.0, /*R3:*/ 109.0, /*pullup_resistance:*/ 4700, /*inline_resistance:*/ 4700
+ /*T1:*/ 20.0, /*T2:*/ 42.0, /*T3:*/ 76.0,
+ /*R1:*/ 140000.0, /*R2:*/ 36755.0, /*R3:*/ 10000.0, /*pullup_resistance:*/ 4700, /*inline_resistance:*/ 4700
};
#if ADC0_AVAILABLE == 1
namespace Motate {
@@ -331,11 +334,12 @@ struct PID {
bool _at_set_point;
Timeout _rise_time_timeout; // used to keep track of if we are increasing temperature fast enough
+ float _min_rise_over_time; // the amount of degrees that it must rise in the given time
float _rise_time_checkpoint; // when we start the timer, we set _rise_time_checkpoint to the minimum goal
bool _enable; // set true to enable this heater
- PID(float P, float I, float D, float startSetPoint = 0.0) : _p_factor{P/100.0f}, _i_factor{I/100.0f}, _d_factor{D/100.0f}, _set_point{startSetPoint}, _at_set_point{false} {};
+ PID(float P, float I, float D, float min_rise_over_time, float startSetPoint = 0.0) : _p_factor{P/100.0f}, _i_factor{I/100.0f}, _d_factor{D/100.0f}, _set_point{startSetPoint}, _at_set_point{false}, _min_rise_over_time(min_rise_over_time) {};
float getNewOutput(float input) {
// If the input is < 0, the sensor failed
@@ -380,7 +384,7 @@ struct PID {
if (!_rise_time_timeout.isSet() && (_set_point > (input + TEMP_MIN_RISE_DEGREES_FROM_TARGET))) {
_rise_time_timeout.set(TEMP_MIN_RISE_TIME);
- _rise_time_checkpoint = min(input + TEMP_MIN_RISE_DEGREES_OVER_TIME, _set_point + TEMP_SETPOINT_HYSTERESIS);
+ _rise_time_checkpoint = min(input + _min_rise_over_time, _set_point + TEMP_SETPOINT_HYSTERESIS);
}
}
@@ -437,9 +441,9 @@ struct PID {
// NOTICE, the JSON alters incoming values for these!
// {he1p:9} == 9.0/100.0 here
-PID pid1 { 9.0, 0.11, 400.0 }; // default values
-PID pid2 { 7.5, 0.12, 400.0 }; // default values
-PID pid3 { 7.5, 0.12, 400.0 }; // default values
+PID pid1 { 9.0, 0.11, 400.0, TEMP_MIN_RISE_DEGREES_OVER_TIME }; // default values
+PID pid2 { 7.5, 0.12, 400.0, TEMP_MIN_RISE_DEGREES_OVER_TIME }; // default values
+PID pid3 { 7.5, 0.12, 400.0, TEMP_MIN_BED_RISE_DEGREES_OVER_TIME }; // default values
Timeout pid_timeout;
diff --git a/g2core/xio.cpp b/g2core/xio.cpp
index 5daf884c..b64e136e 100644
--- a/g2core/xio.cpp
+++ b/g2core/xio.cpp
@@ -97,7 +97,6 @@ bool checkForNotActive(devflags_t flags_to_check) { return !(flags_to_check & DE
bool checkForCtrlAndData(devflags_t flags_to_check) { return (flags_to_check & (DEV_IS_CTRL|DEV_IS_DATA)) == (DEV_IS_CTRL|DEV_IS_DATA); }
bool checkForCtrlAndPrimary(devflags_t flags_to_check) { return (flags_to_check & (DEV_IS_CTRL|DEV_IS_PRIMARY)) == (DEV_IS_CTRL|DEV_IS_PRIMARY); }
-
struct xioDeviceWrapperBase { // C++ base class for device primitives
// connection and device management
uint8_t caps; // bitfield for capabilities flags (these are persistent)
@@ -721,8 +720,8 @@ struct LineRXBuffer : RXBuffer<_size, owner_type, char> {
_last_line_length = 0;
}
- else if (!_at_start_of_line) { // We only mark ends_line for the first end-line char, and if
- ends_line = true; // _at_start_of_line is already true, this is not the first.
+ else if (!_at_start_of_line) { // We only mark ends_line for the first end-line char, and if
+ ends_line = true; // _at_start_of_line is already true, this is not the first.
}
}
// prevent going further if we are ignoring
@@ -732,12 +731,12 @@ struct LineRXBuffer : RXBuffer<_size, owner_type, char> {
}
// Classify the line if it's a single character
else if (_at_start_of_line &&
- ((c == '!') ||
- (c == '~') ||
- (c == ENQ) || // request ENQ/ack
- (c == CHAR_RESET) || // ^X - reset (aka cancel, terminate)
- (c == CHAR_ALARM) || // ^D - request job kill (end of transmission)
- (c == '%' && cm_has_hold()) // flush (only in feedhold or part of control header)
+ ((c == '!') || // feedhold
+ (c == '~') || // cycle start
+ (c == ENQ) || // request ENQ/ack
+ (c == CHAR_RESET) || // ^X - reset (aka cancel, terminate)
+ (c == CHAR_ALARM) || // ^D - request job kill (end of transmission)
+ (c == '%' && cm_has_hold()) // flush (only in feedhold or part of control header)
))
{