From a1a5367380931a4c4c5b3eb0543dc8d7e57aa4c5 Mon Sep 17 00:00:00 2001 From: Greg Nutt Date: Tue, 7 Aug 2018 20:01:56 -0400 Subject: [PATCH] Smoothieboard V1.0/1.1 and A5984 support --- Marlin/Configuration.h | 4 +- Marlin/Configuration_adv.h | 4 +- Marlin/src/config/default/Configuration.h | 4 +- Marlin/src/config/default/Configuration_adv.h | 4 +- Marlin/src/core/boards.h | 1 + Marlin/src/core/drivers.h | 29 ++--- Marlin/src/inc/Conditionals_post.h | 4 +- Marlin/src/pins/pins.h | 2 + Marlin/src/pins/pins_SMOOTHIEBOARD.h | 115 ++++++++++++++++++ 9 files changed, 144 insertions(+), 23 deletions(-) create mode 100644 Marlin/src/pins/pins_SMOOTHIEBOARD.h diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index 104a797cb..4b9908b34 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -556,11 +556,11 @@ * The options are used to determine driver pulse timings as well as more advanced functionality. * Stepper timing options can be overridden in Configuration_adv.h * - * Options: A4988, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100, + * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100, * TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE, * TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE, * TMC5130, TMC5130_STANDALONE - * :['A4988', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE'] + * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE'] */ #define X_DRIVER_TYPE A4988 #define Y_DRIVER_TYPE A4988 diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h index b6c0db384..0d2b849b5 100644 --- a/Marlin/Configuration_adv.h +++ b/Marlin/Configuration_adv.h @@ -842,6 +842,7 @@ * 0 : No delay (Expect at least 10µS since one Stepper ISR must transpire) * 20 : Minimum for TMC2xxx drivers * 200 : Minimum for A4988 drivers + * 400 : Minimum for A5984 drivers * 500 : Minimum for LV8729 drivers (guess, no info in datasheet) * 650 : Minimum for DRV8825 drivers * 1500 : Minimum for TB6600 drivers (guess, no info in datasheet) @@ -854,8 +855,7 @@ /** * Minimum stepper driver pulse width (in µs) * 0 : Smallest possible width the MCU can produce, compatible with TMC2xxx drivers - * 1 : Minimum for A4988 stepper drivers - * 1 : Minimum for LV8729 stepper drivers + * 1 : Minimum for A4988, A5984, and LV8729 stepper drivers * 2 : Minimum for DRV8825 stepper drivers * 3 : Minimum for TB6600 stepper drivers * 30 : Minimum for TB6560 stepper drivers diff --git a/Marlin/src/config/default/Configuration.h b/Marlin/src/config/default/Configuration.h index 104a797cb..4b9908b34 100644 --- a/Marlin/src/config/default/Configuration.h +++ b/Marlin/src/config/default/Configuration.h @@ -556,11 +556,11 @@ * The options are used to determine driver pulse timings as well as more advanced functionality. * Stepper timing options can be overridden in Configuration_adv.h * - * Options: A4988, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100, + * Options: A4988, A5984, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100, * TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE, * TMC26X, TMC26X_STANDALONE, TMC2660, TMC2660_STANDALONE, * TMC5130, TMC5130_STANDALONE - * :['A4988', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE'] + * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE'] */ #define X_DRIVER_TYPE A4988 #define Y_DRIVER_TYPE A4988 diff --git a/Marlin/src/config/default/Configuration_adv.h b/Marlin/src/config/default/Configuration_adv.h index b6c0db384..0d2b849b5 100644 --- a/Marlin/src/config/default/Configuration_adv.h +++ b/Marlin/src/config/default/Configuration_adv.h @@ -842,6 +842,7 @@ * 0 : No delay (Expect at least 10µS since one Stepper ISR must transpire) * 20 : Minimum for TMC2xxx drivers * 200 : Minimum for A4988 drivers + * 400 : Minimum for A5984 drivers * 500 : Minimum for LV8729 drivers (guess, no info in datasheet) * 650 : Minimum for DRV8825 drivers * 1500 : Minimum for TB6600 drivers (guess, no info in datasheet) @@ -854,8 +855,7 @@ /** * Minimum stepper driver pulse width (in µs) * 0 : Smallest possible width the MCU can produce, compatible with TMC2xxx drivers - * 1 : Minimum for A4988 stepper drivers - * 1 : Minimum for LV8729 stepper drivers + * 1 : Minimum for A4988, A5984, and LV8729 stepper drivers * 2 : Minimum for DRV8825 stepper drivers * 3 : Minimum for TB6600 stepper drivers * 30 : Minimum for TB6560 stepper drivers diff --git a/Marlin/src/core/boards.h b/Marlin/src/core/boards.h index 092fffc74..d35b702fd 100644 --- a/Marlin/src/core/boards.h +++ b/Marlin/src/core/boards.h @@ -174,6 +174,7 @@ #define BOARD_SELENA_COMPACT 1754 // Selena Compact (Power outputs: Hotend0, Hotend1, Bed0, Bed1, Fan0, Fan1) #define BOARD_COHESION3D_REMIX 1755 // Cohesion3D ReMix #define BOARD_COHESION3D_MINI 1756 // Cohesion3D Mini +#define BOARD_SMOOTHIEBOARD 1757 // Smoothieboard // // SAM3X8E ARM Cortex M3 diff --git a/Marlin/src/core/drivers.h b/Marlin/src/core/drivers.h index cd2103bac..62254d308 100644 --- a/Marlin/src/core/drivers.h +++ b/Marlin/src/core/drivers.h @@ -24,20 +24,21 @@ #include "../inc/MarlinConfigPre.h" #define A4988 0x001 -#define DRV8825 0x002 -#define LV8729 0x003 -#define L6470 0x104 -#define TB6560 0x005 -#define TB6600 0x006 -#define TMC2100 0x007 -#define TMC2130 0x108 -#define TMC2130_STANDALONE 0x008 -#define TMC2208 0x109 -#define TMC2208_STANDALONE 0x009 -#define TMC26X 0x10A -#define TMC26X_STANDALONE 0x00A -#define TMC2660 0x10B -#define TMC2660_STANDALONE 0x00B +#define A5984 0x002 +#define DRV8825 0x003 +#define LV8729 0x004 +#define L6470 0x105 +#define TB6560 0x006 +#define TB6600 0x007 +#define TMC2100 0x008 +#define TMC2130 0x109 +#define TMC2130_STANDALONE 0x009 +#define TMC2208 0x10A +#define TMC2208_STANDALONE 0x00A +#define TMC26X 0x10B +#define TMC26X_STANDALONE 0x00B +#define TMC2660 0x10C +#define TMC2660_STANDALONE 0x00C #define AXIS_DRIVER_TYPE(A,T) ( defined(A##_DRIVER_TYPE) && (A##_DRIVER_TYPE == T) ) diff --git a/Marlin/src/inc/Conditionals_post.h b/Marlin/src/inc/Conditionals_post.h index 9ba0b5db2..742b6535e 100644 --- a/Marlin/src/inc/Conditionals_post.h +++ b/Marlin/src/inc/Conditionals_post.h @@ -452,6 +452,8 @@ #define MINIMUM_STEPPER_DIR_DELAY 650 #elif HAS_DRIVER(LV8729) #define MINIMUM_STEPPER_DIR_DELAY 500 + #elif HAS_DRIVER(A5984) + #define MINIMUM_STEPPER_DIR_DELAY 400 #elif HAS_DRIVER(A4988) #define MINIMUM_STEPPER_DIR_DELAY 200 #elif HAS_TRINAMIC || HAS_DRIVER(TMC2130_STANDALONE) || HAS_DRIVER(TMC2208_STANDALONE) || HAS_DRIVER(TMC26X_STANDALONE) || HAS_DRIVER(TMC2660_STANDALONE) @@ -468,7 +470,7 @@ #define MINIMUM_STEPPER_PULSE 3 #elif HAS_DRIVER(DRV8825) #define MINIMUM_STEPPER_PULSE 2 - #elif HAS_DRIVER(A4988) || HAS_DRIVER(LV8729) + #elif HAS_DRIVER(A4988) || HAS_DRIVER(LV8729) || HAS_DRIVER(A5984) #define MINIMUM_STEPPER_PULSE 1 #elif HAS_TRINAMIC || HAS_DRIVER(TMC2130_STANDALONE) || HAS_DRIVER(TMC2208_STANDALONE) || HAS_DRIVER(TMC26X_STANDALONE) || HAS_DRIVER(TMC2660_STANDALONE) #define MINIMUM_STEPPER_PULSE 0 diff --git a/Marlin/src/pins/pins.h b/Marlin/src/pins/pins.h index 5d10c5996..0720fc8f9 100644 --- a/Marlin/src/pins/pins.h +++ b/Marlin/src/pins/pins.h @@ -298,6 +298,8 @@ #include "pins_COHESION3D_REMIX.h" // LPC176x env:LPC1768 env:LPC1768_debug_and_upload #elif MB(COHESION3D_MINI) #include "pins_COHESION3D_MINI.h" // LPC176x env:LPC1768 env:LPC1768_debug_and_upload +#elif MB(SMOOTHIEBOARD) + #include "pins_SMOOTHIEBOARD.h" // LPC176x env:LPC1768 env:LPC1768_debug_and_upload // // Other 32-bit Boards diff --git a/Marlin/src/pins/pins_SMOOTHIEBOARD.h b/Marlin/src/pins/pins_SMOOTHIEBOARD.h new file mode 100644 index 000000000..f41f57020 --- /dev/null +++ b/Marlin/src/pins/pins_SMOOTHIEBOARD.h @@ -0,0 +1,115 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * Copyright (C) 2017 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 . + * + */ + +/** + * Smoothieboard pin assignments + */ + +#ifndef TARGET_LPC1768 + #error "Oops! Make sure you have the LPC1768 environment selected in your IDE." +#endif + +#ifndef BOARD_NAME + #define BOARD_NAME "Smoothieboard" + #define DEFAULT_WEBSITE_URL "http://smoothieware.org/smoothieboard" +#endif + +#undef F_CPU +#define F_CPU 120000000 + +// +// Servos +// +#define SERVO0_PIN P1_23 + +// +// Limit Switches +// +#define X_MIN_PIN P1_24 +#define X_MAX_PIN P1_25 +#define Y_MIN_PIN P1_26 +#define Y_MAX_PIN P1_27 +#define Z_MIN_PIN P1_28 +#define Z_MAX_PIN P1_29 + +// +// Steppers +// +#define X_STEP_PIN P2_00 +#define X_DIR_PIN P0_05 +#define X_ENABLE_PIN P0_04 + +#define Y_STEP_PIN P2_01 +#define Y_DIR_PIN P0_11 +#define Y_ENABLE_PIN P0_10 + +#define Z_STEP_PIN P2_02 +#define Z_DIR_PIN P0_20 +#define Z_ENABLE_PIN P0_19 + +#define E0_STEP_PIN P2_03 +#define E0_DIR_PIN P0_22 +#define E0_ENABLE_PIN P0_21 + +#define E1_STEP_PIN P2_08 +#define E1_DIR_PIN P2_13 +#define E1_ENABLE_PIN P4_29 + +// +// Temperature Sensors +// 3.3V max when defined as an analog input +// +#define TEMP_0_PIN 0 // P0.23 (T1) +#define TEMP_BED_PIN 1 // P0.24 (T2) +#define TEMP_1_PIN 2 // P0.25 (T3) +#define TEMP_2_PIN 3 // P0.26 (T4) + +// +// Heaters / Fans +// +#define HEATER_BED_PIN P2_05 +#define HEATER_0_PIN P2_07 +#define HEATER_1_PIN P1_23 +#ifndef FAN_PIN + #define FAN_PIN P2_06 +#endif +#define FAN1_PIN P2_04 + +// +// Display +// +#if ENABLED(VIKI2) || ENABLED(miniVIKI) + #define BEEPER_PIN P1_31 + //#define DOGLCD_A0 P2_06 + #define DOGLCD_CS P0_16 + + #define BTN_EN1 P3_25 + #define BTN_EN2 P3_26 + #define BTN_ENC P2_11 + + #define SD_DETECT_PIN P1_18 + #define SDSS P1_21 + + #define STAT_LED_RED_PIN P1_19 + #define STAT_LED_BLUE_PIN P1_20 +#endif