From 75037493fa0bb9f62e7d362a1fa783a1e2af7b98 Mon Sep 17 00:00:00 2001 From: Marcio Teixeira Date: Thu, 5 Apr 2018 14:09:49 -0600 Subject: [PATCH 1/2] Default active low for TMC2130 DIAG1 (#10294) - Added sanity check to inform users to set the endstop to inverting when using SENSORLESS_HOMING --- Marlin/src/inc/SanityCheck.h | 22 ++++++++++++++++------ Marlin/src/module/stepper_indirection.cpp | 1 - 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h index a7b8a80dbb..cd895f340a 100644 --- a/Marlin/src/inc/SanityCheck.h +++ b/Marlin/src/inc/SanityCheck.h @@ -1457,12 +1457,22 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE && Y_MAX_LENGTH >= Y_BED_SIZE, #error "E4_CS_PIN is required for E4_IS_TMC2130. Define E4_CS_PIN in Configuration_adv.h." #endif - // Require STEALTHCHOP for SENSORLESS_HOMING on DELTA as the transition from spreadCycle to stealthChop - // is necessary in order to reset the stallGuard indication between the initial movement of all three - // towers to +Z and the individual homing of each tower. This restriction can be removed once a means of - // clearing the stallGuard activated status is found. - #if ENABLED(SENSORLESS_HOMING) && ENABLED(DELTA) && !ENABLED(STEALTHCHOP) - #error "SENSORLESS_HOMING on DELTA currently requires STEALTHCHOP." + #if ENABLED(SENSORLESS_HOMING) + // Require STEALTHCHOP for SENSORLESS_HOMING on DELTA as the transition from spreadCycle to stealthChop + // is necessary in order to reset the stallGuard indication between the initial movement of all three + // towers to +Z and the individual homing of each tower. This restriction can be removed once a means of + // clearing the stallGuard activated status is found. + #if ENABLED(DELTA) && !ENABLED(STEALTHCHOP) + #error "SENSORLESS_HOMING on DELTA currently requires STEALTHCHOP." + #elif X_HOME_DIR == -1 && DISABLED(X_MIN_ENDSTOP_INVERTING) + #error "SENSORLESS_HOMING requires X_MIN_ENDSTOP_INVERTING when homing to X_MIN." + #elif X_HOME_DIR == 1 && DISABLED(X_MAX_ENDSTOP_INVERTING) + #error "SENSORLESS_HOMING requires X_MAX_ENDSTOP_INVERTING when homing to X_MAX." + #elif Y_HOME_DIR == -1 && DISABLED(Y_MIN_ENDSTOP_INVERTING) + #error "SENSORLESS_HOMING requires Y_MIN_ENDSTOP_INVERTING when homing to Y_MIN." + #elif Y_HOME_DIR == 1 && DISABLED(Y_MAX_ENDSTOP_INVERTING) + #error "SENSORLESS_HOMING requires Y_MAX_ENDSTOP_INVERTING when homing to Y_MAX." + #endif #endif // Sensorless homing is required for both combined steppers in an H-bot diff --git a/Marlin/src/module/stepper_indirection.cpp b/Marlin/src/module/stepper_indirection.cpp index 274e1fd2cd..1220427ddd 100644 --- a/Marlin/src/module/stepper_indirection.cpp +++ b/Marlin/src/module/stepper_indirection.cpp @@ -193,7 +193,6 @@ st.power_down_delay(128); // ~2s until driver lowers to hold current st.hysteresis_start(3); st.hysteresis_end(2); - st.diag1_active_high(1); // For sensorless homing #if ENABLED(STEALTHCHOP) st.stealth_freq(1); // f_pwm = 2/683 f_clk st.stealth_autoscale(1); From 9356cf648f86e4f25fcd35fa4e98329470044312 Mon Sep 17 00:00:00 2001 From: Marcio Teixeira Date: Thu, 5 Apr 2018 07:58:57 -0600 Subject: [PATCH 2/2] Added support for Einsy Retro http://reprap.org/wiki/EinsyRetro --- Marlin/Makefile | 3 + Marlin/src/core/boards.h | 1 + Marlin/src/pins/pins.h | 2 + Marlin/src/pins/pins_EINSY_RAMBO.h | 49 +++----- Marlin/src/pins/pins_EINSY_RETRO.h | 193 +++++++++++++++++++++++++++++ 5 files changed, 213 insertions(+), 35 deletions(-) create mode 100644 Marlin/src/pins/pins_EINSY_RETRO.h diff --git a/Marlin/Makefile b/Marlin/Makefile index 6902cd8748..adee0b4eb9 100644 --- a/Marlin/Makefile +++ b/Marlin/Makefile @@ -277,6 +277,9 @@ MCU ?= atmega2560 else ifeq ($(HARDWARE_MOTHERBOARD),304) HARDWARE_VARIANT ?= arduino MCU ?= atmega2560 +else ifeq ($(HARDWARE_MOTHERBOARD),305) +HARDWARE_VARIANT ?= arduino +MCU ?= atmega2560 else ifeq ($(HARDWARE_MOTHERBOARD),21) HARDWARE_VARIANT ?= arduino MCU ?= atmega2560 diff --git a/Marlin/src/core/boards.h b/Marlin/src/core/boards.h index 236895642e..248f74cb6c 100644 --- a/Marlin/src/core/boards.h +++ b/Marlin/src/core/boards.h @@ -95,6 +95,7 @@ #define BOARD_MINIRAMBO 302 // Mini-Rambo #define BOARD_MINIRAMBO_10A 303 // Mini-Rambo 1.0a #define BOARD_EINSY_RAMBO 304 // Einsy Rambo +#define BOARD_EINSY_RETRO 305 // Einsy Retro #define BOARD_ELEFU_3 21 // Elefu Ra Board (v3) #define BOARD_LEAPFROG 999 // Leapfrog #define BOARD_MEGACONTROLLER 310 // Mega controller diff --git a/Marlin/src/pins/pins.h b/Marlin/src/pins/pins.h index ff154d620e..4c083887a5 100644 --- a/Marlin/src/pins/pins.h +++ b/Marlin/src/pins/pins.h @@ -163,6 +163,8 @@ #include "pins_MINIRAMBO.h" // ATmega2560 #elif MB(EINSY_RAMBO) #include "pins_EINSY_RAMBO.h" // ATmega2560 +#elif MB(EINSY_RETRO) + #include "pins_EINSY_RETRO.h" // ATmega2560 #elif MB(ELEFU_3) #include "pins_ELEFU_3.h" // ATmega2560 #elif MB(LEAPFROG) diff --git a/Marlin/src/pins/pins_EINSY_RAMBO.h b/Marlin/src/pins/pins_EINSY_RAMBO.h index c8d86ad00c..b86e1530ac 100644 --- a/Marlin/src/pins/pins_EINSY_RAMBO.h +++ b/Marlin/src/pins/pins_EINSY_RAMBO.h @@ -28,8 +28,7 @@ #error "Oops! Make sure you have 'Arduino Mega 2560 or Rambo' selected from the 'Tools -> Boards' menu." #endif -#define BOARD_NAME "Einsy Rambo" -#define LARGE_FLASH true +#define BOARD_NAME "Einsy Rambo" // // TMC2130 Configuration_adv defaults for EinsyRambo @@ -41,10 +40,10 @@ #endif // TMC2130 Diag Pins (currently just for reference) -#define X_DIAG_PIN 64 -#define Y_DIAG_PIN 69 -#define Z_DIAG_PIN 68 -#define E0_DIAG_PIN 65 +#define X_DIAG_PIN 64 +#define Y_DIAG_PIN 69 +#define Z_DIAG_PIN 68 +#define E0_DIAG_PIN 65 // // Limit Switches @@ -55,26 +54,22 @@ // SERVO0_PIN and Z_MIN_PIN configuration for BLTOUCH sensor when combined with SENSORLESS_HOMING. // -#define X_MAX_PIN -1 -#define Y_MAX_PIN -1 -#define Z_MAX_PIN -1 - #if DISABLED(SENSORLESS_HOMING) - #define X_MIN_PIN 12 - #define Y_MIN_PIN 11 - #define Z_MIN_PIN 10 + #define X_STOP_PIN 12 + #define Y_STOP_PIN 11 + #define Z_STOP_PIN 10 #else - #define X_MIN_PIN X_DIAG_PIN - #define Y_MIN_PIN Y_DIAG_PIN + #define X_STOP_PIN X_DIAG_PIN + #define Y_STOP_PIN Y_DIAG_PIN #if ENABLED(BLTOUCH) - #define Z_MIN_PIN 11 // Y-MIN - #define SERVO0_PIN 10 // Z-MIN + #define Z_STOP_PIN 11 // Y-MIN + #define SERVO0_PIN 10 // Z-MIN #else - #define Z_MIN_PIN 10 + #define Z_STOP_PIN 10 #endif #endif @@ -109,20 +104,6 @@ #define E0_ENABLE_PIN 26 #define E0_CS_PIN 66 -#define E1_STEP_PIN -1 -#define E1_DIR_PIN -1 -#define E1_ENABLE_PIN -1 - -// Microstepping pins - uses SPI instead -#define X_MS1_PIN -1 -#define X_MS2_PIN -1 -#define Y_MS1_PIN -1 -#define Y_MS2_PIN -1 -#define Z_MS1_PIN -1 -#define Z_MS2_PIN -1 -#define E0_MS1_PIN -1 -#define E0_MS2_PIN -1 - // // Temperature Sensors // @@ -134,8 +115,6 @@ // Heaters / Fans // #define HEATER_0_PIN 3 -#define HEATER_1_PIN -1 -#define HEATER_2_PIN -1 #define HEATER_BED_PIN 4 #define FAN_PIN 8 @@ -168,7 +147,7 @@ // #if ENABLED(ULTRA_LCD) - #define KILL_PIN 32 + #define KILL_PIN 32 #if ENABLED(NEWPANEL) diff --git a/Marlin/src/pins/pins_EINSY_RETRO.h b/Marlin/src/pins/pins_EINSY_RETRO.h new file mode 100644 index 0000000000..4b46427f30 --- /dev/null +++ b/Marlin/src/pins/pins_EINSY_RETRO.h @@ -0,0 +1,193 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +/** + * Einsy-Retro pin assignments + */ + +#ifndef __AVR_ATmega2560__ + #error "Oops! Make sure you have 'Arduino Mega 2560 or Rambo' selected from the 'Tools -> Boards' menu." +#endif + +#define BOARD_NAME "Einsy Retro" + +// +// TMC2130 Configuration_adv defaults for EinsyRetro +// +#if DISABLED(HAVE_TMC2130) + #error "You must enable TMC2130 support in Configuration_adv.h for EinsyRetro." +#elif DISABLED(X_IS_TMC2130) || DISABLED(Y_IS_TMC2130) || DISABLED(Z_IS_TMC2130) || DISABLED(E0_IS_TMC2130) + #error "You must enable ([XYZ]|E0)_IS_TMC2130 in Configuration_adv.h for EinsyRetro." +#endif + +// TMC2130 Diag Pins (currently just for reference) +#define X_DIAG_PIN 64 +#define Y_DIAG_PIN 69 +#define Z_DIAG_PIN 68 +#define E0_DIAG_PIN 65 + +// +// Limit Switches +// +// Only use Diag Pins when SENSORLESS_HOMING is enabled for the TMC2130 drivers. +// Otherwise use a physical endstop based configuration. +// +// SERVO0_PIN and Z_MIN_PIN configuration for BLTOUCH sensor when combined with SENSORLESS_HOMING. +// + +#if DISABLED(SENSORLESS_HOMING) + + #define X_MIN_PIN 12 + #define Y_MIN_PIN 11 + #define Z_MIN_PIN 10 + #define X_MAX_PIN 81 + #define Y_MAX_PIN 57 + +#else + + #if X_HOME_DIR == -1 + #define X_MIN_PIN X_DIAG_PIN + #define X_MAX_PIN 81 + #else + #define X_MIN_PIN 12 + #define X_MAX_PIN X_DIAG_PIN + #endif + + #if Y_HOME_DIR == -1 + #define Y_MIN_PIN Y_DIAG_PIN + #define Y_MAX_PIN 57 + #else + #define Y_MIN_PIN 11 + #define Y_MAX_PIN Y_DIAG_PIN + #endif + + #if ENABLED(BLTOUCH) + #define Z_MIN_PIN 11 // Y-MIN + #define SERVO0_PIN 10 // Z-MIN + #else + #define Z_MIN_PIN 10 + #endif + +#endif + +#define Z_MAX_PIN 7 + +// +// Z Probe (when not Z_MIN_PIN) +// +#ifndef Z_MIN_PROBE_PIN + #define Z_MIN_PROBE_PIN 10 +#endif + +// +// Steppers +// +#define X_STEP_PIN 37 +#define X_DIR_PIN 49 +#define X_ENABLE_PIN 29 +#define X_CS_PIN 41 + +#define Y_STEP_PIN 36 +#define Y_DIR_PIN 48 +#define Y_ENABLE_PIN 28 +#define Y_CS_PIN 39 + +#define Z_STEP_PIN 35 +#define Z_DIR_PIN 47 +#define Z_ENABLE_PIN 27 +#define Z_CS_PIN 67 + +#define E0_STEP_PIN 34 +#define E0_DIR_PIN 43 +#define E0_ENABLE_PIN 26 +#define E0_CS_PIN 66 + +// +// Temperature Sensors +// +#define TEMP_0_PIN 0 // Analog Input +#define TEMP_1_PIN 1 // Analog Input +#define TEMP_BED_PIN 2 // Analog Input + +// +// Heaters / Fans +// +#define HEATER_0_PIN 3 +#define HEATER_BED_PIN 4 + +#define FAN_PIN 8 +#define FAN1_PIN 6 + +// +// Misc. Functions +// +#define SDSS 53 +#define LED_PIN 13 +#define CASE_LIGHT_PIN 9 + +// +// M3/M4/M5 - Spindle/Laser Control +// +// use P1 connector for spindle pins +#define SPINDLE_LASER_PWM_PIN 9 // MUST BE HARDWARE PWM +#define SPINDLE_LASER_ENABLE_PIN 18 // Pin should have a pullup! +#define SPINDLE_DIR_PIN 19 + +// +// Průša i3 MK2 Multiplexer Support +// +#define E_MUX0_PIN 17 +#define E_MUX1_PIN 16 +#define E_MUX2_PIN 78 // 84 in MK2 Firmware, with BEEPER as 78 + +// +// LCD / Controller +// +#if ENABLED(ULTRA_LCD) + + #define KILL_PIN 32 + + #if ENABLED(NEWPANEL) + + #if ENABLED(CR10_STOCKDISPLAY) + #define LCD_PINS_RS 85 + #define LCD_PINS_ENABLE 71 + #define LCD_PINS_D4 70 + #define BTN_EN1 18 + #define BTN_EN2 19 + #else + #define LCD_PINS_RS 82 + #define LCD_PINS_ENABLE 18 + #define LCD_PINS_D4 19 + #define LCD_PINS_D5 70 + #define LCD_PINS_D6 85 + #define LCD_PINS_D7 71 + #define BTN_EN1 14 + #define BTN_EN2 72 + #endif + + #define BTN_ENC 9 // AUX-2 + #define BEEPER_PIN 84 // AUX-4 + #define SD_DETECT_PIN 15 + + #endif // NEWPANEL +#endif // ULTRA_LCD