synthetos / g2

g2core - The Next Generation
Other
623 stars 295 forks source link

New setting Ramps 13 board stepping motor not turning #379

Closed geargh closed 1 year ago

geargh commented 5 years ago

I made new setting for ramps 13 board like below and motor enable signal seems working but stepping motor not turning. What's problem? I used mk4duo with lamps 13 as these pin number setting and stepping motor turning well except temperature sensor.

Settins.h file:

Comment these lines for use default.
/*
#ifdef SETTINGS_FILE
#define SETTINGS_FILE_PATH <settings/SETTINGS_FILE>
#include SETTINGS_FILE_PATH
#endif
*/

gShield-pinout.h changed like below.

// We don't have all of the inputs, so we don't define them.
#define INPUT1_AVAILABLE 1
#define INPUT2_AVAILABLE 1
#define INPUT3_AVAILABLE 1
#define INPUT4_AVAILABLE 1
#define INPUT5_AVAILABLE 1
#define INPUT6_AVAILABLE 1
#define INPUT7_AVAILABLE 1
#define INPUT8_AVAILABLE 1
#define INPUT9_AVAILABLE 1
#define INPUT10_AVAILABLE 1
#define INPUT11_AVAILABLE 1
#define INPUT12_AVAILABLE 1
#define INPUT13_AVAILABLE 0

#define ADC0_AVAILABLE 0
#define ADC1_AVAILABLE 0
#define ADC2_AVAILABLE 0
#define ADC3_AVAILABLE 0

#define XIO_HAS_USB 1
#define XIO_HAS_UART 0
#define XIO_HAS_SPI 0
#define XIO_HAS_I2C 0

#define TEMPERATURE_OUTPUT_ON 0

// Some pins, if the PWM capability is turned on, it will cause timer conflicts.
// So we have to explicity enable them as PWM pins.
// Generated with:
// perl -e 'for($i=1;$i<14;$i++) { print "#define OUTPUT${i}_PWM 0\n";}'
#define OUTPUT1_PWM 0
#define OUTPUT2_PWM 0
#define OUTPUT3_PWM 0
#define OUTPUT4_PWM 0
#define OUTPUT5_PWM 0
#define OUTPUT6_PWM 0
#define OUTPUT7_PWM 0
#define OUTPUT8_PWM 0
#define OUTPUT9_PWM 0
#define OUTPUT10_PWM 0
#define OUTPUT11_PWM 0
#define OUTPUT12_PWM 0
#define OUTPUT13_PWM 0

