The long and short of it I have built a mill. I have achieved proper movement of all three axes and now need to accomplish spindle control and home\limit switches. It seems that I am missing something when using my current configuration with normally open switches. The switches are only normally open as they are industrial induction prox switches that run on 12v and I have used voltage dividers to bring the voltage signal down to 3.0 volts. I have tested using a jumper wire directly from the 3.3volt rail during a homing cycle to see if I can get any response. I am using the gshield settings when compiling. Below is the settings I am compiling with. Can anyone help me configure the homing settings? Thank you very much in advance for the help. Tinyg2 moves my machine much better than grbl and I would really like to use it.
// ***> NOTE: The init message must be a single line with no CRs or LFs
#define INIT_MESSAGE "Initializing configs to default settings"
//**** GLOBAL / GENERAL SETTINGS ******************************************************
// Machine configuration settings (See motors and axes for globals related to those objects)
#define JUNCTION_ACCELERATION 100000 // centripetal acceleration around corners
#define CHORDAL_TOLERANCE 0.01 // chordal accuracy for arc drawing (in mm)
#define SOFT_LIMIT_ENABLE 1 // 0=off, 1=on
#define HARD_LIMIT_ENABLE 1 // 0=off, 1=on
#define SAFETY_INTERLOCK_ENABLE 0 // 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 true
// Communications and reporting settings
#define TEXT_VERBOSITY TV_VERBOSE // one of: TV_SILENT, TV_VERBOSE
#define COMM_MODE JSON_MODE // one of: TEXT_MODE, JSON_MODE
#define XIO_EXPAND_CR false // serial IO settings (AVR only)
#define XIO_ENABLE_ECHO false
#define XIO_ENABLE_FLOW_CONTROL FLOW_CONTROL_XON // FLOW_CONTROL_OFF, FLOW_CONTROL_XON, FLOW_CONTROL_RTS
#define JSON_VERBOSITY JV_MESSAGES // one of: JV_SILENT, JV_FOOTER, JV_CONFIGS, JV_MESSAGES, JV_LINENUM, JV_VERBOSE
#define JSON_SYNTAX_MODE JSON_SYNTAX_STRICT // one of JSON_SYNTAX_RELAXED, JSON_SYNTAX_STRICT
#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 200 // 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"
// 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"
// Gcode startup defaults
#define GCODE_DEFAULT_UNITS INCHES // 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_MODE
// *** motor settings ************************************************************************************
#define MOTOR_POWER_MODE MOTOR_POWERED_IN_CYCLE // default motor power mode (see cmMotorPowerMode in stepper.h)
#define MOTOR_POWER_TIMEOUT 3600 // motor power timeout in seconds
#define MOTOR_POWER_LEVEL 1.000 // default motor power level 0.00 - 1.00 (ARM only)
#define M1_MOTOR_MAP AXIS_X // 1ma
#define M1_STEP_ANGLE 1.8 // 1sa
#define M1_TRAVEL_PER_REV 5 // 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
#define M1_POWER_LEVEL MOTOR_POWER_LEVEL // 1pl
#define M2_MOTOR_MAP AXIS_Y
#define M2_STEP_ANGLE 1.8
#define M2_TRAVEL_PER_REV 5
#define M2_MICROSTEPS 8
#define M2_POLARITY 1
#define M2_POWER_MODE MOTOR_POWER_MODE
#define M2_POWER_LEVEL MOTOR_POWER_LEVEL
#define M3_MOTOR_MAP AXIS_Z
#define M3_STEP_ANGLE 1.8
#define M3_TRAVEL_PER_REV 5
#define M3_MICROSTEPS 8
#define M3_POLARITY 1
#define M3_POWER_MODE MOTOR_POWER_MODE
#define M3_POWER_LEVEL MOTOR_POWER_LEVEL
#define M4_MOTOR_MAP AXIS_A // 1ma
#define M4_STEP_ANGLE 1.8 // 1sa
#define M4_TRAVEL_PER_REV 360 // 1tr degrees moved per motor rev
#define M4_MICROSTEPS 8 // 1mi
#define M4_POLARITY 0 // 1po
#define M4_POWER_MODE MOTOR_POWER_MODE // 1pm
#define M4_POWER_LEVEL MOTOR_POWER_LEVEL // 1mp
#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 8
#define M5_POLARITY 0
#define M5_POWER_MODE MOTOR_POWER_MODE
#define M5_POWER_LEVEL MOTOR_POWER_LEVEL
#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 8
#define M6_POLARITY 0
#define M6_POWER_MODE MOTOR_POWER_MODE
#define M6_POWER_LEVEL MOTOR_POWER_LEVEL
// *** axis settings ***
#define JERK_MAX 10000 // that's "20,000,000" mm/(min^3)
#define JUNCTION_DEVIATION_XY 0.0254 // larger is faster
#define JUNCTION_DEVIATION_Z 0.0254 // larger is faster
#define JUNCTION_DEVIATION_ABC 0.0254 // larger is faster
#define X_AXIS_MODE AXIS_STANDARD // xam see canonical_machine.h cmAxisMode for valid values
#define X_VELOCITY_MAX 2540 // 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 610 // xtm maximum travel - used by soft limits and homing
#define X_JERK_MAX JERK_MAX // xjm
#define X_JERK_HIGH_SPEED X_JERK_MAX // xjh
#define X_JUNCTION_DEVIATION JUNCTION_DEVIATION_XY // xjd
#define X_HOMING_INPUT 1 // xhi number of the input to ise for homing, or 0 for off
#define X_HOMING_DIR 0 // xhd 0 to search to minimum, 1 to search to maximum
#define X_SEARCH_VELOCITY 1000 // xsv move in negative direction
#define X_LATCH_VELOCITY 10 // xlv mm/min
#define X_LATCH_BACKOFF 5 // xlb mm
#define X_ZERO_BACKOFF 1 // xzb mm
#define Y_AXIS_MODE AXIS_STANDARD
#define Y_VELOCITY_MAX 2286
#define Y_FEEDRATE_MAX Y_VELOCITY_MAX
#define Y_TRAVEL_MIN 0
#define Y_TRAVEL_MAX 550
#define Y_JERK_MAX JERK_MAX
#define Y_JERK_HIGH_SPEED Y_JERK_MAX
#define Y_JUNCTION_DEVIATION JUNCTION_DEVIATION_XY
#define Y_HOMING_INPUT 4
#define Y_HOMING_DIR 1
#define Y_SEARCH_VELOCITY 1000
#define Y_LATCH_VELOCITY 10
#define Y_LATCH_BACKOFF 5
#define Y_ZERO_BACKOFF 1
#define Z_AXIS_MODE AXIS_STANDARD
#define Z_VELOCITY_MAX 2286
#define Z_FEEDRATE_MAX Z_VELOCITY_MAX
#define Z_TRAVEL_MIN 0
#define Z_TRAVEL_MAX 175
#define Z_JERK_MAX JERK_MAX
#define Z_JERK_HIGH_SPEED Z_JERK_MAX
#define Z_JUNCTION_DEVIATION JUNCTION_DEVIATION_Z
#define Z_HOMING_INPUT 6
#define Z_HOMING_DIR 1
#define Z_SEARCH_VELOCITY 1000
#define Z_LATCH_VELOCITY 10
#define Z_LATCH_BACKOFF 5
#define Z_ZERO_BACKOFF 1
// 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
*
* 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 (M1_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 // min/max the same means infinite, no limit
#define A_TRAVEL_MAX -1
#define A_JERK_MAX (X_JERK_MAX*(360/M1_TRAVEL_PER_REV))
#define A_JERK_HIGH_SPEED A_JERK_MAX
#define A_JUNCTION_DEVIATION JUNCTION_DEVIATION_ABC
#define A_HOMING_INPUT 0
#define A_HOMING_DIR 0
#define A_SEARCH_VELOCITY 600
#define A_LATCH_VELOCITY 100
#define A_LATCH_BACKOFF 5
#define A_ZERO_BACKOFF 2
#define B_AXIS_MODE AXIS_RADIUS
#define B_RADIUS (M1_TRAVEL_PER_REV/(2*3.14159628))
#define B_VELOCITY_MAX ((X_VELOCITY_MAX/M1_TRAVEL_PER_REV)*360)
#define B_FEEDRATE_MAX B_VELOCITY_MAX
#define B_TRAVEL_MIN -1
#define B_TRAVEL_MAX -1
#define B_JERK_MAX (X_JERK_MAX*(360/M1_TRAVEL_PER_REV))
#define B_JERK_HIGH_SPEED B_JERK_MAX
#define B_JUNCTION_DEVIATION JUNCTION_DEVIATION_ABC
#define B_HOMING_INPUT 0
#define B_HOMING_DIR 0
#define B_SEARCH_VELOCITY 600
#define B_LATCH_VELOCITY 100
#define B_LATCH_BACKOFF 5
#define B_ZERO_BACKOFF 2
#define C_AXIS_MODE AXIS_RADIUS
#define C_RADIUS (M1_TRAVEL_PER_REV/(2*3.14159628))
#define C_VELOCITY_MAX ((X_VELOCITY_MAX/M1_TRAVEL_PER_REV)*360)
#define C_FEEDRATE_MAX C_VELOCITY_MAX
#define C_TRAVEL_MIN -1
#define C_TRAVEL_MAX -1
#define C_JERK_MAX (X_JERK_MAX*(360/M1_TRAVEL_PER_REV))
#define C_JERK_HIGH_SPEED C_JERK_MAX
#define C_JUNCTION_DEVIATION JUNCTION_DEVIATION_ABC
#define C_HOMING_INPUT 0
#define C_HOMING_DIR 0
#define C_SEARCH_VELOCITY 600
#define C_LATCH_VELOCITY 100
#define C_LATCH_BACKOFF 5
#define C_ZERO_BACKOFF 2
//*** Input / output settings ***
/*
INPUT_MODE_DISABLED
INPUT_ACTIVE_LOW aka NORMALLY_OPEN
INPUT_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_OPEN
#define DI1_ACTION INPUT_ACTION_NONE
#define DI1_FUNCTION INPUT_FUNCTION_NONE
// Xmax
#define DI2_MODE NORMALLY_OPEN
#define DI2_ACTION INPUT_ACTION_NONE
#define DI2_FUNCTION INPUT_FUNCTION_NONE
// Ymin
#define DI3_MODE NORMALLY_OPEN
#define DI3_ACTION INPUT_ACTION_NONE
#define DI3_FUNCTION INPUT_FUNCTION_NONE
// Ymax
#define DI4_MODE NORMALLY_OPEN
#define DI4_ACTION INPUT_ACTION_NONE
#define DI4_FUNCTION INPUT_FUNCTION_NONE
// Zmin
#define DI5_MODE NORMALLY_OPEN // Z proble
#define DI5_ACTION INPUT_ACTION_NONE
#define DI5_FUNCTION INPUT_FUNCTION_NONE
// Zmax
#define DI6_MODE NORMALLY_OPEN
#define DI6_ACTION INPUT_ACTION_NONE
#define DI6_FUNCTION INPUT_FUNCTION_NONE
// Amin
#define DI7_MODE NORMALLY_OPEN
#define DI7_ACTION INPUT_ACTION_NONE
#define DI7_FUNCTION INPUT_FUNCTION_NONE
// Amax
#define DI8_MODE NORMALLY_OPEN
#define DI8_ACTION INPUT_ACTION_NONE
#define DI8_FUNCTION INPUT_FUNCTION_NONE
// Safety line
#define DI9_MODE NORMALLY_OPEN
#define DI9_ACTION INPUT_ACTION_NONE
#define DI9_FUNCTION INPUT_FUNCTION_NONE
/*** Handle optional modules that may not be in every machine ***/
#define P1_PWM_FREQUENCY 100 // in Hz
#define P1_CW_SPEED_LO 2000 // in RPM (arbitrary units)
#define P1_CW_SPEED_HI 24000
#define P1_CW_PHASE_LO 0.13 // phase [0..1]
#define P1_CW_PHASE_HI 0.17
#define P1_CCW_SPEED_LO 0
#define P1_CCW_SPEED_HI 0
#define P1_CCW_PHASE_LO 0.1
#define P1_CCW_PHASE_HI 0.1
#define P1_PWM_PHASE_OFF 0.1
// *** DEFAULT COORDINATE SYSTEM OFFSETS ***
#define G54_X_OFFSET 0 // G54 is often set to all zeros
#define G54_Y_OFFSET 0
#define G54_Z_OFFSET 0
#define G54_A_OFFSET 0
#define G54_B_OFFSET 0
#define G54_C_OFFSET 0
#define G55_X_OFFSET 610/2 // use (X_TRAVEL_MAX/2) to set g55 to middle of table
#define G55_Y_OFFSET 550/2 // use (Y_TRAVEL_MAX/2) to set g55 to middle of table
#define G55_Z_OFFSET 175
#define G55_A_OFFSET 0
#define G55_B_OFFSET 0
#define G55_C_OFFSET 0
#define G56_X_OFFSET 0
#define G56_Y_OFFSET 0
#define G56_Z_OFFSET 0
#define G56_A_OFFSET 0
#define G56_B_OFFSET 0
#define G56_C_OFFSET 0
#define G57_X_OFFSET 0
#define G57_Y_OFFSET 0
#define G57_Z_OFFSET 0
#define G57_A_OFFSET 0
#define G57_B_OFFSET 0
#define G57_C_OFFSET 0
#define G58_X_OFFSET 0
#define G58_Y_OFFSET 0
#define G58_Z_OFFSET 0
#define G58_A_OFFSET 0
#define G58_B_OFFSET 0
#define G58_C_OFFSET 0
#define G59_X_OFFSET 0
#define G59_Y_OFFSET 0
#define G59_Z_OFFSET 0
#define G59_A_OFFSET 0
#define G59_B_OFFSET 0
#define G59_C_OFFSET 0
/*** User-Defined Data Defaults ***/
#define USER_DATA_A0 0
#define USER_DATA_A1 0
#define USER_DATA_A2 0
#define USER_DATA_A3 0
#define USER_DATA_B0 0
#define USER_DATA_B1 0
#define USER_DATA_B2 0
#define USER_DATA_B3 0
#define USER_DATA_C0 0
#define USER_DATA_C1 0
#define USER_DATA_C2 0
#define USER_DATA_C3 0
#define USER_DATA_D0 0
#define USER_DATA_D1 0
#define USER_DATA_D2 0
#define USER_DATA_D3 0