So I figured out my problem with serial I think. Serial 3 needed a capitol S, after I did that the error went away. the problem I am having now is that when I try to home or move the motors the X and Y motors just kind of click and don't move while the Z motor does nothing. the way I have the serial connections to the motors is 1 wire going from serial 3(D14 on DUE) to both X and Y 2209 PDN, I am using jumpers to set slave address, Z and EX0 are on simple drivers. is that the correct way to wire them? or do I need to connect both tx3 and rx3 (D14 and D15 on DUE) to PDN with a resistor on one of the wires. I see that on some forums but I also see on rep rap forum it can be done with one wire and no resistor.
this my configuration.h and then configuration_io.h
// The following variables are required early to decide on the right modules.
#define NUM_TOOLS 2
#define NUM_EXTRUDER 2
#define NUM_SERVOS 1 // Number of serves available
#define MOTHERBOARD 404
#define EEPROM_MODE 3
#define RFSERIAL Serial
//#define EXTERNALSERIAL use Arduino serial library instead of build in. Requires more RAM, has only 63 byte input buffer.
// Uncomment the following line if you are using Arduino compatible firmware made for Arduino version earlier than 1.0
// If it is incompatible you will get compiler errors about write functions not being compatible!
//#define COMPAT_PRE1
#define BLUETOOTH_SERIAL 101
#define BLUETOOTH_BAUD 115200
#define WAITING_IDENTIFIER "wait"
#define JSON_OUTPUT 1
#define FEATURE_WATCHDOG 1
#define FEATURE_RETRACTION 1
#define NUM_AXES 4 // X,Y,Z and E for extruder A,B,C would be 5,6,7
// #define STEPPER_FREQUENCY 153000 // Maximum stepper frequency.
#define STEPPER_FREQUENCY 100000 // Maximum stepper frequency.
#define PREPARE_FREQUENCY 1000 // Update frequency for new blocks. Must be higher than PREPARE_FREQUENCY.
#define BLOCK_FREQUENCY 500 // Number of blocks with constant stepper rate per second.
#define VELOCITY_PROFILE 2 // 0 = linear, 1 = cubic, 2 = quintic velocity shape
#define Z_SPEED 10 // Z positioning speed
#define XY_SPEED 150 // XY positioning speed for normal operations
#define E_SPEED 2 // Extrusion speed
#define G0_FEEDRATE 0 // Speed for G0 moves. Independent from set F value! Set 0 to use F value.
#define MAX_ROOM_TEMPERATURE 15 // No heating below this temperature!
#define TEMPERATURE_CONTROL_RANGE 20 // Start with controlling if temperature is +/- this value to target temperature
#define HOST_RESCUE 1 // Enable host rescue help system
//#define DEBUG_RESCUE // Uncomment to add power loss entry in debug menu while printing
#define POWERLOSS_LEVEL 2 // How much time do we have on powerloss, 0 = no move, 1 = short just raise Z, 2 = long full park move
#define POWERLOSS_UP 5 // How much to move up if mode 1 is active
#define Z_PROBE_TYPE 1 // 0 = no z probe, 1 = default z probe, 2 = Nozzle as probe
#define Z_PROBE_BORDER 2 // Safety border to ensure position is allowed
#define Z_PROBE_TEMPERATURE 170 // Temperature for type 2
// 0 = Cartesian, 1 = CoreXYZ, 2 = delta, 3 = Dual X-Axis
#define PRINTER_TYPE 1
// steps to include as babysteps per 1/BLOCK_FREQUENCY seconds. Must be lower than STEPPER_FREQUENCY/BLOCK_FREQUENCY and be low enough to not lose steps.
#define BABYSTEPS_PER_BLOCK </div>
{ 10, 10, 10 }
// If all axis end stops are hardware based we can skip the time consuming tests each step
#define NO_SOFTWARE_AXIS_ENDSTOPS
// Normally only a delta has motor end stops required. Normally you trigger using axis endstops.
#define NO_MOTOR_ENDSTOPS
#define FEATURE_CONTROLLER 0
// Use more memory to speedup display updates
#define DISPLAY_FULL_BUFFER 1
// Direction 1 or -1
// #define ENCODER_DIRECTION -1
// Encoder speed 0 = fastest, 1 or 2 = slowest - set so 1 click is one menu move
// Default is 2 if not set by controller. Use only to fix wrong setting
#define ENCODER_SPEED 1
// Dynamically increase the speed at which we step through the menus/change values.
// Set ENCODER_MAX_REPEAT_STEPS to 1 to disable this. EEPROM/Runtime configurable. (Set to 0 to compile out entirely for extra RAM)
#define ENCODER_MAX_REPEAT_STEPS 5 // Max. extra steps we can gain.
#define ENCODER_MAX_REPEAT_TIME_MS 40 // Max. time we have before our extra steps reset.
#define ENCODER_MIN_REPEAT_TIME_MS 15 // At this repeat rate we accumulate to the max step speed.
#define ENCODER_APPLY_REPEAT_STEPS_IN_MENUS 1 // Set to 0 to only affect changing config values.
// Default materials in temperature menus. First value is extruder temp, then bed and chamber temperature. 0 = do not show.
#define DEFAULT_MATERIALS </div>
DEFAULT_MATERIAL(Com::tMatPLA, 215, 60, 0) </div>
DEFAULT_MATERIAL(Com::tMatPET, 230, 55, 0) </div>
DEFAULT_MATERIAL(Com::tMatASA, 260, 105, 0) </div>
DEFAULT_MATERIAL(Com::tMatPC, 275, 110, 0) </div>
DEFAULT_MATERIAL(Com::tMatABS, 255, 100, 0) </div>
DEFAULT_MATERIAL(Com::tMatHIPS, 220, 100, 0) </div>
DEFAULT_MATERIAL(Com::tMatPP, 254, 100, 0) </div><div> DEFAULT_MATERIAL(Com::tMatFLEX, 240, 50, 0)
/* Ratios for core xyz. First index denotes motor and second axis.
For each motor you can set the ratio of x,y,z position that adds
to the position. 0 = no contribution. /
// X motor = x + y
#define COREXYZ_X_X 1
#define COREXYZ_X_Y 1
#define COREXYZ_X_Z 0
// Y motor = x - y
#define COREXYZ_Y_X 1
#define COREXYZ_Y_Y -1
#define COREXYZ_Y_Z 0
// Z motor = z
#define COREXYZ_Z_X 0
#define COREXYZ_Z_Y 0
#define COREXYZ_Z_Z 1
// Special geometry definition if printer type is delta
/* =========== Parameter essential for delta calibration ===================
C, Y-Axis
| || Carriage horizontal offset
| | ------------------------------------------
|_________ X-axis | \ |
/ \ | \ DELTA_DIAGONAL (length) Each move this Rod Height
/ \ \ is calculated
/ \ \ Carriage is at printer center! |
A B _____/--------------------------------
|--| End effector horizontal offset (recommend set it to 0)
|----| DELTA_HORIZONTAL_RADIUS (Horizontal rod pivot to pivot measure)
Column angles are measured from X-axis counterclockwise
"Standard" positions: alpha_A = 210, alpha_B = 330, alpha_C = 90
*/
#define DELTA_DIAGONAL 350.0f
#define DELTA_HORIZONTAL_RADIUS 210.0f
#define DELTA_PRINT_RADIUS 200.0f
#define DELTA_ANGLE_A 210.0f
#define DELTA_ANGLE_B 330.0f
#define DELTA_ANGLE_C 90.0f
#define DELTA_CORRECTION_A 0.0f
#define DELTA_CORRECTION_B 0.0f
#define DELTA_CORRECTION_C 0.0f
#define DELTA_RADIUS_CORRECTION_A 0.0f
#define DELTA_RADIUS_CORRECTION_B 0.0f
#define DELTA_RADIUS_CORRECTION_C 0.0f
#define DELTA_HOME_OFFSET_A 0.0f
#define DELTA_HOME_OFFSET_B 0.0f
#define DELTA_HOME_OFFSET_C 0.0f
#define DISABLE_X 0
#define DISABLE_Y 0
#define DISABLE_Z 0
#define FEATURE_AXISCOMP 1
#define AXISCOMP_TANXY 0
#define AXISCOMP_TANYZ 0
#define AXISCOMP_TANXZ 0
// Next 7 lines are required to make the following work, do not change!
#include "boards/pins.h"
#undef IO_TARGET
#define IO_TARGET 4
#undef CONFIG_EXTERN
#define CONFIG_EXTERN extern
#include "drivers/drivers.h"
#include "io/redefine.h"
// Define ZProbe by referencing an endstop defined
CONFIG_VARIABLE_EQ(EndstopDriver, *ZProbe, &endstopZMin)
/** Axes are homed in order of priority (0..10) if homing direction is not 0. /
#define X_HOME_PRIORITY 0
#define Y_HOME_PRIORITY 1
#define Z_HOME_PRIORITY 2
// All fans in this list list become controllable with M106/M107
// by selecteing the fan number with P0..P<NUM_FANS-1>
#define NUM_FANS 1
#define FAN_LIST </div><div> { &Fan1PWM }
#define NUM_HEATED_BEDS 1
#define HEATED_BED_LIST </div><div> { &HeatedBed1 }
#define NUM_HEATED_CHAMBERS 0
#define HEATED_CHAMBER_LIST </div><div> { }
#define SERVO_LIST </div><div> { &Servo1 }
#define TOOLS </div><div> { &ToolExtruder1, &ToolExtruder2 }
// Heaters enumerate all heaters, so we can loop over them
// or call commands on a specific heater number.
// Suggested order: extruder heaters, heated beds, heated chambers, additional heaters
#define NUM_HEATERS 3
#define HEATERS </div><div> { &HeaterExtruder1, &HeaterExtruder2, &HeatedBed1 }
// Array to call motor related commands like microstepping/current if supported.
// Id's start at 0 and depend on position in this array.
#define NUM_MOTORS 5
#define MOTORS </div><div> { &XMotor, &YMotor, &ZMotor }
#define MOTOR_NAMES </div><div> { PSTR("X"), PSTR("Y"), PSTR("Z") }
// Some common settings for Trinamic driver settings
/
Chopper timing is an array with
{toff, hend, hstrt}
See TMC datasheets for more details. There are some predefined values to get you started:
CHOPPER_TIMING_DEFAULT_12V = { 3, -1, 1 }
CHOPPER_TIMING_DEFAULT_19V = { 4, 1, 1 }
CHOPPER_TIMING_DEFAULT_24V = { 4, 2, 1 }
CHOPPER_TIMING_DEFAULT_36V = { 5, 2, 4 }
CHOPPER_TIMING_PRUSAMK3_24V = { 3, -2, 6 }
*/
#define TMC_CHOPPER_TIMING CHOPPER_TIMING_DEFAULT_12V
// true = interpolate to 256 microsteps for smoother motion
#define TMC_INTERPOLATE true
// Current used when motor stands still
#define TMC_HOLD_MULTIPLIER 0.5
// Reduce current on over temperature warnings by x milli ampere, 0 = disable
#define TMC_CURRENT_STEP_DOWN 50
// Define which data should be stored to eeprom
#define STORE_MOTOR_MICROSTEPPING 1
#define STORE_MOTOR_CURRENT 1
#define STORE_MOTOR_HYBRID_TRESHOLD 1
#define STORE_MOTOR_STEALTH 1
#define STORE_MOTOR_STALL_SENSITIVITY 1
#define X_HOME_DIR -1
#define Y_HOME_DIR 1
#define Z_HOME_DIR -1
#define X_MAX_LENGTH 300
#define Y_MAX_LENGTH 300
#define Z_MAX_LENGTH 300
#define X_MIN_POS 0
#define Y_MIN_POS 0
#define Z_MIN_POS 0
#define BED_X_MIN X_MIN_POS
#define BED_X_MAX (X_MIN_POS + X_MAX_LENGTH)
#define BED_Y_MIN Y_MIN_POS
#define BED_Y_MAX (Y_MIN_POS + Y_MAX_LENGTH)
// Park position used when pausing from firmware side
#if PRINTER_TYPE == 2
#define PARK_POSITION_X (0)
#define PARK_POSITION_Y (70)
#else
#define PARK_POSITION_X (X_MIN_POS)
#define PARK_POSITION_Y (Y_MIN_POS + Y_MAX_LENGTH)
#endif
#define PARK_POSITION_Z_RAISE 10
#define MAX_ACCELERATION_UNITS_PER_SQ_SECOND_X 1100
#define MAX_ACCELERATION_UNITS_PER_SQ_SECOND_Y 1100
#define MAX_ACCELERATION_UNITS_PER_SQ_SECOND_Z 100
#define MAX_TRAVEL_ACCELERATION_UNITS_PER_SQ_SECOND_X 1100
#define MAX_TRAVEL_ACCELERATION_UNITS_PER_SQ_SECOND_Y 1100
#define MAX_TRAVEL_ACCELERATION_UNITS_PER_SQ_SECOND_Z 100
#define XAXIS_STEPS_PER_MM 160
#define YAXIS_STEPS_PER_MM 160
#define ZAXIS_STEPS_PER_MM 400
// ################## EDIT THESE SETTINGS MANUALLY ################
// ################ END MANUAL SETTINGS ##########################
#undef Y_MIN_PIN
#define Y_MIN_PIN -1
#undef X_MAX_PIN
#define X_MAX_PIN -1
#undef Y_MAX_PIN
#define Y_MAX_PIN ORIG_Y_MIN_PIN
#undef Z_MAX_PIN
#define Z_MAX_PIN -1
#define KILL_IF_SENSOR_DEFECT 0
#define RETRACT_ON_PAUSE 2
#define PAUSE_START_COMMANDS ""
#define PAUSE_END_COMMANDS ""
#define AUTORETRACT_ENABLED 0
#define RETRACTION_LENGTH 3
#define RETRACTION_LONG_LENGTH 13
#define RETRACTION_SPEED 40
#define RETRACTION_Z_LIFT 0
#define RETRACTION_UNDO_EXTRA_LENGTH 0
#define RETRACTION_UNDO_EXTRA_LONG_LENGTH 0
#define RETRACTION_UNDO_SPEED 25
#define FILAMENTCHANGE_X_POS 5
#define FILAMENTCHANGE_Y_POS 5
#define FILAMENTCHANGE_Z_ADD 2
#define FILAMENTCHANGE_REHOME 1
#define FILAMENTCHANGE_SHORTRETRACT 2.5
#define FILAMENTCHANGE_LONGRETRACT 50
#define JAM_METHOD 1
#define JAM_ACTION 1
#define RETRACT_DURING_HEATUP true
#define PID_CONTROL_RANGE 20
#define EXTRUDE_MAXLENGTH 160
// ############# Heated bed configuration ########################
#define SKIP_M190_IF_WITHIN 5
#define MIN_EXTRUDER_TEMP 150
#define MILLISECONDS_PREHEAT_TIME 30000
// ################ Endstop configuration #####################
#define DOOR_PIN -1
#define DOOR_PULLUP 1
#define DOOR_INVERTING 1
#define ENDSTOP_X_BACK_MOVE 3
#define ENDSTOP_Y_BACK_MOVE 3
#define ENDSTOP_Z_BACK_MOVE 1
#define ENDSTOP_X_RETEST_REDUCTION_FACTOR 2
#define ENDSTOP_Y_RETEST_REDUCTION_FACTOR 2
#define ENDSTOP_Z_RETEST_REDUCTION_FACTOR 2
#define ENDSTOP_X_BACK_ON_HOME 0.5
#define ENDSTOP_Y_BACK_ON_HOME 0.5
#define ENDSTOP_Z_BACK_ON_HOME 0
#define ALWAYS_CHECK_ENDSTOPS 1
#define MOVE_X_WHEN_HOMED 0
#define MOVE_Y_WHEN_HOMED 0
#define MOVE_Z_WHEN_HOMED 0
// ################# XYZ movements ###################
#define PREVENT_Z_DISABLE_ON_STEPPER_TIMEOUT 1
// ##########################################################################################
// ## Movement settings ##
// ##########################################################################################
#define FEATURE_BABYSTEPPING 1
#define BABYSTEP_MULTIPLICATOR 64
// Delta settings
#define DELTA_HOME_ON_POWER 0
#define STEPPER_INACTIVE_TIME 360L
#define MAX_INACTIVE_TIME 1200L
#define MAX_FEEDRATE_X 250
#define MAX_FEEDRATE_Y 250
#define MAX_FEEDRATE_Z 20
#define HOMING_FEEDRATE_X 80
#define HOMING_FEEDRATE_Y 80
#define HOMING_FEEDRATE_Z 10
// Raise z before homing (1)
#define ZHOME_PRE_RAISE 1
// How much mm should z raise before homing
#define ZHOME_PRE_RAISE_DISTANCE 2
#define ZHOME_MIN_TEMPERATURE 0
#define ZHOME_HEAT_ALL 0
// Height in mm after homing.
#define ZHOME_HEIGHT 10
// Home Z at a fixed xy position (1)
#define FIXED_Z_HOME_POSITION 1
#define ZHOME_X_POS 140
#define ZHOME_Y_POS 45
// Raise extruders before switching tools. Used to prevent touching objects while switching.
#define RAISE_Z_ON_TOOLCHANGE 2
#define ENABLE_BACKLASH_COMPENSATION 0
#define X_BACKLASH 0
#define Y_BACKLASH 0
#define Z_BACKLASH 0
#define MAX_JERK 5
#define MAX_ZJERK 0.3
#define PRINTLINE_CACHE_SIZE 32
#define MOVE_CACHE_LOW 10
#define EXTRUDER_SWITCH_XY_SPEED 100
#define FEATURE_DITTO_PRINTING 0
// ################# Misc. settings ##################
#define BAUDRATE 115200
#define ENABLE_POWER_ON_STARTUP 1
#define POWER_INVERTING 0
#define KILL_METHOD 1
#define ACK_WITH_LINENUMBER 1
#define KEEP_ALIVE_INTERVAL 2000
#define ECHO_ON_EXECUTE 1
#undef PS_ON_PIN
#define PS_ON_PIN -1
// #################### Z-Probing #####################
#define Z_PROBE_COATING 0
#define Z_PROBE_Z_OFFSET_MODE 1
#define UI_BED_COATING 1
#define EXTRUDER_IS_Z_PROBE 1
#define Z_PROBE_DISABLE_HEATERS 1
#define Z_PROBE_BED_DISTANCE 3
#define Z_PROBE_X_OFFSET 0
#define Z_PROBE_Y_OFFSET 0
#define Z_PROBE_SPEED 2
#define Z_PROBE_SWITCHING_DISTANCE 1
// How often should we test a position 1 .. x. Averages result over all tests.
#define Z_PROBE_REPETITIONS 1
// 0 = use average, 1 = use middle value after ordering z
#define Z_PROBE_USE_MEDIAN 1
// Nozzle distance to bed when z probe triggers
#define Z_PROBE_HEIGHT -0.15
// Delay in ms before we go down again. For BLTouch so signal can disable
#define Z_PROBE_DELAY 0
#define Z_PROBE_START_SCRIPT ""
#define Z_PROBE_FINISHED_SCRIPT ""
#define Z_PROBE_RUN_AFTER_EVERY_PROBE ""
#define Z_PROBE_REQUIRES_HEATING 1
#define Z_PROBE_MIN_TEMPERATURE 150
#define Z_PROBE_PAUSE_HEATERS 0 // Pause all heaters when probing to reduce EMI artifacts
#define Z_PROBE_PAUSE_BED_REHEAT_TEMP 5 // Stop and reheat the bed if we leave the target temp by this much.
// How to correct rotated beds
// 0 = Software side by rotating coordinates
// 1 = Move bed physically using 2 motors
#define LEVELING_CORRECTOR 0
// Bed fixture coordinates for motor leveling
#define LC_P1_X 55
#define LC_P1_Y 130
#define LC_P2_X 137
#define LC_P2_Y 45
#define LC_P3_X 137
#define LC_P3_Y 210
#define LC_P2_MOTOR AL1Motor
#define LC_P3_MOTOR AL2Motor
#define LC_STEPS_PER_MM 3382
#define LC_Z_SPEED 0.2
// > 0 will move bed down and wait for removal (heater removed) and will pause another LC_WAIT_BED_REMOVE seconds
#define LC_WAIT_BED_REMOVE 2
// Uncomment to limit correction per autoleveling iteration. Value is the max. correction in mm
// #define LIMIT_MOTORIZED_CORRECTION 0.5
// Leveling method
// 0 = none, 3 = 3 points, 1 = grid, 2 = 4 point symmetric
#define LEVELING_METHOD 2
#define L_P1_X 60
#define L_P1_Y 130
#define L_P2_X 137
#define L_P2_Y 45
#define L_P3_X 137
#define L_P3_Y 210
#define MAX_GRID_SIZE 5 // Maximum grid size allocation in memory, imported grid can be smaller
#define ENABLE_BUMP_CORRECTION 1 // CPU intensive, so only activate if required
#define BUMP_CORRECTION_START_DEGRADE 0.5 // Until this height we correct 100%
#define BUMP_CORRECTION_END_HEIGHT 2 // From this height on we do no correction
#define BUMP_LIMIT_TO 0 // Maximum allowed correction up/down, <= 0 off.
#ifndef SDSUPPORT // Some boards have sd support on board. These define the values already in pins.h
#define SDSUPPORT 1
#undef SDCARDDETECT
#define SDCARDDETECT ORIG_SDCARDDETECT
#define SDCARDDETECTINVERTED 0
#endif
#define SD_EXTENDED_DIR 1 /** Show extended directory including file length. Don't use this with Pronterface! /
#define SD_RUN_ON_STOP ""
#define SD_STOP_HEATER_AND_MOTORS_ON_STOP 1
#define ARC_SUPPORT 0
#define FEATURE_MEMORY_POSITION 1
#define FEATURE_CHECKSUM_FORCED 0
#define UI_PRINTER_NAME "Testsetup"
#define UI_PRINTER_COMPANY "Repetier"
#define UI_PAGES_DURATION 4000
#define UI_SPEEDDEPENDENT_POSITIONING 0
#define UI_DISABLE_AUTO_PAGESWITCH 1
#define UI_AUTORETURN_TO_MENU_AFTER 30000
#define FEATURE_UI_KEYS 0
#define UI_ENCODER_SPEED 2
#define UI_REVERSE_ENCODER 0
#define UI_KEY_BOUNCETIME 10
#define UI_KEY_FIRST_REPEAT 500
#define UI_KEY_REDUCE_REPEAT 50
#define UI_KEY_MIN_REPEAT 50
#define CASE_LIGHTS_PIN 25
#define CASE_LIGHT_DEFAULT_ON 1
#define UI_START_SCREEN_DELAY 2000
//#define CUSTOM_EVENTS
CONFIGURATION_IO.H
<div><div>/* Define motor pins here. Each motor needs a setp, dir and enable pin. /
ENDSTOP_NONE(endstopNone)
// For use when no output is wanted, but possible
IO_OUTPUT_FAKE(fakeOut)
// X Motor
IO_OUTPUT(IOX1Step, ORIG_X_STEP_PIN)
IO_OUTPUT_INVERTED(IOX1Dir, ORIG_X_DIR_PIN)
IO_OUTPUT(IOX1Enable, ORIG_X_ENABLE_PIN)
// Y Motor
IO_OUTPUT(IOY1Step, ORIG_Y_STEP_PIN)
IO_OUTPUT(IOY1Dir, ORIG_Y_DIR_PIN)
IO_OUTPUT(IOY1Enable, ORIG_Y_ENABLE_PIN)
// Z Motor
IO_OUTPUT(IOZ1Step, ORIG_Z_STEP_PIN)
IO_OUTPUT_INVERTED(IOZ1Dir, ORIG_Z_DIR_PIN)
IO_OUTPUT(IOZ1Enable, ORIG_Z_ENABLE_PIN)
// E0 Motor
IO_OUTPUT(IOE1Step, ORIG_E0_STEP_PIN)
IO_OUTPUT_INVERTED(IOE1Dir, ORIG_E0_DIR_PIN)
IO_OUTPUT_INVERTED(IOE1Enable, ORIG_E0_ENABLE_PIN)
// E1 Motor
IO_OUTPUT(IOE2Step, ORIG_E1_STEP_PIN)
IO_OUTPUT(IOE2Dir, ORIG_E1_DIR_PIN)
IO_OUTPUT_INVERTED(IOE2Enable, ORIG_E1_ENABLE_PIN)
// Autolevel Motor 1
IO_OUTPUT(IOAL1Step, 51)
IO_OUTPUT(IOAL1Dir, 53)
IO_OUTPUT_INVERTED(IOAL1Enable, 49)
// Autolevel Motor 1
IO_OUTPUT(IOAL2Step, 39)
IO_OUTPUT(IOAL2Dir, 13)
IO_OUTPUT_INVERTED(IOAL2Enable, 40)
// Servo output
IO_OUTPUT(Servo1Pin, 5)
// Define your endstops inputs
IO_INPUT_PULLUP(IOEndstopXMin, ORIG_X_MIN_PIN)
IO_INPUT_PULLUP(IOEndstopYMin, ORIG_Y_MIN_PIN)
// Assume we're using a BLTouch by default.
//IO_INPUT_PULLUP(IOEndstopZProbe, BLTOUCH_Z_MIN)
IO_INPUT_PULLUP(IOEndstopZMax, ORIG_Z_MAX_PIN)
IO_INPUT(IOJam1, 35)
IO_INPUT(IOJam2, 33)
// Controller input pins
#if defined(UI_ENCODER_CLICK) && UI_ENCODER_CLICK >= 0
IO_INPUT_INVERTED_PULLUP(ControllerClick, UI_ENCODER_CLICK)
#else
IO_INPUT_DUMMY(ControllerClick, false)
#endif
#if defined(UI_ENCODER_A) && UI_ENCODER_A >= 0
IO_INPUT_INVERTED_PULLUP(ControllerEncA, UI_ENCODER_A)
#else
IO_INPUT_DUMMY(ControllerEncA, false)
#endif
#if defined(UI_ENCODER_B) && UI_ENCODER_B >= 0
IO_INPUT_INVERTED_PULLUP(ControllerEncB, UI_ENCODER_B)
#else
IO_INPUT_DUMMY(ControllerEncB, false)
#endif
#if defined(UI_BACK_PIN) && UI_BACK_PIN >= 0
IO_INPUT_PULLUP(ControllerBack, UI_BACK_PIN)
#else
IO_INPUT_DUMMY(ControllerBack, false)
#endif
#if defined(UI_RESET_PIN) && UI_RESET_PIN >= 0
IO_INPUT_PULLUP(ControllerReset, UI_RESET_PIN)
#else
IO_INPUT_DUMMY(ControllerReset, false)
#endif
// Define our endstops solutions
// You need to define all min and max endstops for all
// axes except E even if you have none!
ENDSTOP_SWITCH_HW(endstopXMin, IOEndstopXMin, X_AXIS, false)
ENDSTOP_SWITCH_HW(endstopYMin, IOEndstopYMin, Y_AXIS, false)
ENDSTOP_SWITCH_HW(endstopZMax, IOEndstopZMax, Z_AXIS, true)
ENDSTOP_NONE(endstopZMin)
//ENDSTOP_SWITCH_HW(endstopZProbe, IOEndstopZProbe, ZPROBE_AXIS, false)
ENDSTOP_NONE(endstopXMax)
ENDSTOP_NONE(endstopYMax)
// Define fans
IO_OUTPUT(IOFan1, ORIG_FAN_PIN)
IO_PWM_SOFTWARE(Fan1NoKSPWM, IOFan1, 0)
// IO_PWM_HARDWARE(Fan1PWM, 37,5000)
// IO_PDM_SOFTWARE(Fan1NoKSPWM, IOFan1) // alternative to PWM signals
IO_PWM_KICKSTART(Fan1PWM, Fan1NoKSPWM, 20, 85)
// For debugging - reports new values and then calls real pwm
// IO_PWM_REPORT(Fan1Report, Fan1PWM)
// Define temperature sensors
// Typically they require an analog input (12 bit) so define
// them first.
IO_ANALOG_INPUT(IOAnalogBed1, TEMP_1_PIN, 5)
IO_ANALOG_INPUT(IOAnalogExt1, TEMP_0_PIN, 5)
IO_ANALOG_INPUT(IOAnalogExt2, TEMP_2_PIN, 5)
// Need a conversion table for epcos NTC
IO_TEMP_TABLE_NTC(TempTableEpcos, Epcos_B57560G0107F000)
// Now create the temperature inputs
IO_TEMPERATURE_TABLE(TempBed1, IOAnalogBed1, TempTableEpcos)
IO_TEMPERATURE_TABLE(TempExt1, IOAnalogExt1, TempTableEpcos)
IO_TEMPERATURE_TABLE(TempExt2, IOAnalogExt2, TempTableEpcos)
// Use PWM outputs to heat. If using hardware PWM make sure
// that the selected pin can be used as hardware pwm otherwise
// select a software pwm model whcih works on all pins.
#if MOTHERBOARD == 405
IO_PWM_HARDWARE(PWMExtruder1, HEATER_0_PIN, 1000)
IO_PWM_HARDWARE(PWMExtruder2, HEATER_2_PIN, 1000)
IO_PWM_HARDWARE(PWMBed1, HEATER_1_PIN, 1000)
#else
IO_OUTPUT(IOExtr1, HEATER_0_PIN)
IO_OUTPUT(IOExtr2, HEATER_2_PIN)
IO_OUTPUT(IOBed1, HEATER_1_PIN)
IO_PWM_SOFTWARE(PWMExtruder1, IOExtr1, 1)
IO_PWM_SOFTWARE(PWMExtruder2, IOExtr2, 1)
IO_PWM_SOFTWARE(PWMBed1, IOBed1, 1)
#endif
// IO_OUTPUT(IOCooler1, FAN2_PIN)
// IO_PWM_SOFTWARE(PWMCoolerExt1, FAN2_PIN, 0)
// Define all stepper motors used
STEPPER_TMC2209_HW_UART(XMotor, IOX1Step, IOX1Dir, IOX1Enable, Serial3, 0.11, 32, 900, true, 80, 0, 60, 12500000, endstopNone, endstopNone)
STEPPER_TMC2209_HW_UART(YMotor, IOY1Step, IOY1Dir, IOY1Enable, Serial3, 0.11, 32, 900, true, 80, 1, 60, 12500000, endstopNone, endstopNone)
STEPPER_SIMPLE(ZMotor, IOZ1Step, IOZ1Dir, IOZ1Enable, endstopNone, endstopNone)
STEPPER_SIMPLE(E1MotorBase, IOE1Step, IOE1Dir, IOE1Enable, endstopNone, endstopNone)
STEPPER_OBSERVEABLE(E1Motor, E1MotorBase)
STEPPER_SIMPLE(E2MotorBase, IOE2Step, IOE2Dir, IOE2Enable, endstopNone, endstopNone)
STEPPER_OBSERVEABLE(E2Motor, E2MotorBase)
STEPPER_SIMPLE(AL1Motor, IOAL1Step, IOAL1Dir, IOAL1Enable, endstopNone, endstopNone)
STEPPER_SIMPLE(AL2Motor, IOAL2Step, IOAL2Dir, IOAL2Enable, endstopNone, endstopNone)
// Servos
SERVO_ANALOG(Servo1, 0, Servo1Pin, 500, 2500, 1050)
// Heat manages are used for every component that needs to
// control temperature. Higher level classes take these as input
// and simple heater like a heated bed use it directly.
HEAT_MANAGER_PID(HeatedBed1, 'B', 0, TempBed1, PWMBed1, 120, 255, 1000, 5, 30000, 12.0, 33.0, 290.0, 80, 255, true)
HEAT_MANAGER_PID(HeaterExtruder1, 'E', 0, TempExt1, PWMExtruder1, 260, 255, 1000, 10, 20000, 20.0, 0.6, 65.0, 40, 220, false)
HEAT_MANAGER_PID(HeaterExtruder2, 'E', 1, TempExt2, PWMExtruder2, 260, 255, 1000, 10, 20000, 20.0, 0.6, 65.0, 40, 220, false)
// HEAT_MANAGER_DYN_DEAD_TIME(HeaterExtruder1, 'E', 0, TempExt1, PWMExtruder1, 260, 255, 100, 10, 20000, 150, 7, 7, 200, 7, 7, false)
// HEAT_MANAGER_DYN_DEAD_TIME(HeaterExtruder2, 'E', 1, TempExt2, PWMExtruder2, 260, 255, 100, 10, 20000, 150, 7, 7, 200, 7, 7, false)
// Coolers are stand alone functions that allow it to control
// a fan with external sensors. Many extruders require a cooling
// fan pointer to the extruder to prevent heat rising up.
// These can be controlled by the cooler. Since it is
// independent you just tell what part needs cooling.
// Other use cases are board cooling and heated chambers.
// Define tools. They get inserted into a tool array in configuration.h
// Typical tools are:
// TOOL_EXTRUDER(name, offx, offy, offz, heater, stepper, resolution, yank, maxSpeed, acceleration, advance, startScript, endScript)
TOOL_EXTRUDER(ToolExtruder1, 0, 0, 0, HeaterExtruder1, /*AL1Motor / E1Motor, 1.75, 292, 5, 30, 5000, 40, "M117 Extruder 1", "", &Fan1PWM)
TOOL_EXTRUDER(ToolExtruder2, 16.775, 0.615, -0.97, HeaterExtruder2, /*AL2Motor */ E2Motor, 1.75, 147.0, 5, 30, 5000, 40, "M117 Extruder 2\nM400\nM340 P0 S1500 R600\nG4 P300", "M340 P0 S800 R600\nG4 P300", &Fan1PWM)
TOOL_LASER(Laser3, 0, 0, 0, Fan1NoKSPWM, fakeOut, fakeOut, 3000, 1, 100, 150.0, 1.5, "", "")
TOOL_CNC(CNC4, 0, 0, 0, Fan1NoKSPWM, fakeOut, fakeOut, fakeOut, 7000, 3000, "", "")
// Use a signal that changes while extruder moves
JAM_DETECTOR_HW(JamExtruder1, E1Motor, IOJam1, ToolExtruder1, 220, 10, 500)
JAM_DETECTOR_HW(JamExtruder2, E2Motor, IOJam2, ToolExtruder2, 220, 10, 500)
// Use a signal that is high, when filament is loaded
//FILAMENT_DETECTOR(FilamentDetector1, IOJam1, ToolExtruder1)
//FILAMENT_DETECTOR(FilamentDetector2, IOJam2, ToolExtruder2)