namespace Motate {

// NOT ALL OF THESE PINS ARE ON ALL PLATFORMS
// Undefined pins will be equivalent to Motate::NullPin, and return 1 for Pin<>::isNull();

pin_number kSerial_RXPinNumber = 0;
pin_number kSerial_TXPinNumber = 1;
//    pin_number kSerial_RTSPinNumber                      =  8;   // added later
//    pin_number kSerial_CTSPinNumber                      =  9;   // added later

pin_number kSerial0_RX = 0;
pin_number kSerial0_TX = 1;
//    pin_number kSerial0_RTS                     =  8;   // added later
//    pin_number kSerial0_CTS                     =  9;   // added later

pin_number kI2C_SDAPinNumber = 20;
pin_number kI2C_SCLPinNumber = 21;

pin_number kI2C0_SDAPinNumber = 20;
pin_number kI2C0_SCLPinNumber = 21;

pin_number kSPI_SCKPinNumber  = 76;
pin_number kSPI_MISOPinNumber = 74;
pin_number kSPI_MOSIPinNumber = 75;

pin_number kSPI0_SCKPinNumber  = 76;
pin_number kSPI0_MISOPinNumber = 74;
pin_number kSPI0_MOSIPinNumber = 75;

//    pin_number kX_StepPinNumber                 =  53;
//    pin_number kX_DirPinNumber                  =  52;
//    pin_number kX_EnablePinNumber               =  -1;
//
//    pin_number kY_StepPinNumber                 =  51;
//    pin_number kY_DirPinNumber                  =  50;
//    pin_number kY_EnablePinNumber               =  -1;
//
//    pin_number kZ_StepPinNumber                 =  49;
//    pin_number kZ_DirPinNumber                  =  48;
//    pin_number kZ_EnablePinNumber               =  -1;

pin_number kDebug1_PinNumber = 49;
pin_number kDebug2_PinNumber = 47;
pin_number kDebug3_PinNumber = 45;
pin_number kDebug4_PinNumber = -1;

pin_number kKinen_SyncPinNumber = 53;
// X
pin_number kSocket1_SPISlaveSelectPinNumber = 53;       // -1;  // 10;
pin_number kSocket1_InterruptPinNumber      = -1;
pin_number kSocket1_StepPinNumber           = 54;       // 2;
pin_number kSocket1_DirPinNumber            = 55;       // 5;
pin_number kSocket1_EnablePinNumber         = 38;       // 22;
pin_number kSocket1_Microstep_0PinNumber    = -1;       // 23;
pin_number kSocket1_Microstep_1PinNumber    = -1;       // 24;
pin_number kSocket1_Microstep_2PinNumber    = -1;
pin_number kSocket1_VrefPinNumber           = -1;  // 34; //PWMTimer<0>
// Y
pin_number kSocket2_SPISlaveSelectPinNumber = 49;       // 65;
pin_number kSocket2_InterruptPinNumber      = -1;
pin_number kSocket2_StepPinNumber           = 60;       // 3;
pin_number kSocket2_DirPinNumber            = 61;       // 6;
pin_number kSocket2_EnablePinNumber         = 56;       // 25;
pin_number kSocket2_Microstep_0PinNumber    = -1;       // 26;
pin_number kSocket2_Microstep_1PinNumber    = -1;       // 27;
pin_number kSocket2_Microstep_2PinNumber    = -1;
pin_number kSocket2_VrefPinNumber           = -1;  // 62; //PWMTimer<1>
// Z
pin_number kSocket3_SPISlaveSelectPinNumber = 40;           // -1;      // 52;
pin_number kSocket3_InterruptPinNumber      = -1;
pin_number kSocket3_StepPinNumber           = 46;       // 4;
pin_number kSocket3_DirPinNumber            = 48;       // 7;
pin_number kSocket3_EnablePinNumber         = 62;       // 28;
pin_number kSocket3_Microstep_0PinNumber    = -1;       // 29;
pin_number kSocket3_Microstep_1PinNumber    = -1;       // 30;
pin_number kSocket3_Microstep_2PinNumber    = -1;
pin_number kSocket3_VrefPinNumber           = -1;  // 63; //PWMTimer<2>
// A
pin_number kSocket4_SPISlaveSelectPinNumber = 42;       // -1;      // 77;
pin_number kSocket4_InterruptPinNumber      = -1;
pin_number kSocket4_StepPinNumber           = 26;       // 31;
pin_number kSocket4_DirPinNumber            = 28;       // 32;
pin_number kSocket4_EnablePinNumber         = 24;       // 33;
pin_number kSocket4_Microstep_0PinNumber    = -1;       // 35;
pin_number kSocket4_Microstep_1PinNumber    = -1;       // 36;
pin_number kSocket4_Microstep_2PinNumber    = -1;
pin_number kSocket4_VrefPinNumber           = -1;  // 64; //PWMTimer<3>
// B
pin_number kSocket5_SPISlaveSelectPinNumber = 44;       // -1;      // 78;
pin_number kSocket5_InterruptPinNumber      = -1;
pin_number kSocket5_StepPinNumber           = 36;       // 37;
pin_number kSocket5_DirPinNumber            = 34;       // 38;
pin_number kSocket5_EnablePinNumber         = 30;       // 39;
pin_number kSocket5_Microstep_0PinNumber    = -1;       // 40;
pin_number kSocket5_Microstep_1PinNumber    = -1;       // 41;
pin_number kSocket5_Microstep_2PinNumber    = -1;
pin_number kSocket5_VrefPinNumber           = -1;  // 66; //PWMTimer<3>

pin_number kSocket6_SPISlaveSelectPinNumber = -1;       // 50;
pin_number kSocket6_InterruptPinNumber      = -1;
pin_number kSocket6_StepPinNumber           = -1;       // 42;
pin_number kSocket6_DirPinNumber            = -1;       // 43;
pin_number kSocket6_EnablePinNumber         = -1;       // 44;
pin_number kSocket6_Microstep_0PinNumber    = -1;  // 45;
pin_number kSocket6_Microstep_1PinNumber    = -1;       // 46;
pin_number kSocket6_Microstep_2PinNumber    = -1;
pin_number kSocket6_VrefPinNumber           = -1;  // 67; //PWMTimer<0>

pin_number kInput1_PinNumber = 3;       // 14;  // X_MIN
pin_number kInput2_PinNumber = 2;       // 15;  // X_MAX
pin_number kInput3_PinNumber = 14;      // 16;  // Y_Min
pin_number kInput4_PinNumber = 15;      // 17;  // Y_Max
pin_number kInput5_PinNumber = 18;      // Z_Min
pin_number kInput6_PinNumber = 19;      // Z_Max

pin_number kInput7_PinNumber  = -1;     // 58;      // A_Min
pin_number kInput8_PinNumber  = -1;     // 59;      // A_Max
pin_number kInput9_PinNumber  = -1;     // 60;      // B_Min
pin_number kInput10_PinNumber = -1;     // 61;      // B_Max
pin_number kInput11_PinNumber = -1;     // 65;      // C_Min
pin_number kInput12_PinNumber = -1;     // 51;      // C_Max

pin_number kSpindle_EnablePinNumber = 12;       // PS_ON
pin_number kSpindle_DirPinNumber    = -1;  // 13;
pin_number kSpindle_PwmPinNumber    = 10;       // Heater 0
pin_number kSpindle_Pwm2PinNumber   = 8;        // Heater Bed
pin_number kCoolant_EnablePinNumber = 9;        // 57;      // Fan 0

pin_number kSD_CardDetectPinNumber = -1;
pin_number kInterlock_InPinNumber  = -1;
pin_number kOutputSAFE_PinNumber   = -1;  // SAFE signal

pin_number kLED_USBRXPinNumber = 72;
pin_number kLED_USBTXPinNumber = 73;

pin_number kOutput1_PinNumber = -1;  // DO_1: Extruder1_PWM
pin_number kOutput2_PinNumber = -1;  // DO_2: Extruder2_PWM
pin_number kOutput3_PinNumber = -1;  // DO_3: Fan1A_PWM
pin_number kOutput4_PinNumber = -1;  // DO_4: Fan1B_PWM
pin_number kOutput5_PinNumber = -1;  // DO_5: Fan2A_PWM

pin_number kOutput6_PinNumber  = -1;  // 135;     // See Spindle Enable
pin_number kOutput7_PinNumber  = -1;  // 136;     // See Spindle Direction
pin_number kOutput8_PinNumber  = -1;  // 137;     // See Coolant Enable
pin_number kOutput9_PinNumber  = -1;  // <unassigned, available out>
pin_number kOutput10_PinNumber = -1;  // DO_10: Fan2B_PWM

pin_number kOutput11_PinNumber = -1;  // DO_11: Heted Bed FET
pin_number kOutput12_PinNumber = -1;  // DO_12: Indicator_LED
pin_number kOutput13_PinNumber = -1;  // 142;
pin_number kOutput14_PinNumber = -1;  // 143;
pin_number kOutput15_PinNumber = -1;  // 144;
pin_number kOutput16_PinNumber = -1;  // 145;

pin_number kADC0_PinNumber  = -1;  // Heated bed thermistor ADC
pin_number kADC1_PinNumber  = -1;  // Extruder1_ADC
pin_number kADC2_PinNumber  = -1;  // Extruder2_ADC
pin_number kADC3_PinNumber  = -1;  // 153;
pin_number kADC4_PinNumber  = -1;  // 154;
pin_number kADC5_PinNumber  = -1;  // 155;
pin_number kADC6_PinNumber  = -1;  // 156;
pin_number kADC7_PinNumber  = -1;  // 157;
pin_number kADC8_PinNumber  = -1;  // 158;
pin_number kADC9_PinNumber  = -1;  // 159;
pin_number kADC10_PinNumber = -1;  // 160;
pin_number kADC11_PinNumber = -1;  // 161;
pin_number kADC12_PinNumber = -1;  // 162;
pin_number kADC13_PinNumber = -1;  // Not physially pinned out
pin_number kADC14_PinNumber = -1;  // Not physially pinned out

// GRBL / gShield compatibility pins -- Due board ONLY

pin_number kGRBL_ResetPinNumber      = 31;      // 54;      // BTN_ENC
pin_number kGRBL_FeedHoldPinNumber   = 35;      // 55;      // BTN_EN1
pin_number kGRBL_CycleStartPinNumber = 37;      // 56;      // BTN_EN2

pin_number kGRBL_CommonEnablePinNumber = 41;    // 8;       //  Kill_Pin

----------------------------------------------------------------------------------------

setting_default.h like this.

// *** Machine configuration settings *** //

#ifndef JUNCTION_INTEGRATION_TIME
#define JUNCTION_INTEGRATION_TIME   0.75    // {jt: cornering - between 0.05 and 2.00 (max)
#endif

#ifndef CHORDAL_TOLERANCE
#define CHORDAL_TOLERANCE           0.01    // {ct: chordal tolerance for arcs (in mm)
#endif

#ifndef MOTOR_POWER_TIMEOUT
#define MOTOR_POWER_TIMEOUT         2.00    // {mt:  motor power timeout in seconds
#endif

#ifndef SOFT_LIMIT_ENABLE
#define SOFT_LIMIT_ENABLE           0       // {sl: 0=off, 1=on
#endif

#ifndef HARD_LIMIT_ENABLE
#define HARD_LIMIT_ENABLE           1       // {lim: 0=off, 1=on
#endif
#ifndef SAFETY_INTERLOCK_ENABLE
#define SAFETY_INTERLOCK_ENABLE     1       // {saf: 0=off, 1=on
#endif

#ifndef SPINDLE_MODE
#define SPINDLE_MODE                1       // {spmo; 0=diabled, 1=plan to stop, 2=continuous
#endif

#ifndef SPINDLE_ENABLE_POLARITY
#define SPINDLE_ENABLE_POLARITY     SPINDLE_ACTIVE_HIGH  // {spep: 0=active low, 1=active high
#endif

#ifndef SPINDLE_DIR_POLARITY
#define SPINDLE_DIR_POLARITY        0       // {spdp: 0=clockwise is low, 1=clockwise is high
#endif

#ifndef SPINDLE_PAUSE_ON_HOLD
#define SPINDLE_PAUSE_ON_HOLD       true        // false   // {spph:
#endif

#ifndef SPINDLE_SPINUP_DELAY
#define SPINDLE_SPINUP_DELAY        0     // {spde:
#endif

#ifndef SPINDLE_DWELL_MAX
#define SPINDLE_DWELL_MAX   1.0         // 10000000.0      // maximum allowable dwell time. May be overridden in settings files
#endif

#ifndef SPINDLE_SPEED_MIN
#define SPINDLE_SPEED_MIN           0.0     // {spsn:
#endif

#ifndef SPINDLE_SPEED_MAX
#define SPINDLE_SPEED_MAX     1000000.0     // {spsm:
#endif

#ifndef COOLANT_MIST_POLARITY
#define COOLANT_MIST_POLARITY       1       // {comp: 0=active low, 1=active high
#endif

#ifndef COOLANT_FLOOD_POLARITY
#define COOLANT_FLOOD_POLARITY      1       // {cofp: 0=active low, 1=active high
#endif

#ifndef COOLANT_PAUSE_ON_HOLD
#define COOLANT_PAUSE_ON_HOLD       true    // {coph:
#endif

#ifndef FEEDHOLD_Z_LIFT
#define FEEDHOLD_Z_LIFT             0       // {zl: mm to lift Z on feedhold
#endif

#ifndef PROBE_REPORT_ENABLE 
#define PROBE_REPORT_ENABLE         true    // {prbr: 
#endif

#ifndef MANUAL_FEEDRATE_OVERRIDE_ENABLE
#define MANUAL_FEEDRATE_OVERRIDE_ENABLE false
#endif

#ifndef MANUAL_FEEDRATE_OVERRIDE_PARAMETER
#define MANUAL_FEEDRATE_OVERRIDE_PARAMETER 1.00
#endif

// *** Communications and Reporting Settings *** //

#ifndef USB_SERIAL_PORTS_EXPOSED
#define USB_SERIAL_PORTS_EXPOSED   1                        // Valid options are 1 or 2, only!
#endif

#ifndef XIO_ENABLE_FLOW_CONTROL
#define XIO_ENABLE_FLOW_CONTROL     FLOW_CONTROL_RTS        // {ex: FLOW_CONTROL_OFF, FLOW_CONTROL_XON, FLOW_CONTROL_RTS
#endif

#ifndef COMM_MODE
#define COMM_MODE                   JSON_MODE               // {ej: TEXT_MODE, JSON_MODE @@@
#endif

#ifndef TEXT_VERBOSITY
#define TEXT_VERBOSITY              TV_VERBOSE              // {tv: TV_SILENT, TV_VERBOSE
#endif

#ifndef XIO_UART_MUTES_WHEN_USB_CONNECTED
#define XIO_UART_MUTES_WHEN_USB_CONNECTED  0                // UART will be muted when USB connected (off by default)
#endif

#ifndef JSON_VERBOSITY
#define JSON_VERBOSITY              JV_MESSAGES             // {jv: JV_SILENT, JV_FOOTER, JV_CONFIGS, JV_MESSAGES, JV_LINENUM, JV_VERBOSE
#endif

#ifndef QUEUE_REPORT_VERBOSITY
#define QUEUE_REPORT_VERBOSITY      QR_OFF                  // {qv: QR_OFF, QR_SINGLE, QR_TRIPLE
#endif

#ifndef STATUS_REPORT_VERBOSITY
#define STATUS_REPORT_VERBOSITY     SR_FILTERED             // {sv: SR_OFF, SR_FILTERED, SR_VERBOSE
#endif

#ifndef STATUS_REPORT_MIN_MS
#define STATUS_REPORT_MIN_MS        100                     // (no JSON) milliseconds - enforces a viable minimum
#endif

#ifndef STATUS_REPORT_INTERVAL_MS
#define STATUS_REPORT_INTERVAL_MS   250                     // {si: milliseconds - set $SV=0 to disable
#endif

#ifndef STATUS_REPORT_DEFAULTS                              // {sr: See Status Reports wiki page
#define STATUS_REPORT_DEFAULTS "line","posx","posy","posz","posa","feed","vel","unit","coor","dist","admo","frmo","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"
#endif

#ifndef MARLIN_COMPAT_ENABLED
#define MARLIN_COMPAT_ENABLED       false                   // boolean, either true or false
#endif

// *** Gcode Startup Defaults *** //

#ifndef GCODE_DEFAULT_UNITS
#define GCODE_DEFAULT_UNITS         MILLIMETERS             // {gun: MILLIMETERS or INCHES
#endif

#ifndef GCODE_DEFAULT_PLANE
#define GCODE_DEFAULT_PLANE         CANON_PLANE_XY          // {gpl: CANON_PLANE_XY, CANON_PLANE_XZ, or CANON_PLANE_YZ
#endif

#ifndef GCODE_DEFAULT_COORD_SYSTEM
#define GCODE_DEFAULT_COORD_SYSTEM  G54                     // {gco: G54, G55, G56, G57, G58 or G59
#endif

#ifndef GCODE_DEFAULT_PATH_CONTROL
#define GCODE_DEFAULT_PATH_CONTROL  PATH_CONTINUOUS         // {gpa: PATH_EXACT_PATH, PATH_EXACT_STOP, PATH_CONTINUOUS
#endif

#ifndef GCODE_DEFAULT_DISTANCE_MODE
#define GCODE_DEFAULT_DISTANCE_MODE ABSOLUTE_DISTANCE_MODE  // {gdi: ABSOLUTE_DISTANCE_MODE, INCREMENTAL_DISTANCE_MODE
#endif

//*****************************************************************************
//*** Motor Settings **********************************************************
//*****************************************************************************

// MOTOR 1
#ifndef M1_MOTOR_MAP
#define M1_MOTOR_MAP                AXIS_X      // _EXTERNAL         // {1ma: AXIS_X, AXIS_Y...
#endif
#ifndef M1_STEP_ANGLE
#define M1_STEP_ANGLE               1.8                     // {1sa: degrees per step
#endif
#ifndef M1_TRAVEL_PER_REV
#define M1_TRAVEL_PER_REV           40.00           // 1.25                    // {1tr:  1.25 is a typical value for a screw axis
#endif
#ifndef M1_MICROSTEPS
#define M1_MICROSTEPS               32      // 8                       // {1mi:  1,2,4,8,    16,32 (G2 ONLY)
#endif
#ifndef M1_STEPS_PER_UNIT
#define M1_STEPS_PER_UNIT           160     // 0                       // {1su:  steps to issue per unit of length or degrees of rotation
#endif
#ifndef M1_POLARITY
#define M1_POLARITY                 0                       // {1po:  0=normal direction, 1=inverted direction
#endif
#ifndef M1_ENABLE_POLARITY
#define M1_ENABLE_POLARITY          IO_ACTIVE_LOW           // {1ep:  IO_ACTIVE_LOW or IO_ACTIVE_HIGH
#endif
#ifndef M1_STEP_POLARITY
#define M1_STEP_POLARITY            IO_ACTIVE_HIGH          // {1ps:  IO_ACTIVE_LOW or IO_ACTIVE_HIGH
#endif
#ifndef M1_POWER_MODE
#define M1_POWER_MODE               MOTOR_POWERED_IN_CYCLE      // MOTOR_DISABLED          // {1pm:  MOTOR_DISABLED, MOTOR_ALWAYS_POWERED, MOTOR_POWERED_IN_CYCLE, MOTOR_POWERED_ONLY_WHEN_MOVING
#endif
#ifndef M1_POWER_LEVEL
#define M1_POWER_LEVEL              0.5         // 0.0                     // {1pl:   0.0=no power, 1.0=max power
#endif

// MOTOR 2
#ifndef M2_MOTOR_MAP
#define M2_MOTOR_MAP                AXIS_Y      // _EXTERNAL
#endif
#ifndef M2_STEP_ANGLE
#define M2_STEP_ANGLE               1.8
#endif
#ifndef M2_TRAVEL_PER_REV
#define M2_TRAVEL_PER_REV           40.00
#endif
#ifndef M2_MICROSTEPS
#define M2_MICROSTEPS               32      // 8
#endif
#ifndef M2_STEPS_PER_UNIT
#define M2_STEPS_PER_UNIT           160     // 0
#endif
#ifndef M2_POLARITY
#define M2_POLARITY                 0
#endif
#ifndef M2_ENABLE_POLARITY
#define M2_ENABLE_POLARITY          IO_ACTIVE_LOW
#endif
#ifndef M2_STEP_POLARITY
#define M2_STEP_POLARITY            IO_ACTIVE_HIGH
#endif
#ifndef M2_POWER_MODE
#define M2_POWER_MODE               MOTOR_POWERED_IN_CYCLE      // MOTOR_DISABLED
#endif
#ifndef M2_POWER_LEVEL
#define M2_POWER_LEVEL              0.5     // 0.0
#endif

// MOTOR 3
#ifndef M3_MOTOR_MAP
#define M3_MOTOR_MAP                AXIS_Z      // _EXTERNAL
#endif
#ifndef M3_STEP_ANGLE
#define M3_STEP_ANGLE               1.8
#endif
#ifndef M3_TRAVEL_PER_REV
#define M3_TRAVEL_PER_REV           40.00       // 1.25                    // 1.25 is a typical value for a screw axis
#endif
#ifndef M3_MICROSTEPS
#define M3_MICROSTEPS               32      // 8
#endif
#ifndef M3_STEPS_PER_UNIT
#define M3_STEPS_PER_UNIT           160     // 0
#endif
#ifndef M3_POLARITY
#define M3_POLARITY                 0
#endif
#ifndef M3_ENABLE_POLARITY
#define M3_ENABLE_POLARITY          IO_ACTIVE_LOW
#endif
#ifndef M3_STEP_POLARITY
#define M3_STEP_POLARITY            IO_ACTIVE_HIGH
#endif
#ifndef M3_POWER_MODE
#define M3_POWER_MODE                MOTOR_POWERED_IN_CYCLE     // MOTOR_DISABLED
#endif
#ifndef M3_POWER_LEVEL
#define M3_POWER_LEVEL              0.5     // 0.0
#endif

// MOTOR 4
#ifndef M4_MOTOR_MAP
#define M4_MOTOR_MAP                AXIS_A      // _EXTERNAL
#endif
#ifndef M4_STEP_ANGLE
#define M4_STEP_ANGLE               1.8
#endif
#ifndef M4_TRAVEL_PER_REV
#define M4_TRAVEL_PER_REV           360.0                   // in degrees if rotary axis (ABC)
#endif
#ifndef M4_MICROSTEPS
#define M4_MICROSTEPS               32      // 8
#endif
#ifndef M4_STEPS_PER_UNIT
#define M4_STEPS_PER_UNIT           17.778      // 0
#endif
#ifndef M4_POLARITY
#define M4_POLARITY                 0
#endif
#ifndef M4_ENABLE_POLARITY
#define M4_ENABLE_POLARITY          IO_ACTIVE_LOW
#endif
#ifndef M4_STEP_POLARITY
#define M4_STEP_POLARITY            IO_ACTIVE_HIGH
#endif
#ifndef M4_POWER_MODE
#define M4_POWER_MODE               MOTOR_POWERED_IN_CYCLE      // MOTOR_DISABLED
#endif
#ifndef M4_POWER_LEVEL
#define M4_POWER_LEVEL              0.5     // 0.0
#endif

// MOTOR 5
#ifndef M5_MOTOR_MAP
#define M5_MOTOR_MAP                AXIS_B      // _EXTERNAL
#endif
#ifndef M5_STEP_ANGLE
#define M5_STEP_ANGLE               1.8
#endif
#ifndef M5_TRAVEL_PER_REV
#define M5_TRAVEL_PER_REV           360.0
#endif
#ifndef M5_MICROSTEPS
#define M5_MICROSTEPS               32      // 8
#endif
#ifndef M5_STEPS_PER_UNIT
#define M5_STEPS_PER_UNIT          17.778       // 0
#endif
#ifndef M5_POLARITY
#define M5_POLARITY                 0
#endif
#ifndef M5_ENABLE_POLARITY
#define M5_ENABLE_POLARITY          IO_ACTIVE_LOW
#endif
#ifndef M5_STEP_POLARITY
#define M5_STEP_POLARITY            IO_ACTIVE_HIGH
#endif
#ifndef M5_POWER_MODE
#define M5_POWER_MODE               MOTOR_DISABLED
#endif
#ifndef M5_POWER_LEVEL
#define M5_POWER_LEVEL              0.5     // 0.0
#endif

// MOTOR 6
#ifndef M6_MOTOR_MAP
#define M6_MOTOR_MAP                AXIS_C_EXTERNAL
#endif
#ifndef M6_STEP_ANGLE
#define M6_STEP_ANGLE               1.8
#endif
#ifndef M6_TRAVEL_PER_REV
#define M6_TRAVEL_PER_REV           360.0
#endif
#ifndef M6_MICROSTEPS
#define M6_MICROSTEPS               8
#endif
#ifndef M6_STEPS_PER_UNIT
#define M6_STEPS_PER_UNIT           0
#endif
#ifndef M6_POLARITY
#define M6_POLARITY                 0
#endif
#ifndef M6_ENABLE_POLARITY
#define M6_ENABLE_POLARITY          IO_ACTIVE_LOW
#endif
#ifndef M6_STEP_POLARITY
#define M6_STEP_POLARITY            IO_ACTIVE_HIGH
#endif
#ifndef M6_POWER_MODE
#define M6_POWER_MODE               MOTOR_DISABLED
#endif
#ifndef M6_POWER_LEVEL
#define M6_POWER_LEVEL              0.0
#endif

//*****************************************************************************
//*** Axis Settings ***********************************************************
//*****************************************************************************

#define JERK_MAX                    5000

// X AXIS
#ifndef X_AXIS_MODE
#define X_AXIS_MODE                 AXIS_STANDARD   // AXIS_DISABLED           // {xam:  see canonical_machine.h cmAxisMode for valid values
#endif
#ifndef X_VELOCITY_MAX
#define X_VELOCITY_MAX              50000       // 1000.0                  // {xvm:  G0 max velocity in mm/min
#endif
#ifndef X_FEEDRATE_MAX
#define X_FEEDRATE_MAX              X_VELOCITY_MAX                  // {xfr:  G1 max feed rate in mm/min
#endif
#ifndef X_TRAVEL_MIN
#define X_TRAVEL_MIN                0.0                     // {xtn:  minimum travel for soft limits
#endif
#ifndef X_TRAVEL_MAX
#define X_TRAVEL_MAX                500.0                     // {xtm:  travel between switches or crashes
#endif
#ifndef X_JERK_MAX
#define X_JERK_MAX                  JERK_MAX        // 1000.0                  // {xjm:
#endif
#ifndef X_JERK_HIGH_SPEED
#define X_JERK_HIGH_SPEED           20000       // 1000.0                  // {xjh:
#endif
#ifndef X_HOMING_INPUT
#define X_HOMING_INPUT              1       // 0                       // {xhi:  input used for homing or 0 to disable
#endif
#ifndef X_HOMING_DIRECTION
#define X_HOMING_DIRECTION          0                       // {xhd:  0=search moves negative, 1= search moves positive
#endif
#ifndef X_SEARCH_VELOCITY
#define X_SEARCH_VELOCITY           3000        // 500.0                   // {xsv:  minus means move to minimum switch
#endif
#ifndef X_LATCH_VELOCITY
#define X_LATCH_VELOCITY            100.0                   // {xlv:  mm/min
#endif
#ifndef X_LATCH_BACKOFF
#define X_LATCH_BACKOFF             4.0                     // {xlb:  mm
#endif
#ifndef X_ZERO_BACKOFF
#define X_ZERO_BACKOFF              2.0                     // {xzb:  mm
#endif

// Y AXIS
#ifndef Y_AXIS_MODE
#define Y_AXIS_MODE                 AXIS_STANDARD       // AXIS_DISABLED
#endif
#ifndef Y_VELOCITY_MAX
#define Y_VELOCITY_MAX              50000       // 1000.0
#endif
#ifndef Y_FEEDRATE_MAX
#define Y_FEEDRATE_MAX              Y_VELOCITY_MAX      // 4000.0
#endif
#ifndef Y_TRAVEL_MIN
#define Y_TRAVEL_MIN                0.0
#endif
#ifndef Y_TRAVEL_MAX
#define Y_TRAVEL_MAX                500.0
#endif
#ifndef Y_JERK_MAX
#define Y_JERK_MAX                  JERK_MAX        // 1000.0
#endif
#ifndef Y_JERK_HIGH_SPEED
#define Y_JERK_HIGH_SPEED           20000       // 1000.0
#endif
#ifndef Y_HOMING_INPUT
#define Y_HOMING_INPUT              3           // 0
#endif
#ifndef Y_HOMING_DIRECTION
#define Y_HOMING_DIRECTION          0
#endif
#ifndef Y_SEARCH_VELOCITY
#define Y_SEARCH_VELOCITY           3000        // 500.0
#endif
#ifndef Y_LATCH_VELOCITY
#define Y_LATCH_VELOCITY            100.0
#endif
#ifndef Y_LATCH_BACKOFF
#define Y_LATCH_BACKOFF             4.0
#endif
#ifndef Y_ZERO_BACKOFF
#define Y_ZERO_BACKOFF              2.0
#endif

// Z AXIS
#ifndef Z_AXIS_MODE
#define Z_AXIS_MODE                 AXIS_STANDARD       // AXIS_DISABLED
#endif
#ifndef Z_VELOCITY_MAX
#define Z_VELOCITY_MAX              1200.0
#endif
#ifndef Z_FEEDRATE_MAX
#define Z_FEEDRATE_MAX              Z_VELOCITY_MAX
#endif
#ifndef Z_TRAVEL_MAX
#define Z_TRAVEL_MAX                200.0
#endif
#ifndef Z_TRAVEL_MIN
#define Z_TRAVEL_MIN                -95     // 0.0
#endif
#ifndef Z_JERK_MAX
#define Z_JERK_MAX                  500.0
#endif
#ifndef Z_JERK_HIGH_SPEED
#define Z_JERK_HIGH_SPEED           1000        // 500.0
#endif
#ifndef Z_HOMING_INPUT
#define Z_HOMING_INPUT              6       // 0
#endif
#ifndef Z_HOMING_DIRECTION
#define Z_HOMING_DIRECTION          1       // 0
#endif
#ifndef Z_SEARCH_VELOCITY
#define Z_SEARCH_VELOCITY           (Z_VELOCITY_MAX * 0.66666)      // 250.0
#endif
#ifndef Z_LATCH_VELOCITY
#define Z_LATCH_VELOCITY            25.0
#endif
#ifndef Z_LATCH_BACKOFF
#define Z_LATCH_BACKOFF             4.0
#endif
#ifndef Z_ZERO_BACKOFF
#define Z_ZERO_BACKOFF              2.0
#endif

// Rotary values are chosen to make the motor react the same as X for testing
/***************************************************************************************
 * To calculate the speeds here, in Wolfram Alpha-speak:
 *
 *   c=2*pi*r, r=0.609, d=c/360, s=((S*60)/d), S=40 for s
 *   c=2*pi*r, r=5.30516476972984, d=c/360, s=((S*60)/d), S=40 for s
 *
 * Change r to A_RADIUS, and S to the desired speed, in mm/s or mm/s/s/s.
 *
 * It will return s= as the value you want to enter.
 *
 * If the value is over 1 million, the code will divide it by 1 million,
 * so you have to pre-multiply it by 1000000.0. (The value is in millions, btw.)
 *
 * Note that you need these to be floating point values, so always have a .0 at the end!
 *
 ***************************************************************************************/

#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 B_AXIS_MODE             AXIS_RADIUS
#define B_RADIUS                5.30516476972984
#define B_VELOCITY_MAX          77760.0
#define B_FEEDRATE_MAX          9720.0      // B_VELOCITY_MAX
#define B_TRAVEL_MIN            0
#define B_TRAVEL_MAX            10
//#define B_JERK_MAX            20000000
#define B_JERK_MAX              648000
#define B_HOMING_INPUT          0
#define B_HOMING_DIRECTION      0
#define B_SEARCH_VELOCITY       2000
#define B_LATCH_VELOCITY        2000
#define B_LATCH_BACKOFF         10
#define B_ZERO_BACKOFF          2
#define B_JERK_HIGH_SPEED       B_JERK_MAX

// U AXIS
#ifndef U_AXIS_MODE
#define U_AXIS_MODE                 AXIS_DISABLED           // {xam:  see canonical_machine.h cmAxisMode for valid values
#endif
#ifndef U_VELOCITY_MAX
#define U_VELOCITY_MAX              1000.0                  // {xvm:  G0 max velocity in mm/min
#endif
#ifndef U_FEEDRATE_MAX
#define U_FEEDRATE_MAX              1000.0                  // {xfr:  G1 max feed rate in mm/min
#endif
#ifndef U_TRAVEL_MIN
#define U_TRAVEL_MIN                0.0                     // {xtn:  minimum travel for soft limits
#endif
#ifndef U_TRAVEL_MAX
#define U_TRAVEL_MAX                0.0                     // {xtm:  travel between switches or crashes
#endif
#ifndef U_JERK_MAX
#define U_JERK_MAX                  1000.0                  // {xjm:
#endif
#ifndef U_JERK_HIGH_SPEED
#define U_JERK_HIGH_SPEED           1000.0                  // {xjh:
#endif
#ifndef U_HOMING_INPUT
#define U_HOMING_INPUT              0                       // {xhi:  input used for homing or 0 to disable
#endif
#ifndef U_HOMING_DIRECTION
#define U_HOMING_DIRECTION          0                       // {xhd:  0=search moves negative, 1= search moves positive
#endif
#ifndef U_SEARCH_VELOCITY
#define U_SEARCH_VELOCITY           500.0                   // {xsv:  minus means move to minimum switch
#endif
#ifndef U_LATCH_VELOCITY
#define U_LATCH_VELOCITY            100.0                   // {xlv:  mm/min
#endif
#ifndef U_LATCH_BACKOFF
#define U_LATCH_BACKOFF             4.0                     // {xlb:  mm
#endif
#ifndef U_ZERO_BACKOFF
#define U_ZERO_BACKOFF              2.0                     // {xzb:  mm
#endif

// V AXIS
#ifndef V_AXIS_MODE
#define V_AXIS_MODE                 AXIS_DISABLED
#endif
#ifndef V_VELOCITY_MAX
#define V_VELOCITY_MAX              1000.0
#endif
#ifndef V_FEEDRATE_MAX
#define V_FEEDRATE_MAX              1000.0
#endif
#ifndef V_TRAVEL_MIN
#define V_TRAVEL_MIN                0.0
#endif
#ifndef V_TRAVEL_MAX
#define V_TRAVEL_MAX                0.0
#endif
#ifndef V_JERK_MAX
#define V_JERK_MAX                  1000.0
#endif
#ifndef V_JERK_HIGH_SPEED
#define V_JERK_HIGH_SPEED           1000.0
#endif
#ifndef V_HOMING_INPUT
#define V_HOMING_INPUT              0
#endif
#ifndef V_HOMING_DIRECTION
#define V_HOMING_DIRECTION          0
#endif
#ifndef V_SEARCH_VELOCITY
#define V_SEARCH_VELOCITY           500.0
#endif
#ifndef V_LATCH_VELOCITY
#define V_LATCH_VELOCITY            100.0
#endif
#ifndef V_LATCH_BACKOFF
#define V_LATCH_BACKOFF             4.0
#endif
#ifndef V_ZERO_BACKOFF
#define V_ZERO_BACKOFF              2.0
#endif

// W AXIS
#ifndef W_AXIS_MODE
#define W_AXIS_MODE                 AXIS_DISABLED
#endif
#ifndef W_VELOCITY_MAX
#define W_VELOCITY_MAX              1000.0
#endif
#ifndef W_FEEDRATE_MAX
#define W_FEEDRATE_MAX              1000.0
#endif
#ifndef W_TRAVEL_MAX
#define W_TRAVEL_MAX                0.0
#endif
#ifndef W_TRAVEL_MIN
#define W_TRAVEL_MIN                0.0
#endif
#ifndef W_JERK_MAX
#define W_JERK_MAX                  500.0
#endif
#ifndef W_JERK_HIGH_SPEED
#define W_JERK_HIGH_SPEED           500.0
#endif
#ifndef W_HOMING_INPUT
#define W_HOMING_INPUT              0
#endif
#ifndef W_HOMING_DIRECTION
#define W_HOMING_DIRECTION          0
#endif
#ifndef W_SEARCH_VELOCITY
#define W_SEARCH_VELOCITY           250.0
#endif
#ifndef W_LATCH_VELOCITY
#define W_LATCH_VELOCITY            25.0
#endif
#ifndef W_LATCH_BACKOFF
#define W_LATCH_BACKOFF             4.0
#endif
#ifndef W_ZERO_BACKOFF
#define W_ZERO_BACKOFF              2.0
#endif

/***************************************************************************************
 * Rotary values can be chosen to make the motor react the same as X for testing
 * To calculate the speeds here, in Wolfram Alpha-speak:
 *
 *   c=2*pi*r, r=0.609, d=c/360, s=((S*60)/d), S=40 for s
 *
 * Change r to A_RADIUS, and S to the desired speed, in mm/s or mm/s/s/s.
 *
 * It will return s= as the value you want to enter.
 *
 * If the value is over 1 million, the code will divide it by 1 million,
 * so you have to pre-multiply it by 1000000.0. (The value is in millions, btw.)
 *
 * Note that you need floating point values to always have a .0 at the end!

#define A_AXIS_MODE                 AXIS_RADIUS
#define A_RADIUS                    (M4_TRAVEL_PER_REV/(2*3.14159628))
#define A_VELOCITY_MAX              ((X_VELOCITY_MAX/M1_TRAVEL_PER_REV)*360) // set to the same speed as X axis
#define A_FEEDRATE_MAX              A_VELOCITY_MAX
#define A_TRAVEL_MIN                -1.0                                     // min/max the same means infinite, no limit
#define A_TRAVEL_MAX                -1.0
#define A_JERK_MAX                  (X_JERK_MAX*(360/M1_TRAVEL_PER_REV))
#define A_JERK_HIGH_SPEED           A_JERK_MAX
#define A_HOMING_INPUT              0
#define A_HOMING_DIRECTION                0
#define A_SEARCH_VELOCITY           (A_VELOCITY_MAX * 0.500)
#define A_LATCH_VELOCITY            (A_VELOCITY_MAX * 0.100)
#define A_LATCH_BACKOFF             5.0
#define A_ZERO_BACKOFF              2.0

 ***************************************************************************************/

// A AXIS
#ifndef A_AXIS_MODE
#define A_AXIS_MODE                 AXIS_RADIUS     // AXIS_DISABLED
#endif
#ifndef A_RADIUS
#define A_RADIUS                    (M4_TRAVEL_PER_REV/(2*3.14159628))
#endif
#ifndef A_VELOCITY_MAX
#define A_VELOCITY_MAX              ((X_VELOCITY_MAX/M1_TRAVEL_PER_REV)*360) // set to the same speed as X axis
#endif
#ifndef A_FEEDRATE_MAX
#define A_FEEDRATE_MAX              A_VELOCITY_MAX
#endif
#ifndef A_TRAVEL_MIN
#define A_TRAVEL_MIN                -1.0                    // min/max the same means infinite, no limit
#endif
#ifndef A_TRAVEL_MAX
#define A_TRAVEL_MAX                -1.0
#endif
#ifndef A_JERK_MAX
#define A_JERK_MAX                  (X_JERK_MAX*(360/M1_TRAVEL_PER_REV))
#endif
#ifndef A_JERK_HIGH_SPEED
#define A_JERK_HIGH_SPEED           A_JERK_MAX
#endif
#ifndef A_HOMING_INPUT
#define A_HOMING_INPUT              0
#endif
#ifndef A_HOMING_DIRECTION
#define A_HOMING_DIRECTION          0
#endif
#ifndef A_SEARCH_VELOCITY
#define A_SEARCH_VELOCITY           (A_VELOCITY_MAX * 0.500)
#endif
#ifndef A_LATCH_VELOCITY
#define A_LATCH_VELOCITY            (A_VELOCITY_MAX * 0.100)
#endif
#ifndef A_LATCH_BACKOFF
#define A_LATCH_BACKOFF             5.0
#endif
#ifndef A_ZERO_BACKOFF
#define A_ZERO_BACKOFF              2.0
#endif

// B AXIS
#ifndef B_AXIS_MODE
#define B_AXIS_MODE                 AXIS_RADIUS     // AXIS_DISABLED
#endif
#ifndef B_RADIUS
#define B_RADIUS                    (M5_TRAVEL_PER_REV/(2*3.14159628))
#endif
#ifndef B_VELOCITY_MAX
#define B_VELOCITY_MAX              ((X_VELOCITY_MAX/M1_TRAVEL_PER_REV)*360)
#endif
#ifndef B_FEEDRATE_MAX
#define B_FEEDRATE_MAX              B_VELOCITY_MAX
#endif
#ifndef B_TRAVEL_MIN
#define B_TRAVEL_MIN                -1.0
#endif
#ifndef B_TRAVEL_MAX
#define B_TRAVEL_MAX                -1.0
#endif
#ifndef B_JERK_MAX
#define B_JERK_MAX                  (X_JERK_MAX*(360/M1_TRAVEL_PER_REV))
#endif
#ifndef B_JERK_HIGH_SPEED
#define B_JERK_HIGH_SPEED           B_JERK_MAX
#endif
#ifndef B_HOMING_INPUT
#define B_HOMING_INPUT              0
#endif
#ifndef B_HOMING_DIRECTION
#define B_HOMING_DIRECTION          0
#endif
#ifndef B_SEARCH_VELOCITY
#define B_SEARCH_VELOCITY           (B_VELOCITY_MAX * 0.500)
#endif
#ifndef B_LATCH_VELOCITY
#define B_LATCH_VELOCITY            (B_VELOCITY_MAX * 0.100)
#endif
#ifndef B_LATCH_BACKOFF
#define B_LATCH_BACKOFF             5.0
#endif
#ifndef B_ZERO_BACKOFF
#define B_ZERO_BACKOFF              2.0
#endif

// C AXIS
#ifndef C_AXIS_MODE
#define C_AXIS_MODE                 AXIS_DISABLED
#endif
#ifndef C_RADIUS
#define C_RADIUS                    (M6_TRAVEL_PER_REV/(2*3.14159628))
#endif
#ifndef C_VELOCITY_MAX
#define C_VELOCITY_MAX              ((X_VELOCITY_MAX/M1_TRAVEL_PER_REV)*360)
#endif
#ifndef C_FEEDRATE_MAX
#define C_FEEDRATE_MAX              C_VELOCITY_MAX
#endif
#ifndef C_TRAVEL_MIN
#define C_TRAVEL_MIN                -1.0
#endif
#ifndef C_TRAVEL_MAX
#define C_TRAVEL_MAX                -1.0
#endif
#ifndef C_JERK_MAX
#define C_JERK_MAX                  (X_JERK_MAX*(360/M1_TRAVEL_PER_REV))
#endif
#ifndef C_JERK_HIGH_SPEED
#define C_JERK_HIGH_SPEED           C_JERK_MAX
#endif
#ifndef C_HOMING_INPUT
#define C_HOMING_INPUT              0
#endif
#ifndef C_HOMING_DIRECTION
#define C_HOMING_DIRECTION          0
#endif
#ifndef C_SEARCH_VELOCITY
#define C_SEARCH_VELOCITY           (C_VELOCITY_MAX * 0.500)
#endif
#ifndef C_LATCH_VELOCITY
#define C_LATCH_VELOCITY            (C_VELOCITY_MAX * 0.100)
#endif
#ifndef C_LATCH_BACKOFF
#define C_LATCH_BACKOFF             5.0
#endif
#ifndef C_ZERO_BACKOFF
#define C_ZERO_BACKOFF              2.0
#endif

//*****************************************************************************
//*** GPIO Input / Output Settings ********************************************
//*****************************************************************************

// DIGITAL INPUTS
// Set to allow the board to function if not otherwise set up
// (least disruptive settings)

/* Legend:
    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
#ifndef DI1_MODE
#define DI1_MODE                    IO_ACTIVE_LOW     // Normally open
#endif
#ifndef DI1_ACTION
#define DI1_ACTION                  INPUT_ACTION_NONE
#endif
#ifndef DI1_FUNCTION
#define DI1_FUNCTION                INPUT_FUNCTION_LIMIT        // INPUT_FUNCTION_NONE
#endif

// Xmax
#ifndef DI2_MODE
#define DI2_MODE                    IO_ACTIVE_LOW     // Normally open
#endif
#ifndef DI2_ACTION
#define DI2_ACTION                  INPUT_ACTION_NONE
#endif
#ifndef DI2_FUNCTION
#define DI2_FUNCTION                INPUT_FUNCTION_LIMIT        // INPUT_FUNCTION_NONE
#endif

// Ymin
#ifndef DI3_MODE
#define DI3_MODE                    IO_ACTIVE_LOW     // Normally open
#endif
#ifndef DI3_ACTION
#define DI3_ACTION                  INPUT_ACTION_NONE
#endif
#ifndef DI3_FUNCTION
#define DI3_FUNCTION                INPUT_FUNCTION_LIMIT        // INPUT_FUNCTION_NONE
#endif

// Ymax
#ifndef DI4_MODE
#define DI4_MODE                    IO_ACTIVE_LOW     // Normally open
#endif
#ifndef DI4_ACTION
#define DI4_ACTION                  INPUT_ACTION_NONE
#endif
#ifndef DI4_FUNCTION
#define DI4_FUNCTION               INPUT_FUNCTION_LIMIT     //  INPUT_FUNCTION_NONE
#endif

// Zmin
#ifndef DI5_MODE
#define DI5_MODE                    IO_ACTIVE_LOW     // Normally open
#endif
#ifndef DI5_ACTION
#define DI5_ACTION                  INPUT_ACTION_NONE
#endif
#ifndef DI5_FUNCTION
#define DI5_FUNCTION                INPUT_FUNCTION_LIMIT        // INPUT_FUNCTION_PROBE
#endif

// Zmax
#ifndef DI6_MODE
#define DI6_MODE                    IO_ACTIVE_LOW     // Normally open
#endif
#ifndef DI6_ACTION
#define DI6_ACTION                  INPUT_ACTION_NONE
#endif
#ifndef DI6_FUNCTION
#define DI6_FUNCTION                INPUT_FUNCTION_LIMIT        // INPUT_FUNCTION_NONE
#endif

// Amin
#ifndef DI7_MODE
#define DI7_MODE                    IO_ACTIVE_LOW     // Normally open
#endif
#ifndef DI7_ACTION
#define DI7_ACTION                  INPUT_ACTION_NONE
#endif
#ifndef DI7_FUNCTION
#define DI7_FUNCTION                INPUT_FUNCTION_LIMIT        // INPUT_FUNCTION_NONE
#endif

// Amax
#ifndef DI8_MODE
#define DI8_MODE                    IO_ACTIVE_LOW     // Normally open
#endif
#ifndef DI8_ACTION
#define DI8_ACTION                  INPUT_ACTION_NONE
#endif
#ifndef DI8_FUNCTION
#define DI8_FUNCTION                INPUT_FUNCTION_LIMIT        // INPUT_FUNCTION_NONE
#endif

// Safety line
#ifndef DI9_MODE
#define DI9_MODE                    IO_ACTIVE_HIGH     // Normally closed
#endif
#ifndef DI9_ACTION
#define DI9_ACTION                  INPUT_ACTION_NONE
#endif
#ifndef DI9_FUNCTION
#define DI9_FUNCTION                INPUT_FUNCTION_NONE
#endif

#ifndef DI10_MODE
#define DI10_MODE                   IO_ACTIVE_LOW     // Normally open
#endif
#ifndef DI10_ACTION
#define DI10_ACTION                 INPUT_ACTION_NONE
#endif
#ifndef DI10_FUNCTION
#define DI10_FUNCTION               INPUT_FUNCTION_NONE
#endif

#ifndef DI11_MODE
#define DI11_MODE                   IO_ACTIVE_LOW     // Normally open
#endif
#ifndef DI11_ACTION
#define DI11_ACTION                 INPUT_ACTION_NONE
#endif
#ifndef DI11_FUNCTION
#define DI11_FUNCTION               INPUT_FUNCTION_NONE
#endif

#ifndef DI12_MODE
#define DI12_MODE                   IO_ACTIVE_LOW     // Normally open
#endif
#ifndef DI12_ACTION
#define DI12_ACTION                 INPUT_ACTION_NONE
#endif
#ifndef DI12_FUNCTION
#define DI12_FUNCTION               INPUT_FUNCTION_NONE
#endif

// DIGITAL OUTPUTS - Currently these are hard-wired to extruders

//Extruder1_PWM
#ifndef DO1_MODE
#define DO1_MODE                    IO_ACTIVE_HIGH
#endif

//Extruder2_PWM
#ifndef DO2_MODE
#define DO2_MODE                    IO_ACTIVE_HIGH
#endif

//Fan1A_PWM
#ifndef DO3_MODE
#define DO3_MODE                    IO_ACTIVE_HIGH
#endif

//Fan1B_PWM
#ifndef DO4_MODE
#define DO4_MODE                    IO_ACTIVE_HIGH
#endif

#ifndef DO5_MODE
#define DO5_MODE                    IO_ACTIVE_HIGH
#endif
#ifndef DO6_MODE
#define DO6_MODE                    IO_ACTIVE_HIGH
#endif
#ifndef DO7_MODE
#define DO7_MODE                    IO_ACTIVE_HIGH
#endif
#ifndef DO8_MODE
#define DO8_MODE                    IO_ACTIVE_HIGH
#endif

//SAFEin (Output) signal
#ifndef DO9_MODE
#define DO9_MODE                    IO_ACTIVE_HIGH
#endif

#ifndef DO10_MODE
#define DO10_MODE                   IO_ACTIVE_HIGH
#endif

//Header Bed FET
#ifndef DO11_MODE
#define DO11_MODE                   IO_ACTIVE_HIGH
#endif

//Indicator_LED
#ifndef DO12_MODE
#define DO12_MODE                   IO_ACTIVE_HIGH
#endif

#ifndef DO13_MODE
#define DO13_MODE                   IO_ACTIVE_HIGH
#endif

// *** PWM Settings *** //

#ifndef P1_PWM_FREQUENCY
#define P1_PWM_FREQUENCY            100                   // in Hz
#endif
#ifndef P1_CW_SPEED_LO
#define P1_CW_SPEED_LO              0       // 7900                  // in RPM (arbitrary units)
#endif
#ifndef P1_CW_SPEED_HI
#define P1_CW_SPEED_HI              1000        // 12800
#endif
#ifndef P1_CW_PHASE_LO
#define P1_CW_PHASE_LO              0.13                    // phase [0..1]
#endif
#ifndef P1_CW_PHASE_HI
#define P1_CW_PHASE_HI              0.17
#endif
#ifndef P1_CCW_SPEED_LO
#define P1_CCW_SPEED_LO             0       // 7900    // 0.0
#endif
#ifndef P1_CCW_SPEED_HI
#define P1_CCW_SPEED_HI            1000     // 12800    // 0.0
#endif
#ifndef P1_CCW_PHASE_LO
#define P1_CCW_PHASE_LO             0.13    // 0.1
#endif
#ifndef P1_CCW_PHASE_HI
#define P1_CCW_PHASE_HI             0.17    // 0.1
#endif
#ifndef P1_PWM_PHASE_OFF
#define P1_PWM_PHASE_OFF            0.1
#endif

// *** Heater Settings - relevant to 3dp machines *** //

#ifndef MIN_FAN_TEMP
#define MIN_FAN_TEMP                40.0     // Temperature that the upper-extruder fan starts
#endif
#ifndef MIN_FAN_VALUE
#define MIN_FAN_VALUE               0.4      // Minimum output value (0.0-1.0) of the upper-extruder fan
#endif
#ifndef MAX_FAN_VALUE
#define MAX_FAN_VALUE               1.0      // Maximum output value (0.0-1.0) of the upper-extruder fan
#endif
#ifndef MAX_FAN_TEMP
#define MAX_FAN_TEMP                150.0    // Temperature at and above which the upper-extruder fan is at 1.0
#endif
#ifndef H1_DEFAULT_ENABLE
#define H1_DEFAULT_ENABLE           false
#endif
#ifndef H1_DEFAULT_P
#define H1_DEFAULT_P                9.0
#endif
#ifndef H1_DEFAULT_I
#define H1_DEFAULT_I                0.12
#endif
#ifndef H1_DEFAULT_D
#define H1_DEFAULT_D                400.0
#endif

#ifndef H2_DEFAULT_ENABLE
#define H2_DEFAULT_ENABLE           false
#endif
#ifndef H2_DEFAULT_P
#define H2_DEFAULT_P                9.0
#endif
#ifndef H2_DEFAULT_I
#define H2_DEFAULT_I                0.12
#endif
#ifndef H2_DEFAULT_D
#define H2_DEFAULT_D                400.0
#endif

#ifndef H3_DEFAULT_ENABLE
#define H3_DEFAULT_ENABLE           false
#endif
#ifndef H3_DEFAULT_P
#define H3_DEFAULT_P                9.0
#endif
#ifndef H3_DEFAULT_I
#define H3_DEFAULT_I                0.12
#endif
#ifndef H3_DEFAULT_D
#define H3_DEFAULT_D                400.0
#endif

// *** DEFAULT COORDINATE SYSTEM OFFSETS ***

#ifndef G54_X_OFFSET
#define G54_X_OFFSET 0    // G54 is often set to all zeros
#endif
#ifndef G54_Y_OFFSET
#define G54_Y_OFFSET 0
#endif
#ifndef G54_Z_OFFSET
#define G54_Z_OFFSET 0
#endif
#ifndef G54_U_OFFSET
#define G54_U_OFFSET 0
#endif
#ifndef G54_V_OFFSET
#define G54_V_OFFSET 0
#endif
#ifndef G54_W_OFFSET
#define G54_W_OFFSET 0
#endif
#ifndef G54_A_OFFSET
#define G54_A_OFFSET 0
#endif
#ifndef G54_B_OFFSET
#define G54_B_OFFSET 0
#endif
#ifndef G54_C_OFFSET
#define G54_C_OFFSET 0
#endif

#ifndef G55_X_OFFSET
#define G55_X_OFFSET 0
#endif
#ifndef G55_Y_OFFSET
#define G55_Y_OFFSET 0
#endif
#ifndef G55_Z_OFFSET
#define G55_Z_OFFSET 0
#endif
#ifndef G55_U_OFFSET
#define G55_U_OFFSET 0
#endif
#ifndef G55_V_OFFSET
#define G55_V_OFFSET 0
#endif
#ifndef G55_W_OFFSET
#define G55_W_OFFSET 0
#endif
#ifndef G55_A_OFFSET
#define G55_A_OFFSET 0
#endif
#ifndef G55_B_OFFSET
#define G55_B_OFFSET 0
#endif
#ifndef G55_C_OFFSET
#define G55_C_OFFSET 0
#endif

#ifndef G56_X_OFFSET
#define G56_X_OFFSET 0
#endif
#ifndef G56_Y_OFFSET
#define G56_Y_OFFSET 0
#endif
#ifndef G56_Z_OFFSET
#define G56_Z_OFFSET 0
#endif
#ifndef G56_U_OFFSET
#define G56_U_OFFSET 0
#endif
#ifndef G56_V_OFFSET
#define G56_V_OFFSET 0
#endif
#ifndef G56_W_OFFSET
#define G56_W_OFFSET 0
#endif
#ifndef G56_A_OFFSET
#define G56_A_OFFSET 0
#endif
#ifndef G56_B_OFFSET
#define G56_B_OFFSET 0
#endif
#ifndef G56_C_OFFSET
#define G56_C_OFFSET 0
#endif

#ifndef G57_X_OFFSET
#define G57_X_OFFSET 0
#endif
#ifndef G57_Y_OFFSET
#define G57_Y_OFFSET 0
#endif
#ifndef G57_Z_OFFSET
#define G57_Z_OFFSET 0
#endif
#ifndef G57_U_OFFSET
#define G57_U_OFFSET 0
#endif
#ifndef G57_V_OFFSET
#define G57_V_OFFSET 0
#endif
#ifndef G57_W_OFFSET
#define G57_W_OFFSET 0
#endif
#ifndef G57_A_OFFSET
#define G57_A_OFFSET 0
#endif
#ifndef G57_B_OFFSET
#define G57_B_OFFSET 0
#endif
#ifndef G57_C_OFFSET
#define G57_C_OFFSET 0
#endif

#ifndef G58_X_OFFSET
#define G58_X_OFFSET 0
#endif
#ifndef G58_Y_OFFSET
#define G58_Y_OFFSET 0
#endif
#ifndef G58_Z_OFFSET
#define G58_Z_OFFSET 0
#endif
#ifndef G58_U_OFFSET
#define G58_U_OFFSET 0
#endif
#ifndef G58_V_OFFSET
#define G58_V_OFFSET 0
#endif
#ifndef G58_W_OFFSET
#define G58_W_OFFSET 0
#endif
#ifndef G58_A_OFFSET
#define G58_A_OFFSET 0
#endif
#ifndef G58_B_OFFSET
#define G58_B_OFFSET 0
#endif
#ifndef G58_C_OFFSET
#define G58_C_OFFSET 0
#endif

#ifndef G59_X_OFFSET
#define G59_X_OFFSET 0
#endif
#ifndef G59_Y_OFFSET
#define G59_Y_OFFSET 0
#endif
#ifndef G59_Z_OFFSET
#define G59_Z_OFFSET 0
#endif
#ifndef G59_U_OFFSET
#define G59_U_OFFSET 0
#endif
#ifndef G59_V_OFFSET
#define G59_V_OFFSET 0
#endif
#ifndef G59_W_OFFSET
#define G59_W_OFFSET 0
#endif
#ifndef G59_A_OFFSET
#define G59_A_OFFSET 0
#endif
#ifndef G59_B_OFFSET
#define G59_B_OFFSET 0
#endif
#ifndef G59_C_OFFSET
#define G59_C_OFFSET 0
#endif

// *** Tool Table Defaults *** //

#ifndef TT1_X_OFFSET
#define TT1_X_OFFSET 0
#endif
#ifndef TT1_Y_OFFSET
#define TT1_Y_OFFSET 0
#endif
#ifndef TT1_Z_OFFSET
#define TT1_Z_OFFSET 0
#endif
#ifndef TT1_U_OFFSET
#define TT1_U_OFFSET 0
#endif
#ifndef TT1_V_OFFSET
#define TT1_V_OFFSET 0
#endif
#ifndef TT1_W_OFFSET
#define TT1_W_OFFSET 0
#endif
#ifndef TT1_A_OFFSET
#define TT1_A_OFFSET 0
#endif
#ifndef TT1_B_OFFSET
#define TT1_B_OFFSET 0
#endif
#ifndef TT1_C_OFFSET
#define TT1_C_OFFSET 0
#endif

#ifndef TT2_X_OFFSET
#define TT2_X_OFFSET 0
#endif
#ifndef TT2_Y_OFFSET
#define TT2_Y_OFFSET 0
#endif
#ifndef TT2_Z_OFFSET
#define TT2_Z_OFFSET 0
#endif
#ifndef TT2_U_OFFSET
#define TT2_U_OFFSET 0
#endif
#ifndef TT2_V_OFFSET
#define TT2_V_OFFSET 0
#endif
#ifndef TT2_W_OFFSET
#define TT2_W_OFFSET 0
#endif
#ifndef TT2_A_OFFSET
#define TT2_A_OFFSET 0
#endif
#ifndef TT2_B_OFFSET
#define TT2_B_OFFSET 0
#endif
#ifndef TT2_C_OFFSET
#define TT2_C_OFFSET 0
#endif

#ifndef TT3_X_OFFSET
#define TT3_X_OFFSET 0
#endif
#ifndef TT3_Y_OFFSET
#define TT3_Y_OFFSET 0
#endif
#ifndef TT3_Z_OFFSET
#define TT3_Z_OFFSET 0
#endif
#ifndef TT3_U_OFFSET
#define TT3_U_OFFSET 0
#endif
#ifndef TT3_V_OFFSET
#define TT3_V_OFFSET 0
#endif
#ifndef TT3_W_OFFSET
#define TT3_W_OFFSET 0
#endif
#ifndef TT3_A_OFFSET
#define TT3_A_OFFSET 0
#endif
#ifndef TT3_B_OFFSET
#define TT3_B_OFFSET 0
#endif
#ifndef TT3_C_OFFSET
#define TT3_C_OFFSET 0
#endif

#ifndef TT4_X_OFFSET
#define TT4_X_OFFSET 0
#endif
#ifndef TT4_Y_OFFSET
#define TT4_Y_OFFSET 0
#endif
#ifndef TT4_Z_OFFSET
#define TT4_Z_OFFSET 0
#endif
#ifndef TT4_U_OFFSET
#define TT4_U_OFFSET 0
#endif
#ifndef TT4_V_OFFSET
#define TT4_V_OFFSET 0
#endif
#ifndef TT4_W_OFFSET
#define TT4_W_OFFSET 0
#endif
#ifndef TT4_A_OFFSET
#define TT4_A_OFFSET 0
#endif
#ifndef TT4_B_OFFSET
#define TT4_B_OFFSET 0
#endif
#ifndef TT4_C_OFFSET
#define TT4_C_OFFSET 0
#endif

#ifndef TT5_X_OFFSET
#define TT5_X_OFFSET 0
#endif
#ifndef TT5_Y_OFFSET
#define TT5_Y_OFFSET 0
#endif
#ifndef TT5_Z_OFFSET
#define TT5_Z_OFFSET 0
#endif
#ifndef TT5_U_OFFSET
#define TT5_U_OFFSET 0
#endif
#ifndef TT5_V_OFFSET
#define TT5_V_OFFSET 0
#endif
#ifndef TT5_W_OFFSET
#define TT5_W_OFFSET 0
#endif
#ifndef TT5_A_OFFSET
#define TT5_A_OFFSET 0
#endif
#ifndef TT5_B_OFFSET
#define TT5_B_OFFSET 0
#endif
#ifndef TT5_C_OFFSET
#define TT5_C_OFFSET 0
#endif

#ifndef TT6_X_OFFSET
#define TT6_X_OFFSET 0
#endif
#ifndef TT6_Y_OFFSET
#define TT6_Y_OFFSET 0
#endif
#ifndef TT6_Z_OFFSET
#define TT6_Z_OFFSET 0
#endif
#ifndef TT6_U_OFFSET
#define TT6_U_OFFSET 0
#endif
#ifndef TT6_V_OFFSET
#define TT6_V_OFFSET 0
#endif
#ifndef TT6_W_OFFSET
#define TT6_W_OFFSET 0
#endif
#ifndef TT6_A_OFFSET
#define TT6_A_OFFSET 0
#endif
#ifndef TT6_B_OFFSET
#define TT6_B_OFFSET 0
#endif
#ifndef TT6_C_OFFSET
#define TT6_C_OFFSET 0
#endif

#ifndef TT7_X_OFFSET
#define TT7_X_OFFSET 0
#endif
#ifndef TT7_Y_OFFSET
#define TT7_Y_OFFSET 0
#endif
#ifndef TT7_Z_OFFSET
#define TT7_Z_OFFSET 0
#endif
#ifndef TT7_U_OFFSET
#define TT7_U_OFFSET 0
#endif
#ifndef TT7_V_OFFSET
#define TT7_V_OFFSET 0
#endif
#ifndef TT7_W_OFFSET
#define TT7_W_OFFSET 0
#endif
#ifndef TT7_A_OFFSET
#define TT7_A_OFFSET 0
#endif
#ifndef TT7_B_OFFSET
#define TT7_B_OFFSET 0
#endif
#ifndef TT7_C_OFFSET
#define TT7_C_OFFSET 0
#endif

#ifndef TT8_X_OFFSET
#define TT8_X_OFFSET 0
#endif
#ifndef TT8_Y_OFFSET
#define TT8_Y_OFFSET 0
#endif
#ifndef TT8_U_OFFSET
#define TT8_U_OFFSET 0
#endif
#ifndef TT8_V_OFFSET
#define TT8_V_OFFSET 0
#endif
#ifndef TT8_W_OFFSET
#define TT8_W_OFFSET 0
#endif
#ifndef TT8_Z_OFFSET
#define TT8_Z_OFFSET 0
#endif
#ifndef TT8_A_OFFSET
#define TT8_A_OFFSET 0
#endif
#ifndef TT8_B_OFFSET
#define TT8_B_OFFSET 0
#endif
#ifndef TT8_C_OFFSET
#define TT8_C_OFFSET 0
#endif

#ifndef TT9_X_OFFSET
#define TT9_X_OFFSET 0
#endif
#ifndef TT9_Y_OFFSET
#define TT9_Y_OFFSET 0
#endif
#ifndef TT9_Z_OFFSET
#define TT9_Z_OFFSET 0
#endif
#ifndef TT9_U_OFFSET
#define TT9_U_OFFSET 0
#endif
#ifndef TT9_V_OFFSET
#define TT9_V_OFFSET 0
#endif
#ifndef TT9_W_OFFSET
#define TT9_W_OFFSET 0
#endif
#ifndef TT9_A_OFFSET
#define TT9_A_OFFSET 0
#endif
#ifndef TT9_B_OFFSET
#define TT9_B_OFFSET 0
#endif
#ifndef TT9_C_OFFSET
#define TT9_C_OFFSET 0
#endif

#ifndef TT10_X_OFFSET
#define TT10_X_OFFSET 0
#endif
#ifndef TT10_Y_OFFSET
#define TT10_Y_OFFSET 0
#endif
#ifndef TT10_Z_OFFSET
#define TT10_Z_OFFSET 0
#endif
#ifndef TT10_U_OFFSET
#define TT10_U_OFFSET 0
#endif
#ifndef TT10_V_OFFSET
#define TT10_V_OFFSET 0
#endif
#ifndef TT10_W_OFFSET
#define TT10_W_OFFSET 0
#endif
#ifndef TT10_A_OFFSET
#define TT10_A_OFFSET 0
#endif
#ifndef TT10_B_OFFSET
#define TT10_B_OFFSET 0
#endif
#ifndef TT10_C_OFFSET
#define TT10_C_OFFSET 0
#endif

#ifndef TT11_X_OFFSET
#define TT11_X_OFFSET 0
#endif
#ifndef TT11_Y_OFFSET
#define TT11_Y_OFFSET 0
#endif
#ifndef TT11_Z_OFFSET
#define TT11_Z_OFFSET 0
#endif
#ifndef TT11_U_OFFSET
#define TT11_U_OFFSET 0
#endif
#ifndef TT11_V_OFFSET
#define TT11_V_OFFSET 0
#endif
#ifndef TT11_W_OFFSET
#define TT11_W_OFFSET 0
#endif
#ifndef TT11_A_OFFSET
#define TT11_A_OFFSET 0
#endif
#ifndef TT11_B_OFFSET
#define TT11_B_OFFSET 0
#endif
#ifndef TT11_C_OFFSET
#define TT11_C_OFFSET 0
#endif

#ifndef TT12_X_OFFSET
#define TT12_X_OFFSET 0
#endif
#ifndef TT12_Y_OFFSET
#define TT12_Y_OFFSET 0
#endif
#ifndef TT12_Z_OFFSET
#define TT12_Z_OFFSET 0
#endif
#ifndef TT12_U_OFFSET
#define TT12_U_OFFSET 0
#endif
#ifndef TT12_V_OFFSET
#define TT12_V_OFFSET 0
#endif
#ifndef TT12_W_OFFSET
#define TT12_W_OFFSET 0
#endif
#ifndef TT12_A_OFFSET
#define TT12_A_OFFSET 0
#endif
#ifndef TT12_B_OFFSET
#define TT12_B_OFFSET 0
#endif
#ifndef TT12_C_OFFSET
#define TT12_C_OFFSET 0
#endif

#ifndef TT13_X_OFFSET
#define TT13_X_OFFSET 0
#endif
#ifndef TT13_Y_OFFSET
#define TT13_Y_OFFSET 0
#endif
#ifndef TT13_Z_OFFSET
#define TT13_Z_OFFSET 0
#endif
#ifndef TT13_U_OFFSET
#define TT13_U_OFFSET 0
#endif
#ifndef TT13_V_OFFSET
#define TT13_V_OFFSET 0
#endif
#ifndef TT13_W_OFFSET
#define TT13_W_OFFSET 0
#endif
#ifndef TT13_A_OFFSET
#define TT13_A_OFFSET 0
#endif
#ifndef TT13_B_OFFSET
#define TT13_B_OFFSET 0
#endif
#ifndef TT13_C_OFFSET
#define TT13_C_OFFSET 0
#endif

#ifndef TT14_X_OFFSET
#define TT14_X_OFFSET 0
#endif
#ifndef TT14_Y_OFFSET
#define TT14_Y_OFFSET 0
#endif
#ifndef TT14_Z_OFFSET
#define TT14_Z_OFFSET 0
#endif
#ifndef TT14_U_OFFSET
#define TT14_U_OFFSET 0
#endif
#ifndef TT14_V_OFFSET
#define TT14_V_OFFSET 0
#endif
#ifndef TT14_W_OFFSET
#define TT14_W_OFFSET 0
#endif
#ifndef TT14_A_OFFSET
#define TT14_A_OFFSET 0
#endif
#ifndef TT14_B_OFFSET
#define TT14_B_OFFSET 0
#endif
#ifndef TT14_C_OFFSET
#define TT14_C_OFFSET 0
#endif

#ifndef TT15_X_OFFSET
#define TT15_X_OFFSET 0
#endif
#ifndef TT15_Y_OFFSET
#define TT15_Y_OFFSET 0
#endif
#ifndef TT15_Z_OFFSET
#define TT15_Z_OFFSET 0
#endif
#ifndef TT15_U_OFFSET
#define TT15_U_OFFSET 0
#endif
#ifndef TT15_V_OFFSET
#define TT15_V_OFFSET 0
#endif
#ifndef TT15_W_OFFSET
#define TT15_W_OFFSET 0
#endif
#ifndef TT15_A_OFFSET
#define TT15_A_OFFSET 0
#endif
#ifndef TT15_B_OFFSET
#define TT15_B_OFFSET 0
#endif
#ifndef TT15_C_OFFSET
#define TT15_C_OFFSET 0
#endif

#ifndef TT16_X_OFFSET
#define TT16_X_OFFSET 0
#endif
#ifndef TT16_Y_OFFSET
#define TT16_Y_OFFSET 0
#endif
#ifndef TT16_Z_OFFSET
#define TT16_Z_OFFSET 0
#endif
#ifndef TT16_U_OFFSET
#define TT16_U_OFFSET 0
#endif
#ifndef TT16_V_OFFSET
#define TT16_V_OFFSET 0
#endif
#ifndef TT16_W_OFFSET
#define TT16_W_OFFSET 0
#endif
#ifndef TT16_A_OFFSET
#define TT16_A_OFFSET 0
#endif
#ifndef TT16_B_OFFSET
#define TT16_B_OFFSET 0
#endif
#ifndef TT16_C_OFFSET
#define TT16_C_OFFSET 0
#endif

#ifndef TT17_X_OFFSET
#define TT17_X_OFFSET 0
#endif
#ifndef TT17_Y_OFFSET
#define TT17_Y_OFFSET 0
#endif
#ifndef TT17_Z_OFFSET
#define TT17_Z_OFFSET 0
#endif
#ifndef TT17_U_OFFSET
#define TT17_U_OFFSET 0
#endif
#ifndef TT17_V_OFFSET
#define TT17_V_OFFSET 0
#endif
#ifndef TT17_W_OFFSET
#define TT17_W_OFFSET 0
#endif
#ifndef TT17_A_OFFSET
#define TT17_A_OFFSET 0
#endif
#ifndef TT17_B_OFFSET
#define TT17_B_OFFSET 0
#endif
#ifndef TT17_C_OFFSET
#define TT17_C_OFFSET 0
#endif

#ifndef TT18_X_OFFSET
#define TT18_X_OFFSET 0
#endif
#ifndef TT18_Y_OFFSET
#define TT18_Y_OFFSET 0
#endif
#ifndef TT18_Z_OFFSET
#define TT18_Z_OFFSET 0
#endif
#ifndef TT18_U_OFFSET
#define TT18_U_OFFSET 0
#endif
#ifndef TT18_V_OFFSET
#define TT18_V_OFFSET 0
#endif
#ifndef TT18_W_OFFSET
#define TT18_W_OFFSET 0
#endif
#ifndef TT18_A_OFFSET
#define TT18_A_OFFSET 0
#endif
#ifndef TT18_B_OFFSET
#define TT18_B_OFFSET 0
#endif
#ifndef TT18_C_OFFSET
#define TT18_C_OFFSET 0
#endif

#ifndef TT19_X_OFFSET
#define TT19_X_OFFSET 0
#endif
#ifndef TT19_Y_OFFSET
#define TT19_Y_OFFSET 0
#endif
#ifndef TT19_Z_OFFSET
#define TT19_Z_OFFSET 0
#endif
#ifndef TT19_U_OFFSET
#define TT19_U_OFFSET 0
#endif
#ifndef TT19_V_OFFSET
#define TT19_V_OFFSET 0
#endif
#ifndef TT19_W_OFFSET
#define TT19_W_OFFSET 0
#endif
#ifndef TT19_A_OFFSET
#define TT19_A_OFFSET 0
#endif
#ifndef TT19_B_OFFSET
#define TT19_B_OFFSET 0
#endif
#ifndef TT19_C_OFFSET
#define TT19_C_OFFSET 0
#endif

#ifndef TT20_X_OFFSET
#define TT20_X_OFFSET 0
#endif
#ifndef TT20_Y_OFFSET
#define TT20_Y_OFFSET 0
#endif
#ifndef TT20_Z_OFFSET
#define TT20_Z_OFFSET 0
#endif
#ifndef TT20_U_OFFSET
#define TT20_U_OFFSET 0
#endif
#ifndef TT20_V_OFFSET
#define TT20_V_OFFSET 0
#endif
#ifndef TT20_W_OFFSET
#define TT20_W_OFFSET 0
#endif
#ifndef TT20_A_OFFSET
#define TT20_A_OFFSET 0
#endif
#ifndef TT20_B_OFFSET
#define TT20_B_OFFSET 0
#endif
#ifndef TT20_C_OFFSET
#define TT20_C_OFFSET 0
#endif

#ifndef TT21_X_OFFSET
#define TT21_X_OFFSET 0
#endif
#ifndef TT21_Y_OFFSET
#define TT21_Y_OFFSET 0
#endif
#ifndef TT21_Z_OFFSET
#define TT21_Z_OFFSET 0
#endif
#ifndef TT21_U_OFFSET
#define TT21_U_OFFSET 0
#endif
#ifndef TT21_V_OFFSET
#define TT21_V_OFFSET 0
#endif
#ifndef TT21_W_OFFSET
#define TT21_W_OFFSET 0
#endif
#ifndef TT21_A_OFFSET
#define TT21_A_OFFSET 0
#endif
#ifndef TT21_B_OFFSET
#define TT21_B_OFFSET 0
#endif
#ifndef TT21_C_OFFSET
#define TT21_C_OFFSET 0
#endif

#ifndef TT22_X_OFFSET
#define TT22_X_OFFSET 0
#endif
#ifndef TT22_Y_OFFSET
#define TT22_Y_OFFSET 0
#endif
#ifndef TT22_Z_OFFSET
#define TT22_Z_OFFSET 0
#endif
#ifndef TT22_U_OFFSET
#define TT22_U_OFFSET 0
#endif
#ifndef TT22_V_OFFSET
#define TT22_V_OFFSET 0
#endif
#ifndef TT22_W_OFFSET
#define TT22_W_OFFSET 0
#endif
#ifndef TT22_A_OFFSET
#define TT22_A_OFFSET 0
#endif
#ifndef TT22_B_OFFSET
#define TT22_B_OFFSET 0
#endif
#ifndef TT22_C_OFFSET
#define TT22_C_OFFSET 0
#endif

#ifndef TT23_X_OFFSET
#define TT23_X_OFFSET 0
#endif
#ifndef TT23_Y_OFFSET
#define TT23_Y_OFFSET 0
#endif
#ifndef TT23_Z_OFFSET
#define TT23_Z_OFFSET 0
#endif
#ifndef TT23_U_OFFSET
#define TT23_U_OFFSET 0
#endif
#ifndef TT23_V_OFFSET
#define TT23_V_OFFSET 0
#endif
#ifndef TT23_W_OFFSET
#define TT23_W_OFFSET 0
#endif
#ifndef TT23_A_OFFSET
#define TT23_A_OFFSET 0
#endif
#ifndef TT23_B_OFFSET
#define TT23_B_OFFSET 0
#endif
#ifndef TT23_C_OFFSET
#define TT23_C_OFFSET 0
#endif

#ifndef TT24_X_OFFSET
#define TT24_X_OFFSET 0
#endif
#ifndef TT24_Y_OFFSET
#define TT24_Y_OFFSET 0
#endif
#ifndef TT24_Z_OFFSET
#define TT24_Z_OFFSET 0
#endif
#ifndef TT24_U_OFFSET
#define TT24_U_OFFSET 0
#endif
#ifndef TT24_V_OFFSET
#define TT24_V_OFFSET 0
#endif
#ifndef TT24_W_OFFSET
#define TT24_W_OFFSET 0
#endif
#ifndef TT24_A_OFFSET
#define TT24_A_OFFSET 0
#endif
#ifndef TT24_B_OFFSET
#define TT24_B_OFFSET 0
#endif
#ifndef TT24_C_OFFSET
#define TT24_C_OFFSET 0
#endif

#ifndef TT25_X_OFFSET
#define TT25_X_OFFSET 0
#endif
#ifndef TT25_Y_OFFSET
#define TT25_Y_OFFSET 0
#endif
#ifndef TT25_Z_OFFSET
#define TT25_Z_OFFSET 0
#endif
#ifndef TT25_U_OFFSET
#define TT25_U_OFFSET 0
#endif
#ifndef TT25_V_OFFSET
#define TT25_V_OFFSET 0
#endif
#ifndef TT25_W_OFFSET
#define TT25_W_OFFSET 0
#endif
#ifndef TT25_A_OFFSET
#define TT25_A_OFFSET 0
#endif
#ifndef TT25_B_OFFSET
#define TT25_B_OFFSET 0
#endif
#ifndef TT25_C_OFFSET
#define TT25_C_OFFSET 0
#endif

#ifndef TT26_X_OFFSET
#define TT26_X_OFFSET 0
#endif
#ifndef TT26_Y_OFFSET
#define TT26_Y_OFFSET 0
#endif
#ifndef TT26_Z_OFFSET
#define TT26_Z_OFFSET 0
#endif
#ifndef TT26_U_OFFSET
#define TT26_U_OFFSET 0
#endif
#ifndef TT26_V_OFFSET
#define TT26_V_OFFSET 0
#endif
#ifndef TT26_W_OFFSET
#define TT26_W_OFFSET 0
#endif
#ifndef TT26_A_OFFSET
#define TT26_A_OFFSET 0
#endif
#ifndef TT26_B_OFFSET
#define TT26_B_OFFSET 0
#endif
#ifndef TT26_C_OFFSET
#define TT26_C_OFFSET 0
#endif

#ifndef TT27_X_OFFSET
#define TT27_X_OFFSET 0
#endif
#ifndef TT27_Y_OFFSET
#define TT27_Y_OFFSET 0
#endif
#ifndef TT27_Z_OFFSET
#define TT27_Z_OFFSET 0
#endif
#ifndef TT27_U_OFFSET
#define TT27_U_OFFSET 0
#endif
#ifndef TT27_V_OFFSET
#define TT27_V_OFFSET 0
#endif
#ifndef TT27_W_OFFSET
#define TT27_W_OFFSET 0
#endif
#ifndef TT27_A_OFFSET
#define TT27_A_OFFSET 0
#endif
#ifndef TT27_B_OFFSET
#define TT27_B_OFFSET 0
#endif
#ifndef TT27_C_OFFSET
#define TT27_C_OFFSET 0
#endif

#ifndef TT28_X_OFFSET
#define TT28_X_OFFSET 0
#endif
#ifndef TT28_Y_OFFSET
#define TT28_Y_OFFSET 0
#endif
#ifndef TT28_Z_OFFSET
#define TT28_Z_OFFSET 0
#endif
#ifndef TT28_U_OFFSET
#define TT28_U_OFFSET 0
#endif
#ifndef TT28_V_OFFSET
#define TT28_V_OFFSET 0
#endif
#ifndef TT28_W_OFFSET
#define TT28_W_OFFSET 0
#endif
#ifndef TT28_A_OFFSET
#define TT28_A_OFFSET 0
#endif
#ifndef TT28_B_OFFSET
#define TT28_B_OFFSET 0
#endif
#ifndef TT28_C_OFFSET
#define TT28_C_OFFSET 0
#endif

#ifndef TT29_X_OFFSET
#define TT29_X_OFFSET 0
#endif
#ifndef TT29_Y_OFFSET
#define TT29_Y_OFFSET 0
#endif
#ifndef TT29_Z_OFFSET
#define TT29_Z_OFFSET 0
#endif
#ifndef TT29_U_OFFSET
#define TT29_U_OFFSET 0
#endif
#ifndef TT29_V_OFFSET
#define TT29_V_OFFSET 0
#endif
#ifndef TT29_W_OFFSET
#define TT29_W_OFFSET 0
#endif
#ifndef TT29_A_OFFSET
#define TT29_A_OFFSET 0
#endif
#ifndef TT29_B_OFFSET
#define TT29_B_OFFSET 0
#endif
#ifndef TT29_C_OFFSET
#define TT29_C_OFFSET 0
#endif

#ifndef TT30_X_OFFSET
#define TT30_X_OFFSET 0
#endif
#ifndef TT30_Y_OFFSET
#define TT30_Y_OFFSET 0
#endif
#ifndef TT30_Z_OFFSET
#define TT30_Z_OFFSET 0
#endif
#ifndef TT30_U_OFFSET
#define TT30_U_OFFSET 0
#endif
#ifndef TT30_V_OFFSET
#define TT30_V_OFFSET 0
#endif
#ifndef TT30_W_OFFSET
#define TT30_W_OFFSET 0
#endif
#ifndef TT30_A_OFFSET
#define TT30_A_OFFSET 0
#endif
#ifndef TT30_B_OFFSET
#define TT30_B_OFFSET 0
#endif
#ifndef TT30_C_OFFSET
#define TT30_C_OFFSET 0
#endif

#ifndef TT31_X_OFFSET
#define TT31_X_OFFSET 0
#endif
#ifndef TT31_Y_OFFSET
#define TT31_Y_OFFSET 0
#endif
#ifndef TT31_Z_OFFSET
#define TT31_Z_OFFSET 0
#endif
#ifndef TT31_U_OFFSET
#define TT31_U_OFFSET 0
#endif
#ifndef TT31_V_OFFSET
#define TT31_V_OFFSET 0
#endif
#ifndef TT31_W_OFFSET
#define TT31_W_OFFSET 0
#endif
#ifndef TT31_A_OFFSET
#define TT31_A_OFFSET 0
#endif
#ifndef TT31_B_OFFSET
#define TT31_B_OFFSET 0
#endif
#ifndef TT31_C_OFFSET
#define TT31_C_OFFSET 0
#endif

#ifndef TT32_X_OFFSET
#define TT32_X_OFFSET 0
#endif
#ifndef TT32_Y_OFFSET
#define TT32_Y_OFFSET 0
#endif
#ifndef TT32_Z_OFFSET
#define TT32_Z_OFFSET 0
#endif
#ifndef TT32_U_OFFSET
#define TT32_U_OFFSET 0
#endif
#ifndef TT32_V_OFFSET
#define TT32_V_OFFSET 0
#endif
#ifndef TT32_W_OFFSET
#define TT32_W_OFFSET 0
#endif
#ifndef TT32_A_OFFSET
#define TT32_A_OFFSET 0
#endif
#ifndef TT32_B_OFFSET
#define TT32_B_OFFSET 0
#endif
#ifndef TT32_C_OFFSET
#define TT32_C_OFFSET 0
#endif

// *** User-Defined Data Defaults *** //

#ifndef USER_DATA_A0
#define USER_DATA_A0 0
#endif
#ifndef USER_DATA_A1
#define USER_DATA_A1 0
#endif
#ifndef USER_DATA_A2
#define USER_DATA_A2 0
#endif
#ifndef USER_DATA_A3
#define USER_DATA_A3 0
#endif

#ifndef USER_DATA_B0
#define USER_DATA_B0 0
#endif
#ifndef USER_DATA_B1
#define USER_DATA_B1 0
#endif
#ifndef USER_DATA_B2
#define USER_DATA_B2 0
#endif
#ifndef USER_DATA_B3
#define USER_DATA_B3 0
#endif

#ifndef USER_DATA_C0
#define USER_DATA_C0 0
#endif
#ifndef USER_DATA_C1
#define USER_DATA_C1 0
#endif
#ifndef USER_DATA_C2
#define USER_DATA_C2 0
#endif
#ifndef USER_DATA_C3
#define USER_DATA_C3 0
#endif

#ifndef USER_DATA_D0
#define USER_DATA_D0 0
#endif
#ifndef USER_DATA_D1
#define USER_DATA_D1 0
#endif
#ifndef USER_DATA_D2
#define USER_DATA_D2 0
#endif
#ifndef USER_DATA_D3
#define USER_DATA_D3 0
#endif
justinclift commented 5 years ago

It's been ages since I looked at this personally, so I'm not 100% sure... but is there any chance it's the "motors do not move" problem mentioned here?

    https://github.com/synthetos/g2/wiki/troubleshooting#motors-do-not-move

geargh commented 5 years ago

I already read that thread. I have not such problem. Already x, y. z is 1. This is connection message.

{"ej":1}
{"sr":{"stat":true,"vel":true,"feed":true,"unit":true,"coor":true,"momo":true,"plan":true,"dist":true,"mpox":true,"mpoy":true,"mpoz":true,"mpoa":true,"posx":true,"posy":true,"posz":true,"posa":true}}
{"r":{"ej":1},"f":[1,0,10]}
{"sr":""}
{"qr":""}
{"sys":""}
{"x":""}
{"y":""}
{"z":""}
{"a":""}
{"r":{"sr":{"stat":3,"vel":0,"feed":1270,"unit":1,"coor":1,"momo":0,"plan":0,"dist":0,"mpox":0,"mpoy":0,"mpoz":0,"mpoa":0,"posx":0,"posy":0,"posz":0,"posa":0}},"f":[1,0,201]}
{"b":""}
{"c":""}
{"1":""}
{"2":""}
{"3":""}
{"4":""}
{"p1":""}
{"G54":""}
{"G55":""}
{"G56":""}
{"G57":""}
{"r":{"sr":{"stat":3,"vel":0,"feed":1270,"unit":1,"coor":1,"momo":0,"plan":0,"dist":0,"mpox":0,"mpoy":0,"mpoz":0,"mpoa":0,"posx":0,"posy":0,"posz":0,"posa":0}},"f":[1,0,11]}
{"r":{"qr":48},"f":[1,0,11]}
{"r":{"sys":{"fb":101.03,"fv":0.99,"fbs":"","fbc":"settings_shapeoko2.h","hp":"ArduinoDue","hv":"na","id":"0084-e739-18c6-9ce","jt":0.75,"ct":0.01,"zl":0,"sl":0,"lim":1,"saf":1,"m48":1,"froe":0,"fro":1,"troe":0,"tro":1,"mt":2,"tv":1,"ej":1,"jv":2,"qv":0,"sv":1,"si":250,"gpl":0,"gun":1,"gco":1,"gpa":2,"gdi":0}},"f":[1,0,12]}
{"G58":""}
{"G59":""}
{"r":{"x":{"am":1,"vm":50000,"fr":50000,"tn":0,"tm":500,"jm":5000,"jh":20000,"hi":1,"hd":0,"sv":3000,"lv":100,"lb":4,"zb":2}},"f":[1,0,10]}
{"r":{"y":{"am":1,"vm":50000,"fr":50000,"tn":0,"tm":500,"jm":5000,"jh":20000,"hi":3,"hd":0,"sv":3000,"lv":100,"lb":4,"zb":2}},"f":[1,0,10]}
{"r":{"z":{"am":1,"vm":1200,"fr":1200,"tn":-95,"tm":200,"jm":500,"jh":500,"hi":6,"hd":1,"sv":800,"lv":25,"lb":4,"zb":4}},"f":[1,0,10]}
{"r":{"a":{"am":3,"vm":77760,"fr":9720,"tn":0,"tm":10,"jm":648000,"jh":648000,"ra":5.30516,"hi":0,"hd":0,"sv":2000,"lv":2000,"lb":5,"zb":2}},"f":[1,0,10]}
{"r":{"b":{"am":3,"vm":77760,"fr":9720,"tn":0,"tm":10,"jm":648000,"jh":648000,"ra":5.30516,"hi":0,"hd":0,"sv":2000,"lv":2000,"lb":10,"zb":2}},"f":[1,0,10]}
{"r":{"c":{"am":0,"vm":450000,"fr":450000,"tn":-1,"tm":-1,"jm":45000,"jh":45000,"ra":57.29571,"hi":0,"hd":0,"sv":225000,"lv":45000,"lb":5,"zb":2}},"f":[1,0,10]}
{"r":{"1":{"ma":0,"sa":1.8,"tr":0,"su":inf,"mi":32,"po":0,"pm":2,"pl":0.5,"ep":0,"sp":0}},"f":[1,0,10]}
{"r":{"2":{"ma":1,"sa":1.8,"tr":0,"su":inf,"mi":32,"po":0,"pm":2,"pl":0.5,"ep":0,"sp":1}},"f":[1,0,10]}
{"r":{"3":{"ma":2,"sa":1.8,"tr":0,"su":inf,"mi":32,"po":0,"pm":2,"pl":0.5,"ep":0,"sp":1}},"f":[1,0,10]}
{"r":{"4":{"ma":6,"sa":1.8,"tr":0,"su":inf,"mi":32,"po":0,"pm":2,"pl":0.5,"ep":0,"sp":1}},"f":[1,0,10]}
{"r":{"p1":{"frq":100,"csl":0,"csh":1000,"cpl":0.13,"cph":0.17,"wsl":0,"wsh":1000,"wpl":0.13,"wph":0.17,"pof":0.1}},"f":[1,0,11]}
{"r":{"g54":{"x":0,"y":0,"z":0,"u":0,"v":0,"w":0,"a":0,"b":0,"c":0}},"f":[1,0,12]}
{"r":{"g55":{"x":0,"y":0,"z":0,"u":0,"v":0,"w":0,"a":0,"b":0,"c":0}},"f":[1,0,12]}
{"r":{"g56":{"x":0,"y":0,"z":0,"u":0,"v":0,"w":0,"a":0,"b":0,"c":0}},"f":[1,0,12]}
{"r":{"g57":{"x":0,"y":0,"z":0,"u":0,"v":0,"w":0,"a":0,"b":0,"c":0}},"f":[1,0,12]}
{"r":{"g58":{"x":0,"y":0,"z":0,"u":0,"v":0,"w":0,"a":0,"b":0,"c":0}},"f":[1,0,12]}
{"r":{"g59":{"x":0,"y":0,"z":0,"u":0,"v":0,"w":0,"a":0,"b":0,"c":0}},"f":[1,0,12]}
{"sr":{"stat":3}}
justinclift commented 5 years ago

Ok, no worries. Someone more experienced with g2 will probably need to help then. I'd like to, but my focus is on other things for now. :angel:

I've just adjusted the formatting of your cut-n-paste bits, hopefully making things easier for future people to read. :smile: