From 9b4192cdd0755786a8d1892dfdffe3b875385681 Mon Sep 17 00:00:00 2001
From: thisiskeithb <13375512+thisiskeithb@users.noreply.github.com>
Date: Tue, 4 Feb 2020 21:21:05 -0800
Subject: [PATCH] Add MKS Base 1.6 board (#16783)

---
 Marlin/Makefile                          | 85 ++++++++++++-----------
 Marlin/src/core/boards.h                 | 87 ++++++++++++------------
 Marlin/src/pins/pins.h                   |  2 +
 Marlin/src/pins/ramps/pins_MKS_BASE.h    |  4 +-
 Marlin/src/pins/ramps/pins_MKS_BASE_14.h |  2 +-
 Marlin/src/pins/ramps/pins_MKS_BASE_15.h |  6 ++
 Marlin/src/pins/ramps/pins_MKS_BASE_16.h | 48 +++++++++++++
 7 files changed, 149 insertions(+), 85 deletions(-)
 create mode 100644 Marlin/src/pins/ramps/pins_MKS_BASE_16.h

diff --git a/Marlin/Makefile b/Marlin/Makefile
index 1a9bb22087..fcd763881e 100644
--- a/Marlin/Makefile
+++ b/Marlin/Makefile
@@ -180,88 +180,93 @@ else ifeq ($(HARDWARE_MOTHERBOARD),1105)
 else ifeq ($(HARDWARE_MOTHERBOARD),1106)
 # MKS v1.5 with Allegro A4982 stepper drivers
 else ifeq ($(HARDWARE_MOTHERBOARD),1107)
-# MKS BASE 1.0 with Heroic HR4982 stepper drivers
+# MKS v1.6 with Allegro A4982 stepper drivers
 else ifeq ($(HARDWARE_MOTHERBOARD),1108)
-# MKS GEN v1.3 or 1.4
+
+# MKS BASE 1.0 with Heroic HR4982 stepper drivers
 else ifeq ($(HARDWARE_MOTHERBOARD),1109)
-# MKS GEN L
+# MKS GEN v1.3 or 1.4
 else ifeq ($(HARDWARE_MOTHERBOARD),1110)
-# zrib V2.0 control board (Chinese knock off RAMPS replica)
+# MKS GEN L
 else ifeq ($(HARDWARE_MOTHERBOARD),1111)
-# BigTreeTech or BIQU KFB2.0
+# zrib V2.0 control board (Chinese knock off RAMPS replica)
 else ifeq ($(HARDWARE_MOTHERBOARD),1112)
-# Felix 2.0+ Electronics Board (RAMPS like)
+# BigTreeTech or BIQU KFB2.0
 else ifeq ($(HARDWARE_MOTHERBOARD),1113)
-# Invent-A-Part RigidBoard
+# Felix 2.0+ Electronics Board (RAMPS like)
 else ifeq ($(HARDWARE_MOTHERBOARD),1114)
-# Invent-A-Part RigidBoard V2
+# Invent-A-Part RigidBoard
 else ifeq ($(HARDWARE_MOTHERBOARD),1115)
-# Sainsmart 2-in-1 board
+# Invent-A-Part RigidBoard V2
 else ifeq ($(HARDWARE_MOTHERBOARD),1116)
-# Ultimaker
+# Sainsmart 2-in-1 board
 else ifeq ($(HARDWARE_MOTHERBOARD),1117)
-# Ultimaker (Older electronics. Pre 1.5.4. This is rare)
+# Ultimaker
 else ifeq ($(HARDWARE_MOTHERBOARD),1118)
+# Ultimaker (Older electronics. Pre 1.5.4. This is rare)
+else ifeq ($(HARDWARE_MOTHERBOARD),1119)
   MCU ?= atmega1280
 
 # Azteeg X3
-else ifeq ($(HARDWARE_MOTHERBOARD),1119)
-# Azteeg X3 Pro
 else ifeq ($(HARDWARE_MOTHERBOARD),1120)
-# Ultimainboard 2.x (Uses TEMP_SENSOR 20)
+# Azteeg X3 Pro
 else ifeq ($(HARDWARE_MOTHERBOARD),1121)
-# Rumba
+# Ultimainboard 2.x (Uses TEMP_SENSOR 20)
 else ifeq ($(HARDWARE_MOTHERBOARD),1122)
-# Raise3D Rumba
+# Rumba
 else ifeq ($(HARDWARE_MOTHERBOARD),1123)
-# Rapide Lite RL200 Rumba
+# Raise3D Rumba
 else ifeq ($(HARDWARE_MOTHERBOARD),1124)
-# Formbot T-Rex 2 Plus
+# Rapide Lite RL200 Rumba
 else ifeq ($(HARDWARE_MOTHERBOARD),1125)
-# Formbot T-Rex 3
+# Formbot T-Rex 2 Plus
 else ifeq ($(HARDWARE_MOTHERBOARD),1126)
-# Formbot Raptor
+# Formbot T-Rex 3
 else ifeq ($(HARDWARE_MOTHERBOARD),1127)
-# Formbot Raptor 2
+# Formbot Raptor
 else ifeq ($(HARDWARE_MOTHERBOARD),1128)
-# bq ZUM Mega 3D
+# Formbot Raptor 2
 else ifeq ($(HARDWARE_MOTHERBOARD),1129)
-# MakeBoard Mini v2.1.2 is a control board sold by MicroMake
+# bq ZUM Mega 3D
 else ifeq ($(HARDWARE_MOTHERBOARD),1130)
-# TriGorilla Anycubic version 1.3 based on RAMPS EFB
+# MakeBoard Mini v2.1.2 is a control board sold by MicroMake
 else ifeq ($(HARDWARE_MOTHERBOARD),1131)
-# TriGorilla Anycubic version 1.4 based on RAMPS EFB
+# TriGorilla Anycubic version 1.3 based on RAMPS EFB
 else ifeq ($(HARDWARE_MOTHERBOARD),1132)
-# TriGorilla Anycubic version 1.4 Rev 1.1
+# TriGorilla Anycubic version 1.4 based on RAMPS EFB
 else ifeq ($(HARDWARE_MOTHERBOARD),1133)
-# Creality: Ender-4, CR-8
+# TriGorilla Anycubic version 1.4 Rev 1.1
 else ifeq ($(HARDWARE_MOTHERBOARD),1134)
-# Creality: CR10S, CR20, CR-X
+# Creality: Ender-4, CR-8
 else ifeq ($(HARDWARE_MOTHERBOARD),1135)
-# Dagoma F5
+# Creality: CR10S, CR20, CR-X
 else ifeq ($(HARDWARE_MOTHERBOARD),1136)
-# FYSETC F6
+# Dagoma F5
 else ifeq ($(HARDWARE_MOTHERBOARD),1137)
-# Duplicator i3 Plus
+# FYSETC F6 1.3
 else ifeq ($(HARDWARE_MOTHERBOARD),1138)
-# VORON
+# FYSETC F6 1.5
 else ifeq ($(HARDWARE_MOTHERBOARD),1139)
-# TRONXY V3 1.0
+# Duplicator i3 Plus
 else ifeq ($(HARDWARE_MOTHERBOARD),1140)
-# Z-Bolt X Series
+# VORON
 else ifeq ($(HARDWARE_MOTHERBOARD),1141)
-# TT OSCAR
+# TRONXY V3 1.0
 else ifeq ($(HARDWARE_MOTHERBOARD),1142)
-# Overlord/Overlord Pro
+# Z-Bolt X Series
 else ifeq ($(HARDWARE_MOTHERBOARD),1143)
-# ADIMLab Gantry v1
+# TT OSCAR
 else ifeq ($(HARDWARE_MOTHERBOARD),1144)
-# ADIMLab Gantry v2
+# Overlord/Overlord Pro
 else ifeq ($(HARDWARE_MOTHERBOARD),1145)
-# BIQU Tango V1
+# ADIMLab Gantry v1
 else ifeq ($(HARDWARE_MOTHERBOARD),1146)
-# MKS GEN L V2
+# ADIMLab Gantry v2
 else ifeq ($(HARDWARE_MOTHERBOARD),1147)
+# BIQU Tango V1
+else ifeq ($(HARDWARE_MOTHERBOARD),1148)
+# MKS GEN L V2
+else ifeq ($(HARDWARE_MOTHERBOARD),1149)
 
 #
 # RAMBo and derivatives
diff --git a/Marlin/src/core/boards.h b/Marlin/src/core/boards.h
index df79e2e2e1..4e6829342d 100644
--- a/Marlin/src/core/boards.h
+++ b/Marlin/src/core/boards.h
@@ -59,49 +59,50 @@
 #define BOARD_BAM_DICE                1103  // 2PrintBeta BAM&DICE with STK drivers
 #define BOARD_BAM_DICE_DUE            1104  // 2PrintBeta BAM&DICE Due with STK drivers
 #define BOARD_MKS_BASE                1105  // MKS BASE v1.0
-#define BOARD_MKS_BASE_14             1106  // MKS v1.4 with A4982 stepper drivers
-#define BOARD_MKS_BASE_15             1107  // MKS v1.5 with Allegro A4982 stepper drivers
-#define BOARD_MKS_BASE_HEROIC         1108  // MKS BASE 1.0 with Heroic HR4982 stepper drivers
-#define BOARD_MKS_GEN_13              1109  // MKS GEN v1.3 or 1.4
-#define BOARD_MKS_GEN_L               1110  // MKS GEN L
-#define BOARD_KFB_2                   1111  // BigTreeTech or BIQU KFB2.0
-#define BOARD_ZRIB_V20                1112  // zrib V2.0 control board (Chinese knock off RAMPS replica)
-#define BOARD_FELIX2                  1113  // Felix 2.0+ Electronics Board (RAMPS like)
-#define BOARD_RIGIDBOARD              1114  // Invent-A-Part RigidBoard
-#define BOARD_RIGIDBOARD_V2           1115  // Invent-A-Part RigidBoard V2
-#define BOARD_SAINSMART_2IN1          1116  // Sainsmart 2-in-1 board
-#define BOARD_ULTIMAKER               1117  // Ultimaker
-#define BOARD_ULTIMAKER_OLD           1118  // Ultimaker (Older electronics. Pre 1.5.4. This is rare)
-#define BOARD_AZTEEG_X3               1119  // Azteeg X3
-#define BOARD_AZTEEG_X3_PRO           1120  // Azteeg X3 Pro
-#define BOARD_ULTIMAIN_2              1121  // Ultimainboard 2.x (Uses TEMP_SENSOR 20)
-#define BOARD_RUMBA                   1122  // Rumba
-#define BOARD_RUMBA_RAISE3D           1123  // Raise3D N series Rumba derivative
-#define BOARD_RL200                   1124  // Rapide Lite 200 (v1, low-cost RUMBA clone with drv)
-#define BOARD_FORMBOT_TREX2PLUS       1125  // Formbot T-Rex 2 Plus
-#define BOARD_FORMBOT_TREX3           1126  // Formbot T-Rex 3
-#define BOARD_FORMBOT_RAPTOR          1127  // Formbot Raptor
-#define BOARD_FORMBOT_RAPTOR2         1128  // Formbot Raptor 2
-#define BOARD_BQ_ZUM_MEGA_3D          1129  // bq ZUM Mega 3D
-#define BOARD_MAKEBOARD_MINI          1130  // MakeBoard Mini v2.1.2 is a control board sold by MicroMake
-#define BOARD_TRIGORILLA_13           1131  // TriGorilla Anycubic version 1.3-based on RAMPS EFB
-#define BOARD_TRIGORILLA_14           1132  //   ... Ver 1.4
-#define BOARD_TRIGORILLA_14_11        1133  //   ... Rev 1.1 (new servo pin order)
-#define BOARD_RAMPS_ENDER_4           1134  // Creality: Ender-4, CR-8
-#define BOARD_RAMPS_CREALITY          1135  // Creality: CR10S, CR20, CR-X
-#define BOARD_RAMPS_DAGOMA            1136  // Dagoma F5
-#define BOARD_FYSETC_F6_13            1137  // FYSETC F6 1.3
-#define BOARD_FYSETC_F6_14            1138  // FYSETC F6 1.4
-#define BOARD_DUPLICATOR_I3_PLUS      1139  // Wanhao Duplicator i3 Plus
-#define BOARD_VORON                   1140  // VORON Design
-#define BOARD_TRONXY_V3_1_0           1141  // Tronxy TRONXY-V3-1.0
-#define BOARD_Z_BOLT_X_SERIES         1142  // Z-Bolt X Series
-#define BOARD_TT_OSCAR                1143  // TT OSCAR
-#define BOARD_OVERLORD                1144  // Overlord/Overlord Pro
-#define BOARD_HJC2560C_REV1           1145  // ADIMLab Gantry v1
-#define BOARD_HJC2560C_REV2           1146  // ADIMLab Gantry v2
-#define BOARD_TANGO                   1147  // BIQU Tango V1
-#define BOARD_MKS_GEN_L_V2            1148  // MKS GEN L V2
+#define BOARD_MKS_BASE_14             1106  // MKS BASE v1.4 with Allegro A4982 stepper drivers
+#define BOARD_MKS_BASE_15             1107  // MKS BASE v1.5 with Allegro A4982 stepper drivers
+#define BOARD_MKS_BASE_16             1108  // MKS BASE v1.6 with Allegro A4982 stepper drivers
+#define BOARD_MKS_BASE_HEROIC         1109  // MKS BASE 1.0 with Heroic HR4982 stepper drivers
+#define BOARD_MKS_GEN_13              1110  // MKS GEN v1.3 or 1.4
+#define BOARD_MKS_GEN_L               1111  // MKS GEN L
+#define BOARD_KFB_2                   1112  // BigTreeTech or BIQU KFB2.0
+#define BOARD_ZRIB_V20                1113  // zrib V2.0 control board (Chinese knock off RAMPS replica)
+#define BOARD_FELIX2                  1114  // Felix 2.0+ Electronics Board (RAMPS like)
+#define BOARD_RIGIDBOARD              1115  // Invent-A-Part RigidBoard
+#define BOARD_RIGIDBOARD_V2           1116  // Invent-A-Part RigidBoard V2
+#define BOARD_SAINSMART_2IN1          1117  // Sainsmart 2-in-1 board
+#define BOARD_ULTIMAKER               1118  // Ultimaker
+#define BOARD_ULTIMAKER_OLD           1119  // Ultimaker (Older electronics. Pre 1.5.4. This is rare)
+#define BOARD_AZTEEG_X3               1120  // Azteeg X3
+#define BOARD_AZTEEG_X3_PRO           1121  // Azteeg X3 Pro
+#define BOARD_ULTIMAIN_2              1122  // Ultimainboard 2.x (Uses TEMP_SENSOR 20)
+#define BOARD_RUMBA                   1123  // Rumba
+#define BOARD_RUMBA_RAISE3D           1124  // Raise3D N series Rumba derivative
+#define BOARD_RL200                   1125  // Rapide Lite 200 (v1, low-cost RUMBA clone with drv)
+#define BOARD_FORMBOT_TREX2PLUS       1126  // Formbot T-Rex 2 Plus
+#define BOARD_FORMBOT_TREX3           1127  // Formbot T-Rex 3
+#define BOARD_FORMBOT_RAPTOR          1128  // Formbot Raptor
+#define BOARD_FORMBOT_RAPTOR2         1129  // Formbot Raptor 2
+#define BOARD_BQ_ZUM_MEGA_3D          1130  // bq ZUM Mega 3D
+#define BOARD_MAKEBOARD_MINI          1131  // MakeBoard Mini v2.1.2 is a control board sold by MicroMake
+#define BOARD_TRIGORILLA_13           1132  // TriGorilla Anycubic version 1.3-based on RAMPS EFB
+#define BOARD_TRIGORILLA_14           1133  //   ... Ver 1.4
+#define BOARD_TRIGORILLA_14_11        1134  //   ... Rev 1.1 (new servo pin order)
+#define BOARD_RAMPS_ENDER_4           1135  // Creality: Ender-4, CR-8
+#define BOARD_RAMPS_CREALITY          1136  // Creality: CR10S, CR20, CR-X
+#define BOARD_RAMPS_DAGOMA            1137  // Dagoma F5
+#define BOARD_FYSETC_F6_13            1138  // FYSETC F6 1.3
+#define BOARD_FYSETC_F6_14            1139  // FYSETC F6 1.4
+#define BOARD_DUPLICATOR_I3_PLUS      1140  // Wanhao Duplicator i3 Plus
+#define BOARD_VORON                   1141  // VORON Design
+#define BOARD_TRONXY_V3_1_0           1142  // Tronxy TRONXY-V3-1.0
+#define BOARD_Z_BOLT_X_SERIES         1143  // Z-Bolt X Series
+#define BOARD_TT_OSCAR                1144  // TT OSCAR
+#define BOARD_OVERLORD                1145  // Overlord/Overlord Pro
+#define BOARD_HJC2560C_REV1           1146  // ADIMLab Gantry v1
+#define BOARD_HJC2560C_REV2           1147  // ADIMLab Gantry v2
+#define BOARD_TANGO                   1148  // BIQU Tango V1
+#define BOARD_MKS_GEN_L_V2            1149  // MKS GEN L V2
 
 //
 // RAMBo and derivatives
diff --git a/Marlin/src/pins/pins.h b/Marlin/src/pins/pins.h
index 1515440e71..def3e2681b 100644
--- a/Marlin/src/pins/pins.h
+++ b/Marlin/src/pins/pins.h
@@ -110,6 +110,8 @@
   #include "ramps/pins_MKS_BASE_14.h"           // ATmega2560                             env:megaatmega2560
 #elif MB(MKS_BASE_15)
   #include "ramps/pins_MKS_BASE_15.h"           // ATmega1280, ATmega2560                 env:megaatmega1280 env:megaatmega2560
+#elif MB(MKS_BASE_16)
+  #include "ramps/pins_MKS_BASE_16.h"           // ATmega1280, ATmega2560                 env:megaatmega1280 env:megaatmega2560
 #elif MB(MKS_BASE_HEROIC)
   #include "ramps/pins_MKS_BASE_HEROIC.h"       // ATmega1280, ATmega2560                 env:megaatmega1280 env:megaatmega2560
 #elif MB(MKS_GEN_13)
diff --git a/Marlin/src/pins/ramps/pins_MKS_BASE.h b/Marlin/src/pins/ramps/pins_MKS_BASE.h
index dc0485e274..72e062e635 100644
--- a/Marlin/src/pins/ramps/pins_MKS_BASE.h
+++ b/Marlin/src/pins/ramps/pins_MKS_BASE.h
@@ -31,7 +31,9 @@
   #error "MKS BASE 1.0 supports up to 2 hotends / E-steppers. Comment out this line to continue."
 #endif
 
-#define BOARD_INFO_NAME "MKS BASE 1.0"
+#ifndef BOARD_INFO_NAME
+  #define BOARD_INFO_NAME "MKS BASE 1.0"
+#endif
 
 //
 // Heaters / Fans
diff --git a/Marlin/src/pins/ramps/pins_MKS_BASE_14.h b/Marlin/src/pins/ramps/pins_MKS_BASE_14.h
index e91b2c2f44..a4fe6f90c1 100644
--- a/Marlin/src/pins/ramps/pins_MKS_BASE_14.h
+++ b/Marlin/src/pins/ramps/pins_MKS_BASE_14.h
@@ -22,7 +22,7 @@
 #pragma once
 
 /**
- * MKS BASE v1.4
+ * MKS BASE v1.4 with A4982 stepper drivers and digital micro-stepping
  */
 
 #if HOTENDS > 2 || E_STEPPERS > 2
diff --git a/Marlin/src/pins/ramps/pins_MKS_BASE_15.h b/Marlin/src/pins/ramps/pins_MKS_BASE_15.h
index fe67e7d789..efb7bb23eb 100644
--- a/Marlin/src/pins/ramps/pins_MKS_BASE_15.h
+++ b/Marlin/src/pins/ramps/pins_MKS_BASE_15.h
@@ -25,6 +25,12 @@
  * MKS BASE v1.5 with A4982 stepper drivers and digital micro-stepping
  */
 
+#if HOTENDS > 2 || E_STEPPERS > 2
+  #error "MKS BASE 1.5 only supports up to 2 hotends / E-steppers. Comment out this line to continue."
+#endif
+
+#define BOARD_INFO_NAME "MKS BASE 1.5"
+
 #include "pins_MKS_BASE.h"
 
 /**
diff --git a/Marlin/src/pins/ramps/pins_MKS_BASE_16.h b/Marlin/src/pins/ramps/pins_MKS_BASE_16.h
new file mode 100644
index 0000000000..1cf2345e05
--- /dev/null
+++ b/Marlin/src/pins/ramps/pins_MKS_BASE_16.h
@@ -0,0 +1,48 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 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 <http://www.gnu.org/licenses/>.
+ *
+ */
+#pragma once
+
+/**
+ * MKS BASE v1.6 with A4982 stepper drivers and digital micro-stepping
+ */
+
+#if HOTENDS > 2 || E_STEPPERS > 2
+  #error "MKS BASE 1.6 only supports up to 2 hotends / E-steppers. Comment out this line to continue."
+#endif
+
+#define BOARD_INFO_NAME "MKS BASE 1.6"
+
+#include "pins_MKS_BASE.h"
+
+/**
+ * Microstepping pins
+ */
+#define X_MS1_PIN            5   // Digital 3  / Pin 5   / PE3  / SERVO2_PIN
+#define X_MS2_PIN            6   // Digital 6  / Pin 14  / PH3  / SERVO1_PIN
+#define Y_MS1_PIN           59   // Analog 5   / Pin 92  / PF5
+#define Y_MS2_PIN           58   // Analog 4   / Pin 93  / PF4
+#define Z_MS1_PIN           22   // Digital 22 / Pin 78  / PA0
+#define Z_MS2_PIN           39   // Digital 39 / Pin 70  / PG2
+#define E0_MS1_PIN          63   // Analog 9   / Pin 86  / PK1
+#define E0_MS2_PIN          64   // Analog 10  / Pin 87  / PK2
+#define E1_MS1_PIN          57   // Analog 3   / Pin 93  / PF3
+#define E1_MS2_PIN           4   // Digital 4  / Pin 1   / PG5  / SERVO3_PIN
-- 
GitLab